Titles for programmers
We use the following criteria to assess the level and title of programmers of Basecamp. These criteria aren’t exhaustive, and they aren’t mere checklists. They’re a guidance to having an individualized discussion about career progression.
It should also be noted that these criteria chiefly examine the scope of work someone is capable of tackling independently. In addition to that assessment, we also look at the quality of the execution itself. Basecamp pays in the top 10% of the industry (based on San Francisco rates), so the quality of the work itself should be commensurate with that target.
Junior Programmer
- Work is thoroughly reviewed with substantial back’n’forth frequently needed before merging.
- Basic language features are mastered, but some advanced structures may still be unfamiliar.
- Occasional issues following patterns and approaches within existing code bases.
- Works primarily on tightly scoped, routine problems.
- Usually less than 2 years of experience being a professional programmer in the specific domain.
Programmer
- Work is reviewed with the occasional need for material direction or implementation changes.
- Follows established patterns and approaches within existing code bases with ease.
- Works mostly on clearly defined and scoped individual features or problems.
- Usually at least 2-5 years of experience being a professional programmer in the specific domain.
Senior Programmer
- Work doesn’t necessarily need to be reviewed, but general approach may be.
- Fully capable of taking substantial features from concept to shipping as the sole programmer (alongside a designer).
- Can provide material feedback on the work of junior programmers and programmers.
- Deep expertise within at least one programming environment.
- Basic proficiency in at least one additional programming environment.
- Usually at least 5-8 years of experience being a professional programmer in the specific domain.
Lead Programmer
- Work happens completely autonomously with no regular need for review.
- Fully capable of owning and running entire subsystems of work (Queenbee expert, Action Cable implementation).
- Helps set and maintain professional standards for the entire organization.
- Deep, substantial expertise in multiple programming environments.
- Capable of running and directing small teams for substantial projects.
- Capable of executing projects across multiple domains (say, native app that needs API backend).
- Usually at least 8-12 years of experience being a professional programmer in the specific domain.
Examples: Javan, Pratik
Principal Programmer
- Can set and direct an entire department, like SIP, Core Product, or Research & Fidelity.
- Fully capable of designing, owning, and running entirely new, novel systems (design billing systems, Trix, Active Record from scratch)
- Capable of running and directing larger teams for large, long-running projects.
- Recognized widely in the industry for material contributions to the state of the art.
- Invents new concepts, pushes the whole organization forward regularly.
- Usually at least 12-15+ years of experience being a professional programmer in the specific domain.
Examples: Jeremy, Sam, Jeff