Most, if not all Software Developers have, at some point in their careers, been there. You know what I’m talking about. A project with extremely tight deadlines, a project that you joined after it was already behind schedule, a project that is falling behind schedule or even a project that is given to you or your team to save because it is behind schedule.
There are multitudes of reasons for a project to be in any one of the above states but there is only one certainty across all of them… The only way out is through hard work. I’m not talking about your run of the mill 10 – 12 hours a day, I’m talking about 16+ hours and at times even 72+ straight hours.
I’ve had my fare share of these, in various roles, first as a developer then as a lead developer and finally leading a team. I’d like to share my own experiences as well as my observations of others, both those who successfully managed themselves as well as those that did not.
Like exercising, it may hurt but you will reap the rewards afterwards.
The key to making this a success for yourself is to never give up. Don’t focus on the difficulties. See every challenge as an opportunity to learn, improve and grow. Remember that you are not the first and certainly not the last to go through one of these crunches. And lastly, like exercising, it may hurt but you will reap the rewards afterwards.
Are there benefits?
You will need to approach this with the right mindset in order to reap the rewards.
Are there benefits to putting in this amount of work and sacrifice?… I’ve seen the benefits in both myself and in others who have gone through one or more of these crunches. So this is a resounding… Yes. However, you will need to approach this with the right mindset in order to reap the rewards.
- Whether the project is a success or cancelled. As long as you never give up or quit, you will have fought a war of many battles and won!
- You will develop skills, in a short space of time, that would normally take many years to develop.
- You will learn many of the finer technical skills in a very short space of time.
- This is an opportunity to quickly earn the trust and respect of your team, your managers and the client.
- It’s an opportunity to secure the future of the project or even your company or client’s company.
- It’s an opportunity for quick career growth.
- It’s an opportunity to earn a good reputation.
- If you take what you learn and apply it in your career, the growth could be very financially rewarding.
Some cold, hard facts:
The sooner you accept these, the sooner you will be able to focus your strength elsewhere.
- You are the only one who can ensure that you make it through this. While there are a number of things that managers and leaders can do to make this less painful, the reality is that the actual workload will not change.
- You will be putting in many long nights. The hours are inevitable and unavoidable.
- You will need to make sacrifices. Little to no sleep, no time for exercise, no time for socializing outside of your team and to some extent health and hygiene too.
- You will be away from your family. Make sure that any time spent with your family is Quality Time!
How to Manage Yourself:
The key to successfully managing yourself is a combination of self awareness, thoughtfulness and taking a methodical approach to the workload.
- Firstly, for those with families or significant others. No matter how busy you may be… Take their call. It is crucial that you include them as they will also be affected by this. Discuss the upcoming or present situation with them and ask for their support and understanding. This will be infinitely easier if you support each other through this.
- Keep in mind that these crunches never last long. On average, you are looking at 2 to 3 months but there are rare cases where crunches can last a year or more. In order to ensure that you don’t burn out during these long crunches, take a short time out of a week every 2 months by working no more than 8 hours a day for that week. Managers and leaders, to ensure that you don’t loose people during these long crunches, ensure that your people are able to take a week long time out for every 2 months of crunch.
- Always have the bigger picture in mind. At times, you will get caught up in a particular challenge and will start having negative thoughts. Keeping the benefits, goals and bigger picture in mind will help to stop these thoughts from forming. You’ll also learn that keeping the right things in mind will actually help you to focus on solving the challenge. Any time spent dwelling on negative thoughts is time wasted.
- Take short breaks often. Due to the fact that your mind will be racing and working on the current challenge while also keeping the amount of backlog tasks in mind, you will not allow yourself to take long breaks. However, the continuous focus and concentration becomes counter productive as you tire and you may get stuck on a particular challenge. By taking a short break and allowing yourself a moment to switch off, you will be able to refocus on the challenge and will often come up with an elegant, simple solution to what was a mountain a few minutes earlier.
Be methodical about how you tackle the challenges.
- Whether you are following the Waterfall or the Agile frameworks, managing work in progress (WIP) is key. A Kanban board is a great help in this. If you are following Scrum, make the full product backlog visible. The goal is having the visibility necessary so that everyone is aware of what is currently being done as well as what still needs to be done. In this way everyone can manage themselves accordingly.
- Use tools to help to manage the backlog and WIP. Trello, JIRA, VSTS, TFS, etc. are all great options. Make them visible and accessible to everyone with a stake in the project. On one project, we all moved into a boardroom, put our digital Kanban board up on a projection screen, gave everyone access to the single Kanban board and got to work. It became a competition of sorts to see who could complete the highest number of tickets in 24 hours. It also had the added benefit of stopping the “How far are we?” discussions.
- Managers and leaders need to help to ensure that the backlog items are broken into small manageable tasks that take no more than 4 hours to complete. This works best when the developers do not need to get involved. The developers will then be able to focus on getting the job done rather than wasting time on context switching.
- Implement Continuous Integration. Even if it is only for this project and even if you cannot implement complete Continuous Integration… Implement Continuous Integration. Having a little Continuous Integration is better than having no Continuous Integration. In reality, Test Driven Development and automated testing are either not being implemented or are, but the quality of the tests and code coverage are in question, making full Continuous Integration unlikely. At the very least, you should have one integration environment and release a build to it at least once a day. The release time should be fixed with the goal of providing predictability and consistency for Business rather than a looming deadline for the developers. The build should only be delayed if it is a known broken build (eg. a full system breaking bug that hasn’t been resolved yet), minor bugs affecting only one area of the system are not build stoppers. As this is a crunch and to avoid context switching, bugs identified during testing become tickets and are placed in the backlog and prioritized.
Doing the above has seen me, my family and my teams through many challenging crunches. I hope that I do not go through another but if I do, there is no doubt that I will come out the other side stronger.
I hope that this helps you to get through the crunch too.