Select your current position
Pick a role and level — we'll show the growth path, skills and gap analysis.
Development path
Junior
0-2 years
Responsibility: Completing tasks under the guidance of senior colleagues. Learning the codebase, standards, and team processes. Writing code to spec, fixing simple bugs, writing tests.
Key skills:
Middle
2-5 years
Responsibility: Independently developing features from decomposition to deployment. Participating in code review. Optimizing performance. Mentoring junior developers. Taking part in architecture discussions.
Key skills:
Senior
5-8 years
Responsibility: Designing the architecture of components and services. Solving complex technical problems. Managing technical debt. Code review as a quality gatekeeper. Mentoring middle developers. Choosing technologies for new tasks.
Key skills:
Lead / Staff
7-12 years
Responsibility: Technical leadership of a team or area. Designing system architecture. Coordinating with other teams. Establishing standards and best practices. Participating in hiring. Planning the technical roadmap.
Key skills:
Principal
10+ years
Responsibility: Technical strategy at the company or domain level. Cross-organizational influence. Solving systemic business problems through technology. Mentoring lead engineers. Publicly representing the company.
Key skills:
Gap analysis: skills to develop
To reach the next level you'll need to develop:
Conducts code review for TypeScript/Electron. Checks security (IPC safety, CSP), performance, TypeScript correctness. Reviews React components and CSS.
Independently develops Electron applications with TypeScript. Manages lifecycle (app events, window management). Configures Tray, Menu, dialog API. Works with protocol handlers and deep links.
Configures sandbox mode for renderer processes. Implements permission handling (media, geolocation). Validates IPC messages. Configures webRequest for blocking dangerous URLs. Audits npm dependencies.
Applies Git rebase, cherry-pick, bisect. Configures Git hooks through Husky (lint-staged, type-check). Works with Git LFS for native module binaries. Resolves merge conflicts in package-lock.json.
Develops typed IPC through TypeScript interfaces. Implements streaming through MessagePort. Uses SharedArrayBuffer for high-performance data sharing. Manages multiple BrowserWindows through IPC.
Applies state management as ViewModel layer. Organizes navigation through React Router. Implements separation of concerns: IPC layer, business logic, UI components. Tests ViewModel separately.
Develops React UI for Electron with TypeScript strict mode. Uses React.lazy for code splitting. Implements virtualization (react-window) for large lists. Applies React.memo and useMemo for optimization.
Applies state management tools. Synchronizes state between main and renderer through IPC. Implements persistence middleware. Works with optimistic updates.
Structures tests for Electron: main process, renderer, shared. Mocks electron module through jest-electron. Introduces coverage through c8/istanbul. Tests IPC handlers.
Applies async patterns: Promise.all for parallel operations, AsyncIterator for streaming, AbortController for cancellation. Implements async queue for rate limiting. Handles unhandled rejections.
Configures strict TypeScript (strict: true, noUncheckedIndexedAccess). Uses ESLint plugin for Electron security rules. Introduces Husky pre-commit hooks. Applies conventional commits.