Một người phát triển phần mềm hỏi tôi: “Công ti đề bạt người phát triển thế nào? Làm sao họ đặt lương tương ứng? Làm sao họ biết ai giỏi hơn người khác? Họ dùng cách đó nào?”

Đáp: Các công ti phần mềm thường phân loại người phát triển theo tri thức, kĩ năng và kinh nghiệm của họ dựa trên mô hình Dreyfus. Mô hình này giải quyết về cách con người đạt tới và làm chủ kĩ năng của họ. Điều này áp dụng được trên cơ ở kĩ năng và có năm mức phát triển cho người phát triển phần mềm để đi từ tập sự cho tới mức chuyên gia.

  • Người tập sự: Tại mức này, người phát triển không thực sự biết cách thành công ở việc làm của họ. Họ không chú ý tới toàn thể qui trình phát triển hay cách phần mềm sẽ được khách hàng dùng. Họ chỉ  muốn làm bất kì cái gì họ có thể làm để hoàn thành việc của họ. Họ không biết cách tuân theo qui trình hay qui tắc nhưng sẽ làm bất kì cái gì để thành công nhanh chóng và thường vi phạm qui tắc. Họ ưa thích làm việc một mình và cảm thấy không thoải mái trong tương tác với người khác, đặc biệt là người dùng hay khách hàng. Họ thường lẫn lộn khi bất kì cái gì ra ngoài việc xảy ra bình thường.

  • Người bắt đầu: Tại mức này, người phát triển biết cách tìm thông tin họ cần để làm việc của mình. Họ có ý tưởng nào đó về điều phải được làm. Họ học tuân theo một số kĩ thuật và phương pháp để giúp cho họ về điều họ đang làm. Tuy nhiên họ không quan tâm tới toàn thể qui trình phát triển hay cách phần mềm sẽ được dùng. Họ biết vòng đời phát triển và các pha của nó nhưng không tuân theo nó một cách nhất quán. Nếu cần, họ sẽ nhảy qua một pha hay vài hoạt động, chỉ để làm cho công việc của họ được thực hiện. Họ chỉ hội tụ vào nhiệm vụ được người quản lí trao cho họ và không sẵn lòng nhìn vào cảnh quan khác. Họ ngần ngại tham gia vào công việc tổ nhưng sẽ làm bất kì cái gì được phân công. Họ có thể dùng kĩ năng của họ ở mức độ nhiều năng lực hơn so với người tập sự nhưng vẫn có lo lắng khi mọi sự đi sai.
  • Người có năng lực: Tại mức này, những người phát triển hiểu vòng đời phần mềm đủ rõ để tham gia vào trong toàn thể qui trình phát triển. Họ biết vai trò và trách nhiệm của họ và của các thành viên khác trong tổ nữa. Họ làm việc tốt trong công việc tổ và có khả năng thấy bức tranh lớn và cách nó sẽ ảnh hưởng tới kết quả. Họ có thể giải quyết các vấn đề khi cái gì đó bất ngờ xảy ra. Họ có thể dùng kinh nghiệm của họ để giải quyết một số vấn đề khi cần. Họ biết cách để thành công như một cá nhân nhưng khả năng của họ để giúp người khác có phần bị hạn chế cách nào đó.
  • Người thông thạo: Tại mức này, người phát triển cần bức tranh lớn và sẽ không vận hành tốt nếu không có nó. Họ hiểu rõ qui trình phần mềm và tuân theo nó một cách nhất quán. Họ có thể suy nghĩ về họ làm tốt thế nào và rút ra kinh nghiệm để cải tiến kĩ năng của họ. Họ có thể rút ra thông tin liên quan từ kinh nghiệm của người khác thay vì lấy nó như một toàn thể. Họ ưa thích làm việc trong tổ vì họ hiểu giới hạn của họ. Họ sẵn lòng giúp đỡ người khác và thường làm việc hướng tới mục đích chung thay vì mục đích cá nhân.
  • Chuyên gia: Tại mức này, người phát triển không còn yêu cầu hướng dẫn để vận hành mà một cách trực giác biết phải làm gì trong tình huống được cho. Họ cũng sẽ thường xuyên tìm kiếm cách thức tốt hơn để làm mọi sự. Họ thường trở thành người lãnh đạo tổ và sẵn lòng kèm cặp người khác. Họ đưa bản thân họ ra làm điển hình cho người khác noi theo. Tri thức và kĩ năng của họ là rộng và sâu vì họ chuyên môn hoá trong các khu vực mà họ quan tâm tới. Họ thường mở rộng công việc của họ ra ngoài biên giới của dự án phần mềm bằng việc hiểu người dùng, khách hàng, người quản lí và doanh nghiệp của công ti.

Về căn bản điều mô hình Dreyfus yêu cầu là ở chỗ người tập sự và người mới bắt đầu cần tuân theo những qui tắc và hướng dẫn nào đó để thành công và họ cần nhiều đào tạo hơn để có năng suất. Do đó lương của họ phần lớn dựa trên giá trị thị trường của đóng góp của họ. Bất kể họ làm việc cho công ti nào, lương của họ là tương hợp với công ti khác trong ngành công nghiệp này. Trong công ti phần mềm, chính người quản lí đứng ra quan sát và đưa ra khuyến cáo cho bộ phận tài nguyên con người (HR) để phân loại người phát triển tương ứng theo mức của họ. Bộ phận tài nguyên con người thường dùng bảng lương công nghiệp dựa trên từng mức để trả cho họ tương ứng. Bảng này được điều chỉnh từng năm tuỳ theo thị trường việc làm và kĩ năng được cần.

Tuy nhiên, khi người phát triển đạt tới mức chuyên gia và áp dụng tri thức chuyên gia của họ tới mức đầy đủ nhất, lương của họ chỉ dựa trên tri thức chuyên gia đặc biệt của họ, điều này tuỳ theo nhu cầu của công ti và thị trường việc làm. Bảng lương tài nguyên con người không đặt ra bất kì số tiền nào cho lương của họ. Nếu tri thức chuyên gia của họ là hiếm và khó tìm, họ có thể đòi hỏi lương cao hơn. Người phát triển sẵn lòng học kĩ năng mới và hiểu các mức này có thể nhanh chóng đi lên và đòi hỏi lương cao hơn người khác.

Trong công ti phần mềm điển hình, có qui trình được xác định tốt và qui tắc nghiêm ngặt sẽ giúp cho người tập sự và người bắt đầu được hiệu quả hơn ở điều họ làm trong khi người chuyên gia sẽ không cần nhiều hướng dẫn. Đó là lí do tại sao phần lớn các công ti ưa thích “đánh cắp” chuyên gia của nhau bằng việc chào lương cao hơn và thưởng lớn hơn. Một người phát triển nói: “Khi bạn là chuyên gia, trời là giới hạn.” Không ai ngạc nhiên khi ngày này một số người phát triển đã làm quãng $250,000 tới $300,000 một năm.

—-English version—-

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 rules but 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.