Lessons from Building at Scale: GitLab to Web3
My journey from GitLab's product team to leading Web3 infrastructure has taught me valuable lessons about building products that developers love.
Lessons from Building at Scale: GitLab to Web3
My journey from GitLab's product team to leading Web3 infrastructure has taught me valuable lessons about building products that developers love. Here are the key insights I've gathered along the way.
The GitLab Foundation: Building for Developers
When I joined GitLab, the company was already on an incredible trajectory. But what struck me wasn't just the growth—it was the obsessive focus on developer experience. GitLab understood something fundamental: developers are the ultimate product evangelists.
Lesson 1: Developer Experience is Product Strategy
At GitLab, every feature was evaluated through a developer lens:
- Does this save developers time?
- Does this reduce cognitive load?
- Does this integrate seamlessly into existing workflows?
This wasn't just a nice-to-have—it was core business strategy. Developers who loved using GitLab became champions within their organizations, driving enterprise adoption from the bottom up.
# GitLab CI/CD pipeline - simple yet powerful
stages:
- test
- build
- deploy
test:
script:
- npm test
deploy:
script:
- npm run deploy
only:
- main
The elegance was in the simplicity. Complex CI/CD workflows could be expressed in readable YAML that any developer could understand and modify.
Lesson 2: Dogfooding at Scale
GitLab used GitLab to build GitLab. This wasn't just philosophical—it was practical. Every pain point our users experienced, we experienced first. Every performance issue, every UI quirk, every integration challenge was felt by the team building the product.
This created a feedback loop that traditional enterprise software companies struggle to achieve:
- Immediate pain: If we shipped broken features, we felt it immediately
- Real usage patterns: We understood how the tool was actually used, not just how we thought it would be used
- Authentic empathy: We genuinely understood developer frustrations because we lived them daily
Lesson 3: All-Remote Product Development
GitLab pioneered all-remote work at scale, but the implications for product development were profound:
Asynchronous Communication
- Everything was documented by default
- Decisions were transparent and searchable
- Context wasn't lost when team members were offline
Global Perspective
- Features were designed for diverse user bases from day one
- Performance mattered because team members had varying internet speeds
- Accessibility wasn't an afterthought—it was lived experience
Efficient Iteration
- No conference room politics slowing decisions
- Clear ownership and accountability
- Faster cycle times from idea to implementation
Transitioning to Web3: New Challenges, Familiar Principles
Moving from GitLab to the Web3 space felt like time travel—back to the early days of developer tooling. The opportunities were massive, but so were the challenges.
Challenge 1: The Infrastructure Isn't Ready
Unlike GitLab, which could build on mature infrastructure (Linux, databases, web servers), Web3 development required building from first principles:
At GitLab:
# Deploy with confidence
cap production deploy
In Early Web3:
# Hope for the best
truffle compile
truffle migrate --network mainnet
# Pray the gas estimation is right
# Pray the network isn't congested
# Pray there are no bugs in production
This taught me that infrastructure maturity directly impacts product innovation. When developers spend 80% of their time fighting tools, they can't focus on building great products.
Challenge 2: Learning Curves vs. Adoption
GitLab succeeded partly because it built on familiar concepts. Git was already adopted, CI/CD was understood, and DevOps was an established practice.
Web3 required developers to learn entirely new paradigms:
- Immutable deployment: No hotfixes, every bug is permanent
- Gas optimization: Performance directly costs money
- Economic incentives: Code must account for adversarial actors
- Composability: Building with money legos requires new design patterns
The lesson: When introducing paradigm shifts, reduce friction everywhere else. If developers must learn new concepts, make the tooling impeccable.
Challenge 3: Community vs. Enterprise
GitLab mastered the transition from community tool to enterprise platform. Web3 presented the opposite challenge: building enterprise-grade infrastructure for a community-first ecosystem.
Key differences:
- Open source by default: Every smart contract is public
- Permissionless innovation: Anyone can build on your platform
- Token-driven governance: Users become stakeholders
- Composability requirements: Your protocol becomes infrastructure for others
The Chainlink Years: Building Web3 Infrastructure
At Chainlink, I applied GitLab lessons to Web3-specific challenges:
Principle 1: Documentation as Infrastructure
Great developer tools need great documentation. But in Web3, documentation is literally infrastructure—it enables permissionless innovation.
What we built:
// Before: Complex oracle integration
const oracle = new ethers.Contract(oracleAddress, oracleABI, signer);
const data = await oracle.latestRoundData();
const price = data.answer.div(10**8); // Don't forget to adjust decimals!
// After: Developer-friendly SDK
const price = await chainlink.getPrice("ETH/USD");
Key insights:
- Examples > Explanations: Developers learn by doing, not reading
- Interactive Documentation: Let developers experiment without setup
- Version Control: Documentation must evolve with code
- Community Contributions: Users often write the best tutorials
Principle 2: Backward Compatibility is a Feature
In Web3, breaking changes can literally break money. This forced us to think differently about versioning and upgrades.
Strategies we developed:
- Semantic versioning: Clear communication about breaking changes
- Deprecation windows: Give developers time to migrate
- Multiple API versions: Support old and new simultaneously
- Migration tooling: Automate upgrades where possible
This isn't just good practice—it's essential for ecosystem health. Developers invest significant time and money building on your platform. Respect that investment.
Principle 3: Performance is a Core Feature
In traditional software, performance issues cause user frustration. In Web3, they cause financial loss. This elevated performance from optimization to core feature.
What this meant:
- Gas optimization: Every opcode mattered
- Network reliability: Downtime costs users money
- Predictable costs: Developers needed to budget for operations
- Monitoring and alerts: Real-time visibility into system health
COTI: Applying Lessons to Privacy Infrastructure
At COTI, I'm applying everything learned from GitLab and Chainlink to the next frontier: privacy-preserving computation.
Building on Proven Patterns
Familiar Developer Experience:
// Looks like Solidity, works with privacy
contract PrivateAuction is COTIPrivate {
mapping(address => uint256) private bids;
function placeBid(uint256 amount) external private {
require(amount > 0, "Invalid bid");
bids[msg.sender] = amount;
}
}
Progressive Disclosure:
- Start with simple private computations
- Add complexity as developers learn
- Provide escape hatches for advanced use cases
Community-First Development
Open Source by Default:
- SDK and tools are MIT licensed
- Documentation is community-editable
- Developer feedback drives roadmap priorities
Developer Advocacy:
- Regular AMAs and office hours
- Conference workshops and tutorials
- Grant programs for ecosystem development
Key Lessons for Building Developer Tools
After years of building for developers across different ecosystems:
1. Start with Empathy
Understand developer workflows deeply:
- Shadow real developers using existing tools
- Map pain points in current processes
- Identify jobs-to-be-done that aren't well served
2. Design for the 80%
Build for common use cases first:
- Sensible defaults that work out of the box
- Progressive complexity for advanced users
- Clear upgrade paths as needs evolve
3. Optimize for Time-to-First-Success
The faster developers can achieve something meaningful, the more likely they are to continue:
- One-command setup where possible
- Working examples they can modify
- Clear error messages when things go wrong
4. Build Community Infrastructure
Great tools enable community:
- Forums and Discord for peer support
- Contribution guidelines for community improvements
- Regular events to maintain engagement
5. Measure What Matters
Track metrics that reflect actual developer success:
- Time to first deployment
- Weekly active developers
- Community-generated content
- Net Promoter Score among developers
The Future: What's Next?
The Web3 developer experience is rapidly improving, but significant opportunities remain:
Abstraction Layers
Account Abstraction: Hide wallet complexity from end users Intent-Based Programming: Describe desired outcomes, not implementation details Cross-Chain Abstraction: Unified APIs across different networks
AI-Powered Development
Code Generation: AI assistants that understand smart contract patterns Security Analysis: Automated vulnerability detection Gas Optimization: AI-powered efficiency suggestions
Enterprise Integration
Compliance Tooling: Built-in regulatory compliance checking Enterprise Identity: Integration with existing identity systems Traditional Database Integration: Hybrid on-chain/off-chain architectures
Conclusion: Building for the Long Term
Whether it's GitLab's CI/CD pipelines, Chainlink's oracle networks, or COTI's privacy infrastructure, the best developer tools share common characteristics:
- They solve real problems that developers face daily
- They integrate seamlessly into existing workflows
- They enable innovation beyond what their creators imagined
- They evolve with their communities rather than in isolation
The Web3 ecosystem is still early, but the foundations are being laid for the next generation of developer tools. The teams that focus on developer experience, learn from traditional software best practices, and engage deeply with their communities will build the infrastructure that powers the decentralized future.
Want to share your own lessons from building developer tools? Connect with me on Twitter or LinkedIn.