How To Fix The Software Industry By Discipline

Written by fagnerbrack | Published 2017/08/28
Tech Story Tags: software-development | software-engineering | agile | tech | programming

TLDRvia the TL;DR App

What can you do when the industry doesn't tend to keep better practices over time?

Listen to the audio version!

The software development industry doesn’t keep track of better practices over time.

Maybe it’s an educational problem: Thousands of new developers enter the industry every year through Boot Camps or self-teaching and they don’t have the fundamental knowledge to avoid common pitfalls.

Maybe it’s ageism: Companies don’t hire older people under the belief they’re outdated and that encourages the hiring of inexperienced developers.

One thing for sure is that there’s a lack of people with Tacit Knowledge for the real world.

This knowledge is one of the most helpful. Yet, it can only be acquired by experience outside academia and shared by example in the real world.

Older people tend to have more Tacit Knowledge for the real world and traditional education can’t teach it efficiently.

So what can we do?

Tacit Knowledge for the real world is one of the most helpful types of knowledge a person can share with an individual, company or project, but one of the hardest to do it.

The software industry is a human complex system. The behavior of a human complex system is defined by the individual interaction between its components. In this case, the people.

The only way to fix a human complex system is if everyone respects a Forcing Function created to control that system.

Let’s take the traffic light, for example.

The traffic light works as long as everybody respects it. If a software development discipline existed and everybody followed it consistently, then that could serve for the industry what a traffic light is for the transit. It would be a Forcing Function to ensure the complex system works as desired.

However, not everybody respects a traffic light and any attempt to implement a discipline as a Forcing Function will have tradeoffs.

If you do want to respect the traffic light, it’s easy: just follow the red, green, yellow signs and maybe a few others depending on the country. If you don’t, you can die or kill somebody else, and this alone can be a very strong motivator to do it.

However, if you want to respect a discipline it’s not that easy. There’s a curve to learn its fundamentals and acquire the Tacit Knowledge to apply it. Also, if you don’t respect it, you’ll have the advantage of producing faster in the beginning and to be paid high figures without the need to learn much, and this alone is a strong motivator to not do it.

If you work in a critical service, such as surgery machine, air traffic control or police enforcement system and don't have the Tacit Knowledge necessary to ensure what you produce works very well in the real world, you might do the work at the expense of risking other people’s lives. That can pose a moral long-term problem that today you can simply ignore.

If you don’t respect the traffic light, you’ll die. If you don’t respect a software development discipline, you’ll have an advantage.

The government regulates how the traffic light works and apply fines for those who don't obey. Even though everybody will tend to obey anyway due to the obvious morbid outcomes, a traffic light is easy to regulate. There are many years of trial and error that helped society to understand how it works.

The software industry is evolving every day and is by no means simple. It will be very hard to regulate a discipline for it. Besides, traditional culture present in society tends to poison software development. It’s unlikely the same type of regulation will work.

People tend to respect rules where breaking them can be dangerous to oneself or to others in the short term (like crashing the car by crossing the red light). Respecting rules that can be dangerous to the big picture requires a long-term mindset not many people have.

This is what you can do today to help to fix the software industry in the long-term:

  • Teach kids to program, so that when they get to the industry they’ll learn the fundamentals earlier instead of having to learn everything from scratch.
  • Always try to experiment and innovate on top of known patterns, so that you can help improve whatever may be chosen as a discipline in the future.
  • Show the real world business benefits of your ideas, so that companies can understand the long-term cost of negligence.

Maybe someday software developers will start to influence society outside their own communities.

Until then we can only wonder what’s the most effective solution for all these complex problems.

One thing for sure is that we’re not dealing with simple rules for the integration between cars and traffic lights.

We are dealing with the people responsible to build the core engine that powers it all.

Thanks for reading. If you have some feedback, reach out to me on Twitter, Facebook or Github.


Published by HackerNoon on 2017/08/28