Programming Today

I read a great article today from Joel Spolsky (the author of Joel on Software) talking about the challenges facing students who learn only Java.

You can read the article yourself at

This made me think about how my own studies had prepared me for programming in the real world, to which I can only conclude that I was left so hopelessly un-prepared as to be frightening! ๐Ÿ˜‰

Joel talks about studying a particular language as though it’s a common thread throughout education, with the current favorite being Java. My own experiences were very different! We learned a reasonable amount of Pascal (although our lecturer decided that the previous years project of writing a word processor was un-necessarily difficult!) followed by a smattering of C, an introduction to RTL/2 (where we spent most of the lab sessions just trying to get the environment to work properly!) some real-time BASIC (on a robot) and some 68000 assembler (including hand-coding in binary!). It’s worth mentioning that we never even considered databases! ๐Ÿ™

Whilst I left college without having a thorough grasp of any one programming language, I HAD learned to focus on algorithms, which I’d become really good at, and this has served me really well since. Everything else though, I’ve had to teach myself – which really is “learning the hard way”!

Using my college experience as a grounding, I opted to focus on C (as soon as I realised that assembler was too tedious for the real world! ๐Ÿ˜‰ ) and I spent many years getting fully to grips with it on UNIX systems and on DOS. When I then came to start programming for Windows, Visual C version 1.0 had just been released and I naively thought that this would be an easy transition. I don’t think I could possibly have anticipated how wrong I could be! I wrestled with this for about 6 months, before giving up and discovering Visual Basic! It wasn’t that Visual C was particularly difficult in itself, but the whole GUI aspect was so new to me, there was very little documentation at the time, and the Microsoft docs encouraged everyone to use MFC, which was fabulously complicated back then and all of this led to me struggling to build reliable software within reasonable timeframes!

I came back to my roots when I had to write an interface application that needed to run under DOS and connect a PLC (Programmable Logic Controller) to a SQL database. Since this was running across two ports in parallel, it seemed reasonable to look to OO (Object Oriented) techniques to create the code, as this looked to be a cleaner solution to the problem, so I taught myself C++. Again, not learning from my earlier experiences, I attempted to apply this experience to Windows in the form of Visual C++, and ended up tied in a knot wrestling with still early versions of the MFC! Still, Visual Basic was available and despite feeling like a “lesser” programmer by using it, I could roll out reliable software in predictable timeframes.

Skipping forward to today, I’ve learned a number of different languages along the way – some to a higher degree than others. I can now work with Java, Perl, Python, Jython, C#, PHP, etc., with my current preferred language for Windows being Visual C#.NET. However, coming back to Joel’s original article, I still maintain that for “proper” programming at a system level, you can’t beat good old C!

I look forward to the barrage of comments on this oft-debated topic…..! ๐Ÿ˜‰

About The Author


John is a Senior Solutions Engineer for a U.S. IT company, specialising in Software Defined IT Infrastructure. He has an extensive background in IT and spends way too much time sitting at his PC's, making videos for himself and other Internet marketers and dreaming of spending more time boating. He's also passionate about Jesus.

Comments are closed.