On Motivation and Shipping
Motivation in IT is a diverse issue. For many, coding is just coding and it will never be interesting in itself, only what you get from it in the form of salary makes it interesting. There’s the door if you share this opinion.
For me, motivation is the biggest part of the job, since salary is pretty much a given for any good coder these days. I started my career writing C# for a bank wearing a suit every damn day. The awesomeness of moving to Warsaw to work for this particular client quickly wore off at the workplace. At least shipping was not a big issue, after navigating the arcane “copy files onto a network share” procedure. Me and my boss did manage to once upgrade the whole codebase from .NET 1.1 to 2.0 in one evening, but that’s a different story! :D
Shipping is the other main driver for coders. Code that doesn’t ship is like an idea for a blog post that sits as a draft on your editor - you can’t guiltlessly focus on your next idea if the previous one is in limbo. Code that isn’t live is in this limbo as well, and weighs on you emotionally. You start to question your worth, what’s the point, your decisions, your boss’ decisions, and one day you think you’ll be better somewhere else.
Which brings me to a personal story.
I once worked for a startup that eventually got funding from a minor celebrity overall, but huge for the target demographic of our product, and in the startup’s country.
The team started out small, but our founder and CEO was extremely motivated, and more than a novice in “Reality Warping” skills - he once hung a poster with a caption saying “you could sell a fridge to an Eskimo” as a memento of a conversation we had. I was the second coder to join, and we worked in this tiny, tiny room. Money was flowing in from advertising deals signed due to the CEO’s said reality warping skills, since our user engagement numbers were barely registering at the time. But for a time, things were good.
Then we hired other coders, and things were good still. Lots of drinks were had, and the mood was generally cool around the office. Lunch time was sometimes awkward with my Dutch being really bad, but other than that things were good. Then I made a huge mistake, in hindsight: I started believing the product could actually make it.
I saw our company as a “unicorn” in the making, and began pushing our CEO for a shift - a rewrite, a total reboot. The then CTO didn’t agree, and there was a falling out. He left, and I was the new CTO - just like that. I felt bad, I had nothing against the guy and had no say in how things worked out. That should have been a sign of things to come with the CEO, but it didn’t register as such back then. Thankfully, we’re on speaking terms again since then.
So yeah, no pressure, but this whole rewrite was going to happen without the former CTO, who was one hell of a coder. I immediately started pressing the CEO for more people, and he went off to get investors, which eventually yielded a one million euros commitment from the celebrity.
When the news came around the office, my words wouldn’t come out. I’ve never had skin in such an expensive game before, but felt for a while that it was all going to happen - we were going big, shit was getting real. So I hatched a plan, and it was probably the dumbest and most damaging thing I’ve ever done in my life.
It was hard to find coders in Amsterdam. Our CEO told me the high salaries, coupled with the tax burden, would burn our runway at an absurd rate, and the best thing would probably be to “nearsource” from Romania or the Ukraine to get a team big enough to crank out our nonspecific plans of “more features”. Nearsourcing is a euphemism for outsourcing, itself a synonym of “we’re cheap and think software is whatever”. As CTO, the responsibility was mine for the product’s technical aspects, and the last thing on my list was to deal with cultural differences, bad English, and overall bad coders. Not saying all outsourcing is like that, but if we went that route, our CEO’s cheapness would make the final decision gravitate towards the lowest bidder for sure. So the Great Plan was hatched: I’d move to Lisbon, open an office there, and hire a bunch of people for a reasonable (comparing to the Netherlands, above-average for Portugal) rate. The Plan went so far as allowing for 15 people - we would eventually settle around 10. I had moved to Amsterdam with my girlfriend to an awesome house, but was willing to move for “a while”, “just until things get going”. She wasn’t happy, or particularly excited by the Plan, but went along with it. So I went to Lisbon.
At first, things were awesome - we were shopping around for offices, I got a handsome salary hike and a studio in a beautiful part of the city, and the weather and food are amazing in Portugal anyway - what’s not to like? So the search for talent was on. It wasn’t as easy as I figured, but I got some friends from college on, and their social connections got us more people. We were all set.
You probably didn’t notice, but yeah: I hired old friends. Good friends. As their boss. How I didn’t see this as a bad idea still baffles me to this day. It won’t go well.
All throughout the execution of the Great Plan, everyone (and particularly me) lost track of what really, actually mattered: the product. Like, the thing we would actually be building. We had a vague idea of what it would be eventually, but completely different ideas of how to get there, and for some definitions of “there”, what “there” actually meant. Meetings would be had, sprints planned that didn’t work as they were laid out, zero accountability for when things didn’t happen, and basically we were just extremely lost. Most of all, me. For months, we dilly-dallied with cool concepts and features and code, but in all honesty, we weren’t doing our jobs. We weren’t measuring user engagement or what worked. We thought the next big redesign would fix everything - and then waited for months for it to come along.
Adding to that the “friends as employees” aspect, my already low capacity for communicating a vision to the team (since I had none to speak of, frankly) was completely undermined by bonds of friendship. At some point during the Great Plan’s enactment, I lost track of the product. Stopped believing. Maybe it was the absence of those long walks I’d take with the CEO back in Amsterdam to get me grounded, or the fact that subconsciously I assumed that a room full of good coders could build anything if I would just get out of the way. I gravitated between hands-off and super hands-on when pushed for progress updates. It was terrible, and it took a toll on my friendships, and belief in my abilities both as a coder and as a team leader.
Our office in Amsterdam became this distant place from where features were requested that made no sense to us. They would sometimes visit us, and they came with demands: show me what the (huge amount of) money is paying for. There would be no progress, and I’d have a talk with them. From these talks I would take on the team from an adversary-like stance. It was just a clusterfuck of unspeakable dimensions.
A particularly dark low point was having to fire one of my friends. It was not nice, and the catalyst for my inevitable burnout.
One day, 9 months after moving to Lisbon, after a call with the CEO with hints of debt-motivated suicide (as a joke, or pressure tactic, I still don’t know) I just said fuck this. I went to the office late at night to pick up some stuff, and that was the last time I set foot in it. Was accused of unprofessionalism, but really didn’t care. I went back to Amsterdam feeling like shit, and could barely touch a keyboard to code for months after that. I stayed home and watched TV for weeks, like a slob. In a way, and even though this was over two years now, I still battle sometimes with the feeling that I can’t code for shit. Not to mention leading any other team in the future. The wounds ran deep, and have only recently healed up.
As for messing up friendships, I’ve been lucky enough to not have fucked it up that much. We all realize how dark the times were, and how mistakes were made on all ends. I still think the guy who dropped the ball most often was me, though. But things were said on all sides, and a lot of it was totally unnecessary. The CEO has since left the company, and after a while with someone else as CTO (from the team I put together), the office has shutdown and most people have been laid off. I still think the product might have worked out, but we truly had no idea how to pull it off.
My time at this startup was “fascinating” for want of a better term, and really taught me a lot not only about myself and other people, but also about startups and the whole race for “unicorndom”. I stopped working at product companies after this (and a brief stint at another one that wouldn’t even pay my salary on time), and have learned to stay away from non-technical, “idea guy” founders. Honestly, I don’t even know if success is a good thing when the people at the top will do everything it takes, including lying to investors (which we did) or selling people’s personal data (which we didn’t), to get it. And it seems that these days most successful CEOs are douchebags (see Uber, Amazon, Snapchat, Tinder, Peeple, Facebook), and investors don’t care - they just want their return, no questions asked. It’s a toxic, toxic atmosphere, and my advice to you is stay the fuck away.
I started a side-project after all this, since my disappointment with the business world made me realize I’ll only “make it” with some degree of financial independence if I create something of my own. It was too soon after all this, and burnout was still rearing its ugly head, so after a few initial sprints with a friend (that I managed to quickly alienate), I stopped working on it. For months!
Coupled with this, lately at work I have been out of real project work, and just on the bench for a few months now. I have been doing interesting stuff with new languages like Crystal and rediscovering Javascript (which doesn’t seem so bad after reading awesome articles about it), but mostly it has been that nagging feeling of not shipping stuff again. Fast forward to last week, and after an awesome pairing session, and shipping features again, it really dawned on me - I need to ship code. It’s just this base necessity for me. Just like that, my eagerness to work on my side project came back. Shipping, man! If you’re a devout coder, there are few things it won’t fix. And I feel super-stoked about working on something of my own again.
And frankly, relieved for getting all of this off my chest. Would I do it again if I had a time machine? I’d probably go back in time and prevent the conception of Ayn Rand or Milton Friedman if I had a time machine, but barring that I think I would go through it all again. As painful as it was, it has really opened my eyes and made me a better (hopefully!) person for it. I don’t fear coding or team leading anymore.
And going into a possible managerial position in the future, I’ll know how it’s not done.