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!
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:
I doff my cap to you sir. You're correct on all ten counts.
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... ;-)
LOL! That's great.
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.
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!
I completely agree with all of this, if I posted this to my company, I'm fired!
I would change the "you're fired" with you need ThoughWorks!
"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!
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.
Post a Comment