Wednesday 11 June 2008

10 things that should get devs fired

Today is the final of The Apprentice and if this years four finalists are representative of Britain's next generation of top business leaders then we have something serious to worry about. To acknowledge this fact I thought I'd come up with a list of the top ten things that should get developers fired (though please take this in the humorous spirit is is written - I'm not actually advocating firing people).

So in typical hard-nose, no messing Sir Allen style, here's the list in no particular order (and if you have any good ones please comment):

1. "We're a Microsoft shop we only run Microsoft" (replace with any vendor)
You've limited all design and architectural decisions down to one vendor regardless of suitability, cost effectiveness or productivity pushing up the cost of projects and potentially being left with an unsuitable solution.

Risking the success of a project by restricting technology choice to one vendor: you're fired!

2. Prohibiting Open Source Software
Despite the fact that an Open Source product may be the best solution available a prohibition on OS software has prevented its use on projects.

Dismissing viable solutions with potential benefits to your business: you're fired!

3. Single language
You've limited the performance of your development by prescribing that all development be done in one single language. The fact that the language may not be suitable for the job, will perform poorly or be more expensive is ignored over complying with an arbitrary 'strategic' decision to unify all development.

Running up costs because you can't choose the best tool for the job: you're fired!

4. "I'm a Java developer I don't do Ruby" (replace with any languages)
Your language defines your role and you only work in that one core language. You have no interest in other languages and believe your language is the one true language.

I have no place in my development team for one-trick pony developers: you're fired!

5. Documented not automated
You'd rather produce a 15 page document with screenshots on how to deploy your application than spend less time automating it. You place value on creating loads of documentation rather than producing things that actually work.

Wasting money on something that will be immediately out-of-date and no-one will read: you're fired!

6. No source control
Projects or critical dependancies have never been added to source control or even worse there's no source control at all.

This is wholly unacceptable: you're fired!

7. Artifacts built off of developer boxes
Deployment means opening up Visual Studio, pressing F5, zipping up the dlls and handing them over to IS to install (with a 15 page document).

You are a cowboy, this is simply unprofessional and amateurish: you're fired!

8. No automated tests
You never write automated tests and simply rely on the old "run and click about" or the "run the test console and check the results" methods of testing.

No way of verifying your changes, there's no room for hackers: you're fired!

9. No CI
There is no visibility of the state of the code base and as long as it runs on your machine then that's OK by you.

No way of understanding the status of the code base: you're fired!

10. You're an architect
What more can I say? You probably disagree with this whole list especially because it doesn't come with a Visio diagram and can't be orchestrated in BizTalk. You're fired!

9 comments:

Phil Whitehouse said...

I doff my cap to you sir. You're correct on all ten counts.

Anonymous said...

All true and I'm sure we could come up with more.

And it's Sir *Alan*. :-)

Wouldn't a Software Development version of the Apprentice be interesting? Or even a Software Development version of Gordon Ramsay... ;-)

Anonymous said...

LOL! That's great.

Adrian said...

1. Microsoft shop only... I would suggest that the other extreme is equally problematic - vendor proliferation. If you've ever had to manage a multi-vendor shop, you'll see that the overhead multiplies considerably. This is a question of balance - maybe not just one vendor, but limiting number of vendors is reasonable too.

2. Prohibiting open source... I agree that prohibition is extreme, but need to point out that, again, proliferation and lack of oversight of open-source software choices - taking into account the long-term outlook and support costs - is also problematic. A balance must be struck.

3. Single language... some developers like to use the best language for the job. Some like to use the language they most want to play with. Yes, a single language is probably too extreme. But language proliferation is also a problem. There aren't enough solid generalist programmers out there to staff every IT shop. I like Google's approach - 4 sanctioned languages (Java, C++, Python, Javascript). That's probably even too many for many of the smaller shops out there.

4. One-language developers... I agree that we'd like to have access to talent that can cross technology boundaries. A couple of observations though: 1) they're usually hard to keep and more expensive, and 2) if your shop is large enough, having someone who is a specialist in one specific technology that is very important to your firm may be useful. Specialists are valuable too.

5-8. Agree.

9. CI is not a single-developer choice - it's a team choice. Also - though it's less than optimal, doing regular - say daily - builds, while not optimal, should be sufficient to avoid termination.

10. Tongue-in-cheek accepted.

Unknown said...

This list as a whole is kinda funny though. I agree with a lot of it, but the tone of the list is basically saying, if you are pigheaded, you are fired, yet the list sounds very pigheaded in itself.

Making lists of absolutes with no context around them, you're fired!

Anonymous said...

I completely agree with all of this, if I posted this to my company, I'm fired!

Anonymous said...

I would change the "you're fired" with you need ThoughWorks!

Anonymous said...

"6. No source control" - If a developer do not use source control, not only fired, but I think he's fingers must be removed from his hands in order to prevent futher problems!

Anonymous said...

I can't agree with the single language developer point. Outside TW there are too many developers who think they know their language when they really don't (look at your Faux OOP post).

Inside TW there are too many developers who think they know more than one language.

Both are dangerous, neither is really a firing offense in the sense of the article as there is nothing obviously self-defeating as per the Open Source ban, single vendor solution and no source control points.

About Me

My photo
West Malling, Kent, United Kingdom
I am a ThoughtWorker and general Memeologist living in the UK. I have worked in IT since 2000 on many projects from public facing websites in media and e-commerce to rich-client banking applications and corporate intranets. I am passionate and committed to making IT a better world.