How a pet project can supercharge your developer career
Ever wondered how to deepen your understanding of programming and bridge the gap between theoretical knowledge and real-world application? Consider starting a pet project!
Story time
Several years ago I was working in a Business Intelligence specialist role, transitioning from previously working with Excel only as a freshly minted graduate with a Finance Bachelor degree. First, it was building dashboards in Domo, a cloud BI tool with some simple SQL-based transformations. Then came a long trial-and-error and learning-by-doing (at work) journey to learn SQL.
I then understood that to progress I'd need to get myself familiar with a programming language. I chose Python and did so by following a Coursera course named 'Python for Everybody' (University of Michigan/Charles Severance). Data types, variables, control flow - I explored the language bit by bit and tried to code all the assignments.
Next, by the time I was getting a grasp of the basic things, I knew I'd like to do more - but there was no way I could get a job in data with my skill set. So I've decided to work on pet projects.
I was interested in Python and Web Development, so I decided to work on Content Management System (CMS), simply put, a blogging platform. My choice naturally fell on Flask - a lightweight and very popular Python web framework. I spent countless hours trying to get it off the ground, studying how other projects work, what are the best practices in the industry and simply trying to introduce a new feature.
While the project is nothing special in itself, akin to thousands of other hobby projects, here are just a couple of things I've learned about - most of them from scratch:
git version control
what is Docker and why do we need it, as well as orchestrating with Docker-Compose
working with ORM (SqlAlchemy)
working with Celery (task queue) and Redis
code linting with Pylint
jinja templating (which Flask uses) - I use this to this day (in Dataform/dbt)
unit testing with pytest
integration testing with a headless browser on Selenium (Splinter)
basic HTML, CSS (Bootstrap) and Javascript
a simple CI that would run unit and integration tests on each commit
Now, I might have barely scratched the surface of the above, and some of them might have been taught in a Computer Science Undergraduate program, but for someone with no formal programming acumen, even knowing what these things are and when should we use them was an absolute win. I felt that it gave me a basic understanding of very important things in every developer's toolbox.
🔑 Here are six reasons why you should start a pet project:
1️⃣ Learning by Doing Boosts Problem-Solving Skills: You learn about concepts when you encounter genuine problems and find solutions, reinforcing your learning. You learn how to debug, simulate, emit hypotheses and prove them right or wrong.
2️⃣ Explore Your Passion: The pet project allows you to work on something YOU care about. It's more motivating to solve challenges when you're invested in the outcome. After all, you can build WHATEVER you want.
3️⃣ Expand Your Tech Stack: Waiting to get the chance to work with some technology you are interested in can take forever, or it can never happen. With you in the driver's seat, you can explore on your own and dive into unfamiliar technologies and tools.
4️⃣ Portfolio Building: A finished project shows potential employers tangible proof of your skills, but also consistency, determination and technical curiosity.
5️⃣ Feedback and Iteration: Sharing your project with friends or the developer community can provide invaluable feedback. This iterative process of improving based on feedback is the essence of software development.
6️⃣ Ownership and Responsibility: Owning a project from start to finish gives a sense of responsibility. This can mirror the real-world experience of leading a project at a job.
In essence, while books and tutorials offer foundational knowledge, diving headfirst into a pet project can supercharge your learning journey. Whatever your dream project is – an app, website, or game – dive in!
Remember: even if your creation isn't the next tech sensation, the skills you gain and the confidence you build is an unparalleled investment in yourself. Dive in, and let your creativity flow! 🌊