Hey, I'm Marco and welcome to my newsletter!
As a software engineer, I created this newsletter to share my first-hand knowledge or the development world. Each topic we will explore will provide valuable insights, with the goal of inspiring and helping all of you on your journey.
In this episode, I want to talk to you about why I believe it's important to dedicate time to personal projects of your own, and I'll show you the ones I'm currently working on.
👋 Introduction
I always spent time on my own projects, sometimes they were silly, but they always brought new challenges.
I believe it's important for everyone to dedicate time to personal projects for professional and personal growth. We often have mentors to help us when we face difficulties, but when working alone, we either solve the problem ourselves or we don't. We might seek help from friends or online communities like Reddit, but I personally prefer to tackle challenges on my own.
We are going to explore these issues:
Learning new technologies
Facing new problems
Projects for new businesses
It's all up to you
Tangible result
📚 Learning new technologies
As a software engineer, I have always been curious about learning new technologies.
Many times, it's hard to try new things at work. This might be because the company doesn't need to switch to newer technology very often, or because everyone has to upgrade together to keep working on projects.
You can start a personal project with the aim of discovering a new technology, I have always done this. I think it is a good choice because you can put into practice what you study without asking anyone's permission, avoiding unnecessary bureaucracy and discussions.
1) Fastify
Recently I have been studying Fastify, an alternative to Node.js for creating web application.
My current opinion is that I don't like it, I don't like it because it hides a lot of details that I think are fundamental, which if you don't understand from the beginning you carry with you as something you know works, but you don't know how.
I promised myself to give it another chance, and to bring an episode about it here on Implementing.
I talked about this issue here, similarly to why I switched from Rails to Node.js:
🚧 Facing new problems
When you begin working on projects that are already in progress, you often find that much of the code and features have already been created. You end up maintaining or adding to them, and it's unlikely that you'll have the chance to start from scratch.
I remember that especially at the start of my career, there were certain aspects I never directly handled in the company, such as:
1) Creating a project from scratch
Except in special circumstances, joining already established projects is not too difficult. I have always been good at adapting to any situation I find myself in. However, as time went by, I noticed that while I could contribute to existing projects, if I had to start a new one from scratch, I would have difficulty (we can always rely on our friend ctrl+c ctrl+v 😁).
It was by creating small projects that I first faced this problem.
2) Database modeling
When you join a project that has already begun, you'll often find a database that has already been created by someone else. Unless there's a need for new products or updates, you probably won't get to start the modelling process from the very beginning. Instead, you might need to add new columns or tables, at most.
Modeling the reality of interest from scratch is not easy, especially if you've never done it before. A very good job has been done especially when at first glance you can make out many of the details.
Over time I realised that modelling was a weak point of mine, that's why I started to include it in my small projects.
Recently I created this structure, nothing extraordinary, but it does the job:
3) Setup of production environment
How many of us have expertise on systems such as AWS, Google Cloud Platform or MS Azure?
I suppose many.
How many of them can create a production environment from scratch to host their own application?
I imagine many fewer.
Just like with database modeling, if you don't dive in and practice, you probably won't be able to create a system for production from scratch.
It’s convenient to have a modular system where you can add a new product without knowing all the details, but I do not prefer it. I like to know all the details that others have worked on, I want to be able to be independent if on occasion I need to deploy an application on my own.
In companies, one often encounters many of these platforms. For my own projects, however, I chose a simpler and more cost-effective solution that does not require much effort: Heroku.
I did a tutorial on how to deploy a Node.js app on Heroku, you can find it here:
I will soon bring a tutorial on the serverless framework, to deploy your own applications on AWS using Lambda, SQS, DynamoDB etc. if you are interested subscribe so you don't miss the episode!
💼 Projects for new businesses
Besides improving oneself and learning new technologies, working on personal projects also opens up the opportunity to start new businesses.
My desire to learn isn't just about gaining knowledge; I aim to create side projects like micro SaaS. I see technology as a tool, not the ultimate goal.
I used the engine I created to summarise YouTube videos on another project: a newsletter in which I share summaries of cryptocurrency videos from top YouTube creators. This helps people who want to stay informed about the news that comes out daily.
The same applies to the SaaS I'm developing for automatic emails on Substack, a feature the platform currently lacks. I discussed it in this post:
📊 It's all up to you
Feeling completely responsible for my project has advanced me in my career. Sometimes when you run into a problem, you can stop or make excuses with a manager because you are not sure how to proceed. I have seen this happen many times over the years; I have done it myself.
The same approach doesn't work when you apply it to your own projects. If you halt when you encounter an obstacle, your project halts too.
Take, for example, the episode where I discussed summarizing YouTube videos with ChatGPT:
Initially, I tried downloading subtitles using Google's public API, but it had severe limitations. Its rate limit system allowed me to access only a few videos. This obstacle nearly made me give up the project.
However, it was at this point that I persuaded myself to keep going by seeking alternative methods, which eventually led me to the web scraping solution.
Was it easy?
Absolutely not, never done anything like that.
If you don’t create opportunities for yourself to solve problems, you will probably not find them elsewhere. Even though there might be similar opportunities in a company project, you will not necessarily be chosen to handle them.
Take charge of your own path.
In short, investing time in your own projects will help you find solutions to bigger problems.
🖼️ Tangible result
“Talk is cheap. Show me the code.”
Linus Torvalds
In any conversation, backing up your arguments with concrete results I believe is more valuable than any response. Spending time on personal projects, be they products, newsletters or anything else you can imagine, gives you a significant advantage.
In a past interview, I had the clever idea of answering the interviewer's question by demonstrating how I had solved that exact problem in a real-life situation I had faced. I wanted to demonstrate that I not only understood the theory but also knew how to put it into practice.
I passed the interview by being told that they had chosen me over the other candidates precisely because of my practical applications.
Based on everything we've discussed, what are you waiting for to get started?
That’s it for today! If you are finding this newsletter valuable, consider doing any of these:
🍻 Read with your friends — Implementing lives thanks to word of mouth. Share the article with someone who would like it.
📣 Provide your feedback - We welcome your thoughts! Please share your opinions or suggestions for improving the newsletter, your input helps us adapt the content to your tastes.
I wish you a great day! ☀️
Marco