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. dev

    could you say what is the right development method which you follow.It would be helpful for all readers.

    Reply
  2. Didi

    Can’t believe I’m reading a blog from 3 years ago but I can’t stop reading it! I don’t even work in this field yet relate to 95% of the acronyms. Amazing

    Reply
  3. CaptainReality

    The tech industry is full of dead pigs who haven’t realised they’re dead yet.

    Reply
  4. Schedule

    Maybe you should edit the webpage name Asshole driven development Scott Berkun to something more generic for your content you create. I enjoyed the blog post yet.

    Reply
  5. scott

    Love it! Great stuff! ADD and CYAE are my favorites lol

    Reply
  6. LK

    A corallary to the ADD is the SSDD: Stockholm Syndrome Driven Development. This is where the A in ADD gets everyone so scared that they are really hostages and eventually just goes along with whatever the A is saying.

    Reply
  7. Richard

    Thanks. Always nice when someone points out the emperor’s lack of clothes. In the 80’s I worked at a company where the “head programmer” had stickers on stuff saying “In God We Trust, Everything Else We Code Review”. The funny thing was, we never did Code Reviews or anything close, at that company or any others I’ve worked at.

    Reply
  8. Sara

    My current situation – Demo Driven Development (DDD or D3). When a feature is designed with the prime use case being “It’ll look good in a demo!”

    Reply
  9. LV

    Already Late Development (ALD) – the project is already overdue, everybody is working twice as fast and twice as faulty, bugs get piled up, new deadline is not met again, the Customer wants new functionality for free because you have not deelivered in time, new deadline is not met again…and so on, it becomes Leave That Do That, Operation Death Star and Never Ending Story Development altogether.

    Reply
  10. Queen_Darcie

    BJD: Bon Jovi Development….Standards? Puh. Communication with your team? Puh. What the business wants?! Puh. “I’m a Cowboy! On a steel horse I ride! I’m wanted (wanted) DEAD or Alive…..”

    Reply
  11. Michael Shigorin

    There might also be a DBD variation when there’s a prominent object to point fingers at and tell “they’re SOOO wrong” implying one is perfectly ok… when one is actually even worse. Probably a DDD (Development by Distributed Denial) eh?

    Reply
  12. CRM

    iLOVE it (ADD) Great article and funny as hell

    Reply
  13. Sam

    Oh and WDD ( Wifi Driven Development) where the project must have wifi doing something, regardless of the requirements or goals of the project?

    Reply
  14. richard bucker

    BRILLIANT! Most of these are easy to understand although they are an unpleasant reality.

    ADD is cause by by an under-qualified individual in power and in fear of competition for their job and so this is the only way to be the hero.

    CDD happens when an ADD hires someone only to find out that the other person is smarter, faster, more well read, however, ADD-man is still ADD-man.

    CYAE is also an ADD. In this case ADD’s boss usually make a hiring decision that ADD does not approve of. Then ADD goes into CYA mode and will sometimes go into get the other guy fired mode.

    DBD is also attributed to ADD-man. See ADD-man has read a few articles and magazines but he has no real experience. So he uses the words but does not really know what it’s supposed to do.

    GMPM, yikes, another ADD-man. This guy just wants to be the hero. He takes 2 months to fill a position that has been vacant for 6 months. The candidate is usually a slug and will eventually be fired or asked to clean the bathrooms.

    ADD-man is everywhere.

    Reply
  15. Wakjob

    “the acronyms and frameworks keep piling up. Why?”

    Because everyone wants to be famous and why reuse something when you can reinvent the wheel?

    Technology diarrhea of The Week is killing us. Time is better spent DOING than having to learn something new that will be tossed out in a year and replaced by something else. Furthermore, most of what is newly invented just redoes something that already exists.

    People who learned C in 1970 are still using it today. Now THAT’S a programming langauge. 1 year investment pays off for 40 years. Try that with ColdFusion or some other crap.

    Reply
  16. Bubba

    How about DDD: Dogma Driven Development?

    This is when managers and delivery leads start behaving like they are part of a zealous religious sect, no longer listening to any point that doesn’t follow their process, no matter how rational?

    Reply
  17. Michael K

    I might to add from own experience:

    The ONSD: The One Night Stand Development

    Have fun for one night, publish it, customers use the ugly hack of a prototype for production, so you need support it the rest of your life.

    Reply
  18. john

    NDB – noob driven development.
    BDD – bro driven development.

    and with enough food to develope this species morph into:
    HDD = Hackers driven development

    Reply
  19. KevBurnsJr

    You forgot Cat Blog Driven Development (CBDD)

    Wherein each member of the team proposes solutions that worked great when producing their cat blog.

    Reply
  20. Vivek

    I have to follow DDD- Demo Driven development

    Reply
    1. LDS

      Also known as SMD – Smoke and mirrors development. You try building a real product out of a fake demo your investors have seen. Talk to me about pressure!

      Reply
  21. Ben

    Empirical Programming – Who needs to understand the code? Just keep hacking it until it, um, you know, “works”.

    Reply
    1. MIKE

      I Work in an environment like this. AND ITS NOT INTERESTING!

      Reply
  22. Akshar

    Bamboo Driven Development (BDD)

    When speaking to a Project Manager from a large Indian SW Outsourcing company, he told me that among all the most efficient method that works with his employees is “Bamboo Driven Development”. Bamboo refers to the plant and also means “ass fucked” which intern is supposed to mean forced to do something by inflicting pain.

    He said we have a hiring policy called “Any Eligible Trespasser will be hired” (by giving promises of a bright future high pay , H1/B1 Visas which intern gain good brides and then use BDD to make them do whatever you want them to do.

    This might be a Asshole Driven Development seen in the Asshole’s perspective.

    Reply
  23. Andrew Montalenti

    I wrote about this very topic in my post, “XDDs: stay healthily skeptical and don’t drink the kool-aid”, http://www.pixelmonkey.org/2012/02/12/xdds

    At a prior job, a colleague and I used to joke about DDD – “Design-Driven Design”. The radical idea that design should be driven by… design principles.

    Yes, I think software engineers and managers become obsessed with process (rather than *progress*) because software is a complex field. Some days, I wake up and say, “Ah, this is all too complicated and it will go to hell”, but then I have a cup of coffee, and realize all problems are surmountable (my core principles: keep making progress and get the heck out of everyone’s way).

    Another problem is that software engineers are actually attracted to what this same colleague of mine used to call FLCs — “Funny Little Communities”. Each XDD spawns its own FLC — the FLC has meetups and gatherings and sage wisdom passed down to neophytes from elders. The fact that you see this pattern repeated for each XDD should tell you something…

    What makes me sad is that as a young engineer, I also fell into these traps — obsessing over TDD and XP and Agile — and even less popular ones like MDD and AOP. Ah, the mistakes of inexperience.

    Reply
  24. Christopher

    Despite being forced into ADD, I managed to implement GMPM in my projects which led me to a senior position in my company. Apparently not senior enough, I still faced ADD when my recommendation to switch vendors was shot down and I was tasked to implement version 2 of the project I previous managed. This brought about CYAE as I managed DBD with my cowboy coding vendor. I guess we’ll see if I succeeded in the next two months. When someone competent enough joins our company, I’ll look forward to some CDD.

    Reply
  25. Umair

    NDAD [No Developers Allowed in Decisions] Methodology. Where developers of all kind are strictly forbidden from the entire project all details, to back end design, to deadlines, to review meetings, to what ever the Software Life Cycle has because the middle and top management know exactly what they want, how it should be done, and how long it will take. this methodology as most has the ADD man on top but is non-technical management who read an article some where some place

    Reply
    1. tomcp

      DDD Developer-driven development

      Main properties : strong case of NIH syndrome. Everything gets rewritten. Mysql ? I can do that better ! Methodology is judged as way, way more important than getting anything working. There’s way more unit test code than code (like 5x more). Code is so slow you could be forgiven to wrongly conclude after 30 minutes it crashed. Code does not actually work, the program segfaults or excepts before getting to the second line of the main function (which is never run in unit tests). But there’s hundreds or thousands of unit tests all of them never failed once.

      And of course when you write a system test and force it on the developer it’s “unfair”. The system test fails when it runs too slow (btw: that’s by design, and yes it does say that it succeeded, except for time limit), it then becomes flaky when they’re close to acceptable speed. These are apparently bad things, according to developers.

      And of course it regularly finds faults in module interaction that the unit tests never catch. But when it does it’s hard to figure out what went wrong, and where exactly. Again this is considered a bad thing, in the sense that not knowing about these failures and having paying customers discover them the hard way would be far preferable, apparently.

      Oh and God forbid you come up with a system test that actually starts up external programs and actually interacts with them like the production system will. “That’s mysql screwing up”. “That’s asterisk refusing to work”. I don’t think so, but what point are you making ? Even if you’re right, which seems unlikely, it’s still your problem to fix. “That bug only occured because the network dropped a packet”. My response : “That’s fantastic ! Make your system less brittle”. “That system didn’t behave as documented”. Isn’t it great that we found that ? Apparently not.

      Reply
      1. iServed

        Christ, Tom, do you work where I work?

        Reply
  26. Vijay

    Competitor Driver Development (CDD) – “They are using technology X, why not us..”.

    Reply
  27. golfadas

    UDD: University Driven Development – When you have a project to code but have no idea how to do it, eventually you find out how three nights before the deliver how to get it done so you do some soup code that passes a couple of tests OR you do beautiful code that doesn’t do shit

    Reply
  28. clarissah

    Change Requirements As You Go Development (CRAUG) – when months spent planning and designing the product and at each turn the requirements change.

    Reply
    1. Ronney Coolman

      I totally hate this one. I’ve been through such for only a couple of months, but it proved to be a good sift for friends and ass-lickers. I banned all “were-friends” then since I took several knives in my back by them

      Reply
    2. JBStonehenge

      MTD
      moving target development
      It is well known as moving target development where the yetserday’s code hack makes no longer sense.

      Reply
      1. iServed

        Speaking of Agile, let me add …

        LSD – Lip Service Development: The project team pays lip service to the framework du jour and repeats old patterns of whatever made up methodology they use.

        Reply
  29. Lenary

    Channel Tunnel Driven Development: 2 halves of the team work on the same problem starting at opposite ends, and hoping that they’ll meet in the middle. They won’t.

    Reply
  30. David Coleman

    Asshole Driven House Of Cards [ADHOC] Development It describes 99 % of software on the market these days and is exactly as bad as it sounds.

    Reply
    1. Alex Hagan

      Love it. Not only is it true, it has an appropriate and catchy anagram. You should start a consultancy!

      Reply
  31. me

    What about IDD; Idiot Driven Development.

    This development scheme is often characterized by a client, who hasn’t the slightest ripping clue what they ACTUALLY want/need, driving the development process. The client is often an individual who has devised a singular idea for a product, yet has no experience of any kind with actual product development/creation. Suggestions are often ignored. The input of the programming team is a laughingstock. Process is ignored. Deadlines are missed. The marketing team not only sells things, but attempts to demo things before the development team has ever even heard of them.

    The entire process is characterized by everybody running around, with their pants on fire, like a chicken with its head cut off, and nobody knows what is going on, EVER. This development pattern incorporates most of the known ADD patterns currently identified, but it often much, much worse, particularly because it’s all spearheaded by incompetent morons who probably print instructions on how to unlock a door with a key; i.e. idiots. Hence, Idiot Driven Development.

    Reply
  32. Manoj R.

    TLDD :- That’s legacy driver developement.
    “That code, process, design is legacy and working till now. We should not touch it. If any error occurs let’s patch it.”

    Reply
    1. seamus1979

      Ugh, yes. Why my company still has COM+ running behind the scenes of some of our older software.

      Reply
  33. Harris

    DKS Development – Don’t know shit Development

    A mode of development where nobody knows shit about the project, but they still do it. It is a derivative of Channel Tunnel Driven Development

    Reply
  34. Bernardo

    JSB – Job Security Development – Make the code as hard to understand as possible, so that they won’t be able to replace you.

    Reply
  35. GaZ

    TPSFPB – Ten Pounds of Shit in a Five Pound Bag Development.

    A method of development using non-scalable architecture to support an infinitely scaled application.

    Reply
  36. OWBO

    EESAIDIR – Everyone Else Sucks And I Do It Right Development

    I believe this to be the method of development every programmer uses regardless of whatever sub-method they say they are using.

    Reply
  37. Sam

    JGIDD – Just get it done development.

    When you have no idea what the hell you are suppose to code and manager asks u to make a demo for the client and do whatever it takes to complete it in one night. In these scenarios u don’t care how bad u r coding. How u r placing the standards, best coding practices, design patterns and even common sense under your own feet….

    Reply
  38. Scott Warren

    Multi-brain Development – Where there are multiple bosses and while they agree in the meetings they go off in their own direction when away from each other.

    Reply
  39. IshmaelHolt

    I like the formatting commands–I was just selecting text and use the Tab key when indenting didn’t come out the way I wanted.

    Reply
  40. DuncanThom

    ASP.NET emerged as a framework that gives plentiful opportunities to build fully-functional websites, web-based apps or XML services. As an advent by Microsoft it carries out mammoth .Net support & other boundless core features.

    Reply
  41. David

    CTRL+Z Development*: A derivative of “Change Requirements As You Go Development”, when not only the requirement change, but also you have to undo one step for each two steps you do. A typical sentence you hear when applying this methodology is “I’m not sure if that’s what I want, but start doing it and we’ll see if it is or not.”.
    * The name of the methodology is idea of a colleague xd

    Reply
  42. Tom3d

    Travel Driven Development

    Find a outsourcing software partner on Hawaii or Mumbai only to give management a possibility for important discussions outside of office, including evening programs and weekend..

    Awesome article btw.

    Reply
  43. Amine

    GIPTSD – Give the Interesting Project to the Sexiest Developer: when the PM gives the interesting project to the Sexiest developer in the team.

    Reply
    1. Joe

      I always knew there was a reason why I was given all the work.

      Reply
  44. Timon Nielsen

    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.

    Reply
  45. darius

    *Promoted Demo Development*

    The project manager asks a developer to develop a quick and dirty demo for a client, only to have the manager ask for more and more features, and after a few months of such iterations, the developer realizes he is actually developing the final product.

    Reply
  46. Minui

    CAAR “Client are always right”

    Client want something, no challenge, no negociations, not even reflexion on the project, just obey because he or she pays or have its company name in DJ or NASDAQ…

    Reply
  47. Adam Ralph

    I just *have* to add this because I’m always referring to it:

    Golf Driven Development

    E.g. unfathomable vendor lock-ins, arbitrary promises to deliver project X on deadline Y, using SharePoint, using IBM, using McAfee, etc. etc.

    These kinds of decisions can only possibly happen in one place.

    The golf course.

    Reply
  48. thilko

    GDD – Google Driven Development: Knows nothing at all and uses Google for important design decision rather developing in context of the domain and the team.

    Reply
  49. Bryan

    Pigeon Methodology

    Boss flies in, shits all over everything, and flies away

    Reply
  50. Avathar

    CPDD – Copy-Paste Driven Development:

    Where all features are a remix of older projects, stackoverflow answers, stolen CSS and just-like-the-demo JS gimmicks. When a new feature is asked, the team goes crazy searching in google instead of sit down and do their own thinking. Very popular among some college students.

    Reply
  51. Develop-mental

    Scat Driven Development (SDD) – Architecture craps it out in the form of frameworks and the developers try to sculpt that turd into a product. They just end up making a big shitty mess

    Reply
  52. Noah

    DDD = Developer Driven Development. Developer just do what they want and ignore PMs. (Budgets/Scope/etc.)

    Reply
  53. Mark Tomlinson

    This is one of the best, longest-running threads in our industry. 3 years+!!!

    My contribution to the naming: BDD: Bong Driven Development

    “Wait, what? Did you see that!? Man, wow.”

    Reply
  54. YodaOne

    Apparently you have to be an asshole (preferably a sadistic, sociopathic one) to develop at Microsoft. I’m now convinced that they wake up beaming every morning, thrilled that while they slept, millions of their customers around the globe shook angry fists at their products. They are happiest when they manufacture frustration for others, so clearly they are extremely happy assholes.

    Reply
    1. David

      Great post! I was waiting for someone to mention Micro$oft. My words exactly. And I’m one of those customers shaking my fist at Micro$oft almost every day.

      Reply
  55. Will Hix

    DBP – Design By Politics. Especially popular in the government. The Obamacare website fiasco may be a good example of this syndrome. Rather designing the most effective, most efficient system, you design around and through a maze of existing crapware and bureaucratic edicts to produce something that will at least do part of what you were supposed to do and will meet whatever arbitrary deployment dates the political appointees have pulled out of their asses.

    Optimistically this might be referred to as the art of the possible. You end up with a functional, but flawed product and you know it could have been a lot better, but you have a “better than nothing” solution at the end.

    And people who were not aware of any of the horrors of the sausage-making process then criticize it later, like you were too stupid to see the train coming down the tracks, when you were the guy screaming that the train was coming around the curve and people ignored the warnings.

    Looking forward to retirement and being able to be a spectator to the train wrecks rather a casualty.

    Reply
  56. Thad Bryson

    God Only Development – Where only gods will do. Any problems or bugs will not be tolerated. Doesn’t matter how many users use the software, on how many different systems, what other software will be used with it at a later date, or anything else that may come up. If There are any problems it’s your fault and you will be in trouble.

    Reply
    1. Reed

      I like God Only Development because of its potential as a nested acronym like GNU’s Not UNIX. Nice one on G.O.D. Only Development.

      Reply

Pingbacks

  1. […] Asshole driven development 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. […]

  2. […] Asshole driven development Development By Denial (DBD) – Everybody pretends there is a method for whats 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 whats really happening, or their isolation in their own small part of the project, to survive. […]

Leave a Reply

* Required