Saturday, 25 June 2011

The paths I have taken in Software Development

I first started programming in Apple Basic, before later moving on to DOS environment. I was never a fan of QuickBasic, but I loved Turbo Basic. Next I took a stab on Turbo Pascal, some Assembly language.

During my university years, I started doing web programming and a lot of C++ programming. I used to love Microsoft COM a lot, and I loved DirectX 3. The reference counting stuff is so interesting and at that time I thought that's the greatest gift anyone can bring to the Software Development world.

During my work environment, I started using Java. Initially I hated it so much as it is so slow, we even needed a third-party Symantec JIT to make it run at an acceptable pace. Along came Java 1.2, which makes more sense, and the last piece of puzzle that convinced me to the power of Java is when I was involved with the Java back-end team where they were able to run the same piece of software in HPUX, Solaris and Windows. It wasn't a bed of roses, there are thorns too, but compared to what the C++ team had to do for the cross-platform batch processing code to run across different platforms, it was far more elegant.

So I became an avid Java fan, even until today's Java 6, I am not that convinced that Java UI can make it big, I love doing back-end processing using Java. It is so powerful and expressive enough that many things that seem impossible or complicated in other languages are so beautiful in Java. You can embed a Javascript engine with little effort if you need to, you can have access of many high-quality networking components (think Netty, Mina, Aync Http Client), it is a beautiful environment to work with for systems integration.

In fact, in one of my favourite project, I was able to develop completely on Windows XP 32-bit, and the code was deployed to Solaris 64-bit with no issues at all, not even the need to re-compile! It was a transaction proxy that handles at least 20k transactions a day, and the automated garbage collection is so helpful to make it such a stable system. Touch wood, the system has been running for 3 years continuously without needing a single application or system restart! It really cemented my confidence in Java. It might not be a perfect language, but at least for some purposes, it is The Language.