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.
People Mentioned
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.
The Beginning
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 and 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 getting started at that job and details my first steps in blockchain. My introduction to Solidity was completing the .
Our first business opportunity arose a few months later with a project for. We had onboarded Bernardo, , who at some point asked for help with the math involved. I didn’t know much, but I could try to make Fixidity work to build a custom AMM curve using logarithms.
That task took me about a month, with Bernardo teaching me solidity, javascript, git, and truffle. I knew nothing, really. The results were less than stellar—overengineered and inefficient even by 2018 standards. In my ignorance,I genuinely believed it was top-tier.
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. Although this idea wasn't successful, it led me to come up with a role-based access control contract that was actually decent.
Right when bankruptcy seemed imminent, this very code secured us another client: hired us to code a blockchain issuance platform with a number of permissioned roles.
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, on-chain storage, and frontend integration.
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 with, developing and documenting various solidity patterns and use cases. Of course, I wrotemanyarticlesabout them.
The Turning Point
Eventually, the company ran out of money again, and we all had to start looking for jobs. Then, I stumbled upon an . They needed something like a linked list, and I had done it for CementDAO first, then for hq20-contracts, and even wrote a nice article about it.
After discussions with , my contribution was integrated as in one of OpenZeppelin's releases. I had made it. Some of my code was finally live. And with OpenZeppelin no less.
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 written a thorough article on the topic.
I knew I could do it. This eventually led to the publication of in the of open zeppelin-contracts, which again was a huge milestone in my career.
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 for assistance with fixed-point math for . Unlike the other many people with an idea who contacted me at the time, Allan had money from a VC fund I never had heard of, , and I took him seriously.
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 convinced to hire from my TechHQ times as a frontend engineer, and all three of us, with the help of a very young , successfully launched Yield v1 on the mainnet.
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.
Fast Forward to Today
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.