Continuous Improvement is the name given to the process of continuously improving something like a specific ability, skill, process, environment, etc. It’s about exercising that skill as much as possible, pushing the limits of what you know so that it will sum up to a big improvement in the end.
Continuous Improvement is the name given to the practice of always improving a specific ability or skill continuously
An example of Continuous Improvement in the software industry is an engineer who always tries to learn something new about a specific technology, development practice or design pattern. It can be done in many ways, the most common ones are by reading newsletters, following certain individuals in social networks or exercising that specific skill by building side-projects. Let’s call this the personal improvement.
However, continuous improvement can also be used at a team level. The team learns from their mistakes and from the characteristics of the projects they work with. This way, their collective knowledge increases and that will also improve their team efficiency. Let’s call this the team improvement.
The personal improvement can be measured by asking a simple question: What are the new things that were learned since the last week that improved your knowledge about the skill you’re measuring? It doesn’t need to be exactly the "last week", as long as it’s a reasonable period. Also, the answer doesn’t need to be a big number, but it should not be zero.
Continuous Improvement is about learning new things related to the skill you're measuring. The number of things learned in a given period of time doesn't matter, as long as it's not zero.
It’s possible for a team member to learn with the team in order to increase their personal improvement. That can come in the form of asking questions or pairing with the team members who are more experienced in certain areas or experimenting new ways of doing things so that they can learn what works and what doesn't.
But there’s another side of that.
Even though learning has the potential to improve the individual knowledge and, by doing so, the overall team capacity, there are also other factors in the equation that may affect the decision of focusing more on learning or not.
First, let’s agree on what a “team” means.
A "team" is a group of individuals that work collectively towards a common goal. That goal requires effort. That effort can be spent by learning or working directly towards that common goal. Working towards that goal is called progress. Learning might not be related to progress directly. That doesn’t mean that learning is not useful to the goal, it just means that if you focus in one then you might have to sacrifice part of the other.
There are many types of learning, though. One type is doing a spike that helps to understand a problem and therefore have the potential to reduce the effort towards the goal instead of consuming it (increasing the speed of finishing the task). Another type is the general learning that naturally happens when you’re practicing your craft, which adds to the personal improvement. In general, learning will increase the quality of the effort and can increase the speed, but for the purpose of this post, we’ll only talk about the type of learning that increases quality, not the one that increases speed.
The effort towards a goal and the effort to learn in order to improve quality are similar. But if you focus in one, it will be at the cost of the other.
In the graph above, there are two dimensions: Progress and Learning. The idea is that one dimension should pull the other in the opposite direction, but none of them should be stronger in a way that it affects the time spent to the effort towards the goal. They should be complementary to guide the time to the most optimal path.
This is one of the reasons why companies should aim to hire experienced engineers.
If the engineers are not experienced, the effort will be focused too much on learning and that will drastically affect progress.
This is also one of the reasons why big companies don't want to hire engineers who believe they know everything and don’t need to learn.
If the engineers don’t learn or improve on a daily basis, then the code quality will suffer an impact. Lack of code quality by using simple development techniques in the context of more complex problems will create another type of issue. Those issues will make the "Effort" line stronger towards "Progress" in the future for other developers who will have to maintain the code. Since new team members learn with the existing code, it will affect their own learning capacity and also create bugs, performance issues, technical debt, etc.
Being a hero can also cause a similar impact that will affect their own learning capacity.
When dealing with learning and progress towards a goal you need to find the balance. Too much learning will affect progress and too much progress will affect learning. It's not an exact science and the balance can be different for every team or project.
When you learn by answering the right questions, you are more prepared to try things many times, fail, learn and try again, but that requires additional effort. However, if you don’t take the time to learn from the right questions, you can do things quicker. But if you fail once, you’re lost and might have to start all over again.
What we can do is to understand our options and try to identify the right balance between learning and progress for each context.
The balance is what's gonna drive you to the better solution.
Continuous Improvement is a way to verify that you are, at least, heading in the right direction.