During my days as a young and budding programmer, I was bubbling with confidence. Never in the wildest of dreams did I imagine that a software project or a task given to me could just not get done.
I mean, sure I might have to throw in a few extra public variables, not have enough time to give a shit about the quality of the code I was writing or throw in a couple of hundred band-aids on the codebase, but I would still get the job done.
Put simply, I knew if I worked fourteen hours a day I could stick it up together to deliver to a client. I also knew, if I acted smartly, I would not get my ass kicked or busted. To add to that, if I used enough jargon I could blame it all on requirements, use-cases or some abstract shitty artifact that was always responsible for the failure of the project.
Young engineers learn the shit that they see their seniors do and they learn it fast.
Then it happened. My first successful failure where we were building a piece of software that was sofa king (to be read really fast repeatedly) complex that the thought occurred to me a month before the delivery date - what if, we don't make it - the voice said deep down within as I tried desperately to write a function that would increase the power of the device my code was supposed to control.
This was a project where we were integrating with random devices around the world and some of them had serious issues with their hardware, which is what we were working around. This was not a typical - 'what if we don't make it in time' or 'what if we are a week late' question. Those, you can answer by pointing your finger at a random artifact. This was a case of 'what if we just cannot build this project'.
We did not have shit to show to the client.
What we had, did not work.
What if another one month passed and we were not able to crack the show-stopping problems we were facing?
What if we just did not get anything done?
The question was scary. The realization that I as a software programmer with just a couple of years of experience behind me, had limitations which were as real as gravity was scary. The realization that I could not overcome these limitations with trickery, big talk, smart ass ideas or stupid band-aids was even scarier. All the tricks that my so-called seniors had taught me were failing me. Blatantly.
The project ended without anyone getting killed. We threw tons of band-aids in there. Got a few things done. Then, I struggled for hours and days to set it right before we handed over the project to the client and moved on. Multiplitaxion Inc announced it a grand success. I called it the first (and hopefully the only) successful failure of my life.
I don't want to live that part of my life again. It was terrible. It was scary. It felt like shit. What felt worst after the project however, was not the fact that I was overworked, stressed out, about to quit had it lasted sometime longer or any of that. What felt worst after the project was the feeling of being used - almost like a mindless human bomb who goes and blows himself up for a cause which is totally insane and downright stupid.
This was the part of the project, that helped me grow in ways I would have never otherwise grown in my entire life.
One of the most important things that the project taught me was the art of caring and putting in my one hundred percent into the work that I do, without giving a f@#ck about what my team, my managers or my clients classify as 'success'. After all, I had just been a part of a project that my team, my managers and even my clients classified as a huge success when the reality of it is that it felt like a one big colossal f@#k-ups of my professional-work-life.
Since then I have come across countless examples and incidents where a client somewhere wants me to believe that my tiniest of non-confirmations to their processes, their dates or their deadlines, equates to a humongous failure. The idea is simple - convince the programmer psychologically that shipping the software on a specific date with a specific list of features is so hugely critical that his entire career depends on it and then he will ship.
I have been through so many of these situations in my life, that I almost find them hilariously funny every time I encounter them now.
Every time I come across situations where I am being told how critical it is to ship on a given date or just how critical fixing a spelling mistake of a label is, I smile inwardly, argue outwardly and somewhere deep down inside, there is a calm, quite, silent voice telling me:
'You have been through this before Pops. You know what to do. Give it your best shot, be honest to yourself and then don't give a rat's ass about the so-called-success.'.
Years ago, after my first successful failure, I learnt that you are way more efficient if you leave your fears of failure behind and replace them with passion. If fear and pressure move you, that is all you will get your entire life.
On the other hand, if you are moved by your own passion to do amazing work, questions like - what if we do not ship on time or what if we fail - will just start sounding seriously stupid to you. You will eventually stop worrying about them and start giving your best shot irrespective of whether these questions are asked or not.
When the sky starts falling, don't panic. Prioritize. Think pragmatically. Give practical options to your clients. Do all you can to turn your project into a win-win situation for everyone connected with it. If you keep getting bull-shit in return, continue helping them, continue shipping, continue putting in your best but just stop giving a rat's ass about what anyone on the project says about the success of failure of your project.
It's time to wear a thicker skin.
I wish you good luck.