It's been almost two years since I last published anything about work. A lot has changed for me. I gave up management by quitting my job as a Director of Engineering and took a job as just a good ol' Software Engineer at Ghost Inspector. A lot of reasoning went into that decision, but to sum it up: I was sick of commuting and managing. Considering what's happened in the last year, I'm glad I made that choice!
As a lifelong introvert, I was being drained on a daily basis by having to manage other people. I had been juggling that while still coding for about four years straight. During that time, I was a user of Ghost Inspector, so when the opportunity opened up, I jumped at the chance to work there and I'm so glad that I did.
What attracted me to Ghost Inspector was the product, but what has kept me here is the amazing work environment. There may be bigger, more exciting challenges in the job market, but working here is without a doubt the best job I've ever had! For most of my career, I jumped from company to company, looking for that "hockey stick growth". But what I eventually realized is that I'd rather have stability and trust. At previous startups, we were only stable for the few months after the most recent funding round. Justin and the rest of the team have built a business that grows at a very sustainable pace. We're only beholden to our customers, not venture capital investors. The only deadlines are the ones we set for ourselves, and those are pretty rare.
The typical Agile process used by most software companies creates a lot of meetings that, in my opinion, are not respectful of a software developer's time. The majority of meetings are focused on determining what they should work on, when they should start, and how long it should take. A system designed around tracking velocity with points, will heavily incentivize speed and efficiency. So now all those meetings talking about work, instead of doing it, feel like impediments to completing points. I have worked at places that handle this better than others, but there's always that underlying pressure that creates at least a bit of animosity around meetings.
We have a completely different process at Ghost Inspector. I would describe our software development methodology as Agile-lite -- we take the few good parts and leave the rest behind. We have a backlog of epics and stories with all the good features we want to deliver to our customers. However we don't do sprints. Without sprints, we're able to skip all the other Agile rituals that I personally loath. Here's a list of all the meetings we don't do. No sprints means no sprint planning. No points means no estimation meetings. Without a product owner needing to constantly check the velocity of every story, we don't need to give a status update every day. We generally only meet once a week. Thankfully, not once do I remember anyone saying the word "blocker".
I've lost track of the amount of time wasted on just scheduling meetings at previous companies. Even the daily status was always hotly debated. Too early and all the night owls are grumbling. Too late and you risk interrupting the flow of the early birds. I can't tell you how nice it is to stop thinking so much about how we work and instead just think about the actual work. My levels of stress have been reduced to an extremely low level while working here. The meetings we do have feel particularly important and useful and I welcome them!
As a developer, I have all the autonomy I could ever wish for. There are constant opportunities to learn new skills. We don't work on the bleeding edge by any means, but we have a diverse set of projects that allow us to experiment with new technologies. Here's a truncated list of all the different projects I've worked on in the last year and a half:
- a WordPress plugin with e2e tests in Docker on CI
- two-factor authentication using Auth0
- rebuilt the browser extension in React.js
- built a user-facing search engine with Elasticsearch
- added API endpoints to export to CSV (with documentation!)
- created a deploy script with an interactive CLI and GitHub action checks
- wrote several different blog posts
All of this is possible because we have a rock-solid customer base, a stable system for our application, a team who trusts and respects each other, and a CEO who enables us to do our best work. I'm really happy to have joined the team.
Follow me on Twitter and don't hesitate to send me a message if you have any questions about moving from management back to individual contributor, or using the good parts of agile, or how to avoid meetings! Or leave a comment on HackerNews.