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:
Independently develops with Blockchain Fundamentals in Hardhat/Foundry/OpenZeppelin. Conducts basic audits. Optimizes gas.
Analyzes how consensus mechanisms affect smart contract design: block time variability, reorg resistance, MEV extraction. Adapts contracts for different consensus models.
Independently develops with Cross-Chain Bridges in Hardhat/Foundry/OpenZeppelin. Conducts basic audits. Optimizes gas.
Develops full-featured DeFi dApps: multicall for batch reads, event-driven UI updates, error handling for reverted transactions. Integrates contract ABIs automatically.
Implements DeFi contracts: custom AMM with fee distribution, lending pool with collateral management, yield aggregator with auto-compound. Integrates Chainlink price feeds for oracle data.
Independently develops with Ethereum Ecosystem in Hardhat/Foundry/OpenZeppelin. Conducts basic audits. Optimizes gas.
Independently develops with NFT Development in Hardhat/Foundry/OpenZeppelin. Conducts basic audits. Optimizes gas.
Independently develops with Smart Contract Security in Hardhat/Foundry/OpenZeppelin. Conducts basic audits. Optimizes gas.
Writes fork tests, fuzz tests, and integration tests for complex DeFi flows. Tests edge cases with Foundry cheatcodes. Achieves 95%+ coverage with meaningful test scenarios.
Implements complex contracts: staking with multiple reward strategies, vesting with cliff/linear unlock, multi-sig treasury. Optimizes gas through storage packing and calldata. Coverage 95%+.
Writes parameterized and property-based tests for contracts. Tests boundary values, overflow scenarios, and access control edge cases. Uses fixtures and helpers for DRY tests.
Independently develops with Vyper in Hardhat/Foundry/OpenZeppelin. Conducts basic audits. Optimizes gas.
Develops production contracts in Vyper: DeFi pools, governance modules. Uses Titanoboa for comprehensive testing. Understands Vyper compiler security considerations.
Develops TypeScript SDK for smart contract interaction: type-safe contract calls via viem/wagmi, multicall batching, event subscription. Generates types from ABI automatically.
Integrates ZKP verification into smart contracts: Groth16 verifier, PLONK verifier. Optimizes on-chain verification gas cost. Works with Circom for circuit development.
Conducts manual security review of contracts: analyzes access control, economic attack vectors, and flash loan scenarios. Uses Mythril, Slither, Aderyn. Writes PoC exploits for findings.
Implements advanced Merkle proof patterns: multi-proof verification, incremental Merkle trees for on-chain accumulation. Optimizes proof verification gas cost through calldata optimization.
Applies mutation testing to validate smart contract security test coverage. Implements custom mutation operators for blockchain-specific patterns (reentrancy, overflow) and integrates results into audit workflows.
Implements upgrade flows: storage layout validation, initialization functions, access control for upgrades. Tests upgrade paths and storage compatibility. Uses forge-std for testing.
Applies advanced gas optimizations: calldata instead of memory, custom errors instead of require strings, bit manipulation. Profiles gas via forge test --gas-report and optimizes hot paths.
Develops contracts for multiple platforms: Solidity for EVM, Vyper for security-critical, explores Move/Cairo. Implements cross-platform deployment and testing infrastructure.
Independently develops with Applied Cryptography in Hardhat/Foundry/OpenZeppelin. Conducts basic audits. Optimizes gas.
Implements extended token mechanics: fee-on-transfer, rebasing tokens, permit (EIP-2612). Understands edge cases: zero-amount transfers, self-transfers, approval race conditions.
Applies formal verification to production contracts: writes Certora specs for critical invariants, uses SMTChecker. Verifies access control, balance conservation, and state transitions.
Applies clean code practices for smart contract systems: clear separation of concerns between contracts, consistent naming conventions, readable require messages. Refactors legacy contracts.