Software Development Jobs Suck. Here is Why
I’ve been surprised how few software engineers game in their spare time. I do understand that as we bash out code late into the night, more screen time feels like the last thing we need.
Yet there are things we can learn from the wider world of software development, and Japanese gaming giant Nintendo seems to have got software development right, in a way few in the west seem to understand.
So, here is what we can learn, and how we can improve software development for all concerned.
Values, Values, Values
A quote (mis)attributed to Nintendo game designer Sihgeru Miyamoto explains an underlying philosophy at the heart of the Japanese game giant.
“A Delayed Game Is Eventually Good, a Bad Game Is Bad Forever’.”
Rather than rushing their products out of the door software developers at Nintendo are given time to produce good quality products, even if it means missing a deadline or two.
Nintendo have other values too, and the gaming industry is sitting up and paying attention. Referring to Nintendo’s latest mascot game Max Nichols from competitor Bungie has this to say:
“Super Mario Bros was made by a team of five people, 38 years ago. Of those five people, four of them worked on Super Mario Bros Wonder’”
The consistency of staffing and the lack of hire ’em and fire ’em practices have benefited Nintendo. Nintendo respect their software developers and understand the work they do is at the heart of their business.
Imagine a world where:
Layoffs are an anomaly, and the company keep valuable knowledge and experience in house. Time is seldom wasted on Knowledge Transfer (“KT”) like in the west
Nintendo employees know what they are doing, and why they are doing it. Staff have experience working on their codebase and working practices are well understood
Staff are retained (the retention rate is something like 98.9%. When employees start at Nintendo they tend to stay there
Quality is important. They aren’t afraid of holding back or delaying projects if that is required. This presents the company in a good light
The staff are happy. 98% of employees would recommend working at Nintendo to a friend
The Contrast: My Experience
I believe the general working practices in western software development are lowering the quality of the working experience and the quality of the software we produce.
This has gotten so bad that I think our software development practices don’t work well for anyone.
The Smash and Grab
New software developers come into the industry and move every 12–18 months in order to get experience and increase their salary as fast as possible. This means that their income grows as it is rare for a software developer to get a raise in their current job.
The result is that software developers see their job as simple access to a paycheck, and employers see software developers as transient mercenaries.
Projects can have such high turnover rates that the code quality declines, making onboarding challenging and ultimately damaging the quality of the project.
Individualism
This week I’ve been called “The BE* team” as an individual. Frankly we don’t even call developers by their names, we are simply roles to be plugged and swapped around different teams.
When turnover is so high people don’t know the names of their colleagues. Developers then (understandably) avoid responsibility for code and do not feel part of a wider project.
Treatment
For my third anniversary at the company, I got an auto-generated email as a celebration. It’s my birthday this week and nothing happened.
Our managers get celebratory Slack messages for both and are able to finish early on these special days. Developers simply need to push code if they want to keep on the payroll.
I remember I replaced a contractor on my team and needed to understand what was going on in the project from them. It’s a shame that nobody told the developer I was replacing them, and I needed to get that knowledge without them knowing they would be laid off the next week.
It’s not just human factors that matter to software engineers though. DevOps changed our process from one approval on code review to two without telling anyone in the dev team. When the CI is broken, we miss deadlines and are responsible for giving updates and fixing the issue, without any power to do so.
Frankly, we are treated as disposable blocks for getting code done.
Conclusion
We seem so far from the “good” model of software development and in a hole of bad code, high staff turnover and a lack of respect.
Nintendo might give us some inspiration for a better way forward. Is it something we can implement? I’m not sure, but it’s something to think about and perhaps something that can make software development for everyone going forward.