If you worked as a professional athlete over being a software engineer, how would you approach your main job: training? Every day, you would train most of the day, supervised by your coach. Your coach would adjust your training according to your goals and your physical wellbeing. There would be weeks or months where you do endurance training, ones where you build up speed. Before a major competition, you would taper off. After a competition, you would take time to recover, doing very light training.
Athletes pace themselves to optimise for peak performance, and for the longevity of their athletic career. What about software engineers? Our average career length will be much longer than the average athlete - up to 40 years in software, over the 10-15 years of professional athletes. At the same point, burnout is high among software developers, just like career-threatening sports injuries are common among athletes. Can we take parallels from sports on how to have a good professional career, keeping up with the pack, but without burning out too soon?
Stretching, executing, and coasting is a model I've found useful to think about how we pace ourselves at work as software professionals. This pace can vary based on many things: the environment, the project, motivation, externals, and many others.
Stretching is the most fun mode of all - at least, initially. This is when you are learning new things very quickly, and applying them as you go. It means having new challenges that require you stepping up. As a manager, I actively look for opportunities to stretch people, get them out of their comfort zone, and accelerate their learning.
Starting at a new company and picking up the pace is always a stretch. Joining a project that uses a different language/technology than what you're used to is a good challenge. Taking the lead on a project, when you've not led similar projects before is also a good example. The same way, working on a project with a tight deadline that forces quick, pragmatic decisions.
While stretching helps you grow faster, being in stretch mode too long can backfire, from slower pace to burnout. If doing stretch work comes with overtime, you will get physically and mentally exhausted. If being stretched means you are falling behind in parts of your work; anxiety can build up. Without a way to relax and get back to normal, mental, and physical exhaustion and anxiety can lead to burnout. Even if it's not burnout, your motivation and output can drop over time - despite you working more than before.
As an athlete, your coach would notice when you are over-stretching yourself. They do this by observing your movement, times, and output. When they determine you're overstretched and are at risk of an injury, they will order you to take it easy: do some coasting, before you get back to normal speed. Look to coaches in your life who can also give you similar warnings of being overstretched. This can be family, friends, or even an engineering or leadership coach.
Executing is the "normal" way of working. It's using your existing skills and experience to get things done, and getting those done well. You pull your weight - and often, even beyond - but in a way that does not continuously stretch you. You will keep learning new things, but at the normal, not an accelerated pace.
Coding in a language/framework you're an expert with, on a project with reasonable timelines, is an excellent opportunity to execute. You get your work done, help others, and can do this without feeling the need to do overtime. In general, doing similar work than before, with few surprises on the way, are environments where "just" executing is pretty straightforward.
Scaling back to heads-down executing after some time of stretching is a common tactic to get ahead of burning out. Usually, I see people who are stretched make a list of all the additional things they are doing, which are adding up to be too much. Then, they find others to take over these responsibilities or stop doing these things, saying no to them. They let their managers know they intend to stop or hand over this work to keep executing well, without burning out, and ask for support.
Coasting is when you're doing less and lower quality work than you're capable of. It might be a temporary, short-term breather after getting through a tough project, catching up on other things, or taking a mental break. Coasting might also be triggered by personal circumstances that distract outside work. If none of the previous apply, then coasting usually has to do with low motivation. People coasting are rarely proactive, and often need nudging just to get their day to day work done.
Beyond a few days of coasting is counterproductive for everyone. It's not good for the person doing so, their project, or their team. People on the team will notice the person is "checked out" and start to assume they can't count much on them. Others on the project will have to step up and pull above their weight to get the project done on time. And the person coasting will experience little to no professional growth, becoming rusty at even their current skills.
If you find yourself coasting beyond a short timeframe and low motivation is the reason, ask yourself what needs to change and be proactive in changing it. Why are you not motivated? Are you in the right environment - the right team, the right company? Do you have the right skills to get the work done - and if not, can you invest in getting better at the things that are missing? Can you set yourself more challenging goals, take on more ambitious work? If you don't change anything, your motivation can keep dropping, every day, until your manager sits down to have a hard conversation on whether you should be on the team, or at the company. Get ahead of this, catch yourself when you're coasting too long and look ways to get back to stretching yourself.
Mix up stretching, executing, and the occasional coasting to optimize for long-term professional growth and to avoid burnout. Do this the same way professional athletes mix up their pacing to optimize for long-term performance and to avoid injuries.
Featured Pragmatic Engineer Jobs
- Founding Engineer at Belfry. $140-180K + equity. New York City.
- Growth Engineer at Causal. Remote (Global)
- Founding Front End Software Enginee at Cradle. €75-160K + equity. Amsterdam, Delft, Zurich
- Senior Product Engineer at PartnerSlate. $100-180K + equity. Remote (Global)
- Site Reliability Engineer at Clarisights. €80-140K + equity. Remote (EU)
- Senior Software Engineer at Clarisights. €80-140K + equity. Remote (EU)
- Software Engineer - Product at loveholidays. £64-108K. London.
- Founding Engineer - Backend at Faliam. $150-200K + equity. US locations & Remote (US, Canada)
- Full-Stack Software Developer at Cutr. €70-120K + equity. Amsterdam, Remote (EU)
- Founding Backend Engineer at Flagright. €75-100K + equity. Berlin
- Founding Engineer at Mentava. $100-250K + equity. Remote (Global)
- Senior / Staff Software Engineer at Mainfold. Boston, MA
- Full-Stack Engineer at Bounce. €40-90K + equity. Lisbon, Remote (EU)
- Senior Software Engineer at Shogun. Remote (Canada, Global)
- Senior Backend Engineer at Gigs. €90-120K. London, Berlin, Remote (EU)
- Senior Frontend Engineer at Gigs. €70-110K. London, Berlin, Remote (EU)
- Engineering Manager, SRE and DevOps at Clipboard Health. Remote (Global).
- Backend Engineer at Paytient. $115-165K. Remote (US)
- Platform Engineer at Roar Studios. Remote (US).
- Head of Product Engineering at NearSt. £100-115K + equity. London.
- Software Engineer at CareerPlug. $130-155K. Remote (US, Canada).
- Full Stack Software Engineer at OpenTable. London.
- Senior Software Engineer at TwinWave Security. $150-200K. Remote (US).
- Principal Engineer at Clipboard Health. Remote (Global).
- Senior Java Engineer at Guestline. €60-84K. Remote (EU).
- Software Engineer - Backend at Bitrise. $100-240K + equity. Remote (US).
- Senior Software Engineer at Gruntwork. $170-203K. Remote (US, Canada, Global).