Month 1 Retro

Although I’ve actually been at 8th Light for 3 months, last week marked the end of my first month of residency. As I told a few non-programming friends last week, I am in a graduate program for a discipline that I never studied before. To mix in my “building” metaphor from a couple months ago: I wrote my first line of code seven months ago at Code Academy where I learned to build a house; I helped build a prototype of their internal project which was like building a much bigger and better house, and I’ve now spent three months at 8th Light— learning how to build a city. It’s been a hell of a jump from learning to build a house to learning to build skyscrapers, entire blocks and all the infrastructure.

My progress these past three months hasn’t been as quick as I’d like, and I’ve spent most of my time in the tunnels below the city studying how everything works. Where do these pipes go? What are these wires attached to? Why can’t I just run my electric wires, internet cables and plumbing in the same pipes- wouldn’t that be more efficient? What are these tracks for, can I walk down them? Did I put these here? How do I mix concrete? What is rebar?

As I realized the extent of my ignorance there were many days I got sucked down the research rabbit hole. I assume this is a very common problem for new programmers and comes from the one-two punch of of not knowing anything and having almost everything just a Google search away. I’d start researching something I wanted to figure out, only to find out that I needed to figure something else out, which lead me to something else I didn’t know… and so on. I think one of Code Academy instructor Jeff Cohen’s major strengths (of which he has many) is his ability to keep an entire class from wandering down the rabbit hole. He taught us how to dig deep enough to plant a seed, then move on down the row.

At 8th Light we apprentices keep on track by treating our learning like any other Agile project. We plan out our stories, estimate how long they are going to take and move them into weekly iterations. Some of my stories have been as easy as I hoped, some have not. The good thing about planning them out this way is that at as the end of the week it forces me to “get the learning done”, but sometimes at the risk of incomplete comprehension.

Insert tip of the hat to Mr. Mike Jansen here. Mike’s recognized when spending a little more time on something, or approaching it from a different angle, will result in a big gain for me. I’ll go from chipping away at it to taking out huge chunks to eventually realizing how what I’m working on relates to the big picture (the mountain I’m scaling, the iceberg I’m clearing, pick a metaphor). This has meant Mike’s also spent three months looking at tic-tac-toe code, but he remains unfazed.

The past two weeks a lot of the basic building blocks came into focus, including things like interfaces, dependencies, abstractions, several design patterns and a few of the SOLID principles. I knew what these things were but didn’t really understand them. I’m by no means an expert now, but at least I feel like I know what the heck I’m talking about.

It looks like this week I’m finally wrapping up tic-tac-toe (for now) and starting a new app. It will be my first real dive into Sinatra and Cucumber— some more new parts of the city to explore.