Asshole-driven development

[Since this was originally posted commenters have added 100+ addition methods – see the comments below. There’s more commentary on reddit]

The software industry might be the world’s greatest breeding ground for new systems of management. From Agile, to Extreme Programming , to Test Driven Development (TDD), the acronyms and frameworks keep piling up. Why?

Some say it’s immaturity: that software is still a young industry and all the change is the path to some true fundamentals. Others say it’s because software people like making things up and can’t help themselves. Well I say this: if we’re going to have dozens of models we may as well have some that are honest, however cynical, to what’s really going on much of the time. There is a happy list of these I’m sure, but this is the cynical one.

Asshole-Driven development (ADD) – Any team where the biggest jerk makes all the big decisions is asshole driven development. All wisdom, logic or process goes out the window when Mr. Asshole is in the room, doing whatever idiotic, selfish thing he thinks is best. There may rules and processes, but Mr. A breaks them and people follow anyway.

Cognitive Dissonance development (CDD)
– In any organization where there are two or more divergent beliefs on how software should be made. The tension between those beliefs, as it’s fought out in various meetings and individual decisions by players on both sides, defines the project more than any individual belief itself.

Cover Your Ass Engineering (CYAE) – The driving force behind most individual efforts is to make sure than when the shit hits the fan, they are not to blame.

Development By Denial (DBD) – Everybody pretends there is a method for what’s being done, and that things are going ok, when in reality, things are a mess and the process is on the floor. The worse things get, the more people depend on their denial of what’s really happening, or their isolation in their own small part of the project, to survive.

Get Me Promoted Methodology (GMPM) – People write code and design things to increase their visibility, satisfy their boss’s whims, and accelerate their path to a raise or the corner office no matter how far outside of stated goals their efforts go. This includes allowing disasters to happen so people can be heroes, writing hacks that look great in the short term but crumble after the individual has moved on, and focusing more on the surface of work than its value.

I’m sure you’ve seen other unspoken methods at work – what are they?

Please add to the over 200 reader suggested methods in the comments.

561 Responses to “Asshole-driven development”

  1. Slave

    GMSBDM Gangster Management and Sadistic Boss Driven Methodology.

    How else would you name a methodology, in which your boss forces you to develop a saturday and sunday, without having a real deadline for Monday, and when you arrive at 11:10 a.m. instead of 11:00 a.m on sunday, after having worked the whole week+saturday, you receive this mail message ? :

    From: Boss
    Sent: 14 September 2008 11:49
    To: Developer-Slave Nr 1.
    Subject: Today

    Slave nr.1,

    When you are late, it means that your colleagues have to stay longer and that makes me absolutely furious.
    Especially since I had this conversation with slave nr.2. yesterday I find it very offensive that you repeat it today.

    I want to make it absolutely clear that this is the last time you are late, ever. I don’t want to have this conversation ever again.

    If you disagree with the above or if you have any questions regarding the above please let me know right now.

    Reply
  2. James Carlson

    This is a great article–I totally agree that this should become part of the typical computer science courses worldwide. It will become required reading for any development team I form or work with henceforth!

    Reply
  3. Jacob Dunphy

    You’re also missing Fate Driven Development. Why write tests, when you can count on the will of fate? Also related, Prayer Driven Development.

    Reply
  4. Matthew

    And this is how we came to know and love IE 6, 7 and 8.

    Reply
  5. blue

    every one is negative. what about

    Spiritual Inspired Collaboration (SIC)

    A group of people working together peacefully to achieve a goal that is based on the enlightenment of humanity. There are many paths to greatness and together we can traverse them all.

    Reply
  6. verec

    Our process is Well Rounded: We’re cutting all the corners …

    Reply
  7. rvangeldrop

    Hot Air Planning Approach (HAPA):
    The management team is in a hot air balloon and doesn’t rely on anything else but gut feeling on when the project will be landing. As a result they always overpromise, which causes deadlines to slip dramatically.

    Meanwhile, the developers, who are on the ground are shouting as loud as they can even though it is pointless, get blamed for not being able to deliver in time.

    Reply
  8. frank

    TGBP development, This Gotta Be Possible, yeah right

    Reply
  9. Tom Brennan

    Clap Clap Clap Clap – Great write up and the comments are really funny.

    Reply
  10. Gav

    Go F**k Yourself Development – GFYD: When everything is going well, it’s the last sprint… then some one from marketing gets involved. They umm and arrr for a while, and then announce that everything on the project needs to change, with changes outlined on a 20 slide powerpoint presentation with arrows pointing to “things” with vague and/or irrelevant issues like “text needs to be bigger” (HOW F***ING BIG!) and all you can really do is shout “GO F**K YOUR SELF” in your head and shout “AAAAAAARGH” for long periods of time every time they enter a meeting room.

    Reply
  11. Tiago Pinto

    Did you ever seen WADD (What’s Around Driven Development), or as others call it IWOFT (I Want One Of Those), in action?
    Usually this happens when the client wants something he saw on Facebook, Twitter or any other website he (or his wife) uses. Also, it’s very common to see “This project is something like thiscoolwebsite.com but better”.

    Reply
  12. Sachin

    The first thing (ADD) is cent percent true and I have experienced it….at least I think every one can relate one or more with them….

    Reply
  13. Patrick

    **FDD** Family Driven Development. Management adding their spouse, son/daughter, nephew/niece, etc to the development process generating wonderfull **Family Driven Development Discussions**.

    Reply
  14. jcdickinson

    Bug Driven Development (BDD). Write code and features like crazy; once the features are complete push the product out the door and let the public do your QA.

    Reply
  15. jcdickinson

    Sales Centric Development (SCD). Sell a product and/or features that do not exist; then code like crazy to follow through on your promises.

    Reply
  16. William Sharp

    I have suffered from ADD for years! This post is an absolute classic! It ranks up there with The Office and Office Space! Thanks for the cathertic content!

    Reply
  17. Jen McCown

    This is the best blog, ever, on anything, in the history of everything…probably because I’ve worked under all five development models.

    Reply
  18. Jon Kern

    Don’t forget “Management By Magazine” (or email). This is when your boss decides to tell the team to do something because they read about in the (airline) magazine that sounded cool.

    Reply
  19. Don

    Re-invent The Wheel Development (RTWD) – Because the lead developer is utterly incompetent and un-willing to learn new methods of development, he writes his own…everything.

    This method of development is motivated by a total lack of understanding of a technology platform augmented by re-inventing the wheel to implement things the platform already handles quite well.

    Don’t understand String.Compare? Write your own. Source control system a mystery? Write your own. And while your at it, stuff it into a 2500 line method call.

    Reply
  20. Erik

    YAIDYou’re An Idiot Development. A process whereby a senior person hides his incompetence behind name-calling of his junior people thereby stifling all opposing design ideas resulting in 20 year-old designs and demotivated staff.

    Reply
  21. Dada Mungo

    How about MNBD – Management Knows Better Development. This is when management insist on having a say on everything, whether or not it lies in their domain of expertise or responsibility. Another name for this could be DBI (Development by Interference).

    Reply
  22. Matches Malone

    I’m thinking there’s something relating to laying off people that don’t appear to be working for the company 24/7, when in reality, there is some loyalty left. Has happened to me on more than one occasion, but this isn’t about me :)

    Layoff Imagined Deadweight Disorder? :)

    Reply
  23. JohnnyTwoShoes

    I’m a software developer too (databases), and we’ve used the name BSD, Banana Software Development.

    Why banana, you may ask?

    Ripes at the customer’s site.

    Reply
  24. Yehoram

    This one can be common – RDD
    Resume Driven Development.

    Reply
  25. Dean

    It’s easy to be a follower that complains. Instead, why not step up to the plate? If you know better, then prove it. If you only think you know better, but really don’t, then stay a complainer.

    Reply
  26. Kosten

    What about these:

    We’ve Got It Already (WGIA) / We Promise Anything Developers Will Do It (WPADWDI) – is where managers present features that are not done as something that’s finished for ages to be superior to competition and leave the magic to developers

    Keep ’em Uninformed (KEU) / Blur As Much As You Can (BAMAYC) – is where boss tries to blur the task by giving the developer only algorithmic instructions and keeps the relations to himself so the director cannot fire him because he’s the only one who knows how the project works. This has additional drawback when someone asks the developer if he’s done that project module, he does not know because he only knows the logic not the module name and relations

    Leave It For Then There’s Plenty Of Time (LIFTTPOT) – there’s always a time to check your blog, personal e-mail, twitter, facebook and then start coding when boss enters the office or the customer complaints about schedule skew

    You Meant It This Way? (YMITW) – Is when a management or boss chooses the easiest way, which is most of the time not what the customer wanted, just because the customer wasn’t enough specific about his needs

    I Tried It, It Just Worked (ITIIJW) – is when developer types loose code and claims that on his PC everything worked right

    :)

    Reply
  27. G.B.

    Somebody-Will-Fix-It-Development (SWFID): I don’t really know how it works, I copy and paste something that works in a similar way, and if the compiler doesn’t complain, it’s good enough.

    Reply
  28. Leo

    Recently came through Attack of the Clowns Methodology, variation of brainstorm approach. Instead of team of experts project manager is exposed to every end-customer and they have full rights to make their idiotic suggestions every time they have some absurd idea in their mindless heads. Imagine to be woken up at 4 am just because one of those clowns have “brilliant” half-baked thought how to help to run the project. Looks like over-speeding bus driven by band of lunatics who is struggling between themselves to grab the wheel.

    Reply
  29. Lyall

    SCD – Scope Creep Development

    Where the scope, as decided by everyone, but the developers, gradually expands to consume all available, resources, continuing to expand until SCPC (Scope Creep Project Collapse) occurs.

    Reply
  30. Asterix!

    Here is one that happens at my office..” Develop it..We Will Change it Anyway – DI/WWCA” and the most irritating one!!!

    Reply
  31. SHW

    Hi,

    Once on one of my favorite Usenet group we had discussed:

    Shit Happens and Who Cares Driven Development which have nice abbreviations:

    SHDD and WCDD.

    Regards.

    Reply
  32. Diego Pino

    At my company we have come up with a new concept, we call it “Color Driven Development”. In Color Driven Development, code coverage tools tells you what should be done next. Once you got a big bunch of code implemented, run your favorite code coverage tool (Sonar, for instance) on it and see how many colors you get. Sonar informs of potential bugs highlighten them in red, and also categorizes them in different colors. Now what matters is to turn all that red-color code into green, from there on changing colors from red to green is what drives development. It’s all about painting the town green!!

    Of course we don’t apply that methodology in our SW process, but this funny joke illustrates how much dogmatic and blind one can turn when start using code coverage tools (Sonar, Hudson, etc), starting to be more concerned about what the tool tells you than what you actually have to do and what is important for the project (maybe you don’t need to have some part of the code unit-test coveraged, and that doesn’t mean anything is wrong).

    Reply
  33. Kuttappan

    Some projects are run merely by the help of GOD!

    Google Oriented Development – The Engineers know nothing; they get everything from search engines like Google

    Reply
  34. Ken

    MDD – Mail Driven Development, where all communication between involved parties is done strictly via e-mail. Response times should be no less than 2 days, allowing for a task that normally would take a week to be stretched for 2 months.

    Reply
  35. David

    FUDD – Fear, Uncertainly, and Doubt Development. People make decision not based on goals or plans or vision but on fear of what might happen, uncertainty over the future, or doubt about a feature, the future, or thier own compentence.

    Reply
  36. shank

    incisive and path breaking blog. And dont think any of these are a joke, they are a reality.
    Bitter truth however is some of most intelligent leaders I have worked with practice these to some extent.

    Reply
  37. Vitaliy

    how about CADD – Customer Asshole Driven development :D

    Any team where the biggest jerk (customer) makes all the big decisions is asshole driven development.

    Reply
  38. Tom Emmons

    RDD – Resume Driven Development – Stuffing a project unnecessarily with the latest and greatest, just for the sake of putting it on one’s resume. Bonus points go to those who use as many cool new things at the same time, like an Agile team pair programming a Social Commerce site in Jruby on a home brewed App Server utilizing a semantic database … when linking via Facebook Connect from a product page might do.

    Reply
    1. Shark

      +1 adding my vote to adding this one to the list

      Reply
  39. Keith Crabtree

    This is a real jem. I once saw a developer who used KSA (Knight in Shining Armor) methodology. He purposely wrote wait states into the code. Then, when performance numbers came in below expectations, he was asked for an improvement. He would look very serious and say he would give it his best shot. After 2 weeks of basically goofing off, he would remove the states, performance would improve, and he came out looking like the Knight, praised by all for his coding genius.

    Reply
    1. Cory Gross

      This is halarious!! Gonna have to remember this one. Haha, kidding, kidding.

      Reply
    2. Gaurav

      What. Were there no code reviews in his company? How did this go by unnoticed?

      Reply
      1. Alan

        It was noticed. See the comment you’re replying to? That’s someone who noticed. :-)

        Reply
  40. Rajat

    Couldnot help laughing…this is an excellent article and to the point, infact i think this article very well sums up how things go on in many orgs.

    Reply
  41. Phil Ede

    Hi

    In one of Fred Hoyle’s novels he describes the obstacles in the way of a fictional team trying to build a space ship.

    he said that there were two types of folk present at the management meetings, those that knew what they were doing but never got their own way, and those that always got their way but did not have a clue what they were talking about. I think this form of management has prevailed in the UK.

    For those who have not heard of Fred Hoyle he was the British cosmologist of the fifties an sixties who coined the term “Big Bang”

    Phil Ede

    Reply
  42. Matthias

    Guilty of GMPM as charged! :)

    Reply
  43. Developer

    What about WDKWWDKD – We Dont Know What We Dont Know Development?

    Reply
  44. erickvla

    Don’t forget the IAWD – It’s Almost Weekend Development, where you work to complete all your pending tasks ASAP, thinking on getting ready for the parties you’ll have during the weekend instead of your code quality.
    We also have the EODD – End Of Day Development, this is usually pronounced like : ‘From now ’till the end of day, no task can be completed’. This applies to any task size, from DB redesign to sending an email. All your effort will be applied tomorrow.

    Reply
  45. Priyabrata Hota

    You missed HDD( Hope Driven Development) sometimes the team has no time to test. So they write code and just hope that everything will run just fine.

    Reply
    1. Houba

      aka. WCDD – Without Condom Driven Development

      Reply
  46. jbhops

    Rube Goldberg design. Design and then over design, make it so complicated only the engineers working on the project could ever understand the application(s). Completely defies open source, you could give the source away as NOBODY would ever understand it. Use the copy-paste-modify idiom, goto statements, jump statements, assembly modules, jni, whatever to obfuscate the logic of a module / component. Certainly _NEVER_ use an interface, and never replace and object for unit testing purposes; “the code is too complex to unit test.”

    Reply
  47. Pale

    Only Custom Development (OCD) is where no tools, no matter how good (I’m looking at you Sharepoint) will be used in house because we can do better writing custom software

    Reply
    1. reg

      Ow, right in the feels. I’ve been tasked to make a c++ unit test framework and stub generator for “control “.

      Reply
    2. Ed

      That’s also known as NIH: Not Invented Here.

      Reply
  48. Curtis

    Ship Date Development- SDD, Start with a ship date, reverse engineer the schedule and once everything is behind due to scope creep squeeze QA while talking a good *quality* game.

    Reply
    1. Jay K.

      This methodology is very popular in the video game industry.

      Reply
  49. Justin

    MDD – Magic Driven Development (aka BDD – Buzzword Driven Development)

    This entails specs loosely given by someone who doesn’t really know what they want. Typically such specs are given by middle management types who are often stubborn to admit they have no idea how you do what you do. Ambiguously phrased descriptions are used to describe a solution to a problem that their boss is pressuring them to solve.

    Reply
  50. Paul Holt

    When management and direction was nonexistent, we used RDD, or Resume Driven Development. You develop using whatever cool new technology you want to use at your next job, so you can tell prospective employers about your extensive commercial experience.

    Reply
  51. Mihir K

    How about KTMDH – Keep The Mainframe Dude Happy. This is undoubtedly a bushy-bearded, pony-tailed old hipster named Chuck or Bob who is living out the remainder of his professional career hiding in the server room, pretending he’s the only one keeping the whole shop running, wondering how he isn’t retired considering he took up computing before it was groovy, and rueing not buying Microsoft shares in 1984. Please, let’s keep feeding the data to that all-important mainframe for the ‘overnight job’

    Reply
  52. Eugene Kim

    This is more of a business practice than a coding practice, but I’d still like to contribute.

    FFF or Funded For Failure. The project is funded just enough to say it’s supported but not enough to succeed. The developers are put through hell and then laid off when it fails miserably, proving some VP’s predictions that it was not a good idea.

    Reply
  53. Expert Program Management

    Great fun! The article might be in gest but I have a strange feeling I’ve encountered these approaches numerous times in my career. Just never been able to assign names to them before :)
    D

    Reply
  54. Chicago mover

    Excellent and valuable points.

    As Terry Bleizeffer said has to be Learned Helplessness Development

    Reply
  55. McGregor

    I really enjoyed this article – the universal things fit into any situation at any time. How about: Works For Me, Won’t Fix – most common sentence spoken among my colleagues developers.

    Reply
  56. Marc McVey

    What about YJDUMGD (You Just Don’t Understand My Genius Development)

    Reply

Pingbacks

Leave a Reply

* Required