Introduction

Hello there! My name is Gustavo Maltez, and this is my first post on this blog. Actually, this is my first blog post ever. I've always wanted to have a blog where I could share my thoughts and experiences about technology and the software development journey, and I'm really excited to start this project.

How it all started

Let's start by talking about this project. For context, today is June 15, 2024. On June 25, 2023 (almost a year ago), I started this project. I wanted to build a blog from scratch using the technologies I'm most comfortable with (React and TypeScript), but I also wanted to learn something new. That's why I decided to build this project using deno, a fast, secure, and reliable runtime for JavaScript and TypeScript, and fresh, a simple, approachable, and productive web framework that runs on top of deno.

I started by creating a fresh deno project and setting up the basic structure of the project. I wanted this to be as perfect as it could be (both quality, code, and performance-wise). In addition to that, I wanted to have a lot of features, some of them being: authentication with GitHub, a nice and clean UI, good SEO, huge test coverage, a page to list all posts, search by tags, comments, related posts, responsive design, animations, a really cool changelog page, support for dark/light mode, different language support, my own markdown processing, and some other features that I can't remember right now.

The problem with perfectionism

You probably already connected the dots and is thinking that a side project with lots of features and a lot of perfectionism is a recipe for disaster. And you're right. For the first couple of weeks, I was really excited about the project and spent around 100 hours working on it. Most of the time was spent researching and writing/rewriting code. I was really happy with the results, but I was also really frustrated because once I finished a feature, there was already something that I would do differently and, due to that, sometimes I would get stuck on something for a long time and, in the end, the result was not as good as I wanted it to be. After some time, I started to procrastinate on the project and eventually stopped working on it.

In my four years of working as a software developer, I have worked in startups, and if you also worked in a startup, you know that you have to get things done really fast. In addition to data, you have to do so while the software requirements change all the time. I think that's one of the factors that made me want to build a project with a lot of features and with a lot of perfectionism. But after a year with this project on hold, I realized that I was doing it wrong. I was trying to create a perfect project, but I realized that there's no such thing as a perfect project; there will always be something that you could do better. I also realized that something simple and working is better than something complex and not working.

Start simple and improve over time

So, I decided to start over. I created a new fresh deno project and wrote down the minimum features that I wanted to have in the first version of the blog. I spent a few hours last night and today working on it, and I'm really happy with the results. Again, it's not perfect, but it's a start. Now I can plan the next features and get it done while the blog is already up and running. I can write posts about the things I've already wanted to write about and also about the things I'm working on.

In summary, the message I want to pass with this post is: don't try to make things harder than they are. Start simple and get things done. You can always improve over time. And that's what I'm going to do with this blog. Hope you enjoyed this first post and stay tuned for the next ones :)