Here we are, at the point where all pros and cons of the developer’s occupation are considered and the track for improving is defined. But that all wouldn’t make you a good programmer. There’s also one thing left – the wisdom of making decisions. This is the core of your profession. In this article, we will talk about decision making by the developer and take a closer look at the stages of thinking should be mastered by the real professional.
Let’s start with choosing the programming language and frameworks. Do you often start the attempts to learn new and ‘perspective’ language just after its release? We can compare it to a jewelstone you cannot pass through and want immediately take without any considering why you need it. And really, do you urgently need to learn a new programming language just because it seems cool?
That is called magpie syndrome. An irrational affinity to shiny objects, just like a Magpie bird. Actually, addiction to learning new is a must for the programmer, but the borderline between what you really need to learn and what is just attractive enough to waste your time on it is very thin. And the main advise here just to analyze the results you’ve reach in case you’ll take this ‘new shiny thing’.
When you start something it will affect your future (in our case) software development. So don’t forget this.
It is believed (according to Hubert Dreyfus model) that developer’s skill progression can be divided into 5 stages:
“rigid adherence to taught rules or plans” and no exercise of “discretionary judgment”
- Advanced Beginner
limited “situational perception”, all aspects of work treated separately with equal importance
“coping with crowdedness” (multiple activities, accumulation of information)
some perception of actions in relation to goals
a holistic view of the situation
prioritizes the importance of aspects
“perceives deviations from the normal pattern”
employs maxims for guidance, with meanings that adapt to the situation at hand
transcends reliance on rules, guidelines, and maxims
“intuitive grasp of situations based on deep, tacit understanding”
has “vision of what is possible”
uses “analytical approaches” in new situations or in case of problems
Depending on the level a programmer is referred to, the action a programmer take could be split into 4 binary qualities.
|Skill Level/ Mental Function||Novice||Competent||Proficiency||Expert||Mastery|
As you already know, the level goes with gaining the experience. In term of developers, the experts are the people that have been using enough tools and programming languages on many problem domains to have the opinion and foresee the impact of using these tools to the business. According to the idea of magpie syndrome, less-experienced devs made careless and sloppy decisions when using technology.
A senior developer will not just use whatever shiny out there. In case the senior developer suggesting an ‘old’ technology, there should be a reason for that, based on the experience. They’ll assess the risk and impact of said tools to the business.
A common career path for the developer consists of the three stages: junior, middle and senior developer.
- Junior developer
At this stage, you’re given a function or class to be solved and a ticket to close. You have to follow the rules and write tests. Your role here can be seen as solution implementor. The autonomy is limited but you can be careless as long as you follow the rules. In Dreyfus model, this is the Novice portion of your skill acquisition phase. Your wisdom at this stage is very limited as you just follow the rules.
After some time you’re still junior but you gained the right to judge some general situations. This is the advanced beginner phase. Your curiosity drives you to try new things. The engineering wisdom on you is started to be shaped by learning from errors and failures. You’re getting the conceptual understanding of some of the programming problems. You can also give valuable input on the solution made when new problems arise. You are still a junior developer, but now you’re Competent (according to Dreyfus model). You’re able to apply the wisdom to actively decide the solutions of new problems by drawing the line from the experiences.
- Middle developer
At this stage you think that you know the big picture now. You know what is the purpose of using patterns and best practices. Competent stage might last for the middle developer unless he or she is able to explore, weigh options, and decide which one works for the particular problem. If you’re able to cope with this all you’ll become Proficient.
- Senior developer
Senior developer with a Proficient stage can be a mentor for one or two developers. And afterward, senior developer will reach the new horizon – Expert stage. This is the time for you to quickly decide the architecture and pinpoint the future potential problem. You have intuition on which direction you’ll take without too much exploring and trying. This is where your wisdom is the tacit knowledge you’ve been accumulated. The development and executive team will ask you for some advice.
This developer’s career progression is about autonomy on making decisions. In connection with the Dreyfus model, we acquire instinct when reaching expertise. That’s why usually the most senior developer or architect is tasked to explore a new problem. That’s because they have an ability to decide quickly and effectively the choices of solving novel problems.
Based on Software Engineering Wisdom article by Didiet Noor.
Didiet NoorAlso, don’t forget to subscribe to our weekly newsletter!