Facts are not my personal fucking opinion. When I quote the manual for a product we are using, or describe something that you, as a professional developer, should be aware of — such as the differences between clustered and non-clustered indexing — then you don’t have a great deal of options. You can either sit down, shut the fuck up, and learn something; or you can describe how this may not be relevant to the situation.
There is no option C: “well that’s what you think, perhaps we should try my idea anyway”. The whole point of hiring a consultant who knows what the fuck they are doing is so you can avoid the trial-and-error treadmill; and if you don’t think you can trust me, why are you paying my bills? Seriously… get someone else, we’ll both be better off. You’ll have someone who will accompany you on your wild goose chase of “performing a join client side will be faster”, and I won’t have to work for a bunch of fucking retards.
Ta-dow. How’d you like me now?
I do not turn up to work to join your internal politics. I am getting three to four times your shitty salary, and thus have already pissed higher than any line you can imagine. I am there to keep myself in fast cars, strong booze, and loose women — I am absolutely not interested, in the slightest, in carving myself out a unique smelly patch of your local flavor of fail. You can keep it.
The only reason I am trying to do my job well is so it looks nice to the next chump who hires me. You claimed I would have the resources so I can do my job in the interview process. No fucking backsies.
You will find this design pattern in Knuth and K&R. This is because it’s not specific to the underlying design pattern, but how its applied. A team will take an advanced tool or some architectural guidance, and use it to vigorously fuck themselves right up the pooper. This is because they assume they can implement something complicated, for free, without any of that complicated book-learnin’. There ain’t no fucking freebies. First law.
Never Picked Up a Book
There will be a solution to a problem. The solution is probably a little complex – it will require a rough understanding of the problem. Noobs don’t understand — they just see that solution exists, and that is “best practice”. The inevitable fail then goes down in one of two ways:
They will create their own version of a “best-practice solution”. They will do this without understanding the problem or how the solution relates to the problem. They will then end up fucking themselves by creating yet another shitty code-generated data layer that doesn’t support the concept of a unit of work or relationships.
Either that or they will use a “best-practice solution” to a problem they don’t have. They will take on all the disadvantages of a solution without any of the benefits, or even any knowledge of what the benefits should be. I’ve seen whole websites implemented using a Web-Part-per-page model, without using any of the features of Parts – just using the disadvantages.
16 Layers of Abstraction, Look!
There must be some fuzzy feeling, or herd mentality, in applying the same solutions as everyone else. We see this kind of crap fairly often in people discussing Google level scalability regarding their shitty Rails app — which on an unusual day may have to deal with two simultaneous requests…
The time comes when your engagement with an employer is coming to an end. The signs are all there – they stop arguing with your advice, and start to ignore it. Your equipment has not been upgraded, and there is nothing better in sight. You are accused of being pessimistic when you point out that the current availability is closer to nine-fives than the contractual requirements.
There is the Option of The Sloth. Your employer is the expert in the field of how happy you are making them. Let them decide when its time for you to go. Getting fired becomes easy, often a pleasant surprise, and allows you to let them know all the information they forgot to transfer out of you. Not that the morons would understand it anyway. Downside is that it can be quite hard to plan around, but presumably you have other investments.
Another Sip of the Potion
My favourite, when executed correctly, is the Blaze of Glory. Choose the appropriate managers, and arrange a meeting to discuss your future with the company. Try to give the impression you are interested in becoming a model permanent employee. The last time a mate of mine pulled this off, he managed to get stuck into the scotch with half the board of directors, before he informed them of their every shortcoming, and precisely what part of their anatomy they could stick a permanent position. Good scotch too.
The Three Wheel Motion
Sometimes your hand is forced, as was the case with my last role. You find out about some contractual terms that your employer has decided to ignore – which pretty much makes you complicit in any fraud if you stick around. The wheels are coming off, and there is a big legal difference between delivering something crap which doesn’t meet availability requirements, and basing your system on a platform which specifies that it will not meet those requirements. Especially when you’ve put it this way in your resignation letter. I call this one the Cover Your Arse – a phrase which is a serious contender for a Fourth Law of Business.
Those industrious little freetards over at Wikipedia list a whole bunch of flaws in the way that people think, "cognitive biases". Are these useful when attempting to understand how noobs think? Today I review the works of Kahneman, and conclude that he wasted his life.
About To Drop The Bomb
Confirmation Bias is a good starting point to illustrate his categorization – given some incorrect hypothesis (chicks dig iPhones), your average noob will only need a single smile from a fat chick to confirm it. On the other hand, the usual hypothesis I advance to the noobs I work with (“you are doing it wrong”) is constantly confirmed by the chaps in QA. Not just occasionally, but a handful of new critical bugs every damn day confirmation. I would expect this to confirm that they should listen to what I am saying – so much so that there should be a fucking Cult Of My Goddamn Awesomeness by now. Statues, virgins, offerings…
Sadly there doesn’t appear to be a cult developing, and the golden statue of my testicles in the boardroom is not present. So I conclude that it is not useful to identify a whole bunch of cognitive biases; people just do shit wrong. They do it wrong in all sorts of directions. Their failure only needs to be categorized and documented because its usually hilarious. They miss the target every damn time, and this is not due to a Left Bias, Down Bias, or Shot Self In Own Nuts Bias – they are just terrible at what they do.
The only real bias is the Failure Bias, because winning is hard. Leave aiming to the professionals.
Fuck you. You’ve probably done something stupid, and refused to learn from it. You’ve probably kicked in one of the many cognitive biases to defend a stupid decision you’ve made so you feel better. This has made you less effective at contributing to the future of this society, or worse still – you’ve encouraged others to follow you.
But If You Hustle, Avoid Gettin’ Rushed
Nobody likes bad news, and when an expert can’t provide a solution that meets some arbitrary timeframe, budget or the laws of fucking thermodynamics, there will be some charlatan waiting in the wings happy to promise whatever bullshit is necessary to take their money. People are happy to laugh and point how a dude falling arse-first into a cock-forest with no parachute is fucked – but when it is their arse on the line they refuse to accept the expert opinion of “lube up, mate”, and end up choosing the strategy of flapping their arms like wings while they
soar away plunge to their doom.
This refusal to accept and prepare for the inevitable leads whole teams of mildly talented people wasting their time under the direction of someone who has picked the happiest scenario presented to them. The one with “we will write a module to automatically determine where transactions should be placed in a stream of random SQL commands”. While you there why don’t you write a module that fixes the domain model on the fly?
You do not get shit for free. We’ve covered this many times. Stop listening to these idiots!
Add To The Ashes, Then Pick Up The Dust
Now normally we all sit around and have a good laugh at noobs failing at business, but its come to my attention that (especially in tertiary industry) large stinking portions of effort are being wasted. This effort could be spent actually growing the global economy, which would lead to better things for everyone, perhaps including me being able to spend my twilight years in complete immersion virtual reality lesbian porn. So every time you screw up, admit your fucking mistake and learn from it. I’m fucking angry now, you don’t want to see me as a grumpy old man.
So should professionals feel guilty about taking peoples money when there’s nothing to gain? Hell no. We are performing a vital role in society – taking as much money as possible from noobs before they go and waste it on something totally irrecoverable, like chiropractors* – and indirectly reinvesting it in things that support society like breweries and prostitution.
* Fuck chiropractors. I am utterly amazed how these crackpots have convinced society that they are a legitimate medical profession. When I fucked your mum last night, I put her back out, but a misaligned spine is not the cause the diseases I caught off her.
“Fuckin’ consultants. They always want to tear everything out and start again! Don’t they realize how much valuable code they are going to throw away? We spend millions developing this system!”
Ignorance is Bliss and You’re a Happy Motherfucker
They sure did. Like almost every client that came before them, they had spent a lot of money. Lots more than they planned to. They used a bunch of in house developers, who arrogantly claimed they had enough skill to complete a quite complex project. Two years later, there is a useless mess of code that is barely hanging together. Only one thing is holding strong, and that is the First Law of Business – you don’t magically create valuable IP from a bunch of noobs.
So then after a several year keyboard bashing marathon at bargain basements rates, you find your application does not, in fact, work. This is problematic, as you already have supply contracts, angry clients with lawyers, and big juicy penalty clauses.
Enter the Expensive Consultant, stage left. He lays out the situation and delivers his recommendation to start over, perhaps to apply some sort of design this time, and perhaps to not cock everything up by using juniors. It will take perhaps six months, rather than spending another year trying to fix the existing crap. The business delivers the rant covered in the intro.
I Damn Near Had To Smack a Ho
Fuck! If you retards didn’t try to do everything on the cheap every single goddamn time then you might have something salvageable by the time I come in. You might claim that this horseshit is ten million dollars of valuable IP, but try and spin that line to your unhappy clients, I fucking double-dare you, as they will definitely tell you to fuck off.
However the actual line that is usually delivered in absolute deadpan is: “My recommendations exist to leave you better informed in your strategic decision-making process. If you think it is more appropriate to attempt to salvage existing codebase, then I can certainly assist.” (at high rate, with no damn backsies when I GTFO).
Occasionally you are in the situation where the stakeholder is a bit of a dumbass, you spent last week and a chunk of the budget on a cocaine bender, and there is no way you are going to get things done properly and on time. This is where one of programming’s oldest institutions can help you – I am talking about the Bank of Technical Debt. Here you can take out a loan and borrow some time against your code quality, but you can be damn sure you’ll have to pay this back.
They Thought The Deal Was Legit
In the good old days, doing it wrong and early was a considered strategic decision. Not so now – we are agile, and every dumb fucker is an “independent professional” (read noob), and their strategy is to make themselves look good at the next meeting by getting as many tickets closed as possible with barely defensible code quality. Then when management starts reporting progress to clients using the current flavour-of-the-month Agile management tool it turns a bunch of lazy programmers into an all out race to the bottom.
Be Damned If They Let Themselves Burn And Crash
I can hear a rushing noise on the wind; the ninja-auditors from the Bank of Technical Debt are coming here to violently foreclose on the massive loan that this company has accumulated. I honestly have no idea if this fuckin’ awesome sounding metaphor means the real bank coming knocking for its money, or the stakeholders waking up and realizing just how fucked everything is.
Normally I would have employed Rule #3 and got the fuck out a while ago – but my paychecks (in advance) are still clearing. I’m also saving my best piece of consultancy for last: “You should have listened to me more”. Dumb fucks.