Build a Foundry learning plan covering Forge tests, setup, core competencies, and a 12-month path from Ethereum tooling foundations to advanced practice.

For years, the standard toolkit for Ethereum development was dominated by JavaScript-based frameworks like Hardhat and Truffle. These tools have been instrumental in the growth of the ecosystem, but they come with a key drawback: you write your smart contracts in Solidity, but your tests and scripts in JavaScript. This context-switching can be inefficient and sometimes introduces subtle bugs.
Enter Foundry, a new breed of smart contract development toolkit that is rapidly gaining popularity. Foundry is a fast, portable, and modular toolkit for Ethereum application development, and its key feature is that it allows you to do everything, including writing your tests,directly in Solidity.
This guide will provide an introduction to Foundry and walk through why so many developers are making the switch. For more details, see our full introduction to Foundry.
Foundry is not a single tool, but a collection of command-line tools that work together. The main components are:
Speed: Foundry is written in Rust and is engineered for performance. Compiling contracts and running tests is often much faster than with Hardhat.
Portability: Foundry is a simple command-line tool. It doesn't have a complex project structure with numerous dependencies. This makes it easy to install and use across different environments.
Let's look at what a Foundry test looks like. Imagine we have a simple Counter.sol contract:
// src/Counter.sol
contract Counter {
uint256 public number;
function setNumber(uint256 newNumber) public {
number = newNumber;
}
function increment() public {
number++;
}
}
Now, let's write a test for it in Solidity. In Foundry, tests are just contracts that inherit from Foundry's standard test library.
// test/Counter.t.sol
import "forge-std/Test.sol";
import "../src/Counter.sol";
contract CounterTest is Test {
Counter public counter;
/ This is the setup function, which runs before each test.
function setUp() public {
counter = new Counter();
counter.setNumber(0);
}
/ A simple test function. All test functions must start with `test`.
function testIncrement() public {
counter.increment();
assertEq(counter.number(), 1);
}
/ A fuzz test. Foundry will call this function with many random `x` values.
function testSetNumber(uint256 x) public {
counter.setNumber(x);
assertEq(counter.number(), x);
}
}
To run these tests, you would simply run forge test in your terminal.
forge init my-project to create a new Foundry project.While Hardhat remains a powerful and popular choice, Foundry represents an evolution in the Ethereum developer experience. Its focus on speed, simplicity, and Solidity-native testing is winning over developers who want a more efficient and powerful workflow. For any serious Ethereum developer, learning Foundry is increasingly seen as a necessary skill for building reliable and secure smart contracts.
These competencies are foundational for success in modern careers. Whether you're in Web3, traditional tech, or any knowledge-intensive field, these skills determine your trajectory. Studies consistently show that these abilities have a substantial return on investment over time.
Technical Foundation
Understanding technical concepts relevant to your field is non-negotiable. You don't need to be an expert, but foundational knowledge prevents costly mistakes. Communication Excellence
The ability to clearly explain complex ideas is rare and valuable. Practice writing emails, documentation, and presentations. Clarity compounds over time. Problem-Solving Methodology
Approach problems systematically: define the problem, research solutions, evaluate options, implement, and measure. This framework works for technical and non-technical challenges. Learning Agility
In rapidly changing fields, the ability to quickly acquire new skills is your greatest asset. Practice learning by doing, not just consuming content. Emotional Intelligence Understanding and managing your emotions, and reading others, determines your effectiveness in teams and negotiations.
Explore more guides and career playbooks