The worst thing I can admit as a "software guy" is that I did a bad job. I mean, the worst thing I can admit to myself. You already knew it.
10:1 I did a bad job.
I didn't do what my customer thought I was doing. I never do. They never ask me to do what they want.
But maybe I can.
Can I? Can I go back and ask my customer what they thought I was doing and do that? Can I do what they actually want and not what they think they want?
My customer didn't ask me to do the thing I delivered. That's actually okay and I can make hay from this. Chances are they asked me for 50-80% of what I delivered, and wildly not for the other 20-50%.
Now why would they do that? Because they are 20-50% smarter than I am. Duh. They're also 20-50% dumber at something else so I guess we have to meet in the middle.
They know what real people want. At least they half know. And they're trying, desperately trying, to help me stop being bad at the part of my job where I was doing something for real people and not for me.
There is this important principle in life: when you ask someone for help you are opening yourself up to the other person. You are actually endearing yourself to this other individual.
When my customer says to me: "please, this thing you did, it does what I want but not quite and it does ten other things," I try to believe that I follow these steps:
- 1) Say I did a good job on ten things. Maybe I didn't. It's cool, nobody's looking.
- 2) Sell those cool ten things I did as hard as I can.
- 3) Realize I am bad at selling stuff.
- 4) Wish I had somebody else who was so slick they could do #2 for me so I can just stop working and go do whatever.
- 5) Go back and do the thing I was asked to do.
5 is the most important. If my customer isn't happy then I'm an asshole. So are you when this happens to you. Your job, software guy, is to make your customer happy. Not make you happy. If you do thw thing they wanted then all the other great stuff you did that you weren't meant to actually do will, if not be appreciated, at least be tolerated.
I love engineering. I love writing crazy fun software that does new and cool stuff. Nobody wants to pay me for that though. Because people with money are smart and don't ask for stuff they can't use. They want to pay me to get a thing they want done to perform a thing they need to have performed. That's why they are the customer. Pure science is interesting. It doesn't pay the bills.
You, engineer, are the contractor. You are the creator and you are the artisan. Rock the fuck on. But understand that the Sistine Chapel was a commissoined work.
And I write this as much, if not not moreso, for myself than for others.
B-b-but my customers are dumb and I am smart!
Yes, yes you are. Probably. Maybe.
I'm smart. I'm smart at like.. computers... and stuff. I like to tell people I do "high performance distributed computing" and that's not even me lying. It's literally what I do and what I have done for half my life (I did it when I was 16 and now I'm old as fuck, 32).
You know what you don't know? I mean, rather, you know what I don't know? Business. I, personally, don't know shit about shit when it comes to business.
I am rad as fuck at software. I am the maddox of software in my own estimation which might just make me a super asshole to you. But whatever it does or doesn't make me, the fact is I don't know what a business needs or wants. Which is why I need to listen to business people tell me what is good. They probably know SOMETRHING I don't and and they can help me.
That doesn't make them omniscient or anything. In fact there are times that they can be ignored or overruled. But in general the guys with less technical chops are bringing something to the table which I am not, and it's probably important.
However, I know what is expensive and bad for me and I will call people on their bullshit. You can and should do this because you'll do a better job overall. Like:
- Meetings are expensive. If I go to a meeting and don't talk to this group of people and don't feel good about that then somebody wasted at bare minimum my time and their money. If I leave and say "Why was I here?" then somebody screwed up royally. I did, because I never should have gone; they did, because meetings are the business cover-up for "we don't know what we're doing and hope somebody in this big fancy room will tell us."
- Software is expensive. If mty customer doesn't know what they want but ask me to prototype a thing they might not want they wasted everyone's money. Why did they want that? Why did I do it? Why wasn't I just playing Secret of Mana instead?
- I am expensive. Albinos cost a lot in stabling fees. We fucking love the shit out of carrots. Where is the sunscreen? More importantly, where is the apprecation for time and cost? It can get lost.
I know these things are expensive in a way that isn't just about money. They are life-draining and soul-sucking and I don't want them in the work I do, and neither do you, because it makes us not want to work anywhere near those teams that do those awful things.
Whether it's bullshit or not I've decided I have High Ideals and I need to be coddled because I make binary digits go from A to B in a way that is indistinguishable from magic to somebody else. So unfortunately I am taking this opportunity to act like a spoiled child of royalty.
Never said I was nice.
So that's how we both fucked up.
Let's learn from each these other folks and believe they know something unknown. We are expensive to feed, surly, and did a not great job.
They were expensive to feed, well-mannered, and also did a not great job.
Somebody had a fancy steak.
We're all bad and that's fine. I'm mostly the worst because, again, I'm the shitty surly developer guy who thinks he is better than sliced bread, but let's agree that nobody did well.
Again, I don't know how to make a business. And they don't know how to make software. Let's hug it out. <3
I don't know how to be good at other stuff though, so I guess I'll keep thinking about software, so...
Does my customer know what they want?
Maybe. Maybe not. In my particularly self-congratulatory high perfomance I'm a fucking shithead discipline... no. They thought they knew what they wanted but...
Let's get serious. I only think I know what they want and it's because I've been routing tens of thousands of connections off a shitty Linux box when I was a kid with stolen resources and I think I'm the second coming of Linus Torvalds.
Which I am not.
So, let's get to brass tacks. They don't know what they want and I don't know what they want, as much as my Martian Manhunter I totally have telemawhatits skills ego says I super do. Oops. Now we're at an impasse?!
Not really. Now we have to do the thing computer people hate. We have to have discourse. And not on the internet relay chats.
Let me tell you about my latest round of discourse. I think you'll feel better!
"Hey, we need to ship this scenario because it will give us data on how our things that are actually a live product are performing."
"Yes, that seems smart. I will try and make that happen."
"Due to the shifting Sands of Time in which we, I guess, lost some useless prince we need you to deliver 10x the performance you signed up for."
"Um fuck am I being judged on this because the thing I said I'd do and this are not the same."
"Can you do it or not? You said you could."
I wasn't happy.. You wouldn't be happy. This is a thing that happens when you do software pretty much "on the reg." Now what?
THIS IS AN IMPORTANT PART
You feel like you got fucked in these situations. I sure do. Nope. You didn't. You're just writing software and your software needs to scale. I mean yes you got fucked in that you made some assumptions and they were wrong and maybe your bro who was a great coder went to Netflix in the middle of that cool project. but that's your problem. You actually didn't get fucked. You're just... doing software. Shit happens.
If it helps somebody made wrong assumptions about you and your lethal ninja skills too. Thery wrongly assumed you would be able to do magical things that you can't. They probably almost believed the hilariously wrong time or cost estimate you provided. We all make mistakes.
You know who gets fucked? Like really? Guys who are building physical hardware. When a part gets delivered and doesn't fit they have no choice but to wait for a few (weeks or months) to get that new part.
You can go code it. I can go code it, Let's
GO CODE IT.
Don't be mad at your situation. Don't say things like...
This isn't what I signed up for.
Yes. I'm writing this from experience.
It's not what I signed up for. It's what my smart friends said I should have signed up for and ended up doing because, again, of that awful stage where I had to compromise and stop doing what I wanted and start doing what I was asked to do.
Yes, I was asked for unreasonable things. Yes, I told my customer (management) that I knew what was right. Mostly my customer (management) agreed, either because it was true or because they wanted to talk me off whatever ledge for the day, but they also wanted to guide me to get it done right for them because they, foolishly, wanted to pay me so I'd hang out and actually get done the thing they askSed for.
So I mostly kind of managed to do that between my malaise and knowing better about everything, but now I feel bad because...
I did a half-assed job.
No big. Our industry is great. We should enjoy what we do and make the world better for everyone and never take what we have for granted.
You did this too, probably. Maybe you still feel a pang of guilt for never delivering the thing you dreamed of. Oh well. Now that you've done that half-assed job go do, let's say, a three-quarter-assed job. People will think you fucking walked on water because if you actually did 75% of the eventually agreed upon things you are basically a rockstar god among developers, because: 95% of people in this profession are fucking awful and don't do what they say they can. If you can do, well, what they thought you said you could then you're golden. Yes that's not what you said you would do, but what you said you would do neither solved the actual problem nor was physically possible. But you, like I, should have seen that and not overcomitted to crazy stuff, or undercomitted to the thing you were meant to do in the first place. Then you wouldn't feel fucked.
If this isn't happening to you please invite me to your rad seminar and teach me how to save the world with less swearing.