I began coding smart contracts five years ago, at the ripe old age of 38, and went from having no professional programming experience to building cutting-edge smart contracts.
Many have asked about how they might follow a similar path. While there isn't a particular resource or secret to success, there is a pattern that you can also use.
Here's my journey.
In 2018, I had recently moved with my wife and young child from Melbourne to Lisbon, so that we could all be closer to family. I had a decent career as a supercomputing engineer and solution architect for investment banking and thought that Lisbon would be large enough for me to find a job.
Soon, I found that the job market in Lisbon was in absolutely no need of supercomputing engineers and that my solution architect background would only get me boring middle-manager roles.
I had been interested in blockchain technology for a long time, but never really got into it. Then I read an article about how hard it was to hire blockchain engineersand saw an opportunity.
I wrote to the author to thank him for the inspiration to look for a job in blockchain. We got into talking, and along with a friend of his, we decided to start TechHQ, a blockchain consultancy with lofty ideals. Within our three-person consultancy, I would be the tech expert.
I had roughly a month to transition from being a corporate Solution Architect to creating blockchain-based projects we could sell to clients.
With no prior experience, I would be the tech expert.
One of my assignments was to write blockchain technical articles to bring in clients, the same as the article that had brought me to meet my partners. Writing these articles and being public about what I learned would be key in my career.
My very first article would be about
Our first business opportunity arose a few months later with a project for
The results were less than stellar—overengineered and inefficient even by 2018 standards
Having acquired some solidity coding capabilities and with only Bernardo skilled in frontend development, I took over the smart contracts for CementDAO. Unfortunately, due in part to the inefficient implementation of Fixidity, we never progressed to the mainnet stage.
As we searched for more clients, I continued to experiment so that I could write more articles, because that’s how we expected to get clients. Eventually, I came up with an interesting idea for a
Right when bankruptcy seemed imminent, this very code secured us another client:
Despite terrible performance on the smart contracts, they only needed a proof-of-concept on Ganache, which we delivered. I learned important lessons about smart contract architecture,
Despite terrible performance … I learned important lessons
We again had no revenue, and we were very short on cash. I decided to waive my salary and buy a third of the company so that we wouldn’t go bankrupt. I didn’t think we had a great chance of making it as a company, but it didn’t matter, I was coding, I was learning, I was having fun. It seemed like a cheap deal to get a great blockchain experience.
While we looked for more clients. I collaborated on
Eventually, the company ran out of money again, and we all had to start looking for jobs. Then, I stumbled upon an
After discussions with
Encouraged by this success, I tackled OpenZeppelin's challenge of revamping their access control contracts. I had done cutting-edge work on the topic of the failed supply chain application, perfected it with AllianceBlock, and again
I knew I could do it. This eventually led to the publication of
I had made it. Some of my code was finally live. And with OpenZeppelin no less.
I still needed a job, and I became a Blockchain Instructor for BeyondSkills. I would have to create online courses to teach solidity programming. As usual, I wasn’t really that qualified for the job. I knew how to code some things, but I had huge gaps in my knowledge. Until then, I hadn’t even deployed a contract myself.
I had to talk on video and do tutorials about solidity development. I also had to be thorough because the courses needed to be consistent. The same pattern as with the articles applied here; I was learning things and immediately teaching them, and that led me to learn a lot about solidity development.
Unfortunately, the company shut down due to legal challenges, and that content was never made public. Maybe it is better that way.
I was learning things and immediately teaching them and that led me to learn a lot about solidity development.
While recording those courses, I was approached by
By then, I had coded Fixidity, published several articles about fixed point math, and tried to help both OpenZeppelin and the Solidity core team, unsuccessfully. I also knew that AMMs with logarithmic functions were not trivial, and knew of one Mikhail guy that we could contract to make them work.
I was the first hire at @yield. I convincedAllan to hire
I learned a lot — about
One of the things that we learned is that, unlike Uniswap, we would need to make changes to the protocol searching for product-market fit. Since our contracts were mostly immutable, we soon started work on Yield v2.
Yield Protocol v2 was live for about two years, and I learned much from it, but now, it is closing down. While our technical work was top-notch, fixed rates don’t have product market fit in decentralized finance as of now.
Out in the wild again, I’m choosing the difficult path again and instead of getting another Lead Engineer/CTO role, I’m setting myself as an advisor to other startups that might benefit from the lessons I learned. There are no manuals on how to do this, and I know that the gaps in my knowledge are vast, but so are the opportunities for improvement.
By now, you should see the pattern. I stay just outside my comfort zone, often failing, but always teaching others about what I learn. This very article could be seen as an example.
If I’m lucky, I will find something that someone wants, like CementDAO, AllianceBlock, contracts for OpenZeppelin, BeyondSkills courses, and finally Yield. If I can’t find someone with a need, there is always something to learn and then write about, like all of my articles.
I stay just outside my comfort zone, often failing, but always teaching others about what I learn.
The trying, failing, learning, and teaching loop is not my invention, but it works. It often makes me look like an idiot, and maybe that’s the hardest bit for some. Myself, I wear my failures with pride.
Thanks for reading. I hope this will give you some inspiration. Good luck.