Thursday, June 24, 2010

Why I love programming!

I am fortunate to be one of those who love programming and get to do it as my day job. But why? Why do people who love programming love it ?

I guess it just a desire to create! To keep learning! It's fun, To make the world a better place!

I started with my first PC a 486dx2-66 with 8megs of RAM and DOS 6.2 at age 14-15, it came with QBasic and i got a book on basic and started hammering things like Print "Hello World", running the nibbles and gorilla examples. The only neat QBasic program i did was this mini paint program using my joystick as a means of control.

I thought at that time whao it would be great to write games for a living, my inspiration was from games like Ultima, Wing Commander. I picked up a book The Black Art of Visual Basic game programming, learned about timers and how to bitblt and do XORing get transparency effect. All i really did with that knowledge was to create a sailor moon screen saver.

At this time i was already in a Polytechnic doing computing, picked up C and C++ there and for my final year project did a multiplayer, sort of dungeon game with DirectX and DirectPlay. There was this bug in my game and it kept crashing and I suspect that it was because of the screen update thread and my DirectPlay updates from the rest of the players was interfering with each other. So i basically need to do a thread safe implementation of my linked list (I rolled out my own c++ template linked list implementation at that time). I thought that was pretty neat, I mean at that time I didn't know much about STL, i just tried to apply stuff that I learnt in my Data Structures classes and my Threading classes to my project.

During the same time Window 95 was the cool OS of that day and I wrote a Windows 95 theme creator in VB, I put it on the net, I couldn't remember where I put it though and i lost the code to it. Never really expecting any one to go download it, but surprise ! Someone did downloaded it and even emailed me that he liked it. That was the first time some unknown person wrote to me and told me they liked what I did! Someone actually like my stuff !

I went on to university doing computer science, and went to join the Navy nothing to do with programming whatsoever, sailed around for 4 years, during that time wrote little pocket pc applications to help in my work on board the ship. After my tour in the Navy was over, joined the government sector and now doing mainly Enterprise applications using Java and also some GIS work. 

The transition from my previous career in the Navy to now a professional developer job was not too easy, stuff in the programming world moves so fast, When i left the University it was Java 1.2, when i came back Java 5 was there. Lots of stuff changed too, Light weight frameworks like Spring were fast becoming standard in lots of places. The stuff I learned in school regarding Web programming was outdated (I programmed everything in the JSP pages in those days), but I guess that didn't deter me from jumping back into programming because fundamentally programming is all about using Sequence, Selection and Iteration (as quoted from Uncle Bob in his Keynote) and solving problems. Besides I love programming ! I picked up stuff on J2EE design pattern, OO design patterns, read and learned about Agile and liked what they preached about putting users first and having working software. Hopefully can put more of that into practice with my team.

The same joy that I felt when I was younger was there (okies I am not that old), I still feel it now in my job, the feeling of creating stuff, solving problems and learning are all there. When my users tell me that they liked what I did for them, i felt the same joy as when the email from the person who liked my Win95 theme designer.

Now that I am now the father of a very active 8 month old daughter and moving onto a more senior and kind of half technical and half management role in my team, time for learning and tinkering at home gets lesser but I still try to read at least one work related book each month. Currently I am reading The Art of Lean Software Development and The Toyota Way to get some insights on Lean software and Lean thinking. I am playing around with Common Lisp, trying to write a small game, learning Clojure by reading Programming Clojure because I think that functional programming may be the way of the future and beside that it's fun to learn about stuff like Homoiconicity, multimethods and a whole new way of thinking, I am also playing around with Google App Engine in Python (Cause I love Python!), trying to code some stuff that I will tell you later when I am more or less done.
In short I love programming because I love to create things, I love to learn and its fun, hopefully in the process, I have made the world a better place for some people.