Oh hi, it’s been a while hasn’t it? A lot has happened in the last six months and I’ve got quite a bit to talk about. I won’t get into all of it now but I’ll at least give a bit of a preview of what’s to come. Some thoughts on startups vs. corporate gigs, finding your place on a new team, how not to do Agile, and what I’ve been up to. But today let’s talk about how to avoid becoming a dinosaur developer.
How I’ve been doing
Back in August I got shit canned from a senior dev role at a startup. I mean, I didn’t just get fired, I got fucking fired. At the time it sucked because I was really excited about the role when I first started with the company and was looking for a long term position since I was about to get married but in the end it was relieving to be let go. That company didn’t and still has no clue what they want. I’ve never talked shit about a former employer, and I don’t ever plan to again, but these guys were total jokers. If you’re 22, fresh out of college, and want to work for a company that wants to pay you in experience points rather than actual money then that was the place for you. Unorganized, unethical, and willing to jump on any bullshit bandwagon they could (did somebody say “ICO scam”?).
Now I’m working at a super corporate place. It’s actually sort of a government job in between education and finance. It’s the Chicago Teachers Pension Fund. It’s the sort of place where you can settle down and stay for a while. The pay and benefits are good, the work is a mix of boring stuff and challenging stuff, and the culture is definitely corporate but not in the worst ways. It’s definitely not perfect but what’s nice about it is that there’s room to grow and improve and the people running the show are open to doing things differently when it makes sense. There are a lot of interesting things I’ve learned about people by seeing how the people I work with deal with change and I’ve witnessed first hand the growing pains of moving from Waterfall to Agile. I’ll talk about that another time, though.
I got married last November and that really changed the way I approach my work and life in general. I was once a bright eyed rockstar ninja engineer who was going to revolutionize and disrupt all the industries with my 1337 skillz. I was starting startups while working for startups. I look back on it and cringe now but I think it’s a necessary part of your own professional evolution.
I notice that not many developers find a happy medium between the cult of startup culture and working as a corporate IT zombie.
The cult of Startup
When younger guys (or girls, whatever) start out they dive deep into their work. They’re attracted to what I call the cult of startups. It’s this sort of lifestyle where you really believe you’re having a direct impact on the world by helping to build the next Facebook (except this time you guys won’t sell out to the Man). You wear a lot of sweatshirts and hoodies. You put stickers on your MacBook and are always coding on the train, subway, or especially in a coffee shop. You insist on using all the latest frameworks and languages and look down on anyone who isn’t rewriting their whole stack as a micro service JSON API with a single page app front end. Surely companies much larger than yours are enlightened enough to know the benefits of rewriting their perfectly useful Java/Python/Ruby application that’s been tested in production for the last two decades in a more elegant, modern language, right? Sure, their customers are happy but they don’t know how much happier they’d be if they were using a React application!
Every day is casual Friday for you. You also get a unlimited vacation! Of course you never really get to use that vacation because there’s only a few people on your team and you have to be on call at all hours in case your AWS-hosted application with load balanced, redundant backups goes down because someone forgot to write a test case for a fatal error that just hung your Node server with its own thread (we call that Node suicide by hanging). But that’s okay because you’re super devoted to the company’s vision for disrupting the video streaming industry or something and those stock options you got in place of a living wage are totally going to be worth like 5 Lambos when they’re finally vested.
You can see it now. Your company’s disruptive app, which depends on at least one other company’s API to actually be useful, is going to be huge in the future. Of course your API provider will never go out of business or cut off your access because they definitely need your company to promote their product more than you need their API to run yours right? And of course they can never turn around and build an exact clone of your new disruptive technology (you get a disruption 10x multiplier if you invoke the blockchain) because they’re big, slow, and can’t move fast with their fat pockets full of cash while your company is quick and lean (because everyone who works there is literally starving on their ramen diet and running for their lives).
That’s how a lot of us start out. Then we get jaded.
After a decade of working in tech you’ll be approaching your mid thirties and you’ll have a choice in front of you. You can either move onto trying to start your own startup or get a grown up job. Most of us will choose the grown up job. You trade in your hoodie for a suit and tie and start working with Windows on a daily basis. It sucks and you hate it but the pay is steady and your 5 Lambo retirement plan never worked out (the company failed before those stock options vested). So you zone out on the top floor of a skyscraper and work on decades-old code until it’s time to retire. What you used to be expected to do in a week now has a three month deadline and goes through weeks of committee meetings to get approved. You keep the skills you learned when you were younger but never quite keep up with the latest tech like you used to. If you’re average then you’re not much of a people person so you never get into management but you somehow move through multiple title changes which are technically promotions but have no additional responsibilities. You’re now moving through your fifties and think the young kids coming to work with you fresh out of some shitty startups are annoying and have nothing to teach you. Those kids will likely end up in your place thinking the same thing in another fifteen years.
Choose your own adventure
That’s the sad reality I see. But there is another way. Your early experiences should be used to figure out what it is you want out of your life. Coding isn’t your whole life. Don’t let the startup cult convince you to wrap up your life in coding. Surely there’s more to you than just writing code, right? You have friends, a family, and things you enjoy. Make sure to balance those things. You can keep up with tech without having to go to every meetup and conference. And decide now what general direction you want to go in. You can always change your mind as you get older too. After all, people change. What’s most important is that you think about it.
I’ll wrap this up with a short story about my experience planning my future. I started my career as a startup cultist. I started two businesses and failed both times. I kept up with the latest tech and worked at all the casual, unlimited vacation having, free beer in the fridge with a ping pong table having companies I could. I knew early on that I was good at talking to people despite being very shy in social situations outside of work. I knew that I wanted to get into management and made plans to do it by a certain age. Knowing what I wanted has helped me steer my life in that direction. At this point I can see the path from junior dev to senior dev and beyond. I’ve checked off certain milestones like getting certain titles, responsibilities, and salaries.
Knowing what I wanted has helped me measure my progress. Going into this business just happy to write code and expecting to somehow progress along some undefined path to success just by doing it long enough is how a 1337 ninja rockstar coder becomes a sad old programmer with a skill set that’s 20 years out of date.