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.
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.
LOL :D
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!
You’re also missing Fate Driven Development. Why write tests, when you can count on the will of fate? Also related, Prayer Driven Development.
And this is how we came to know and love IE 6, 7 and 8.
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.
Our process is Well Rounded: We’re cutting all the corners …
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.
Reminds me of my old post – http://tamersalama.com/2006/08/16/the-dd-way/
Still true today.
TGBP development, This Gotta Be Possible, yeah right
Clap Clap Clap Clap – Great write up and the comments are really funny.
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.
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”.
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….
**FDD** Family Driven Development. Management adding their spouse, son/daughter, nephew/niece, etc to the development process generating wonderfull **Family Driven Development Discussions**.
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.
Sales Centric Development (SCD). Sell a product and/or features that do not exist; then code like crazy to follow through on your promises.
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!
This is the best blog, ever, on anything, in the history of everything…probably because I’ve worked under all five development models.
Don’t forget BOSD (Boss Over Shoulder Development) like in our comic:
http://toblender.com/comic/overly-vigilant/
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.
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.
YAID – You’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.
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).
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? :)
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.
This one can be common – RDD
Resume Driven Development.
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.
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
:)
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.
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.
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.
Here is one that happens at my office..” Develop it..We Will Change it Anyway – DI/WWCA” and the most irritating one!!!
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.
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).
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
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.
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.
Excellent summary of nearly all development firms all over the world.
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.
how about CADD – Customer Asshole Driven development :D
Any team where the biggest jerk (customer) makes all the big decisions is asshole driven development.
A variant of: “Can
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.
+1 adding my vote to adding this one to the list
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.
This is halarious!! Gonna have to remember this one. Haha, kidding, kidding.
What. Were there no code reviews in his company? How did this go by unnoticed?
It was noticed. See the comment you’re replying to? That’s someone who noticed. :-)
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.
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
Guilty of GMPM as charged! :)
What about WDKWWDKD – We Dont Know What We Dont Know Development?
+1
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.
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.
aka. WCDD – Without Condom Driven Development
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.”
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
Ow, right in the feels. I’ve been tasked to make a c++ unit test framework and stub generator for “control “.
That’s also known as NIH: Not Invented Here.
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.
This methodology is very popular in the video game industry.
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.
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.
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’
Loved this one. :)
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.
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
Excellent and valuable points.
As Terry Bleizeffer said has to be Learned Helplessness Development
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.
What about YJDUMGD (You Just Don’t Understand My Genius Development)