There are, at least, two excellent articles about Software 2.0. Andrzej Karpathy and Carlos E. Perez wrote blog posts which cover the topic. In this article, I will explain how I understand the term “Software 2.0” what, I hope, will give you a different point of view on the main topic.
Software 2.0 is a set of three things which combined complement each other: tools, people, and process. All of them relates to each other closely. Because of the relationship, keeping all of the three areas separately in good condition helps to keep them all healthy in general.
For example, data-driven organizations cannot work smoothly without proper tools and people who know how and when the tools should be used. Even well-prepared statistics are useless without people who understand them and processes which support them.
To follow Software 2.0 approach, there have to be people who understand the common goal and are motivated to achieve it. It is not important what is the person’s position in the company. Everyone is essential and should be able to improve the culture of the organization. For example, if somebody notices something that is not right, then it should be fixed by himself or escalated to the right person.
A proactive approach is valuable because it is impossible to predict every situation in advance. People should be motivated by improving the product and the environment around them. Moreover, they should represent the company outside in a proper way. They should show, not only talk about, the company’s values which should be clear to everyone – from the CEO to a charwoman to a cook in the cafeteria.
Because the people are the core of the company like the way they are hired is critical too. Those persons who do not fit the organization’s culture should not be employed. Even only a single person can make that the trust and openness in the team can be violated.
There are many processes which help improving processes and to share knowledge about the product itself. Used properly can be a massive tool. The procedures are becoming more and more critical when the company evolves and becomes more prominent.
An example if it can be meetings. This is a great way to share knowledge and make decisions. There are some rules about the good meeting:
- every meeting should have the agenda
- everyone should actively participate in the meeting
- two feet rule
- and so on
An example of the type of meeting can be event storming or brainstorming. Depending on the goal of the meeting a proper type of meeting should be used. What is more, the meeting can be a part of a bigger process.
The example of the bigger process can be Agile and Scrum. They help the product team manage their tasks, prepare a plan for the next weeks to deliver the improved product at the end of the sprint. Processes should cover at least the most important parts in the organization like making strategic decisions, reacting to unexpected situations, onboarding new workers and so on.
It is not a trivial task to design such a process at first try. That’s why constantly improving them is the key thing. The people, the organization or the process itself can change. To keep the process useful, the process should evolve constantly.
Those processes help not to reinvent the wheel again and again. Instead of that, well-prepared processes will improve the scalability and stability of the organization.
Data-driven organizations have to have a set of tools which are the source of the truth. The people should be able to receive any useful information as quickly as it is possible. There is a set of the reason behind the claim.
The people should be able to confirm or undermine a theory about facts on the company or users of their product. There is one requirement – it should be presented in an easy to understand way. It is not essential if it is an Excel spreadsheet or Grafana dashboard. It should be easily accessible and easy to understand.
Tools can help to improve the project by providing information about users. An example of such a tool is quantitative and qualitative research. They can answer a question if users like or dislike changes in the project and if it is worth keep developing them in the future. Furthermore, the tools can help to choose the next step of improving the software by listening to the users’ problems and needs.
In the middle of all the areas is the customer. This is the reason why the company or organization exists. All of the above fields should support the customer in his needs and solve his problems. The tools will provide information which is processed by workers in the process.
As you can see, the relationship between the areas is very tight and bi-directional. They complement each other to support the customer and help to solve his problems. What I want to stress that, in the concept, I am discussing today, not the company is the most important but the customer. The customer is the reason why the company exists. The customer is the one who helps the organization survive by using their products and paying for using it.
Even having the best product in the world means nothing without anyone who wants to use it. We forget about it very often. Especially the IT guys who are hidden far away from the customer and do not have an opportunity to hear about the customer’s needs.
This is the motivation between many talks on various technical conferences where one topic shows up regularly – the communication. Lack of connection can lead to misunderstanding and cost a lot of money or frustration. The frustration of the people from the company and the customer. This is very annoying for the support team to hear about the same bugs or lack of features over and over. For the customer, it can be an extremely stressful situation when he pays for a product which does not meet his expectations or seeing annoying bugs over time.