Wed 2 Apr 2008
I was introduced to the word schadenfreude by an episode of the Simpsons, “When Flanders Failed“. It’s a german word that means “pleasure from misfortune”. In this episode, Homer finds happiness in watching Flanders’ Leftorium shop go out of business. The Wikipedia reference to it says that the opposite meaning of schadenfreude would be “happiness in another’s good fortune,” but I think that the opposite should really mean “misery in another’s success”. This sentiment has a long, unfortunate place in software development.
My first job as “the VB guy”
I graduated with a masters in CS, and my research involved working with the Air Force on a neural network algorithm they were implementing. This was all done in C++ and by the time I graduated, I was proficient in the language. My first job was at a startup with 3 other people, where we needed to get something done very quickly and we used VB4 (the latest VB at the time) to write the entire thing. I had never worked in VB before, but I picked it up quickly and learned how to push it to the edge of what it could do, which was a lot.
I remember being blown away by how fast we could test ideas and write new parts of the system, compared to the work I had done in C++ before. VB didn’t have inheritance and of course it had its own quirky syntax, but the power of how fast you could get things done was amazing.
That project went extremely well and we got an enormous bid to continue our work. At that point, I was firmly rooted in my place as a developer of the initial product and would continue developing it. However, we needed to start writing our own device drivers for new peripherals that we needed to interface with. In came the C++ programmers, and shortly after, I became known not as the lead programmer of the main product, but rather as “the VB guy”. As the VB guy, I was always pretty far outside of the C++ clique, even though a year before I had considered myself a proficient C++ programmer.
It’s a scar I think I still carry to this day.
Any idiot can program [insert high level language]!
Anyone who has worked for a significant amount of time in VB, Ruby, Perl, or even C# and Java probably knows where I’m coming from. There is a large number of people who hate these languages purely because they allow newer, less experienced programmers to develop working code quickly. You don’t need to know what a pointer is to program any of these languages. You don’t need to know how memory is allocated for new objects, and for the most part you don’t have to be conscious of freeing it either. You don’t need to understand a lick of the Win32 API to make a working client application in VB. The list goes on and on and on…
There are also programmers who have battle wounds from debugging memory leaks from unfreed pointers. There are those that learned to program Windows applications from Petzold’s book where you wrote the WinMain function and the message loop by hand. There are programmers who learned COM by hand writing their own implementation of QueryInterface and doing their own reference counting. Many of these programmers watch in horror as new, inexperienced programmers get the same end result in a small fraction of the time because their higher level language wraps up what they’ve spent years mastering, and makes it “just work”.
Check your ego
I believe that’s where so much of today’s language bitterness comes from. All programmers strive for higher levels of abstraction and functionality, whether it’s through libraries or frameworks. However, there’s a level at which the programmers who understand what happens internally start to despise the programmers that make use of that abstraction without understanding those internals. It’s a smug, arrogant attitude that makes a developer believe that they are a better programmer, or that their language is better, because they work at a lower level. Unless you are writing your code in 1s and 0s, there is always a huge amount of “scaffolding” underneath you that you just rely on.
If you’re one of these people, get over yourself. There are both great and terrible programmers in every language. There are brilliant VB programmers and there are frighteningly bad C++ programmers out there. If you resent beginner programmers being able to write apps quickly in VB, or put together a web site quickly in Rails, then you need to seriously rethink what the point of programming is in the first place. Their success should be your happiness.