Thursday, February 9, 2017

Software Developer Career Progression

Career development for software developers is a tricky subject. Most people start their career in a job with a title similar Junior Programmer or Software Engineer I. If this person is lucky, the company has a few next steps defined such as Senior Programmer or Software Engineer II. Unfortunately there is no definition of what is required to be a "senior" programmer or what it takes to achieve Software Engineer II. There is also no correlation between one company's Senior Programmer and another company's Software Engineer III.

At Clearent, we created "developer levels." These levels are gradients through a software developer career lifecycle. We have defined 10 levels that we can use to talk about an individual's career progression. The first 5 levels are focused on gaining individual skills. The second 5 levels are focused on making others great. The rationale for this is that early in one's career, it is important to learn and grow and build a skill set. As a developer advances, it is more important if that developer can help others to grow than master some new skill.

None of the items listed in the levels is a hard-and-fast requirement, but each item points to a type of activity that is necessary. For instance, many levels require an individual to host a lunch-and-learn, code review, or create a wiki document. This activity is meant to push a developer to share knowledge with a broader group. All of these items can be customized for an individual at a manager's discretion.

The levels that we are using are:

Level1
Complete the basic katas
Complete a tour of duty on Prod Support
Describe the purpose behind our retrospectives
Explain why TDD is important
Have code deployed to production
Host a code review
Level2
Complete the intermediate katas
Demonstrate knowledge of a particular business process
Be able to list at least 4 of Top 10 OWASP Web Vulnerabilities
Host a lunch-and-learn or code review
At least one additional of lunch-and-learn, code review, wiki article
Level 3
One year anniversary
Host a lunch-and-learn or code review
Be able to articulate and explain each of the SOLID principles
Complete the advanced katas
Explain the primary business model
At least one additional of lunch-and-learn, code review, wiki article
Level 4
Write at least one article for the Wiki
Take part in a candidate phone screen
Create a tech blog and write at least one article a month for a year
Be able to draw a picture of the architecture of the major applications in our system
At least one additional of lunch-and-learn, code review, wiki article
Level 5
Two-year anniversary
Host a lunch-and-learn on a tech topic new to the company
Lead an initiative and see it to completion
Create 2 new basic katas for the kata library
Be the lead on a business process
At least one additional of lunch-and-learn, code review, wiki article
Level 6
Locate 5 patterns from the GOF book being used in our code.  Describe our use of them.  Was it correct?
Teach another member of the team something new.  They should be able to talk intelligently about the topic to a level 6 dev.
Create 2 new intermediate katas for the kata library
Take part in the in-person interview of a developer candidate.
At least two additional of lunch-and-learn, code review, wiki article
Level 7
Present a topic at a developer-focused conference or user group
Create a github account and commit to an open source project once per month for a year.  (May be your own project as long as it is public)
Three-year anniversary
Demonstrate the ability to communicate complex technical topics to non-technical people
At least two additional of lunch-and-learn, code review, wiki article
Level 8
Contribute a pull request to an open source project on github with more than 20 contributors.  The pull request must be accepted.
Pair with an intern or new developer their first two weeks of work.
Create 2 new advanced katas for the kata library
Complete a version of the basic katas in a language you are not familiar with.  (The katas may not port exactly, so be creative.)
At least three additional of lunch-and-learn, code review, wiki article
Level 9
Five-year anniversary
Complete a version of the intermediate and advanced katas in the language you picked for the task in level 8.
Write a recommendation for another developer whom you value and respect.  They need not be on this team.
Complete a version of the basic katas in yet another language that you are not familiar with.
Demonstrate the ability to lead a project to completion and coordinate with outside parties
At least three additional of lunch-and-learn, code review, wiki article
Level 10
Dream up and implement a tool, product, or enhancement to an existing application that, upon completion, adds to the company's financial bottom line.
Demonstrate the ability to be a team lead and mentor for both interpersonal and technological development.
At least three additional of lunch-and-learn, code review, wiki article

Hopefully this helps others to think about developer career progression in new ways.