Sunday, September 18, 2011


I'm angry. I know I'm angry because I had to get this out of my system. Had to.

I'm a programmer, a developer, a nerd, a geek. I love technology. I get excited about the latest thingemybob that's just come out, the newest way to code something, a new language, a new framework, new ideas. It's the future I love, pushing the boundaries, moving forward, progressing. It's a positive thing. Positive. You get that word? Positive.

I love writing code. It's challenging, difficult, creative. Its an art form. Rewarding. Positive and rewarding. That's how I see it, and if you ask me all programmers should be like this. Technology changes fast and we have to keep up, move forward, be positive.

But not all programmers are like this, there is another type, and they are anything but positive. The are completely negative, about everything. The Negdevs.

Negdevs are full of petty prejudices and will do anything to belittle and undermine something that makes them feel threatened, be it a new technology or language, that usually, but not always, comes in the form of something from Apple, Google or heaven help us, Microsoft. They cling to, protect and worship their languages and technologies of choice.

This is the type of developer that has a bad image. They are the kind that are socially awkward and inept, shy, who can't communicate with other human beings on any normal level, who have turned to machines to be their friends. The bit, byte, condition, loop and thread become their social circle. Computers are their friends because computers don't answer back. Computers don't have opinions. Computers can be completely controlled. They are happiest at the command line, or in the debugger. They love assembly language and garbage collection, pointers, semaphores and indeterminstic finalisation more than they love people. You'd think they'd be happy, wouldn't you?

They're not. They're Negdevs.

If their technological beliefs are questioned, by some new whatsit, widgit or whojamaflip, their natural nasty human traits rise to the surface and they defend, with all their might. More often than not by attacking. A new technology is announced and they see it as a threat to their very existence. They fire off their defensive weapons of belittlement and sarcasm to undermine, denigrate and dismiss. They turn into petulant children. No, that's not fair on children, they don't know any better. These 'grown ups' are supposed to, but they don't. They're Negdevs.

There are hundreds of programming languages and technologies out there, and all are capable of doing particular things, some are strong on performance, some are more productive, some are scientific, some are mathematic, same are managed, some are native, some are hard to debug, some are easy, some have great toolsets, some don't. You choose the appropriate one for the job. You don't base choices on petty immature insecurities and prejudices. Negdevs do, these technology fascists, language bullies and syntactic browbeaters. Negdevs.

Why do they do it? They loved technology once. They must have, or they wouldn't have formed these opinions in the first place. I don't get it.

I'm sure there are parallels in any other industry. In fact, this is probably just human nature, politics. But that doesn't make it any easier to deal with. It doesn't make it
any bloody less annoying.

But so what? Why should this matter? It's kind of natural, isn't it?

Well, the problem is that once you get an established culture like this in any development team, the purveyors of all things negative (the Negdevs) subvert and undermine the
culture of the whole team. Nothing gets done. Nothing. Forget team spirit. Forget productivity. Forget release dates. It's the end of the line. You're going nowhere. The team
becomes obsessed with attacking, defending, belittling and arguing about which technology is best. Productivity dies, nothing moves forward, decisions are rarely made, and if they are the team will spend the rest of time questioning it. This becomes more apparent the bigger teams get, with more opinions being thrown into the mix.

Is there a solution? I dunno, there might be. I'm exasperated thinking about it. Companies need to nip this in the bud as soon as possible. Avoid it at all cost. How?

Focus. Give the team focus. Don't encourage these petty opinions by doing everything by large committee. Just make decisions. Choose a technology, and do it. It may not be the perfect choice, but at least decisions have been made. Something will be done. You have a way forward. At worst you'll learn something.