Rethinking Developer Titles: From Junior to Master Craftsman
Written on
Chapter 1: The Flaws in Current Developer Titles
The traditional labels of "junior" and "senior" in the software development world often fall short of accurately reflecting a developer's capabilities. Developers constantly find themselves needing to validate their skills, even after achieving a “senior” title, often through rigorous assessments like whiteboard interviews and take-home coding challenges.
On the other hand, the term “junior” tends to undermine the efforts of many capable engineers who deliver significant contributions to their teams, despite their designation. This raises the need for a more effective framework to evaluate engineer seniority.
Learning from the Trades
Fortunately, we can draw inspiration from established trades. Consider the path of an electrician: individuals begin as apprentices, gaining hands-on experience under the guidance of a trained professional. After completing their training, they earn a license to practice independently. Over time, they can present their work to a guild, which recognizes exceptional skill with a more advanced title.
This trade-based model has defined three stages: apprentice, journeyperson, and master. So, how can we adapt this for software engineering?
Apprenticeship Model
An apprentice developer is typically new to the field, coming from diverse backgrounds—whether through formal education, bootcamps, or self-study. This variety makes it challenging to categorize “junior” developers based solely on skill level.
Instead, envisioning new developers as apprentices can provide clarity. The apprenticeship model offers a defined timeframe, unlike the ambiguous label of "junior," which often leads to confusion about career progression. This shift in perspective necessitates that companies become more deliberate when hiring newcomers, considering essential questions like:
- Who will mentor the new developer?
- How will their work be evaluated for quality?
- What support will be provided for their growth?
These are crucial considerations that organizations should prioritize.
A Shift in Mindset
Regardless of whether companies adopt this framework, junior engineers can benefit from viewing themselves as apprentices. This mindset aligns well with the learning phase of their careers. For senior engineers, regarding junior team members as apprentices encourages patience and fosters an environment for growth and support. Managers, too, should recognize that making mistakes is a natural part of the learning process for apprentices, rather than penalizing them.
Journey to Independence
Upon completing their apprenticeship, developers transition into the journeyperson phase. The term “journeyperson,” derived from the French word for “day,” signifies the ability to work independently and earn fair compensation for their contributions. Although trades often confer a license at this stage, the software industry lacks a formal licensure system. Implementing such a program could streamline the hiring process, reducing reliance on conventional assessments like whiteboard interviews.
Mastering the Craft
The title of “master” is reserved for experienced, accomplished individuals within their craft. In the trades, this title is awarded by peers who assess the submitted work and recognize its value. This peer-based acknowledgment is a refreshing departure from managerial evaluations.
As a master craftsman, your focus shifts towards tackling complex challenges, while also being expected to mentor apprentices and journeypersons.
The Need for a Guild
These titles are typically organized within a guild or union that standardizes expectations across the industry, promoting the interests of workers. Establishing a guild could enhance negotiation power, facilitate knowledge exchange, and foster camaraderie among developers. However, introducing such structure may also lead to bureaucratic hurdles, potentially limiting the flexibility and diversity of career paths within the field.
A More Effective Framework
The apprenticeship model provides a clearer lens through which to view career advancement in software engineering. The terms “junior” and “senior” lack specificity, often leaving developers uncertain about their progression. The apprentice-journeyperson-master framework offers a structured approach to career development, allowing individuals to recognize their value at every stage.
In the initial years of one’s career, learning is paramount; yet, even as an apprentice, there is substantial value to be contributed. As skills develop, moving into a journeyperson role signifies independence, while the master title serves as an aspirational goal.
More Resources
For further insights, I have explored topics such as mentorship, interviewing techniques, and work-life balance in previous writings.
Chapter 2: Visualizing the Journey
In this chapter, we delve into visual representations of the apprentice-journeyperson-master model, providing clarity on the developmental stages of software engineers.
The first video, "Junior vs Senior Developers (explained using birds)," illustrates the differences in mindset and approach between junior and senior developers, highlighting the importance of growth and learning.
The second video, "Junior vs Senior Programming," further explores the distinctions in skills and responsibilities, emphasizing the value of experience and mentorship in a developer's journey.