Welcome to the HCC Developer Progression Matrix. The matrix helps to track the skills and attributes required to progress through the various levels. HCC currently recognizes four levels a developer can progress through:
A good way to quickly understand what we value at the various levels is to peruse the tables below. We separate into soft skills and hard skills, but we care about both equally, especially as developers move out of the two base levels.
| Level I | Level II | Level III | Sr. Developer | |
|---|---|---|---|---|
| Programming | Basic | Intermediate | Advanced | Expert |
| Framework & Platform | ① | ② | ③ | ⑤ |
| Debugging | ① | ② | ③ | ⑤ |
| Testing | ① | ② | ③ | ⑤ |
| Database Skills | ① | ② | ③ | ⑤ |
| Tooling | ① | ② | ③ | ⑤ |
| Security | ① | ② | ③ | ⑤ |
| Software Architecture | ① | ② | ③ | ⑤ |
| DevOps & Infrastructure | ① | ② | ③ | ⑤ |
| Level I | Level II | Level III | Sr. Developer | |
|---|---|---|---|---|
| Communication | Basic | Intermediate | Advanced | Expert |
| Collaboration & Teamwork | ① | ② | ③ | ⑤ |
| Adaptability | ① | ② | ③ | ⑤ |
| Productivity | ① | ② | ③ | ⑤ |
| Growth Mindset | ① | ② | ③ | ⑤ |
| Initiative & Ownership | ① | ② | ③ | ⑤ |
| Feedback & Code Review | ① | ② | ③ | ⑤ |
| Impact | ① | ② | ③ | ⑤ |
| Leadership | ① | ② | ③ | ⑤ |
| Product & User Focus | ① | ② | ③ | ⑤ |
| Time & Task Management | ① | ② | ③ | ⑤ |
| Mentorship & Knowledge Sharing | ① | ② | ③ | ⑤ |
Some more information about each level.
Our level I devs are smart, motivated and eager to learn. They may be lacking experience and soft skills, but they're constantly growing and evolving. They typically work on a single app or product, occasionally contributing elsewhere when needed. They reach out for support as required, and aren't afraid to admit they're still lerning. Their knowledge of our company, industry and organization structure is minimal but growing quickly.
Our level II devs are beginning to evolve. Development and code reviews are smoother and require less back and forth, and knowledge and experience are starting to increase. They're working on one or two products, and maybe even some supporting apps or infrastructure. They're starting to understand the bigger picture of how our organization functions and the areas of responsibility for teams within the company. They're still learning all the time, but it's more about experience and domain knowledge than programming concepts or frameworks. They're tackling more complex problems and finding good solutions and compromises.
By the time our devs have reached level III they're experts in programming and the relevant frameworks. They move seamlessly and frictionlessly through our apps and products, and they're comfortable communicating and collaborating with other teams. They understand the organization and it's goals, and are actively helping to achieve them. They're as comfortable in meetings, helping to plan and organize the work as they are doing the work.
As strong all rounders the're working on larger projects involving multiple apps or products, but you'll often find them helping out newer team members, reviewing pull requests or improving our apps' performance and security. THey're ready for a challenge, upbeat and crystal clear in their communication.
Our senior developers are gods. We're not worthy! We're not worthy!
- Junior: Writes functional code with guidance; learning language idioms and style.
- Intermediate: Writes clean, maintainable code; solves problems independently.
- Advanced: Designs complex logic; improves team code quality and consistency.
- Expert: Sets coding standards; mentors others in language and architecture best practices.
- Junior: Uses core framework features with support; follows patterns.
- Intermediate: Comfortable navigating and customizing framework features.
- Advanced: Extends frameworks; optimizes usage for scalability and maintainability.
- Expert: Leads platform decisions; evaluates or builds framework components.
- Junior: Identifies and fixes common bugs with help.
- Intermediate: Debugs issues independently using tools and logs.
- Advanced: Diagnoses complex, cross-layer problems efficiently.
- Expert: Anticipates failure modes; mentors others in problem solving.
- Junior: Writes basic unit tests; understands test value.
- Intermediate: Applies testing at multiple levels (unit, integration, E2E).
- Advanced: Designs test strategies; improves coverage and reliability.
- Expert: Champions test culture; builds testing tools and standards.
- Junior: Reads and writes basic queries; uses ORM safely.
- Intermediate: Designs schemas and queries for common use cases.
- Advanced: Optimizes queries and indexes; manages migrations.
- Expert: Architects data models; leads data strategy and performance efforts.
- Junior: Uses basic dev tools (Git, editor, CLI).
- Intermediate: Automates tasks; improves local workflows.
- Advanced: Builds team tools; integrates dev environments and pipelines.
- Expert: Defines tooling strategy; drives adoption of new tools across teams.
- Junior: Aware of basic secure coding practices.
- Intermediate: Applies standard security patterns (e.g., input validation, auth).
- Advanced: Identifies risks; incorporates security into design.
- Expert: Leads security reviews; drives security-first culture.
- Junior: Understands system components and interactions.
- Intermediate: Designs features with modular, scalable patterns.
- Advanced: Leads design of large components or services.
- Expert: Owns system architecture; sets long-term technical direction.
- Junior: Deploys with help; understands CI basics.
- Intermediate: Owns CI/CD pipelines and deployment for features.
- Advanced: Improves automation, monitoring, and performance.
- Expert: Designs resilient infrastructure; leads operational excellence.