Reducing Organizational Risks with Simplicity
Simplicity reduces risks in an organization
Software is eating the world according to Marc Andreessen. If your organization is not a technology company, there is a good change it uses quite a lot of technology. But technilogical change is creating a number of risks for organizations.
Software is complex and it can be difficult to change. The tight labor market has created hiring challenges and software engineers are in high demand. Amazon recently announced it would build two new headquarters in New York and Northern Virginia. The primary driver of this decision was access to a bigger labor pool of software developers.
The regulatory landscape is changing across the globe, and it is affecting companies that do business in multiple markets. GDPR regulations in Europe have had a profound effect on organizations doing business in Europe. Changes to legacy software systems are creating challenges due the inherent complexity in those systems.
Simplicity is a strategy can significantly reduce these risks. Jocko Willink and Leif Babin argue that plans must be simple in their book Extreme Ownership. Teams must understand the mission and be able to execute quickly in a challenging environment. Complex plans can have many unforseen complications. People will forget, make mistakes, or simply not follow a complex plan.
Business processes should be simple and should consist of five to ten steps. Atul Gawande in his book The Checklist Manifesto highlights how pilots and surgeons reduce accidents and death with simple checklists. Simple checklists are easy to use and easy to follow. They serve as a basis for training new hires, and they ensure that even the most experienced team members make fewer mistakes. They should be a part of your organizations operations
John Ousterhout in A Philosophy of Software Design argues reducing complexity in software should be the primary goal. When I hire a junior software engineer on my team, I usually have them read the book Clean Code by Robert Martin. Software is usually read many more times than it is written. Junior developers fresh out of college tend to have less experience maintaining software over many years. Software projects in a company can be maintained for many decades. I emphasize that code is read far more than it is written. So writing clean, simple, easy to read software is a critical goal to strive for.
I favor simple concepts and I train junior developers to use simple heuristics. Kent Beck, author of Test Driven Development and Extreme Programming, has developed some simple heuristics for software developers. His 4 Simple Rules of Software design are far easier to remember than Clean Code. His Test Driven Developement process consists of 5 steps. Simple processes are far easier to learn and rememeber especially for new hires.
The language your organization uses to write its software is just as importnant. The Go programming language developed at Google, has had a focus on simplicity. Fresh college graduates can learn the language in 1-2 weeks. This substantially reduces the risk associated with employee turnover. If a senior developer leaves your company, it is far easier to for a junior programmer to get up to speed on a software project written in Go.
The simplicity of the language allows one to focus on the problem at hand. This has allowed Google quickly change replacing legacy C++ systems with simpler easy to understand systems written in Go. It has allowed companies like Netflix to scale and serve a growing market.
Simplicity is critical for an organizations survival and growth in this fast changing world.