Well done to Tyk Side Project Fund winner, Codecrafters.io

Tyk mascot illustration

Sometimes an idea just jumps out at you as being one worth pursuing. That was certainly the case when Tyk was first conceived. We knew that we had the chance to make a difference, something which we’ve gone on to do for clients around the world.

Being able to grow the kernel of an idea into an international success is a rewarding process and it’s one we would like to support others to be able to do. That’s where the Tyk Side Project Fund comes in. The idea is to give a select group of change makers the boost they need to get their ideas off the ground.

In that spirit, we would like to congratulate Paul Kuruvilla of Codecrafters.io, whose side project idea both impressed and inspired the Tyk team. Here’s Paul, to share details of the project… 

Tyk: What led you to start this side project in the first place? What’s your background?

Paul: I’m a self-taught programmer. My degree was in mechanical engineering. I started out with programming as a way to make money when at college. Somewhere along the way I really grew interested in computer science as a subject, and decided to ditch mechanical engineering (I did get my degree though!) and focus on a career in software development.

I’ve worked at a couple of companies full-time, and a handful as a consultant. My first internship was under Google’s Summer of Code. My last stint was working as an Engineering Manager at Shuttl, an “Uber for buses” in India.

At Shuttl, I ran the developer training department for a short while. My training sessions followed the “Build your own X” format, where developers would learn about a tool by building a small version themselves.

I’d start out with a live coding demo where I’d build a popular programming tool from scratch, explaining concepts along the way. In the second half, developers would attempt to do the same on their own. I’d help out with hints along the way when someone was stuck. Developers would often form teams of two and compete against each other – nothing like a bit of healthy competition to make things interesting!

Overall, it was a pretty fun (yet effective) way to learn. This is where the original idea for CodeCrafters was born – I wanted to replicate that experience for a wider audience.

I knew off the bat that it was important to incorporate the expert feedback element – this is invaluable when you’re stuck and in need of hints to help you move forward! The communal aspect of the process was also key. Teaming up and competing against each other – that makes the whole process more fun.

Another reason that CodeCrafters seemed worth building is that most other learning materials for experienced programmers out there don’t focus on learning by doing. Books, screencasts, articles – all of these are primarily about passively consuming content. There’s a mountain of difference between reading about something and actually building it on your own. With CodeCrafters, I wanted to offer a solution that focuses on the latter.

Tyk: What are the challenges that you’ve faced while working on this as a side project?

Paul: My first challenge was to get people to use Codecrafters. A crucial aspect of the CodeCrafters experience is the hints you get when you make mistakes. To build these hints, I needed people to use it so that I could identify the kinds of mistakes they were making. Without people trying it out, the error cases are very hard for me to predict!

Another challenge is the amount of time I have available. I want to add support for more challenges and languages, but it all takes time!

Adding a language means adding custom support prompts and hints, but I’m now at the point where language support is something that any community member can contribute to, which is exciting. When someone comes to me and asks for a new language, they have the option to work on adding it themselves, if they want it fast, or else I can add it on to my list of things to do when I find the time!

Adding a new challenge is more complicated – and more time-consuming. It takes two to three hours to add a new language, but far more to add a challenge. It takes me around three to four weeks for me to come up with a complete challenge, assuming I can spend two to three hours a day working on it. I haven’t figured out a way to make this open source yet, but I’m working on it!

Tyk: What are the values that drive you personally?

Paul: It’s important to me to fill a gap in the education space for intermediate to advanced programmers. There’s already a ton of resources out there for beginners. This isn’t the case for intermediate programmers.

The widely accepted approach to upskill intermediate developers is experience combined with mentoring. Mentoring is effective in the long-term, but it often isn’t a structured approach, and hence takes longer to see results. That’s where a software solution like CodeCrafters comes in. Focused challenges, with all the help that a mentor would provide built-in.

Tyk: Where is the project currently and what steps are next?

Paul: I launched Codecrafters in February 2020, with just one challenge available: Build Your Own Redis. Since then, I’ve added two more challenges: Build Your Own Docker and Build Your Own Git.

Right now, I’m working on a system for users to vote on which challenges I’ll build next.

I’m also focusing on adding more programming languages, so that Codecrafters can reach a wider audience and serve developers with different interests. Having other people contribute to this is certainly helpful – it’s been a great community development process.

Tyk: How did you validate your side project concept?

Paul: My validation happened in two different stages. The first was at Shuttl. I always thought this would be a good way to learn but I wasn’t sure if others would think that too. At Shuttl, I started an activity within my team where every Friday I would build Redis (which we were using internally) on my own and show them, to help understand how it works.

People thought it was great and wanted to try it on their own, so that was the first proof of concept.

Then based on that I created a small challenge where my team members would be able to build Redis on their own, instead of just watching me build it. People enjoyed this too.

The validation here wasn’t really solid though, as these were people who were in my team – they got paid to be in my sessions!

So I realised that to prove the concept I would need people who I didn’t actually know.

That’s when I decided to build this as a publicly available web-app that provided the same experience.

Tyk: How did you go from zero users to more than 250?

Paul: I realised that Codecrafters wasn’t something that people could try without my involvement, so I created an early access list. I put up a landing page initially that explained who I was looking for (experienced developers with sufficient time to get involved and provide feedback) and what they would get out of it (a great experience, the chance to be involved in shaping CodeCrafters and t-shirts and stickers for the first 10 and 50 people to complete a challenge!).

I then built influencer roles into the community, meaning that those who completed their first challenge would have more influence over the future direction of Codecrafters as a result of committing that time. And then the same for those completing subsequent challenges. I’ve used coloured badges to provide a sense of achievement and show community members’ standing. This led to these senior community members starting to help out those who were newer to Codecrafters. I want to develop the community further in future, to encourage people to complete challenges.

Reddit has worked well as my primary source of community members, particularly when focusing on niche threads. I’ve had some localised word of mouth success too, but nothing public. Yet!

Tyk: What tips would you give to someone looking to start a side project?

Paul: My primary tip – and something that I struggled with myself – would be not to worry too much about your project being perfect at first. You don’t have a whole team working on it 24/7, so you have to prioritise. Your energies should be focused on ensuring that the core of the project is a good, workable idea. Getting too distracted by marketing or other elements of the project can detract from the hard work of producing a solid offering and validating it.

Once you have a decent core to your project, you can always attract people with different skillsets to help you move forward. That’s much more effective than worrying so much about relatively minor details that you don’t push your project forward sufficiently.

Also, if you can make your project have a community around it, that’s ideal. No amount of analytics can replace human feedback! I’d recommend a book called Actionable Gamification to help anyone looking to build a community around their project. 

Tyk: Thank you Paul – and good luck! 

Learn more about Codecrafters.io You can also find out more about the Tyk Side Project Fund.