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.

Advertisements

4 Comments

  1. James Martin said,

    Excellent idea, thanks for doing this!

    I’m really glad you’re keeping this diary of your experiences along the route to becoming a craftsman. I hope you manage to maintain this level of detail as you continue. Good luck!

    P.S. Any chance of a less eye-burning theme for the website?

    • trptcolin said,

      Thanks for the feedback and good wishes! For my first confirmed non-8th-Light reader, I’ve changed the theme.

      Note to other potential theme-dislikers: I only have a few to choose from, and I’m not going to pay for custom CSS!

    • trptcolin said,

      Also, I must admit that the idea isn’t really original, though I agree that it’s helpful: Jake Scruggs did this during his apprenticeship at Object Mentor; that’s where I got the idea. http://www.jikity.com/Blah/apprentice.htm

  2. James Martin said,

    Thanks very much, the new theme is a huge improvement for old eyes! 🙂

    I’ll make sure to check out Jake’s blog too.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: