This post represents some observations I made at work, a sort of think aloud on a topic I care about.
In the last months new fellows had joined the team I guide and, in particular, a young developer had started is long career as a bug writer (this is the developer real work) with us. After a period of heavy and sometimes harsh training on the job, I saw some patterns that made me thought about new developers generation:
- young developers tend to produce a lot of code, they have an outstading willing-to-do energy
- they also tends to refine some parts of code they like, for example because they are learning new technologies or because this is the area they want to excel
- they tend to reinvent the wheel, and this is the part that makes me literally mad.
Reinventing the wheel is probably the best way to learn. In the past I reinvented the wheel so many times to acquire knowledge but, sometimes, I reinveted it simply because I did not know that the problem had already been solved (and, believe me, the problem was solved in a more efficent and elegant manner from experienced developers, my code simply sucked compared to their solutions). What makes me mad is that I see this wrong pattern on this young developer who is working hard on its side project.
The real problem is the developer rush or, as I call it the oh-god-I-have-to-write-code-as-soon-as-possible desease.
I know that a young developer lacks of experiences, in fact this is the difference between me and him. But what every developer has is a functional brain and it deserves to be used. What I see every day, intead, is that every young developer wants to code as soon as possible because they have fun to do so.
So, what is the real difference to a successful developer and a monkey coder? The answer is simple: wisdom.
Wisdom is completely different from knowledge, even a young developer could be wise but it has to be trained to be that way. Often I see that young developers choose the wrong framework to solve their problem just because that tool is the trending tool of the moment. They do not ask to themselves the right questions:
- Is this the right tool to solve the problem?
- Has someone already solve that problem?
To answer to this questions you have to think before writing code. If a developer use its mind, probably it will find the answers it is looking for, and it would produce better code.
The outstanding developer, the one that makes the difference is hungry, foolish and wise and, sadly, it thinks a lot before write a single line of code.