I joined my first hackathon — ETHOnline 2022 — a year after picking up web development and Solidity. To my great surprise, our team won Superfluid’s Best DAO hack award! Here are 10 things I learnt —
#1 Nothing beats real development
After completing ChainShot’s bootcamp in June, I spent some time practicing JavaScript to get ready for this hackathon. Although it felt good to solve each programming challenge, my slow progress on the course overall left me feeling discouraged. I felt really far away from being able to ship a functional product.
Once I started the hackathon, it didn’t take us long to integrate with real products and services. This boosted my confidence in my own hacking and building ability much more than any course could. skip the line.
#2 Deadlines are good
Another big challenge in self-directed learning is keeping up the momentum. When there aren’t any deadlines to deliver a project, procrastination becomes much easier. You end up prioritising other “urgent” and “important” stuff and never finish learning. With a hackathon, there is a strict deadline to deliver the product which forces you to focus and deliver.
#3 Be ambitious
Before forming a team, I had some idea of the project I wanted to build. It would be a portfolio manager that automatically rebalanced positions when price targets were hit. When I shared this idea with the team, they felt it was too simple and had no value add over existing solutions.
Their idea was a tool for DAOs to distribute airdrop token rewards more evenly e.g. by revoking the allocation of those who dump tokens. I was skeptical given the complexity and the number of services/products we had to integrate. However, I believe the ambitiousness of our project was what ended up catching the judging panel’s attention.
#4 Everyone doesn’t know something
My teammates had either previous work experience in software engineering or completed a web development bootcamp. This was intimidating to me as someone without a technical background. Afraid of becoming deadweight, I tried to be more proactive in initial research. I read up on the protocols sponsoring the hack and came up with a shortlist of potential technologies we could use.
When we started building, I realised they both had no experience with Solidity. Somehow, my bootcamp training (limited as it was) made me the “expert”. Although there was pressure, it was empowering to know I could contribute in a big way. An expert in one field might be a beginner in another.
#5 Good documentation makes a difference
I used to think that Stack Overflow had answers for everything. However, for new protocols and technologies, answers are scant. Short of asking questions directly to sponsors (see #6), most answers will come from documentation. The more well-written and extensive the documentation, the easier developers will be able to build on it. This is not a paid endorsement, but I found Superfluid’s documentation really good. This made it really fun to build and discover new features of the protocol.
#6 Don’t be afraid to ask
ETHOnline is a beginner-friendly hackathon with step-by-step guides and demos detailing how to build on various protocols. Moreover, many protocols have written extensive documentation and created powerful SDKs to help developers build. Eventually, though, you will encounter unique scenarios where googling doesn’t help and resources don’t explain.
Fortunately, ETHOnline’s discord has a channel for each sponsor where you can clarify directly with their team. I was doubtful initially, but decided to post my question to try my luck. Surprisingly, the sponsors were really responsive, helping us resolve implementation and design issues. Ask often and ask well — you will find that people are generally helpful.
#7 Very little progress is made in 2-weeks
Although we agreed on a project idea early, we took a long time to actually code. Thanks to earlier research (see #4), we had a good idea of what technologies to use and how to integrate. When it came to actual development, however, progress was slower than I imagined.
All of us hold full-time jobs, and one of us was rushing for product launch in November. This did reduce our working time, but if I was honest there was more than enough time to build without rushing. I ended up procrastinating a lot, telling myself I was waiting for my teammates to catch-up. By the time we were down to the last week of the hackathon, smart contract functionality was incomplete and there was no frontend.
#8 A lot can be done in a day
This sounds like a contradiction of my previous point, but it is not. When we realised how far behind we were, we set aside focused time to build the Saturday before the deadline. Although we started early, progress remained slow. Technical issues could not be fully resolved when we ended our meeting around 4pm. I decided to work through the night to solve as much as I could.
After a challenging night, to my great relief and surprise, I was able to resolve the last few errors around 4:30am. Since my mind was still humming, I finished the presentation slides in the hour before 6am, when I had to leave for the airport for a flight. My team then took up where I left off and submitted the recording and presentation on the deadline.
#9 Keep your contracts focused
Less than a day before submission, I discovered I was unable to deploy the test contract. The solidity compiler was throwing an error because my compiled contract was bigger than 24kb*. After using functions from libraries and interfaces, I was still above the limit. I had to remove some functions.
After some reflection, I realised that in my effort to offer convenience, I had broken the fundamental rule in coding — Don’t Repeat Yourself (DRY). In my effort to make things convenient for the end user, I had written functions that just called functions on other contracts with no other functions. It would be simpler to call the parent contracts directly from the frontend instead. With this elimination, we were able to deploy successfully.
#10 Don’t put yourself down
Focus on building something valuable, work hard, ask good questions. Don’t put yourself down and you will be surprised at what is possible.
This article was originally published by Benjamin Lim on our blog Coinsbench.com
Many roles and responsibilities can be handled by blockchain developers and most of them can be could be taken by an entry-level blockchain developer, but it will require some specialised skills such as knowing about cryptography, smart contracts and also web development. Here I will explain the essential skills needed...
“No! not another ‘X’ free resources to learn ‘Y’ blog post!”, you may say. Alright, just hear me out. This may not be yet another ordinary resource list. Before getting into the list, a little backstory… A month ago, I decided to pursue an intellectual curiosity of mine and started...
Firstly who tf am I to tell you what you need to accomplish this goal? My name is Jonny I’m a self taught Blockchain/NFT developer. I spent just over the last year dedicated to learning everything I could regarding blockchain & today I’ll go over what it is I covered...
Suspendisse sed velit elit. Vestibulum at nisl quam. Curabitur vel tempus massa. Nulla molestie finibus ipsum ac faucibus. In eget mauris at lectus imperdiet auctor eu in nibh. Morbi quis enim vel mi ultricies ultricies pharetra et dui. Ut lectus justo, congue vitae dignissim id, interdum eget lacus. Quisque ut...
Suspendisse sed velit elit. Vestibulum at nisl quam. Curabitur vel tempus massa. Nulla molestie finibus ipsum ac faucibus. In eget mauris at lectus imperdiet auctor eu in nibh. Morbi quis enim vel mi ultricies ultricies pharetra et dui. Ut lectus justo, congue vitae dignissim id, interdum eget lacus. Quisque ut...
Blockchain is a quite fast-growing technology and many people understand it in different aspects. In this blog post, I will take you through all the core concepts to understand how it works and where you should start to become a good blockchain developer. Let’s start simply with the explanation of...