There is an assumption in the IT industry that somehow working late nights to get the job done is an expected part of the SDLC. What's so special about software development that makes this acceptable but for most other industries is simply a sign of poor planning?
To be honest, it's not the fact that working long hours sometimes happens, but more that it's openly accepted. From my perspective zero overtime should be a business goal and anything over that should be considered a negative indicator of a company's health and ability to manage projects. Increased burn-out rates, reduced motivation and reduced efficiency are only some of the effects of long hours.
But some things are clear. We should not be blaming the following on team members having to work overtime.
- Software Complexity - it's tempting to think that because software is inherently complex that it simply takes a long time.
- Unexpected Changes to Requirements - how long has the industry been talking about the inevitability of requirements changing? Forever. You have to plan for changes and that sometimes means having to extend deadlines.
- But Deadlines Can't Move - so new requirements have arrived but the client says the timelines can't move? There are typically 2 solutions to this problem,
- Add more resources - but beware that doubling resources rarely halves the time to complete.
- Exchange new requirements for existing ones with equal or greater effort to implement.
- A Client's Unrealistic Demands are More Important than the Welfare of My Staff - this is extremely common and is a sign that you haven't built up a good relationship with your client or you aren't able to manage the client's expectations. As vendors we have to learn to set expectations and to make our clients realise the consequences of decisions they make. Often a client's decision will have been derived with no consideration of the practicalities of actually delivering on it. If client and team are working closely together this is less likely to happen.
These things aren't unique to the IT industry - other industries run projects, have to deal with complex issues and are under time pressures. Why is IT so different? I think there are a number of key drivers.
- Passion's Double Edged Sword - IT is (luckily) one of the rare professions where a large number of its members LOVE their jobs. If they weren't coding at work they'd be doing it at home. In many ways it's like a drug and for some working overtime is a symptom of their addiction and commitment to their craft. So as individuals we have to take responsibility for the amount of overtime we choose to do and be aware that if regularly CHOOSE to work long hours then those around you may come to expect it and (subconsciously) factor this in to project plans.
- Client/Vendor Reality Mismatch - there is a significant gap (at least in the sectors/country I work in) between the value a client perceives in IT and the cost to the vendor of implementing an IT solution. Essentially, clients won't pay what software costs to deliver. This mismatch is exacerbated by product vendors over emphasising what their products can do, resulting in vendors having to live up even more inflated expectations. This makes it crucial that vendors are explicit about what a client's money will be spent on and what value they will receive. Assume nothing, communicate regularly, let clients see progress and provide feedback early...
The point of this post is not to encourage team members to show their bosses the hand and say "no, sorry, I don't work overtime" but rather to highlight it as an industry problem and something that should be actively minimised, rather than accepted, in an organisation.