The Dreyfus model

A software developer asked me: “How does a company promote developers? How do they set their salary accordingly? How do they know who is better than others? What measurements are they using?” 

Answer: Software companies often classify their developers according to their knowledge, skills and experiences based on the Dreyfus model. This model deals with how people attain and master their skills. It is applicable on a per skills basis and has five levels of development for a software developer to get from novice to expert level.

  • Novice: At this level, developers do not really know how to be successful at their jobs. They do not pay attention to the whole development process or how the software will be used by customers. They only want to do whatever they can to complete their jobs. They do not know how to follow process or rulesbut will do anything for quick successes and often violate rules. They prefer to work alone and feel uncomfortable in interaction with others, especially users or customers. They often confuse when anything out of the ordinary happens.
  • Beginner: At this level, developers know how to find the information they need to do their jobs. They have some ideas on what should be done. They learn to follow some techniques and methods to help them on what they are doing. However they are not interested in the entire development process or how the software will be used. They know the development lifecycle and its phases but do not follow it consistently. If needed, they will skip a phase or few activities, just to get their works done. They only focus on the task given to them by manager and not willing to look at other perspective. They are reluctant to participate in teamwork but will do whatever assigned. They can use their skills at a more competent level than a novice but still have trouble when things go wrong.
  • Competent: At this level, developers understand the software lifecycle well enough to participate in the entire development process. They know their roles and responsibilities and other team members too. They work well in teamwork and have the ability to see the big picture and how it would affect the outcomes. They can deal with problems when something unexpected happens. They can use their experiences to solve some problems when necessary. They know how to be successful as an individual but their ability to help others is somewhat limited.
  • Proficient: At this level, developers need the big picture and will not function well without it. They understand the software process well and follow it consistently. They can reflect on how well they are doing and draw upon their experience to improve their skills. They can draw relevant information from the experience of others rather than taking it in as a whole. They prefer to work in team because they understand their limitation. They are willing to help others and often work toward a common goals rather than individual goal.
  • Expert: At this level, developers no longer require guidelines to function but intuitively know what to do in a given situation. They will also constantly seek to find better ways of doing things. They often become team leader and willing to mentor others. They set themselves as examples for others to follow. Their knowledge and skills are broad and deep as they specialize in areas that they are interested in. They often expand their works outside the boundary of the software project by understand users, customers, managers and the business of the company.

Basically what the Dreyfus model postulates is that novices and beginners need to follow certain rules and guidelines to succeed and they need more trainings to be productive. Therefore their salaries are based mostly on the market value of their contribution. Regardless which company they work for, their salaries are compatible with other company in the industry. In software company, it is the manager who observes and makes recommendation to the Human Resource (HR) organization to classify developers according to their levels. Human resource organization often uses an industry salary table based on each level to pay them accordingly. This table is adjusted each year depending on the job market and skill needed.

However, when developers reach expert levels and apply their expertise to the fullest. Their salaries are based solely on their special expertise, which depend on the company needs and the job market. The HR salary table does not set any amount for their salary. If their expertise is rare and difficult to find, they can command higher salary. Developers who are willing to learn new skills and understand these levels can quickly move up and command higher salary than others.

In typical software company, having a well defined process and strict rules would help guide novices and beginners to be more effective at what they do while expert people will not need much guidance. That is why most companies prefer to “Steal” each other’s experts by offering higher wages and bigger incentives. A developer said: “When you are an expert, the sky is the limit”. No one would be surprised when today some developers made about $250,000 to $300,000 a year.

Sources

  • Blogs of Prof. John Vu, Carnegie Mellon University