Hashtag Web3 / Updated
How to Become a Solidity Developer
A practical guide to becoming a Solidity developer in 2026. Learn what the role requires, how Solidity and the EVM work, tools like Foundry and Hardhat, salary ranges, and a project-based roadmap to get hired.

A Solidity developer writes smart contracts that run on the Ethereum Virtual Machine (EVM). These programs control how value and logic move on Ethereum and EVM-compatible chains like Arbitrum, Optimism, Base, Polygon, BNB Chain, and Avalanche C-Chain.
This guide explains what the job actually involves, who it fits, how the language and toolchain work, the trade-offs, and a specific path to get hired.
What a Solidity Developer Does
A Solidity developer designs, codes, tests, and deploys smart contracts. The code is deployed to a blockchain and then it is immutable. You cannot patch it like a web app. You have to get it right before mainnet, or use a deliberate upgrade pattern.
Day to day work includes writing contracts in Solidity, writing tests and invariants, reviewing gas costs, integrating with frontends through an ABI, and preparing for audits. Most production work builds on audited libraries like OpenZeppelin Contracts rather than writing everything from scratch.
Solidity is an object-oriented, statically typed, curly-bracket language. It is influenced by C++, Python, and JavaScript, and it compiles to EVM bytecode. That definition comes directly from the official Solidity documentation at docs.soliditylang.org. The language was first proposed in 2014 by Gavin Wood and led by Christian Reitwiessner, and the core team is sponsored by the Ethereum Foundation.
When you finish a .sol file, the compiler outputs two things you will use everywhere:
- Bytecode - hex code the EVM executes on chain
- ABI - a JSON interface that tells frontends and other contracts how to call your functions
Only the latest compiler version receives security fixes, according to the Solidity documentation. As of July 9 2026, the latest stable release is Solidity 0.8.36. It includes two medium severity security fixes and improvements to the experimental SSA code generator. The previous release, 0.8.35 from April 29 2026, added an erc7201 builtin for ERC-7201 namespaced storage and formalized the --experimental flag for in-progress features. If you deploy in 2026, set a locked pragma like pragma solidity 0.8.36; for production. Use a floating pragma like ^0.8.20 only for reusable libraries.
Who This Path Is For
Good fit if you are:
- A developer with JavaScript, TypeScript, Python, or C++ experience who wants to work close to value transfer and protocol logic
- Comfortable with low-level constraints like gas, storage layout, and immutability
- Willing to write more tests than code and to read audit reports. Security review is part of the job, not an afterthought
- Interested in DeFi, NFTs, DAOs, or on-chain infrastructure where EVM chains dominate
Not a good first step if you:
- Want to build only frontends or only Solana/Move/Cairo contracts. Solidity does not run on Solana, Aptos, or StarkNet. Solana uses Rust, Aptos and Sui use Move, StarkNet uses Cairo
- Expect frequent hotfixes after deploy. The EVM is deterministic and deployed code cannot be changed without a proxy or a new deployment
- Prefer work where runtime cost does not matter. Every storage write and external call has a gas cost that you must budget for
How Solidity and the EVM Work
You need this mental model before you write code.
The EVM is a state machine. Contracts store data in persistent storage at an address. Transactions call functions, which read and update that storage. All nodes must get the same result, so the language is deterministic and has no randomness, no floating point surprises, and explicit handling of value.
Core language pieces:
- Types and visibility. You declare types at compile time, for example
uint256,address,bool,string,mapping,struct. Functions arepublic,external,internal, orprivate. State mutability isview,pure, orpayableif it can receive ETH. - State variables. Variables declared at contract level live on chain forever. They are expensive to write. The
SSTOREopcode is the most costly common operation. - Events.
event Transfer(address indexed from, address indexed to, uint256 value)logs data off chain. Frontends and indexers like The Graph use events, not storage scans, to show history. Events cost less gas than storage. - Modifiers and custom errors. Modifiers like
onlyOwnergate access. Custom errors introduced in 0.8.4 and improved in 0.8.26 save gas over string requires. Useif (msg.sender != owner) revert NotOwner();instead of long strings. - Inheritance and interfaces. Contracts inherit from other contracts and interact through interfaces like
IERC20. OpenZeppelin provides audited implementations for ERC-20, ERC-721, ERC-1155, access control, and proxies.
Execution flow to keep in mind:
Solidity code -> solc compiler -> bytecode + ABI -> deployment transaction -> EVM executes bytecode when called. The ABI is how a React app with ethers.js or viem encodes a call.
Key EVM facts that affect how you code:
- Solidity 0.8.0 and later reverts on integer overflow and underflow by default. Before 0.8.0 you needed SafeMath.
- From 0.8.28, transient storage value types are fully supported in both IR and legacy pipelines. This enables cheaper reentrancy locks and other temporary state that does not persist past the transaction. It uses
transientkeyword and TSTORE/TLOAD opcodes from EIP-1153. - The default EVM target moves with network upgrades. 0.8.30 switched default to Prague for the Pectra upgrade, 0.8.31 moved to Fusaka and Osaka. Set
evmVersionexplicitly if you deploy to a chain that has not upgraded, otherwise you may generate PUSH0 opcodes that older chains reject.
Pros and Cons of Specializing in Solidity
Pros
- Large EVM ecosystem. One codebase can deploy to Ethereum mainnet, all major L2s, and sidechains. That portability is rare outside the EVM. OpenZeppelin Contracts is used in production by many of the largest protocols and, according to the Security Center as of August 19 2026, covers an estimated $125.9B in TVL and has 855,393 weekly NPM downloads. You build on top of that work.
- Clear demand signal for specialists. Salary aggregators in 2026 show a wide but high band. Web3.career reports an average of $150k per year with a range of $65k to $257k. gm.careers reports a median of $135k with a range of $120k to $230k. Crypto.jobs reports an average of $91k globally and $175k in its own filtered dataset for 2026. Hourly data from Lemon.io for senior Solidity developers averages about $60 per hour, with US seniors at $94 to $105 per hour. Ranges differ by methodology, sample size, and whether they count only full-time protocol roles or also global contract rates. Specialization, audit experience, and mainnet TVL ownership raise pay toward the top of the band.
- Strong tooling for testing. Foundry lets you write tests in Solidity, fuzz with random inputs, and run invariant tests. That matters when a bug can drain funds.
Cons
- High cost of mistakes. The 2026 OWASP Smart Contract Top 10 lists access control failures as the top loss category at $953.2M, with reentrancy, price oracle manipulation, and proxy upgrade bugs also in the top 10. $905.4M was lost across 122 incidents in 2025 alone. Immutability means you pay for bugs after deploy.
- Small hiring pool with high bar. Web3.career data for August 2026 shows about 74 new Solidity jobs per month on average, with about 114 applicants per job. About 47 percent of those jobs are remote, with monthly variance. Teams filter heavily for security practice and mainnet experience.
- Gas and storage constraints. You will spend time packing storage slots, caching storage to memory, and choosing calldata vs memory. These are not optional optimizations. They are part of shipping usable products when users pay for each operation.
- Rapid compiler churn. Solidity uses 0.y.z versioning to signal frequent breaking changes. You must track compiler releases, EVM versions, and audited library versions.
How to Get Started: A Practical Roadmap
Step 1: Learn the Fundamentals First
Do not skip this. Most insecure contracts come from missing foundations.
- Blockchain basics. Decentralization, immutability, consensus. Know Proof of Work vs Proof of Stake and what a node does.
- Public key cryptography. How private keys sign transactions, what
msg.senderandtx.originmean, and whytx.originshould not be used for auth. - Ethereum architecture. EVM, accounts vs contracts, state, gas, and the difference between
call,delegatecall, andstaticcall. Read the Introduction to Smart Contracts in the official Solidity docs and the Ethereum developer docs.
Step 2: Set Up a Minimal Toolchain
Pick one path and stick with it for your first two projects. You can add the other later.
Option A: Foundry (default in 2026 for protocol work). Used by 51.1 percent of developers in the 2024 Solidity Developer Survey. Fast, Solidity-native tests, built-in fuzzing, no Node.js required.
curl -L https://foundry.paradigm.xyz | bash
foundryup
forge init my-project
forge test
anvil
Forge compiles and tests, Cast interacts with chains, Anvil gives you a local node, Chisel is a Solidity REPL.
Option B: Hardhat 3 (good if you live in TypeScript). Used by 32.9 percent of developers. Hardhat 3 shipped in late 2025 with a Rust-based execution layer and native Solidity test support, which closed much of the speed gap with Foundry. It still has the widest plugin ecosystem, including OpenZeppelin upgrades and hardhat-verify.
mkdir my-project && cd my-project
pnpm init
pnpm add -D hardhat
npx hardhat --init
Many teams in 2026 use both: tests in Foundry, deploy scripts and frontend types in Hardhat. Hardhat 3 can run Foundry-style Test.sol tests and read foundry.toml, so mixing is practical.
Other tools you will need:
- Remix IDE at remix.ethereum.org for quick experiments with zero install. It has an editor, compiler, and in-browser VM.
- MetaMask for wallet and Sepolia testnet interaction. Get Sepolia ETH from a public faucet.
- OpenZeppelin Contracts as your base library. Install with
npm install @openzeppelin/contractsand import audited ERC-20, ERC-721, Ownable, ReentrancyGuard, and Governor modules. - Static analysis. Run Slither and Aderyn on every project before an audit. Add them to CI.
Step 3: Learn Solidity With Small, Complete Projects
Build in this order. Each project should be compiled, tested, deployed to Sepolia, and verified on Etherscan.
Project 1: SimpleStorage. Learn syntax, state variables, visibility, and the compile-deploy-call cycle.
// SPDX-License-Identifier: MIT
pragma solidity 0.8.36;
contract SimpleStorage {
uint256 public favoriteNumber;
function store(uint256 _newFavoriteNumber) public {
favoriteNumber = _newFavoriteNumber;
}
function retrieve() public view returns (uint256) {
return favoriteNumber;
}
}
Deploy with Remix or forge create. Call store(77) then read favoriteNumber.
Project 2: ERC-20 Token. Learn the ERC-20 standard and OpenZeppelin imports.
Task: Deploy a token with OpenZeppelin ERC20, add a faucet function or fixed supply, write tests for transfer and approval, build a tiny React page with viem or ethers that shows balance after wallet connect.
Project 3: NFT Collection (ERC-721). Learn ERC-721, token URIs, and IPFS.
Task: Mintable collection with a max supply, store metadata on IPFS, display owned NFTs in the frontend. Write tests for mint limits and ownership checks.
Project 4: Staking Vault. Learn DeFi mechanics and security patterns.
Task: Let users stake the Project 2 token and earn rewards over time. Apply Checks-Effects-Interactions, add ReentrancyGuard, and emit events for stake and claim. This is where you practice caching storage to memory and using custom errors to save gas.
Project 5: Contribute to Open Source. Find a Web3 repo on GitHub, fix a bug, improve NatSpec docs, or add a test. This is a stronger hiring signal than another tutorial clone. Link to the merged PR from your portfolio.
Across all projects, practice these non-negotiable habits:
- Lock pragma for deployments, use custom errors, validate inputs with
requireorrevert, and check return values on external calls - Follow Checks-Effects-Interactions: validate, update state, then call out
- Never store secrets in
privatevariables. Anyone can read storage witheth_getStorageAt. Use commit-reveal or off-chain proofs if you need secrecy - Initialize proxies atomically and call
_disableInitializers()in implementation constructors. Use the Upgrades plugins to check storage layout before upgrades - Keep a clean GitHub. Each repo needs a README, tests, and a deployed address on Sepolia
Step 4: Build a Portfolio That Proves Safety
Hiring managers screen GitHub before they screen resumes.
- Keep 3 to 5 repos that are finished, tested, and documented. One ERC-20, one ERC-721, one staking or vault, one with proxy or governance if you aim for senior roles
- Show test coverage, fuzz tests, and Slither output. Link to Etherscan verification and a short demo video
- Write a short post for each project: what you built, gas decisions you made, and what an audit would focus on. This shows judgment, not just syntax
- Participate in ETHGlobal hackathons or testnet audit contests like Ethernaut or Sherlock. Even a scored entry helps
Step 5: Apply and Interview
Target roles: Solidity Developer, Smart Contract Engineer, Protocol Engineer, Security Researcher, Auditor.
For interviews, expect:
- Language and EVM. Storage vs memory vs calldata, visibility,
view/pure/payable,call/delegatecall/staticcall, gas cost ofSSTOREvsMLOAD - Security. Reentrancy, access control, oracle manipulation, unchecked external calls, proxy storage collisions. Be ready to code Checks-Effects-Interactions and explain why state is updated before the external call
- Gas. Storage packing, single SSTORE patterns, calldata for external params,
uncheckedwhere safe, custom errors - Standards. ERC-20, ERC-721, ERC-1155, EIP-712 typed data, and upgrade patterns like Transparent Proxy or UUPS
Bring your repos and walk through a fix you made after a Slither finding. That story is more credible than listing buzzwords.
FAQ
How long does it take to become job-ready?
If you code 10 to 15 hours per week and complete the five projects above with tests and Sepolia deploys, most learners reach a junior interview level in 4 to 6 months. Senior or audit roles take longer and require time on mainnet code and real reviews.
Should I learn Solidity or Rust?
Learn Solidity if you want to build on any EVM chain. That is where most dApps, tooling, and audited libraries are. Learn Rust if you want to build on Solana or Polkadot or work on L1 infrastructure itself. They are different job markets. Many teams now deploy to multiple EVM L2s, so Solidity plus cross-chain deploy experience is valued over learning a new L1 language early.
Do I need Hardhat or Foundry?
Start with Foundry if you are new in 2026. It is faster, tests are in Solidity, and fuzzing is built in. Add Hardhat 3 when you need its plugin ecosystem or tight TypeScript integration for deploys and frontend types. You do not have to choose one forever.
What Solidity version should I use?
Use the latest stable for new deploys. As of this writing that is 0.8.36. Check the Solidity blog category Releases at soliditylang.org for release notes and security fixes. Pin the version in foundry.toml or hardhat.config and in pragma solidity.
How much can a Solidity developer earn?
There is no single number. Published 2026 ranges vary by source, region, and whether they measure salary or contract rates. As examples, web3.career reports an average near $150k with a $65k to $257k range, gm.careers reports a median of $135k with $120k to $230k, and Lemon.io reports senior hourly rates from $27 to $105 per hour with a median near $60. Use these as bands, not guarantees, and add proof of audits or TVL ownership to move up the band.
Do I need a formal audit before mainnet?
Yes for anything holding value. Automated tools catch classes of bugs but do not replace human review. Run Slither and Aderyn, write fuzz and invariant tests in Foundry, then get an external review. Budget for it in your launch plan.
Is Solidity worth learning in 2026?
If you want to work on EVM protocols, yes. The EVM runs on Ethereum and the largest set of L2s and sidechains, the Solidity docs and OpenZeppelin libraries are mature, and the toolchain is stable after Hardhat 3 and the recent 0.8.x compiler work. It is a specialized skill with real security responsibility, so commit to testing and review as part of the learning, not as an extra.
