Taking on a project can seem like a daunting task, but it’s a great way to learn a new skill - especially for developers. Luno Co-founder Carel van Wyk learned to code by working on projects when he was 12 and continues to use project-based learning to level up. Now a senior software developer at KnowBe4, Carel shares how projects help him keep his skills sharp.
Why Project-based Learning?
If you've ever watched the Olympics, you'll know that you don’t get better at swimming just by watching Tatjana Schoenmaker snatch a gold medal. While observing pros in action can be super insightful, at some point you have to jump in and actually swim. Programming is no different.
Project-based learning helps to gain knowledge of new technical skills in greater depth. Carel refers to projects as “informal learning” because they make for excellent learning simulations and usually result in learning that is deep and long-lasting. They:
- Create an opportunity to practice practical coding skills,
- Let you experience a product development cycle from start to finish, and
- Are a great way to add tangible experiences to your portfolio.
The narrow and deep focus on a subject or problem space is the most substantial benefit of informal learning. Formal learning, such as courses, is valuable in providing a much broader understanding of the tools you’re using and the problems you’re trying to solve.
“Courses are great for gaining a map of the territory to help you know which higher-level concepts to prioritise – like architecture or security – things that you might not pick up in a narrow-focus project,” Carel says. In general, he recommends a mixture of the two for technical skill learning.
“Even if you just do one course or project a year, you'll benefit hugely,” he says.
Key things that are helpful in setting up projects
Choose a subject that is fun
Picking something you’re genuinely interested in will also increase your chances of sticking with your project. “The best thing you can do is have a non-work related project,” Carel says. “It can be a small project that you do in the evenings or on the weekend - it doesn’t have to be big.”
“Pick something that is highly engaging to you; the only goal shouldn't be the project in and of itself. First of all, it should be fun,” Carel says.
Carel’s own current project (CryptoConvert) revolves around one of his main passions in life: Bitcoin. “One of the criticisms of Bitcoin is that it's not a great means of payment,” Carel says. ”Initially, we thought it would be like Peer-to-Peer (P2P) cash, but it soon turned out Bitcoin transactions themselves could sometimes be very expensive and can take 10 to 30 minutes to be accepted. I always hoped the problem of slow, expensive Bitcoin transactions could be solved. Today there are some interesting new technologies that have a good chance of solving the problem”.
Do your research
Research is super important to really understand the problem you’re trying to tackle, see what others have already figured out, and how they have gone about doing it. This was a major focus early on for Carel in his Bitcoin project.
By understanding Bitcoin’s speed and cost problem, Carel discovered a lot of promising innovations happening in the cryptocurrency space. That’s how he came across a technology called the Lightning Network which enables scalable, instant and cheap Bitcoin transactions. From this research, he developed his idea for a use case to learn more about this technology.
While crypto has been a life-long passion for Carel, the project he’s picked is also hard because Lightning Network is a relatively new technology. There are few references and online documentation is still rudimentary or non-existent. That’s why it took extra perseverance and creative research.
Prepare to get started
Before you get building, there are a few things to set up.
1. Choose an outcome
To know when you’re done, you need to decide what winning looks like. Carel decided to build an app that accepts Lightning payments, and then immediately gives you an electricity voucher token so you'll have light.
“To get Bitcoin you mine it, and to mine you need electricity. My app is the exact opposite of that. Imagine you have an electricity meter in your house, and it runs out, and you've got some Bitcoin. How might you convert Bitcoin into electricity? So this is my app.”
2. Decide what new language, technology or tool you want to use
“Usually the components to be built are fairly obvious - User Interface(UI), datastore and data models, 3rd party services (APIs) and libraries to access them,” Carel says. He picks the right tool for the job based on what he is most comfortable with:
- If it is some complex web app, it makes sense to pick a mature web framework like Rails.
- If there are lots of things happening concurrently and you need strong data structures, then pick Go.
- If there are occasional events that must trigger some action, use cloud functions like AWS Lambda or Google Cloud Functions.
- If it’s some script that runs and checks things every now and again, maybe Python.
Of course, there are lots of other, interesting languages and frameworks to pick from!
3. Map out your critical path and timeline
While time-boxing and mapping out concrete milestones are productivity tools which can help you eliminate procrastination, they’re not for everyone. “I am terrible at scheduling so I almost never do this,” Carel admits, “I just started working on the parts I feel like working on first – I guess that’s optimising for engagement”.
“For me it’s almost always better to start on the easiest or most well understood parts first, because it often leads to insights about how everything will fit together eventually.”
Get building!
This is where the fun starts. Obviously this will depend entirely on the project you’ve chosen. However, what’s common in most projects is that you’ll hit a wall at one point or another. Carel suggests getting up and away from the project to get some perspective:
“I go for a walk. Sometimes if you just get out, clear your mind a bit and step away from a problem that you've been focusing very narrowly on, your brain starts coming up with strategies to attack that problem. You just need to take a step back. You'll probably solve the problem faster”.
Projects have the potential to evolve into successful startups, like they did with Carel. But, more importantly, they’re a great way to learn. So, take the plunge and level up!
If you’re interested in project-based learning:
Level up with project-based learning in the OfferZen Programmable Banking Community. To find out more, click here or send us a mail.
Gabi Immelman is the Founder of Mindjoy, an EdTech start-up based in Cape Town, South Africa, where kids ages 8 to 12 can learn to programme using projects.