Since development roles here are fluid, we have chosen to break skills down by seniority level (symbolized by ⭐ icons) rather than providing fixed definitions of each role. At each level, requirements are ratcheted up, until you reach the senior developer. It will be common for developers to stand at different levels in different categories.
Individual Contributor Track
Some developers are not drawn to management, community engagement, content creation, and team leadership. They still deserve the opportunity to grow on our ladder even if they are not interested in this side of the work.
To reach the higher levels of our career ladder, an Individual Contributor must reach even more success on the aspects of the ladder that DO apply to them. If they are not going to provide value through leadership, they have to find a way to provide even more value in their development work.
Since the Individual Contributor is not focusing on leadership, they need to outperform the normal standards in ways like:
- Their work needs to be impeccable. If they are focused on individual contribution, the contribution needs to be flawless and accurate.
- They don’t need to lead directly, but they should lead by example: Overdelivering, always being on time, having a great attitude, etc.
- They don’t need much input to do a great job. For example, when confronted with a unique problem or a technology/platform they have never used, they should be able to independently come up with good solutions. Sometimes this means setting up discussions to learn from someone internal, but most likely it means finding external resources.
- They need to learn quickly and be eager to take on the toughest challenges. For the elite individual contributor we have to count on them to handle our hardest problems.
- They need to do unique things that are very difficult to find. Clients would seek us out so that they could work with this specific person.
- They are willing to work harder than a non individual contributor, and take more accountability for project outcomes. They have a passion for learning and growing, and take time to learn new skills outside of work.
These increased expectations apply to whatever the typical expectations would be for a given level. For example, when comparing a normal ⭐️⭐️⭐️ dev to an IC ⭐️⭐️⭐️ dev, the IC should be doing less mentorship and should not have any direct reports, but should be even more independent, reliable, and eager to solve the biggest challenges we have.
The IC is still expected to teach their skills within the company.
Knows all common HTML tags and what they do. Knows the basics of how CSS works and can style a straightforward page independently without help. Can build a new component within an existing Cantilever site, following existing conventions.
Can create full pages which match design comps without requiring much help. Has mastery of HTML/CSS syntax. Writes clean, accessible markup. Can quickly debug layout errors. Can use Cantilever CSS frameworks to build complex pages with minimal help. Can optimize SVG images for inline or image display depending on the situation.
Can build components of any complexity within CSS frameworks without causing code bloat. Can deliver perfect visual fidelity without hacky code. Can quickly debug layout errors. Understands SVG animation techniques. Is an expert in HTML and CSS syntax and best practices. Is an expert in accessibility and how good markup enhances it. Can teach others their skills.
Can build own HTML/CSS frameworks. Is constantly keeping up with changes in web standards and browser support. Non-Individual Contributor: Speaks and writes publicly on advanced technical topics and is known as a thought leader in frontend web dev.
Can build clean JS components within an existing architecture, matching the conventions of the project. Strongly understands the common patterns of UI development (slideshows, menus, responsive heroes, filtering systems, etc.). Understands the common JS approaches (React, Vue, vanilla) and can identity when each is appropriate. Can debug quickly using debugger.
Can build a site’s JS layer from scratch, working from existing site models. Can build functional JS that handles complex business logic, not just UI components. Can understand and debug third-party JS. Can write JS unit tests. Can teach others how to reach their level.
Can read, understand, and debug existing backend code. Can implement basic routes and functionality within an existing site. Understands common PHP syntax and is comfortable reading through PHP code.
Can implement a moderately complex route->controller->view feature within an existing MVC framework-based site (Laravel, Ruby on Rails, Yii, etc). Understands how to create simple PHPunit tests and how to modify existing ones.
Can build clean new sites on at least one MVC framework, without help. Can architect and create PHPunit test coverage for a project. Can architect and build complex features, like an API, within an MVC framework. Non-Individual Contributors: Can teach and mentor other developers.
Has intimate knowledge of how common frameworks function. Is an expert in PHP syntax, best practices, and performance. Knows how to write extensive test coverage for an application. Non-Individual Contributor: Speaks and writes about backend development on behalf of the company.
Knows how to implement a site in at least one CMS using by-the-book means. Can modify a CMS-driven site to add fields and update existing logic.
Has a strong understanding of how Cantilever approaches CMS integration for websites. Can build full features in an existing CMS-driven site. Can create a new simple site using at least one CMS. Can train content administrators in using CMS. Can create a clean, user-friendly interface for authors by configuring fields intuitively.
Can write custom code within a CMS-driven site to implement complex backend features. Can write plugins or field types to solve missing features of a CMS, and can debug CMS errors. Can write tests for their backend code within a CMS. Can implement a new CMS-based site cleanly without any help.
Could write their own CMS if they needed. Non-Individual Contributor: Is a visible leader in the community for at least one CMS.
Can read and understand what a build process does (with help from documentation and google). Can run Cantilever projects locally and work effectively.
Can create a new Cantilever project including a standard build proceess and local environment setup. Can modify a standard build process to suit the specific project they are working on.
Can implement local development tools that we’ve never implemented before. Can create a fully optimized build process from scratch. Can teach others how to optimize their builds.
Can build custom build process scripts or plugins for webpack/gulp/grunt. Non-Individual Contributor: Shares their work with the open source community.
Knows the basics of server management and CDNs. Understands various deployment methodologies and when they are appropriate. Knows how to use Git and how to submit comprehensible pull requests in Gitlab or Github.
Can work within an existing server, finding and fixing permissions or other minor issues. Can follow procedures to generate and launch a new server using Forge and Cloudflare. Can work within existing deployment and CI. Knows and adheres to a Git Flow workflow.
Can customize server settings like memory limits, Nginx rewrite rules, and logging. Knows Cloudflare intimately. Can debug most common server and CDN-related issues without help.
Can solve any server-related issue and can implement advanced rewrite techniques like full domain masking. Knows how to use Cloudflare service workers to optimize edge performance.
Team Leadership (Not applicable to Individual Contributors)
Can write short handbook entries on a topic they know well, or update existing ones.
Can help a project manager understand how a project breaks down. Provides reasonable, accurate estimates for work. Can work directly with clients to solve problems quickly.
Can manage a junior developer and mentor them. Can write long, detailed handbook entries. Helps set Cantilever’s development standards and approach.
Attracts new developers to Cantilever. Can lead a full department of developers.