maandag 14 januari 2008

Why we will not have senior developers anymore

I have the pleasure of working with some people who live and breath software development. Coming from the old days where assembly was new and cool and above all something that made you think about the inner workings of a computer.

Now what makes a software developer senior?

These days it seems like becoming "senior" developer means having a few years of experience under your belt. You can easily have senior guys who never did anything else than php or .NET development. (nothing against php or .NET if used under the right circumstances, don't get me wrong).
To many businesses this would qualify as someone who would be labeled 'senior'.
I think there's a bigger issue here. Those new senior developers don't have that deep understanding that many of the current senior developers have. They never had to be bothered with allocating memory or worrying about limited hardware resources.

The current trend seems to evolve to "if we have an issue with resources or performance, we'll throw some extra hardware at it". I understand Ruby relies heavily on this principle, after all, development time is more expensive than cpu time.  A fact, just like looking good is more important to Paris Hilton than having something useful to say.

I personally doubt this level of seniority somewhat. They might be very good developers, but in their own language. When it comes to high performance apps and scalability, often it requires an intimate understanding of the inner workings of a compiler, down to bit level.

The "old" senior developers know for every line of code they write what bits move around, how that relates to the heap and stack. They intimately understand Pascal and C strings and the (dis)advantages of both, or why certain algorithms are more scalable than others. Simply because they grew up having to care about every bit in that machine.

Our future senior developers...

These days people often don't get down to that level of computing. They have fancy things like objects, garbage collectors, excessive amounts of disk and memory available, ... . And they often start out with a higher language like Java or C# which makes them unaware of all these intriguing little details that make or break large scale applications. I don't blame the persons, those who really want will still find all the information necessary to get that understanding of the machine.

I think we should start reconsidering our school system (for Belgium for sure) and start teaching our computer graduates the basics first before letting them have a go at a high level language which takes away a lot of the machine related problems. In their first years, give them an 8086 or an emulator that lets them run assembly. Make them aware of address registers, stack and heapspace, allow them to fool around with 0 terminated strings and the up and downsides. Make them feel the pain, they will even more so appreciate the higher level languages, but above all, they will learn why some things simply require a lower level language.

This is a call to all deciding people on school boards. Don't try to have a sexy education with fancy new languages, just get a good old hardcore education that teaches what they need to provide the world with senior developers.

woensdag 2 januari 2008


Everybody seems very preoccupied by lists around this time of year. So for what it's worth, here's a personal round up.

Last year has been a year of firsts. First business trip across the ocean, first powersuit-mandatory meeting (for an engineer, go figure), first product launch, first feedback after a 1.0 product. All in all, it looked good. On a personal level, I finally moved away from the love and caring home my mother provided me all those years (thanks for that). All in all, it's been a good year (no, not the tires) for my NADD brain. A lot of frequent changes, a lot of fun, a lot of pressure (somehow, I like that) and living on the fast track in general.

When it comes to 2008, I have no device to see the future so I can only hope and wish. Most of what I hope for is very similar to what I had in 2007. 

As Kane would have said it:"He who controls the past commands the future, he who commands the future conquers the past"

Wise words, wise words...