Day[22] Busyness

We continued on with databases today and it has begun to be more complex. Whereas before we were dealing with one or two tables at a time, our exercises today dealt with over ten tables, all relating to a fictional DVD store (which I assume has gone out of business circa 2010, like all over video rentals stores. I miss you BlockBuster.)

We were assigned both pair programming and solo exercises. For the pair, I was with Diane, the only woman in the .Net class. To say that Diane is an overachiever is an understatement. She has children and since I have a child myself, I can relate to the chaos parenthood can add, even when you have a significant other helping you out.

Diane talks regularly with her children on the phone during breaks. She also keeps a part-time job as a fitness instructor at a gym, sometimes working till nine or ten o’clock after a twelve hour day of coding. So, already, you can see that this is a busy lady.

But wait, there’s more!

While working together today, I overheard Diane talking on the phone about buying a large amount of stickers. When I inquired about this, Diane revealed that she is also currently running for political office. She’s in the middle of a campaign to get on the McCandless City Council.

Two thoughts occurred to me upon receiving this news:

  1. I’m not sure what type of time commitment is made when one runs for office, but it can’t be small.
  2. If the good people of McCandless don’t elect Diane, they’re insane.

So, this time next year, Diane very well might be a programming fitness expert with a kingdom of her own just north of Pittsburgh. All hail!

Day[21] The Meet Up

After another smooth day of studying databases, I went out with a couple of the other Tech Elevator Students to a Tech Meetup.

There is an amazing network of programming groups throughout Pittsburgh. The more I look into it, the more I am amazed at how strong and minutely detailed these groups are. This meet up was hosted by Steven Hook, the organizer in charge of the Pittsburgh .Net User Group.

Since the database homework has been so freaking easy, we were able to cut out at 4:00. I went with Craig, my table-mate whom I’ve written about before and Jason, a tall, former-chef versed in many things food and video game-related. We grabbed a drink at Ten Penny downtown and then headed over to the Microsoft offices in the Strip District.

As you might guess, the Microsoft offices are amazing. Everything is clean and futuristic yet somehow homey–imagine the Enterprise, but as a cruise ship. The meet up was in a conference room to the left, screens everywhere, multiple plugs at every table, a view of the Monongahela and the Fort Pitt Tunnel from 14 floors up.

And there was pizza!

A company called Jarus bought the pizza and sponsored the event. The co-Founder, Bala Kumar, spoke to the group and I was able to talk to him personally after about his business, which builds software frameworks for the insurance industry.

The main speaker was a young man named John VanSickle. He spoke about SignalR, a library for Asp.Net concerned with hubs and messaging. Some of the talk was over my head, but I was able to follow the code for the most part and definitely found it interesting.

I plan to go to more of these meetups in the future. I think I enjoyed it because it was specific to .Net and I will continue to target C#, .Net, or particular companies that I’m interested in, rather than just hitting the meet ups when I have time. With a little research, these events are definitely worth your while.

Day[20] Is SQL Real?

We began learning a language called SQL today (pronounced “Sequel”) and it seems too good to be true. As far as I can tell, there are no loops, no switches, no mind-bending access modifiers, getters, setters, or constructors.

SQL stands for Structured Query Language. It is the computer language used to communicate with data bases. It’s a declarative language, meaning that you’re not trying to tell a computer what to do, but what you want from it. In C#, I had gotten used to telling the computer to loop through a list looking for certain variables with certain qualities and then to display them in the way of my choosing. SQL’s not about that life. SQL’s a no drama language.

For example, in C#, if we tried to find cities in Pennsylvania with a population over a million, it would be two for-loops, probably, going through each list to find the information and a “Console.WriteLine()” to write it to the console. Maybe ten lines of code.

In SQL, it might look like this:

SELECT city FROM list WHERE population > 1000000

That’s it. It’s practically English.

To me, C# is a language that you must speak at a high level to do anything at all and SQL is like talking slowly and loudly because you think the computer can’t understand you. It reminds me of going to Costa Rica and subjecting the Costa Ricans to my terrible Spanish. They can understand me as far as ordering a beer or asking where the bathroom is, but we’re not going to launch a rocket to the moon with this level of communication.

I’m sure it will get ten times as complicated in the coming days, but as for today, it was the easiest homework we’ve had in 21 days of difficult homework. Thank you for keeping it simple, SQL.

Weekend Bits: One Month in a Coding Boot Camp

It wasn’t easy.

In the summer of 2018, I had zero coding experience. What did I know? Well, I was aware that there was something called HTML and that Java wasn’t just coffee, but that was about it.

I decided to learn to code in August and spent about ten hours a week going through W3Schools Online Tutorials. Then, when I received the prework for my boot camp, Tech Elevator, I did about 45 hours of studying in three weeks, much of it covering the same territory as the W3School material.

Then, on January 14th, it began. My experience from the first month goes like this:

The first week was fairly easy. Much of what I had studied on my own I was seeing again, and for the third time. The next week was a different world. I didn’t count the hours I logged studying code, but it might have flirted with 65. I had a lot of trouble with the lesson on manipulating strings and it took me till Friday to recover.

But recover, I did. The third week was much smoother than the second and I caught up fully. I almost felt comfortable. In the fourth week we covered File I/O and I again got a little turned around. Not nearly as bad as the string study, but somewhat bewildered.

The Vending Machine capstone at the end of the fourth week was the hardest thing yet, by a good margin. My partner Argun and I worked for 10 hours on Thursday, 10 on Friday, and another 7 today (It’s Sunday. We went in on Sunday. Props, Argun.) And we still have some loose threads to sew up.

But though it was the most difficult assignment, it wasn’t a bad time. For the most part, it was fun. There were frustrating moments, but they were overshadowed by the glory that erupted every time we figured something out and Argun proudly turned from the computer screen to shake my hand. Each time we thought of something clever to add to our Vending Machine software it was like we had reinvented the wheel.

Here are some lessons learned from one month in a coding boot camp:

  • You can retain more than you think. I was amazed at the long-forgotten lessons from weeks one and two that came to the surface of my mind when I needed them.
  • Get good at Googling code. Everyone does it. It’s a skill just as much as learning a language.
  • Learn from everyone. I’ve learned from every person I’ve been paired with, whether they were further along than me or I was further along than them.
  • Turmoil is the bane of focus. Be happy with your successes and try not to get too frustrated with your failures.
  • Know when to walk away. It’s easy to stay on the wrong path if you never stop running. Often after stepping away to eat or play a game, an impossible task becomes quite possible.
  • Don’t trust your ego. You know a lot more than you think you know when you’re feeling down. And you know a lot less than you think you know when you’re feeling confident. The truth lies somewhere in-between

One month in. It wasn’t easy. But I am truthfully looking forward to doing two and half more months. We start databases tomorrow and I can’t wait to keep adding to the database in my brain.

Day[19] Capstoned

I’m in a daze right now. A concentration daze. My mind has been squeezed for two solid days and there is still so much more to do.

Argun and I were off to a good start on the second day of our Vending Machine project. We had nearly all the basics functioning pretty well by lunchtime. We had each agreed that we could work till seven. After lunch, with six or so hours stretching before us, it seemed likely that we were going to finish without a weekend trip to Tech Elevator.

Then reality set in.

I ran into a problem with dispensing the change. We had to return the dollars as numbers (no problem) and the change in coins (big problem). I wrote the War and Peace of C# Methods trying to solve this issue. It’s not what you would call elegant. After two hours and a lot of tweaking, it pretty much worked. But it took quite a toll on my mental well-being.

While I was doing this, Argun struggled on another piece of the code. We teamed up on his and got that end working too. Eventually.

Then the real fun began.

When two programmers work on the same piece of code at the same time using two different computers, a version control system must be the go-between to merge all the work into one piece of software. The version control we use at Tech Elevator is called Git.

Git is tricky. It’s often said that if you become good with Git, everyone will love you at your job. Another way to say that is, Git is a pain in the ass and everyone hates it.

Every time Argun and I merged our code, half an hour was spent untangling the mess of error messages and duplicate code showing up in curious places all over the program.

We’re meeting on Sunday to continue work. If all goes well, we have two to three hours of work. If things go poorly, we’ll work for five or six hours and still have to query Tom on Monday.

One month in, two and a half to go.

Day[18] Ex Machina

Today we began a capstone, the first of three large and arduous projects that we will be assigned throughout the program. We are being tasked to make software for a vending machine. In my mind, the challenge seemed pretty manageable.

That being said, the first day was rough. We were randomly paired and I drew Argun, a high-energy programmer about ten years my junior who is always smiling and goes with the flow. Craig sits on my right every day and Argun is to my left so we are pretty familiar with each other and this paid dividends when trying to communicate over the architecture of the program.

We ran into some trouble right away and it got pretty frustrating. We were given a text file that contained the names, prices, and types of food in the vending machine. We had to import this file and then get the data into a state where we could manipulate it and put it where we needed it to be to make our software work.

This step was one in about a hundred that we need to complete. We were given the task at 10:30 and by 1:30 we had basically nothing. We couldn’t get the data out of the file in a way that was usable. We were stuck.

We eventually got some help from Andrew who tipped us off on how to use a piece of code called a Switch to trick the names of the vending machine items objects, instantiated and ready for purchase. If it sounds complicated, that’s because it was. At least, it’s complicated for our current skill level. Most of the other teams got stuck in the same place as us. Maybe we’ll look back in a month and chuckle about how little we once knew. For right now, there’s no chuckling.

After we got the data all sorted, we made good progress. We were both starting to fade around 5:30 and decided to call it quits. The vending machine is due on Tuesday, but we will be assigned new homework on Monday, so we really need it done by Sunday night.

As it stands, Argun and I have a stocked vending machine which prompts a user to insert money. The machine can take the money and increment it in a balance and display that balance for the customer to see. Not bad, considering a good portion of our day was spent spinning our wheels on one single problem.

If everything goes perfectly tomorrow, we could be finished by six or seven o’clock. Though I would say the smart money is on me spending my first weekend at Hotel Elevator.

Day[17] A Day of Panels

The schedule was full for the monks of Tech Elevator today.

It went like this : a lecture from nine till noon, a career discussion led by our third-man teacher Andrew, focusing on coding-adjacent jobs, meetings to review our resumes with Caitie, another panel, related to the first in that it was populated by people who are in coding adjacent jobs. It was nearly six when this last panel ended.

Know what’s missing here? Time to do three to five hours of homework. But it was assigned. I’m not complaining. Just having a Wednesday drink after focusing intensely from 7:00am till 7:00pm.

I was intrigued by both panel discussions. Andrew’s talk covered what we can expect as Junior Software Developers and the path forward in the next four to seven years. He talked responsibilities, life-styles, money–a lot of the subjects that we were all curious about but too afraid to ask.

The panel of professionals dove-tailed well with Andrew’s talk. There was a quality assurance engineer, a security expert, a project manager, and a woman with the rugby-flavored job title “scrum master.” They were all fascinating in their own ways.

The project manager had taken six years off to raise a family and self-taught her way back into a tech job. The scrum master had majored in dance (dance!) in college and managed to find her niche in the industry. The security expert, as you would expect, had several tales of rascally derring-do as he made his way to security professionalism through harmless hacking escapades. But the gentleman in quality assurance captured my attention the most.

I wrote before of my infatuation with test driven development. That’s his thing too. But what really caught my attention was when he discussed building a custom framework. His team looked at what the software developers were typing over and over and made a framework of classes and methods to make them faster. Call me crazy, but that sounds like a good time.

I spoke with the quality assurance engineer after the talk. He seemed really informed and personable. He may be at the matchmaking with Tech Elevator and I hope to meet him again in that capacity. But for now, back to my drink…

Day [16] Fellowship

Pair-programming.

It’s when two programmers are teamed up to work on the same piece of code. They either split the problems up and work on them individually, later merging the two in some form of version control software, or they sit side-by-side talking the problems out while one types and the other watches for typos.

I’m a fan of pair-programming and I wouldn’t be opposed to working at a place that capitalizes on it. Dick’s Sporting Goods is a major company in Pittsburgh that uses pair-programming exclusively and many students at Tech Elevator hope to join their ranks after graduation. Me included, though I’m open to any situation where I can work with a team and continue to grow as a programmer.

For the last two days, I’ve been paired with Craig, a laid-back former- office worker who plays jazz guitar and once wrote a dissertation on Tom Waits for a final project in college. He’s quiet, friendly, and lightning-quick with a joke or interesting observation. At the beginning of the program, I sat in different spots in the classroom every day. I finally settled next to Craig because we get along so well.

Yesterday, Craig and I wrote a piece of software that translated decimal numbers representing money amounts into the English-word equivalent. It was one of the trickier things either of us had worked on. When we finally got it (clocking in at just under an hour or so) we were jubilant, waving our hands in the air like two excited Muppets.

Today we made a file path to locate an excerpt of Alice in Wonderland. Once we accessed the file, we made a method to count both the words and the sentences. This was much easier than the money translation and we accomplished it even quicker.

Craig is a little better than me at seeing the big picture. During our work together, he often came up with the first pieces of architecture. I have found that I have a natural knack for efficiency, and was able to contribute by following Craig’s lead and refactoring his ideas down to the paths of least resistance.

Tom told us a saying a few days and it went like this: “What one programmer can do in one month, two programmers can do in two months.”

It’s sorta true. If the two programmer’s aren’t on the same wave-length, it’s easy to step on toes and to make each other confused. But Craig and I were able to communicate at a high level these last two days. We were each able to contribute in ways that made our sum skills greater than our individuals.

Day[15] Testing: One, Two

TDD stands for Test Driven Development. In Test Driven Development, a programmer looks at the specifications he is given and begins by writing tests that his software must later pass. It is backwards from what we’ve learned so far and sort of feels like writing with your left hand.

Here is a classic coding problem called FizzBuzz: Given a number between 1 and 100, return the number as a string (meaning, return it as a word with quotation marks rather than a naked number). If the number is divisible by three, return “Fizz.” If the number is divisible by five, return “Buzz.” If the number is divisible by both three AND five, return “FizzBuzz.” This sounds complicated to a layperson, probably, but most programmers do stuff like this (and much worse, complexity-wise) all day.

To solve this problem normally, I would just start jotting down things I need on a sheet of paper. At this point in my study, I could probably sleuth this one without much sweat (not the case three weeks ago). I would write down some code with some conditional clauses to make sure that all my Fizzes and Buzzes showed up at the right time and then click the “Run Test” link.

But in Test Driven Development, we start with the tests. So, instead of staring at the screen wondering where to start, we write a simple test. The FizzBuzz Method, if given the integer 1 should return “1.” So we make a test that looks like this:

Assert.AreEqual(“1”, testerForFizzBuzz.FizzBuzz(1);

This code is basically saying, if the integer 1 is fed into the method, “1” should be returned. It’s as easy as it gets. We write the code to pass the test and nothing more.

Then we move on to 3. If three gets entered, then we should return “Fizz.” So we go above the place in the code where we returned “1” and write that if the integer is 3, we should return “Fizz.”

And we keep going. Specification by specification and test by test, the code is built.

It’s easy to overwhelm your brain while trying to hit all of the specifications at once. But TDD requires that you break it up into simple, little decisions that are hard to screw up.

I was skeptical during Tom’s lecture, but I really came to enjoy it. I put in a twelve hour day today and drove home with a smile, thinking of Fizzes and Buzzes.

Weekend Bits: The Fuel

So, you’re going to be in an intensive learning environment for nearly twelve hours a day in five-day spans for fourteen weeks. One question to consider is, what are you going to put in your body? The students at Tech Elevator Pittsburgh have several different answers to this.

Many students at Tech Elevator are aggressively health-conscious. Around the tables at lunch time, salads are popular, along with quinoa, chickpeas, hummus, and one confirmed sighting of bee pollen, sprinkled into Greek yogurt. If you’ve read a few of my blogs, you might predict that I fall into this category. You wouldn’t be wrong. I bring a salad of assorted vegetables, baked chicken and avocado for lunch. I also bring two pieces of fruit, usually an apple and a pear. I also make sure I don’t leave the house without a package of almond bars purchased from Trader Joes. I love these things. I eat them for our fifteen minute break and whenever else I’m hungry. Or whenever I need an excuse to walk away from the computer.

Tech Elevator is on Pittsburgh’s North Side. There aren’t many restaurants, fast food or otherwise, within walking distance. Some people who I think would probably eat out most days don’t have that option. So there is usually an array of tasty leftovers from previous night’s dinners–chicken and rice, cuts of pork, potatoes, and vegetables, cold pasta.

Many opt for the sandwich and chip route. There are a lot of nice-looking salami or ham subs with lettuce, tomato and mayo. I’m always jealous of these people. Salami and american cheese is basically my favorite thing in the world. But I would need a siesta if I ate of one those at noon.

And, few and far between, are the junk food eaters. Now and then a bag of doughnuts will find its way around the classroom. It’s next to impossible to say no to a doughnut when you’re drinking coffee, so I dip my hand in the bag. Sometimes you need to let yourself slide. Sometimes people eat a sleeve of Oreos with a side of nachos for lunch. Whatever. We’re all human here.

There are a few smokers at TE and a few vapers, but caffeine is the drug of choice. There is an impressive assortment of teas in the kitchen and many students partake either as their sole conduit for caffeine or as their fallback after they begin uncomfortably tweaking. But, in my opinion, man cannot live on tea alone. Coffee is king.

The kitchen is always stocked with a massive container of ground beans from Commonplace Coffee. Brandon, a .Net student and former drinker of Maxwell, can’t take a sip without commenting how good it is. He’s right.

Brandon drives all the way from Youngstown to Pittsburgh each morning. He’s one of the hardest workers in class, reportedly clocking twelve to sixteen hours of coding on the weekends. He drinks one cup in the car and then several of the good stuff after arriving. By mid-morning he’s talking like an auctioneer.

Another .Netter, Wade, had been quitting coffee when the cohort started. Wade is a former collegiate baseball player with a deep voice. He’s a quick learner with some coding experience and sometimes likes to stand towards the back of the room while Tom teaches, folding his arms across his chest like a third-base coach. He had been working from home for over a year before starting at the boot camp and his coffee consumption had spiraled out of control.

He reported to us back on the first day that he had cut back, down to a half a cup in the morning. But as the days piled up, he could be seen walking to the brewer, staring at the black pot and shaking his head as he wrestled against the bitter fragrances. I think Wade’s up to two or three cups a day now.

No matter what we put into our bodies, focus is difficult. As the days wear on in the week, it becomes hard to keep the energy levels up. But we’ll keep experimenting, keep trying to make our minds fertile land for the storm of information raining on us.