- Your best learning comes when your super motivated, so recognise what does it for you
- Solve your own problems
- Keep a list of all project ideas and problems you have
- Constantly keep up to do with new tech and practices
- Implement something new on every project you do
- It’s ok to not finish a project and move onto the next fun thing
- Share everything you do
A little story of learning
My programming path started during one of my startups. I was a product design graduate, and we were working on smart home technology. As with most small businesses, you get to a point where you think you need a website. So off I went to figure out how the WordPress world worked.
Turns out that as a designer, I was picky, and couldn’t find a single theme that did what I wanted. The margins and colours were wrong, or there was one specific layout option I wanted that the theme couldn’t provide. I decided to start understanding small amounts of CSS and HTML, so I could customise the look of these themes. Hooray, the world of super basic programming!
As the months went on, we found some reason for wanting dynamic content from the database to appear somewhere the theme didn’t allow. This was my chance to start looking at PHP, which was much more confusing than CSS and HTML. An actual programming language, rather than a markup and style syntax. I was getting into the big leagues.
Over time, the code I had added on top of the theme got larger than the code inside the theme itself. It was time to take ultimate control and build my own WordPress theme. It started taking much longer to build features, but I had all the power and was having way too much fun learning.
It didn’t take long until I figured out it was the process of learning, trying something new and getting immediate feedback that I loved. More than the outcome itself.
As my understanding of PHP grew I dabbled with more advanced themes and trying to do away with the tyranny of WordPress, by writing my own Content Management System (CMS). Especially as my startup ideas at the time were essentially custom CMS’s (Yeah, we changed what we did a lot). Turns out building a CMS is not a trivial task.
This coincided nicely with a failing crowdfunding campaign and running out of all money and investment. Time to get a really job as a front end developer.
Over the years working for the man, seeing how bigger projects are structured and learning the fun stuff on my side projects, I got much better at this “dev” business. I’m now freelancing and spending a good proportion of my time learning new stuff for my own projects whilst picking more interesting client projects to pay the bills.
90% of my programming knowledge came from personal projects
How to maximise your learning
I got into programming to solve the problems I already had. Those problems and projects super motivated me to learn. And my rate of learning was much higher as a result.
Write down every project idea
The first step in learning through your side projects is having a side project to work on. I keep an easily accessible list of potential projects and problems I want to solve. I add to this whenever I have a new idea for something to build. When I want to work on something new, I go through the list, prioritise them by what excites me the most, and pick the top one to do. I recommend Trello for managing this. Especially if it starts getting big.
Always do things differently
If we want to be learning, we need to be doing something new on our projects. Whether it’s a new piece of technology or library you heard about, or just a new way of organising and managing what you do. This means you need to be aware of new technology and practices to apply. So keep up to date! Follow newsletters, relevant accounts on Medium and go to meetups.
Its ok not to finish
You don’t have to finish a side project. You can do it just for the fun of doing it. Too often we tell ourselves off for not finishing something, or for getting excited about a different project from the one we’re working on. If you’re not relying on this project for income then follow the fun. If you’ve gotten bored, or something else seems too enticing not to work on, it’s ok to go do it.
My final way for getting the most out of a project is to share every part of it. Make all your code open source, tweet about it, write a post about what you’re doing. This way you might get people offering you advice on things you could do differently, or may even offer to help you out. And as an added bonus it looks great to potential employers and clients.
So learn by doing, rather than learning for the sake of learning.