We will make the world a better place, one line of code at a time. Maybe not all developers are moved by such noble intentions, maybe the best computer minds on the planet right now are working hard just to convince you to click on advertisements, but it is undeniable that the software impacts deeply on the lives of all people. It is therefore important that the software created is always better and for this reason those who make it, those who develop, must aim to become an even better developer.
Of course, not all developers are rock stars and maybe in some work situations the developer is seen by the company as a commodity. As such it is a disposable resource, forced into a situation in which it is impossible to change activity and wages, a situation that does not offer external motivation for itself to improve itself, to come out of mediocrity, real or perceived, which seems to justify the commodity status.
How is it possible to break this pattern and aim for excellence? In the closing keynote of Codemotion Milan 2018, Gabriele Lana, Software Craftsman at CleanCode, told us his point of view on what it means to be a professional developer.
Individuals and Teams
No man is an island. This is all the truer for a profession like that of the developer, which intrinsically requires teamwork. The path for the improvement of oneself starts from here, from the people with whom we are more directly connected, from a working and emotional point of view. In the team you work with you can find the stimuli and the knowledge necessary to learn. Besides, it’s a common opinion that great teams make great people, isn’t it?
Of course, but it is also true that great teams are made by great people and this circular dependence sounds like a “code smell”. What could happen if, with adverse fate, you could not find a great team in which to work?
Enter: the individual. You are you, and the environment around you intervenes only partially to contribute to what you are or how you behave. Only you can change yourself, only you can choose if and how to invest your individuality.
Speaking of individuality, the transition to character and behaviour, to the “innate” qualities and the way in which we act is a must. As recalled by Gabriele, character and behaviour are both interrelated. Committing yourself to act like a professional would allow you to develop good habits and break bad ones.
Learning and Productivity
How to start investing in yourself, to be a better programmer? Gabriele suggested different ideas for two important areas to start from.
The first area is education. In fact, while it is true that in computer science and programming never fails in providing something new to study or learn, a bleak doubt remains: whether it is nobler and better to devote yourself to the study of foundational knowledge or pragmatic knowledge.
Certainly, foundational knowledge can be more challenging to acquire and maintain, but its difficulty allows you to get out of your own comfort zone and offer advantages that can be useful in the long term. On the other hand, pragmatic knowledge is immediately expendable in the workplace.
Another area of intervention is one’s own productivity, being able to manage time, energy and attention. If it is true that the surrounding environment leads us to frequent context switches, being professionals must lead us to be aware of what is the most important activity to do from time to time.
In the classic subdivision into quadrants in which the value of their work and dedicated focus are mapped, the goal is obviously to be in areas of maximum value.
Maximising the value when the required focus is low means knowing how to move from the area of busy work to that of collaborative work. For this step, the team and individual retrospectives are helpful. For the similar passage, from useless to deep work, it is helpful to work in time boxes and take as reference the “definition of done”.
Quoting Gabriele Lana himself, if you want to find the right team, start searching for the right people, but… be right person.