Finding my identity as a coder

Sometimes I find myself looking for a fun coding project to devote my time to outside of work. It’s my attempt to break away from my comfort zone and find something new to learn. But lately, it has been tough trying to choose which framework or language to adopt for a new project. I am also having trouble finishing coding projects.

These are exciting times for a programmer. For example, with the explosion of mobile apps for Andriod, Windows Phone 7, iPhone and iPad, choosing a platform can polarize any developer. Not to mention the popular web Frameworks/APIs such as App Engine, Rails, Django, and Facebook. Granted, there is a large pool of programmers who devote their free time to a wide range of open source projects, but there comes a time when every programmer will ask themselves the follow questions.

  • What framework or technologies should I learn?
  • Will the language or framework that I adopt define me as a programmer?

These questions currently fall outside the scope of my day job. At work, I spend most of my time on this web stack: C#, Python, JavaScript, Monorail, and of course HTML/CSS. I work with these technologies everyday and I am excluding them from these questions. The questions proposed above are geared towards which languages or frameworks I should learn for side-projects.

These questions have been on my mind for the past year. I typically try to learn any cool technology that grabs my interest. But I never really create and finish a project that’s worth while. Why? Because something else will catch my eye and I end up abandoning the project. This can be frustrating, because I only have so much free time (outside of work). This is how it usually starts out for me: I finish reading the great online book The Django Book. Then I get inspired to create a small web app using my new found knowledge. Halfway through my exercise, I get wind of a new book (beta) by John Resig called Secrets of the JavaScript Ninja. I download the PDF from the publisher and spend the next few days reading and trying out all the examples. I end up loosing steam on my newly started project and abandon it. I repeat this scenario every month and end up becoming an advanced beginner in what I just learned. Other technologies that have piqued my interest and fallen to the same fate this past year include Google App Engine, ASP.NET MVC, Cocoa Touch and Objective-C. I begin to dive into the fundamentals of each technology, but not enough to create anything substantial. The amount of money I spend on programming books alone is absurd. My only wish is to actually finish a project that I started. Then rollout some actual code via GitHub for others to use and consume.

It would be alright if I was content on just being a consumer of frameworks and languages. I don’t see any problem with picking up a new language by just reading a tutorial or the latest O’Reilly book. But to really learn and develop expertise, you need to actually produce code. And a great way of doing that is by starting a new project and code like your angry. That’s the only way to learn a new language and see the full potential behind an existing framework.

To rectify this problem I have of abandoning projects mid-way through development and to start creating real shipping software, I decided to start this blog to keep me honest. This is my journal that will document my journey of learning new languages with some actual code that’s usable. To begin, I decided to take Objective-C seriously and really try to learn the language rather than being stuck as an advanced beginner. The plan is to post several tutorials or articles devoted to Objective-C and Cocoa with some code that will be available from my GitHub account. I have no idea if this will actually help me produce anything substantial. But it’s something different.

Along with posting items on Objective-C and Cocoa, this blog will cover these topics:

  • My thoughts on random programming languages.
  • Opinions on technology in general
  • Progress on current projects/products
  • The occasional book review (Software related only)

Will this ultimately classify me as an Objective-C/Cocoa developer or iPhone/Mac developer? I don’t think so. But it’s the journey that counts. Right? To my two readers consuming this blog, enjoy!