Introduction
When I first joined AWS in Berlin, I was put on a greenfield project. The team was just two people, a senior engineer and me. We had three months to deliver a new macOS-based hypervisor integrated into the EC2 Nitro platform. I was in a new country and a new organisation. Having already been at AWS for a year, I knew how hectic work could get and was determined to not burn myself out.
Quickly, we built out the hypervisor, with the senior engineer working overtime, often late into the night. He was focused on integrating the hypervisor into EC2 Nitro, and I was implementing the controller and virtual machine monitor. After three months, we were able to launch a virtual machine, but there were still open questions, specifically: how we would implement block storage and networking, since Apple's Virtualization Framework was missing key Virtio functionality.
Unfortunately, the real issue was that the senior engineer had burnt himself out. He took mental health leave, and suddenly I was the only person keeping the project moving forward. In total, I worked solo for six weeks, testing and packaging the prototype.
At the six-month mark, we delivered the prototype, but due to the missing functionality, the virtual machines did not boot up fast enough. We had run out of time and the project was shelved. Fortunately, the senior engineer recovered, but this time will always remind me that you cannot rely on crunching to get the project done, since you might just burn out long before you get anywhere close.
Issues That Will Arise
Burnout
Startups are inherently high-pressure environments where each team member feels like they need to be working as hard as possible. But with this high pace comes burnout. Burnout has a real health impact and that should be a good enough reason to try to prevent it. If you need another one, then you should consider how much you value predictability.
The success of a startup is highly uncertain because the predicted outcome is based on assumptions. The first priority of any founder is to decrease uncertainty by squashing assumptions. By assuming you and your team can push without end, you are guaranteeing that you will at some point lose yourself or one of your team for an indefinite amount of time. Maybe it is during a lull in business, but have you had any lulls since you started? Most likely it will be during a key point of delivery. This will burn the trust you are building with your team and stakeholders.
Insurmountable Blockers
When you are doing something novel, there will be technical blockers. Hopefully, you will overcome all of them, but some can't be. The reason may not be purely technical. Maybe, the solution will take too long to implement, or the trade-offs are too large, but there will be blockers that force a pivot.
There is an unfortunate Catch-22 here. If you don't push hard enough, you will burn through your runway before you hit the blocker. If you push too hard, you burn yourself out before finding a solution or an alternative to pivot to.
Sustainable Development
I believe the answer to burnout and insurmountable blockers is sustainable development: finding a pace which can be maintained indefinitely.
Re-Evaluate Your Goals
Ask your team this: can we keep going like this for another five years? If the answer is no, then you need to re-evaluate. Re-evaluation can take you in one of three directions: increased resourcing, smaller scope or delayed delivery. All of these sound like bad compromises because they are.
But, these are the best compromises you are going to get. The longer you delay making these decisions, the worse the options get. Eventually, you may not even have a decision to make, because you have run out of funding or your stakeholders have ended the relationship.
Compromise with your eyes wide open, and give your team a chance to make it the right decision.
Re-Evaluate Often
Re-evaluating your goals should not be an ad-hoc activity. It should happen often and at multiple levels of abstraction. Of course, there is a cost to stopping work and taking a step back. Therefore, you should implement mechanisms that allow you to efficiently re-evaluate your progress and effectively communicate the resulting decisions to your team and stakeholders.
For evaluating progress, there are hundreds of project management systems, and it is worth finding one that works for you and your team. Using an agile method is a great place to start.
What's often missed: you also need a mechanism for evaluating the stress level of your team, because the ratio of progress to stress is the real metric you need to monitor. I have found 1:1s the most effective mechanism for monitoring stress levels.
Final Thoughts
There are going to be many issues blocking your delivery. You are going to miss deadlines and have major setbacks. By working sustainably, you ensure that you have the energy and resources to pivot when you hit insurmountable blockers, building trust within your team and with your stakeholders along the way. Remember, there is no end in sight. If you don't work sustainably, you will never make it anywhere close to being done.