Week 0

March 23, 2009 at 6:04 pm (Pre-Apprenticeship) (, , , )

I’m not really trying to be clever by numbering the first week the same way we index arrays: my first official day as an apprentice is Monday (March 23, 2009), and Micah invited me to come in the Friday before to observe the beginning of 8th Light’s annual employee reviews. So Week 1 will be the first real week. This “week” should be the shortest since I was only in the office for a couple of hours.

I was a bit apprehensive that people wouldn’t feel comfortable giving and having reviews with me around, but the craftsmen – Micah Martin, Paul Pagel, Jim Suchy, Eric Smith, Doug Bradbury, and Eric Meyer – were gracious enough to allow me to sit in (and were very friendly and accomodating). There were two reviews over lunch. Everyone gathered around the conference table, and starting with the person being reviewed, talked about the person’s performance over the past year. It became immediately obvious that the guys really respect and trust one another – people were a lot more verbose when talking about strengths than when going through the “things to work on”, and the negatives were couched in sympathetic but honest terms. Constructive criticism was the rule: when people needed to say something negative, they also gave advice on a solution. Another commonality was that people being reviewed really already knew most of their strengths and weaknesses, which says to me (and I believe someone else mentioned this during the reviews) that they’re also thoughtful and self-aware.

I’d like to see this kind of trust and respect in any team I’m going to be a part of, so it was great to see this kind of cooperation. I’ve been in other teams (mostly chamber music groups I’ve played trumpet in), where any suggestion that someone could improve some aspect of their performance would have resulted in a great deal of anger and tension. I really didn’t sense that kind of atmosphere here, which is both encouraging and exciting.


Permalink Leave a Comment

To the Starting Line!

March 21, 2009 at 10:40 pm (Pre-Apprenticeship) (, , , , , , , )

I’ll just give you a quick summary of my software career up to this point and how I came to be an apprentice at 8th Light.

I really lucked into my first job, which started out as a part-time XHTML/CSS web development job and grew to full-time. I was a 3rd-year grad student in trumpet performance, worrying about career options, so I answered an ad in the university newspaper, and soon I was off and running. I learned a ton there: cutting up Photoshop mockups into XHTML/CSS, writing small apps in Ruby on Rails, basic Linux system administration, and lots more. I owe them (Plexus) a lot, and I’ll be forever grateful.

In the past year or so I’ve started reading and coding a lot outside of work, and I’ve realized more than ever before how much I have to learn about the process of creating software.  Here are the most important books I’ve read, just to give you more of an idea of where I am: Ruby for RailsLinux: The Textbook (Sarwar), The Rails Way, The Pragmatic Programmer, The Ruby Way, MySQL (Dubois), My Job Went to India, Design Patterns for Ruby, and I’m currently working on Agile Software Development, Principles, Patterns, and Practices, Extreme Programming Explained, and Clean Code.

Frankly, my software development experience beyond that is minimal: I took an introductory C++ course in undergrad, and last year took an online (introductory) Java course and watched online lectures in C and PHP. When it comes to TDD, design patterns, refactoring, object-oriented principles, Agile, XP, data structures, algorithms… I just need much deeper knowledge of these and other areas if I want to become a real software craftsman. And I do.

I heard about software apprenticeship and found the Software Craftsmanship Google Group, where I posted asking for pointers on improving my skills. Micah Martin, one of the founders of 8th Light, was kind enough to invite me to dinner to discuss opportunities (I lived in Athens, Georgia, and he had a client near Atlanta). He told me about 8th Light’s apprenticeship program, which I’d read about, and said if I was interested in talking more about it, I’d need to write a Tic-Tac-Toe game that always won when it could, and tied in all other cases.

I’ll be honest, it sounded really tough, but I was excited about it, so I spent a couple of late nights hacking on it. There was no language requirement, so I used what I knew: Ruby. I knew Micah wanted to see unit tests (with which I had basically zero experience besides playing around with Rails unit test tutorials), so I did my best to write tests first. I actually did mostly TDD until it came to the game AI, which I wasn’t really sure how to handle. At any rate, once I thought I was done (and pretty proud of it, I’ll admit), I sent it off to Micah, who was nice but helped me to rethink some very bad decisions I’d made. Some of these bad decisions were due to my deficiencies in object-oriented principles, some due to my deficiencies in algorithms, and some [cringe] due to my lack of thinking through the knowledge I already had. It was a great lesson in humility and discipline.

Fast forward a bit to my interview in Libertyville (a Chicago suburb): four of the 8th Light craftsmen interviewed and/or pair-programmed with me, and I was really impressed by the quality of code and depth of thinking that these guys were doing. I was inspired to write better code, and I wanted to do it as soon as possible. The official apprenticeship job offer (and immediate acceptance) came on February 16, and my first day of work is March 23. Meanwhile, I moved 834.2 miles from Athens, Georgia to Mundelein, Illinois—whew!

So while I’m not really at the very beginning of my learning process as a software developer, I’m nowhere near the end. I know I’ll continue learning as long as I’m around, but I’m definitely ready to start moving faster.

Permalink 4 Comments