Friday, April 26, 2013

How I achieved my 5 year goal in 1 year!

One year and two months ago I posted on my blog that I had a goal to become a programmer here.

Today I am proud to announce that I am officially calling it as an achieved goal: I have definitely learned how to program at this point!

My list of applications is very nice but I have also accomplished another goal that I really didn't get in to which was my 5 year goal.

My 5 Year goal was a piggyback goal for my programming goal you see: learning to program through games was to be a stepping stone to become a fulltime professional software developer.

Professional can mean many things but in this context I mean that I would make my living by programming. 

So the great news is that I accepted an offer by my current employer this afternoon to join the product development team as an Associate Software Engineer.

If you just want the short story you can stop here; otherwise if you're looking for an extended story about how I did this read on!





I didn't get into the 5 year goal on my blog back then -- in part I don't feel like my personal blog needs to get into my work related business most of the time. Also to be honest I wasn't sure at the time how long it would take me to become reasonably proficient enough for the 5 year goal to start becoming practical.

You see I have done some programming in the past -- in fact I've done more than I had originally thought of in my post mentioned above. That might be a story for another time but for now lets focus on how I completed this goal.

1: Remove distractions 
This was probably more important that I knew but I was committed enough to my goal that I took it seriously enough to purposefully clear my slate of distractions.


  • I cancelled my Netflix DVD queue. 
  • I stopped playing the MMO I had been playing.
  • I stopped reading fantasy Novels (with one break for the last Robert Jordan Wheel of Time Book though!) 
  • I set a deadline for some 3D Modelling projects I had and dedicated to no further projects in that area. 


2: I dove in 

I truly feel this was the most important item on my list. I dove all the way in. I did not take things in half measure.

I thought programming would be extremely difficult and to me doing it half way was just as good as not doing it at all.  Some things require you to go ahead and embrace them all the way or they just aren't going to work.

I spent all my time that I had gained from setting aside distractions teaching myself to program.

I briefly considered signing up for some college courses but I dismissed that as something that would take too long! I have always been fast on the pick up, and even in high school I usually had my homework done before class was over.  Waiting for the teacher, or the class, to catch up to me was only going to slow me down. A class that only meets 2 days a week was 5 days too little for me.

3: I choose a goal


After an initial pass at reading some programming tutorials I decided I needed to go ahead and pick something that I wanted to do. There are just too many examples out there that felt meaningless when I didn't know what my goal was.

So I decided to make a match 3 style gem game .

This was critical. From that point on everything I read I read with purpose.  I was intensely focused on finding what I needed to make my game come to life.

Every time I came across something like an array, or for loop .. anything at all. I would say to myself .. "how can I use this in my game??" and more often than not after a moment I would go "OH!! I can use an array to hold my gems!"  "I can use a for loop to display them on the screen!"

Another way to rephrase this goal is "context is everything".  If you lack a concrete context you will get less out of your learning.  My goal of making a match 3 game turned all these abstract tutorials in to real concrete tools for my box.

4: I broke out of the tutorial box immediately


Tied in to the goal above as I read tutorials I did not just say to myself "oh thats neat, let me write down that word "array"! "    No sir!

I actually programmed out my idea right then and there.

In fact most of the time when I read a tutorial I did not do the actual tutorial. I read what it was about ; decided how it could forward my goal and then applied the concept that was being taught to write a function or two to make my game.

5: I continually sought out additional learning resources

I knew that my biggest weakness was going to be that I am doing this on my own , self paced, and that I truly did not know what I was doing.

I sought out tutorials online, websites dedicated to programming, and bought some well recommended programming books that are used for college courses.

This is a practice that I have continued to this day. I have now completed  4 programming books, one of them being 1300 pages long.  I now know BASIC, FORTRAN, Java, C, C++, Javascript, JQuery, SQL, HTML, and CSS  And I'm hungry for more!

I take knowledge anywhere I can get it!

6: Persistence in proper proportion

Lets be honest -- I got stumped a lot. Dozens of times. Probably hundreds of times. Some times I got so frustrated I turned off my computer or went to bed.

But I always came back. Sometimes 5 minutes later, sometimes the next night.

Sometimes I came back and stared at the problem more until I understood what I was missing ; and sometimes I sought out additional learning resources and came back to my problem.

But what I did not do is give up. I did not decide that my goal could not be done.  Obstacles are there to prove how bad you want something.

Don't give up your goals or dreams. Don't let others convince you its too hard.

Maybe you need to break it down into smaller steps, or take a learning break and come back to it. Or heck even ask for help on some programmer forums online.  But don't give up!

7: Humanity breaks

Hey I'm 42, married, and have a 3 year old.  I take time to sit and eat dinner at the table with my family every night. I play with my son before bed time.  I also let myself have a night off and play a game or watch a movie every now and then too.

Over time I find myself less and less interested in playing games .. I sometimes find myself playing a game and say "why am I doing this.. I want to get that thing done I'm working in my program!"

And that my friends.. is when I knew I was a programmer.

8: I took a chance

This is the final one - perhaps a big deal , perhaps not.

I was talking to the HR guy at work -- and inquiring about a different position that was more in line with my previous position.

He heard me say that I had programmed some apps and he really perked up and suggested that I should apply to a programmer position they had open!

In all honesty -- the first thing in my head was "no I shouldn't , I can't possibly be ready for that yet!"

But we chatted a bit and he told me that a  lot of guys like me do better than we think; and that if I've shipped some apps I should at least try out the programmer test and interview. Hey it will prepare me for the future for when I really am ready right?

It sounded good ; he was right even if it turned out I wasn't ready -- the experience would be invaluable.

So I took a chance and applied.

And somehow .. all that hard work .. the dedication.. the setting aside of distractions.. the focus.  It paid off and in two weeks I'll be a full time programmer making my living off of doing this!

I know right now that my journey has only begun. I have so much more to learn. But I'll be extremely grateful that I can do it all day at work and saturate myself in it.

I know its going to be hard as hell. There are things I don't even know about yet that are going to surprise me and make me feel incompetent. But I accept those challenges .. once I master them I will be a better programmer.

I've proven that I am a programmer.  The first hurdle is the biggest in your mind. Once you've proven you can leap hurdles.. its not long until you're proving that you can run a race and cross the finish line!

And that my friends, is how I achieved my 5 year goal in just over 1 year.

-punchy out!

5 comments:

  1. So maybe it's not too late for me either... but I got to take care of those distractions. Thanks for sharing your story and CONGRATULATION! ...Cheers!

    ReplyDelete
  2. Welcome to the club - I always thought 'real' programmers always started as obsessive teenage nerds, its cool to hear that you can catch the bug later on as well!

    ReplyDelete
  3. Thanks for the comments folks! And definitely would say its not too late Don! Obstacles are only there to prove how bad you want something right? :) Good luck!

    ReplyDelete
  4. Impressed by your story! Keep on that way =)

    ReplyDelete