Blog posts and discussion threads about the overwhelming stress felt by those in the software industry seem increasingly popular of late, and authors usually infer that the pressures (or combination thereof) are highly unique to software. The commenters usually skew young, but there is no shortage of experienced pros echoing these sentiments. There are clearly characteristics of the software business that might lead to the belief that certain burdens of a software career just “come with the territory”.
I’d like to offer an alternative viewpoint to anyone who feels these pressures are unavoidable. Not only are many of the stressors cited by software professionals not remotely unique to software, but many of these stressors are entirely foreign to a large percentage of the industry in many parts of the world. In other words, these problems aren’t that “special” and are often symptoms of a toxic employer more than a toxic industry.
What are the main complaints and concerns heard from those in the software industry?
Unpaid overtime — It seems as though the younger generation feels that 70+ hour weeks are the norm and not the exception, which may be a function of their observations of a small subset of the industry. I have represented hundreds of companies with a client roster that includes a mix of startups, mid-size firms, and Fortune 500s, and the number of development shops expecting even 50+ hours is dwarfed by those asking for something resembling 9-5. Your experience may differ.
There will be occasions where even a straight 9-5 turns into 9-midnight, but that isn’t specific to software. Talk to a retail manager about their holiday season hours or ask your accountant to dinner and a movie in March or April (in the US). Every industry has peak times, so unpaid overtime is hardly unique to software.
Most unpaid overtime situations are simply explained. Employers who consistently ask for unpaid overtime are understaffed, and employees that aren’t interested in working those extra hours need to either refuse or find a new job. Companies can get away with asking for more hours when the economy is down. Right now (and for the past few years) it’s a seller’s market, and finding a new job (particularly while you still have a job) isn’t the challenge it can be in other industries.
Attitudes are starting to change and more companies are asking for less time, which may be due to more accurate metrics on how increasing hours does not always result in better project outcomes.
Pressure to deliver on time or fear of failure — Clients (whether internal or external) can be irrational beings with unreasonable expectations, and some projects are destined for failure from the start. Inept management, insufficient resources, or improper tools might make developers feel helpless to remedy the situation.
Are tight time constraints indigenous to the software industry? There are many instances where speed to market is a factor, but an unreasonable timeline can also simply be poor (or overly-optimistic) estimation. Skilled managers don’t regularly overpromise and underdeliver, and companies that care about their employees will protect them from forced marches.
Companies committed to avoiding failure will have systems in place to reduce risk. Complaints about fear of failure often are accompanied with details about the employer having no QA/testing, the absence of process and any real development methodology, outdated tools, or no source control. In other words, if your employer miserably fails the Joel Test you may be more likely to feel pressure. Many who stress over fear of failure are working under conditions where success would be unlikely.
These also are not unique to software.
Some individuals feel it’s necessary to invest many unpaid hours keeping their skill sets up-to-date to maintain marketability. In technology skill markets characterized by low supply and high demand (see AngularJS today), most employers eventually lower a requirement with the expectation that the skill can be learned by an accomplished professional.
The desire to invest in self-learning can be innate curiosity, but the perceived need to invest time self-learning is largely a function of the challenges provided by an employer. Those who solve complex technical problems with desirable tools by day have less to worry about at night.
Impostor syndrome — This gets bandied about in discussion forums to the point where it sometimes becomes comical, which is unfortunate for those who truly feel it. Saying “I have impostor syndrome” may be becoming an acceptable way of saying “I’m probably a better programmer than I think I am, right?“, and I can’t imagine that the condition is under-(self-)diagnosed among newer industry entrants.
Impostor syndrome probably isn’t directly related to an employer, although how a company does code review/pairing/testing may expose a developer’s work to more open scrutiny than those in other fields. If you are junior level and feel that you know less than the others at your company, you’re probably right – but it has nothing to do with a defect. Wait a few years before diagnosing yourself.
Uncertainty — A client spec that changes with the weather. A potential project that is yet to receive funding approval from stakeholders. A bootstrapped startup with short runway. These are all uncertain conditions common (but not unique) to software, but they are not unavoidable. Restaurants are also noted to have picky customers and high failure rates.
By many studies and surveys, software developers have one of the best (and best paying) jobs in the world and demand for those skills is possibly as high as it has ever been. Lots of careers are stressful, but we should be careful not to confuse which stressors may be somewhat inherent to the industry and which are signs of an undesirable employer. We may be scaring off some good coders.