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.
As recommended in The Manager’s Path by Camille Fournier (Rent the Runway), Team Leadership roles are not directly attached to seniority. Developers at any level of the ladder (including Juniors) can act as Artisan on a project if they desire growth in that direction, and the responsibilities of a team lead are listed separately here.
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 accessible HTML. 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. 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 teach and mentor other developers. Can architect and build complex features, like an API, within an MVC framework.
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. 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.
Is a visible leader in the community for at least one CMS. Could write their own CMS if they needed.
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. 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.
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.