This document aims to be a simple framework to define the career path of each member of the Fitprime Labs team. Our objective is to be fully transparent about:
- what we expect from each team member
- what are the possible growth path inside the team
It is our guide on evaluating both the career evolution of our team members and the job posting for new candidates. It is also an important support for our team members to self-assess and have a clear vision of the current or future position in Fitprime.
At the moment it is very simple. It is based on 3 keys:
- Roles: we have defined different role categories.
- Skills: there are several skill categories, each with specific knowledge for each role category.
- Levels: each role has a scale of levels based on skills and expectations.
Roles are based on the current technology stack and on the internal product development strategy. At the moment, there are:
- Front-end Web Developer
- Back-end Developer
- Native Mobile Developer
- Product Designer
There are many categories of skill that will have specific knowledge/experience in each role (where applicable):
- Programming Basics: language syntax, data structures, data manipulation. Plus, specific know-how for the specific developer field.
- Specific Knowledge : specific know-how and best practices of a given field.
- Tools: general development tools, GIT, command line…
- Frameworks: know-how and experience of one or more specific frameworks that will be used for our projects.
- Best Practices: patterns, principles, tools and general best practices.
- Problem Solving: autonomously search & find solutions, effective debug skills, help the team
- Team Communication: ability to communicate effectively and work efficiently with other team members
- Non technical communication: ability to communicate and work with stakeholders and other teams, understand needs and explain technical topics in an understandable but effective way
- Project ownership & accountability: own a project responsibility and be entirely accountable and autonomous about its realization and maintenance
- Mentorship: mentor junior teammates on hard and soft skills
The following table represents an example of the specific requirements of each skill category, by role.
Skill name | Front-end specific | Back-end specific | iOS Specific | Android Specific |
---|---|---|---|---|
Programming Basics | JavaScript ES6+, TypeScript, HTML, CSS | PHP (and/or other), JavaScript, SQL | Swift | Java (and/or Kotlin), XML (for layout files) |
Specific Knowledge | Web vitals (performance, accessibility, best practices), SEO, Progressive Web Apps (PWA), state-management, API requests lifecycle, asynchronous development (Promises, async/await), front-end security (CORS, Content Security Policy, XSS prevention), front-end automated tests | API design, web servers, security, caching, queues, language-specific automated tests, databases (MySQL, PostgreSQL and/or NoSQL) | iOS app architecture patterns (MVC, MVVM, VIPER), Memory management, Multithreading and concurrency, Networking and API consumption, App security and data protection, Deployment, provisioning, and App Store submission process | Android app architecture patterns (MVC, MVP, MVVM, MVI), Memory management (Garbage Collection), Multithreading and concurrency (Threads, AsyncTask, Coroutines), Networking and API consumption (REST, JSON, GraphQL), App security and data protection, Deployment, provisioning, and Google Play Store submission process |
Tools | Yarn, NPM, webpack (and/or Vite), linting tools (ESLint, stylelint), Git, Continuous Integration tools, Vercel | Composer (and/or other language-specific package manager), static analysis tools, Git, Continuous Integration tools, Monitoring tools (Datadog…), AWS | Xcode, Interface Builder, Swift Package Manager, CocoaPods, Carthage, Instruments, XCTest, Git, Continuous Integration tools (e.g., Jenkins, GitLab CI/CD, CircleCI, Fastlane), Debugging tools (e.g., LLDB, Reveal) | Android Studio, Gradle and Maven, Android SDK tools (ADB, Logcat, etc.), Android Profiler, JUnit (unit testing), Git, Continuous Integration tools (e.g., Jenkins, GitLab CI/CD, CircleCI, Firebase Test Lab), Debugging tools (e.g., Stetho, LeakCanary) |
Frameworks | React, Next.js, Tailwind | Laravel | RxSwift, UIKit (or SwiftUI for modern app development), HealthKit, Combine | Android Jetpack (ViewModel, LiveData, Room, Data Binding, Navigation, WorkManager, etc.), Dependency Injection (Dagger 2, Hilt, Koin), Reactive Programming (RxJava, RxKotlin, LiveData, Kotlin Flow), Networking libraries (Retrofit, OkHttp, Volley) |
Best Practices | TDD, DDD, UI testing, Localization and internationalization, Performance optimization (code splitting, lazy loading, image optimization), Accessibility and inclusive standards (ARIA, WCAG), responsive design, mobile-first approach, CSS methodologies (BEM, SMACSS, OOCSS) | TDD (via Pest, PHPUnit or other specific…), DDD, SOLID, CI/CD, API versioning and documentation | TDD, DDD, UI testing, Localization and internationalization, Performance optimization, Design patterns (Singleton, Observer, Factory, Decorator, etc.) | TDD, DDD, UI testing (Espresso, Robolectric), Localization and internationalization, Performance optimization, Design patterns (Singleton, Observer, Factory, Decorator, etc.) |
For each level of the following table there will be a minimum number of years of experience in order to unlock the upgrade from a level to another.
Anyway, both when on-boarding new team members and when evaluating upgrades, it will have a relative weight: we will always focus on a good mix of the soft and hard skills defined in the previous sections.
The following matrix describes skills and expectations for each engineering role level, based on the previous definitions.
LEVEL | Programming Basics | Specific knowledge | Tools | Frameworks | Best Practices | Problem Solving | Team Communication | Non technical communication | Project ownership & accountability | Mentorship | Min Experience (years) |
---|---|---|---|---|---|---|---|---|---|---|---|
Junior 1 | BASIC | BASIC | BASIC | BASIC | ND | BASIC | BASIC | BASIC | ND | ND | 0 |
Junior 2 | GOOD | GOOD | GOOD | GOOD | BASIC | BASIC | BASIC | BASIC | ND | ND | 2 |
Mid 1 | GREAT | GOOD | GOOD | GREAT | GOOD | GOOD | GOOD | GOOD | GOOD | BASIC | 3 |
Mid 2 | GREAT | GREAT | GREAT | GREAT | GOOD | GREAT | GOOD | GOOD | GOOD | GOOD | 6 |
Senior | GREAT | GREAT | GREAT | GREAT | GREAT | GREAT | GREAT | GOOD | GREAT | GREAT | 7 |
Lead | GREAT | GREAT | GREAT | GREAT | GREAT | GREAT | GREAT | GREAT | GREAT | GREAT | 7 |
Our philosophy is based on the vision of a small, highly-committed and quality oriented team, where generalists and full-stack developers can give a lot of value.
For this reason, team members with horizontal skills will be able to have custom roles and responsibilities and the chance to have a salary up to 1 bonus level.