From Novice to Expert: My Journey as a Solidity Developer

  • by
  • 9 min read

The Unexpected Path to Blockchain Development

Five years ago, at 38 years old, I found myself at a crossroads in my career. Having recently moved from Melbourne to Lisbon with my family, I discovered that my background in supercomputing and solution architecture wasn't in high demand in my new home. This unexpected challenge led me to explore the world of blockchain technology and smart contract development.

The decision to pivot into blockchain wasn't made lightly. I had spent years honing my skills in traditional software development and systems architecture. However, the rapidly growing blockchain industry presented an opportunity I couldn't ignore. According to a 2018 report by Burning Glass Technologies, job postings for blockchain skills had grown by 316% year-over-year. This staggering growth rate signaled a significant shift in the tech industry, one that I was determined to be a part of.

A Leap of Faith into Solidity

After reading an article about the shortage of blockchain engineers, I saw an opportunity to reinvent my career. This led to the formation of TechHQ, a blockchain consultancy where I would serve as the tech expert. The catch? I had no prior experience in blockchain development.

With only a month to prepare, I dove headfirst into the world of Solidity and smart contracts. My first steps included completing the CryptoZombies tutorial, a gamified learning experience that introduces developers to the basics of Solidity programming. This hands-on approach allowed me to grasp fundamental concepts quickly, such as contract structure, state variables, and function modifiers.

Simultaneously, I began writing technical articles about blockchain to attract clients and establish credibility. This process of learning and immediately teaching others became a cornerstone of my development strategy. It forced me to deeply understand concepts before explaining them, a practice that accelerated my learning curve significantly.

Early Challenges and Learning Experiences

The CementDAO Project: A Baptism by Fire

Our first major project came with CementDAO, where I faced the challenge of implementing a custom Automated Market Maker (AMM) curve using logarithms. This task exposed my lack of knowledge in several areas:

  1. Solidity programming intricacies
  2. JavaScript for testing and deployment
  3. Git version control for collaborative development
  4. Truffle development framework for Ethereum dApps

Working alongside a talented young developer named Bernardo, I spent a month grappling with this task. The result was far from perfect—overengineered and inefficient by 2018 standards. However, this experience taught me valuable lessons about smart contract development and the importance of continuous learning.

The CementDAO project introduced me to complex Solidity concepts like:

  • Gas optimization techniques
  • Safe math operations to prevent overflows and underflows
  • Event emission for off-chain tracking
  • Inheritance and interface implementation in Solidity

While our implementation wasn't optimal, it laid the groundwork for my understanding of DeFi mechanics and the intricacies of on-chain financial systems.

Experimenting and Innovating: The Birth of Role-Based Access Control

As we searched for more clients, I continued to experiment with Solidity, which led to the development of a role-based access control contract. This work, though not immediately successful, proved crucial in securing our next client, AllianceBlock.

The concept of role-based access control (RBAC) in smart contracts wasn't new, but our implementation aimed to make it more flexible and gas-efficient. We utilized Solidity's mapping data structure to create a system where:

mapping(bytes32 => mapping(address => bool)) private _roles;

This double mapping allowed for efficient role checks and assignment, a pattern that would later influence more advanced access control systems in the Ethereum ecosystem.

The AllianceBlock Challenge: Scaling Up Complexity

The AllianceBlock project presented new challenges that pushed my Solidity skills to their limits:

  1. Developing a blockchain issuance platform
  2. Implementing multiple permissioned roles with complex interactions
  3. Integrating smart contracts with frontend applications

This project required a deep dive into Solidity's more advanced features, including:

  • Proxy patterns for upgradeable contracts
  • ERC20 token implementations with custom functionality
  • Multi-signature wallet integration for enhanced security

Despite facing performance issues, particularly when dealing with large data sets on-chain, we delivered a proof-of-concept on Ganache. This project taught me critical lessons about smart contract architecture and the limitations of on-chain storage, pushing me to explore off-chain solutions and layer-2 scaling options.

The Turning Point: Contributing to OpenZeppelin

A significant milestone in my career came when I contributed to OpenZeppelin, a well-respected library for secure smart contract development. My journey with OpenZeppelin included solving an open issue related to linked lists, contributing to the implementation of EnumerableSet.sol, and revamping their access control contracts.

This experience was transformative, exposing me to:

  1. Rigorous code review processes
  2. Gas optimization techniques at a professional level
  3. Best practices in smart contract security

My work on AccessControl.sol, which was included in the 3.0 release, represented a significant improvement in how role-based access could be implemented in Solidity. The contract introduced a more flexible and extensible approach to managing roles and permissions, utilizing events for better off-chain tracking and incorporating time-based role management.

Teaching to Learn: Becoming a Blockchain Instructor

My next role as a Blockchain Instructor for BeyondSkills pushed me further out of my comfort zone. Creating online courses teaching Solidity programming forced me to:

  1. Fill gaps in my own knowledge, particularly around Ethereum's yellow paper and EVM internals
  2. Learn how to deploy contracts independently using various tools and networks
  3. Develop a comprehensive understanding of Solidity's evolution and best practices

This experience reinforced the pattern that had been crucial to my growth: learning new concepts and immediately teaching them to others. It also deepened my understanding of Solidity's nuances, such as:

  • The intricacies of memory vs. storage and their impact on gas costs
  • Advanced patterns like the checks-effects-interactions pattern for reentrancy protection
  • The importance of formal verification and audit processes in smart contract development

Building Real-World Applications: The Yield Protocol

My journey took another significant turn when I joined Yield Protocol as their first hire. This opportunity allowed me to apply my skills to complex financial applications, including:

  1. Developing collateralized debt engines that required a deep understanding of financial primitives and their blockchain implementations
  2. Implementing protocol integrations with other DeFi platforms, showcasing the composability of Ethereum's ecosystem
  3. Addressing challenges like rounding errors and flash loans, which required innovative solutions and a thorough understanding of Solidity's limitations
  4. Optimizing for gas efficiency, a critical factor in the success of any Ethereum-based application

Working on Yield Protocol exposed me to advanced Solidity concepts and DeFi-specific challenges:

  • Implementing fixed-point math in Solidity for precise financial calculations
  • Utilizing inline assembly for gas optimization in critical paths
  • Designing upgradeable contract systems that could evolve while maintaining data integrity
  • Implementing complex access control systems that balanced security with usability

While the initial version of Yield had its challenges, it provided invaluable experience in building and launching a mainnet product. The process of auditing, testing, and deploying contracts worth millions of dollars was both thrilling and sobering, highlighting the immense responsibility that comes with blockchain development.

Lessons Learned and Future Directions

Looking back on my journey, several key factors contributed to my growth as a Solidity developer:

  1. Embracing discomfort: Consistently pushing beyond my comfort zone and taking on challenges I wasn't fully prepared for accelerated my learning and adaptability.

  2. Learning through teaching: Writing articles, creating courses, and explaining concepts to others solidified my understanding and forced me to stay current with the rapidly evolving blockchain landscape.

  3. Building real projects: Hands-on experience with actual clients and products provided practical insights beyond theoretical knowledge, exposing me to real-world constraints and considerations.

  4. Contributing to open-source: Engaging with the developer community and contributing to respected projects like OpenZeppelin elevated my skills and credibility, while also giving back to the ecosystem that supported my growth.

  5. Adaptability: Being willing to pivot and learn new skills as the blockchain landscape evolved was crucial. From the early days of basic token contracts to the complex DeFi protocols of today, the ability to adapt and learn quickly has been invaluable.

Advice for Aspiring Solidity Developers

For those looking to follow a similar path into Solidity development, consider these tips:

  • Start with foundational tutorials like CryptoZombies, but quickly move on to building your own projects. Practical experience is invaluable in this fast-moving field.

  • Engage with the Ethereum and Solidity communities through forums like Ethereum Stack Exchange, social media platforms like Twitter, and local meetups. The blockchain community is generally welcoming and supportive of newcomers.

  • Contribute to open-source projects to gain exposure to high-quality code and best practices. This also helps build your reputation in the community.

  • Document your learning journey through blog posts or tutorials. This not only helps reinforce your understanding but also builds your personal brand and can lead to opportunities.

  • Don't be afraid to take on projects slightly beyond your current skill level—this is where the most growth happens. Be transparent about your experience level and use these challenges as learning opportunities.

  • Stay updated with the latest developments in Ethereum and Solidity. Follow the Ethereum Improvement Proposals (EIPs) and participate in discussions about the future of the platform.

  • Invest time in understanding the underlying blockchain technology, not just Solidity syntax. A deep understanding of how Ethereum works will make you a more effective developer.

Conclusion: The Ongoing Journey

The field of blockchain and Solidity development is constantly evolving, presenting new challenges and opportunities. My journey from a complete novice to working on complex DeFi protocols demonstrates that with persistence, a willingness to learn, and the courage to step outside your comfort zone, it's possible to build a rewarding career in this exciting field.

As I continue to explore new roles and challenges in the blockchain space, I remain committed to the cycle of learning, applying, and teaching that has been the cornerstone of my development as a Solidity expert. The blockchain industry offers endless possibilities for those willing to embrace the learning curve and contribute to its growth.

The future of blockchain development is bright, with emerging trends like:

  • Layer 2 scaling solutions
  • Cross-chain interoperability
  • Decentralized identity systems
  • NFTs and the tokenization of real-world assets

These areas present new frontiers for Solidity developers to explore and innovate.

Remember, every expert was once a beginner. Your journey in Solidity development starts with a single smart contract. With dedication, continuous learning, and active participation in the community, you too can navigate the path from novice to expert in this revolutionary field. Where will your blockchain journey take you?

Did you like this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.