View profile

Lessons learned the hard way from rebuilding a project multiple times - Brock's Bytes Issue #12

Brock Herion
Brock Herion
Hey there! In this issue, we’re going to take a look at the first project I worked on and some of the successes and failures I had along the way. There’s a lot we’re going to be unpacking here, including
  • Technical debt 🧾
  • Rewrites ✍️
  • Developer experience 💻
  • Choosing a tech stack ⚙️
This project has seen its fair share of changes and I have learned an incredible amount from it. I made my fair share of mistakes during the development process and was pushed out of my comfort zone numerous times. It’s a project that’s helped shape who I am and where I am today.
I want to share with you my journey through it and some of the lessons I learned. My hope is that you’ll be able to learn from it and apply some of these things to your own projects.
So sit back, grab a cup of coffee, and enjoy!

Third time’s the charm - The short story of building the application
I landed my first freelancing project in 2019. The app is a survey application to help track athletes’ physical and mental health, with the goal of helping prevent physical injury and burnout.
The first version of the app I built worked, but it took a long time due to my inexperience in building projects of this size. I buried myself in technical debt and made poor design choices that cost me in the long term. It was decided a rewrite was the best approach.
In the second iteration, I chose the wrong stack. Instead of choosing something I knew I could be productive in, I chose a stack I thought I could be productive in. As it would turn out, it doesn’t matter how much a tool can do for you if you don’t know how to use it effectively. I found myself battling it every single step of the way and getting incredibly frustrated with it.
After some consideration, I decided to do another rewrite, this time in a stack I was already using and loving. With it, I have been far more productive, being able to deliver more features in a much shorter amount of time. Using tools that I know work and how to use them to their fullest made all the difference in terms of development time, code quality, long-term maintainability, and so much more!
Making mistakes is the best way to learn- The key things I learned from this experience
When I first picked up the project, I didn’t have any idea of what I was doing, let alone where to start. I was given the project because the client and I thought it would be a fantastic way for me to learn and start getting my foot in the door.
It’s important to note here too that while I was building this, I was a team of one. I was on my own for a bit of development, without a senior developer or mentor to ask for help. I had to figure it out on my own. Sure, once I got my first junior position, I would ask the senior developer for his opinion on some things, but the responsibility for it still fell on me to implement and ship. I made a lot of mistakes while building this but I also learned a lot.
The key things I learned from this experience are
  1. Don’t neglect your code. It’s okay to have some technical debt but don’t let it build. There is a tipping point to where it becomes unmanageable. Constantly working to minimize it and keeping a clean code structure will pay off in dividends down the road. It may seem like it takes too much time, but keeping your code clean and maintainable will save you an incredible amount of time, especially when compared to doing an entire rewrite.
  2. It’s okay to do rewrites. This is clearly is not the answer to every problem, but sometimes it happens. At some point, a project just might not be working for any number of reasons and it’s just easier to start over. If you find yourself in a position where a rewrite is the only way forward, it’s okay. Rewriting doesn’t mean you failed, it just means that approach wasn’t working. I’ve rewritten this app twice and am finally able to confidently say I’m happy with how it’s turning out.
  3. Pick technology you’re comfortable with. Your client, most likely, does not care about what you chose to build the application in. They want to see results. They don’t care if you use React or Django or PHP so long as you provide them with value. This means if you primarily build applications in say Next.js, deciding to use Django may not be the wisest choice. The time you could be spending building really cool features is now being spent trying to learn a new tool.
  4. Developer experience matters. The criteria for this, of course, comes down to you and what you prefer. For me, I like iterating fast and shipping faster. I hate being bogged down by things. This was the case with v1 of this app, which was Java and Angular. In my opinion, this is a poor developer experience, especially when you’re by yourself. Currently, I’m using Next.js and Prisma and Planetscale, and a bunch of other tools that make building applications so much easier for me. Because of this, not only can I build faster, but I’m also a lot happier when I’m actually coding. Use tools that work with you, not against you.
Of course, some of these things are a lot harder to figure out, especially if you’re not as experienced. How do you know what tech you like and dislike working in without experimenting? How much technical debt is too much? You won’t know these things until you’ve put time into building things.
Be open to learning and be patient with yourself. Making mistakes and learning from them is one of the best ways to grow as a developer. Viewing mistakes as failures or trying to build perfect software is going to hold you back. There is tremendous value in messing up, so don’t be afraid of it! There are times when you will stumble and fall, but as long as you keep moving forward, you’ll come out on top.
Happy coding friend,
-Brock
Thanks for reading!
I hope you’re enjoying Brock’s Bytes! If you’re enjoying my content, consider helping support my work by buying me a coffee
brockherion is Creating content around programming and software development
If you want to connect with me, leave a comment on this issue or reach out to me on Twitter
Wanna read more? Head over to my blog to find more great content on programming, web development, and more
Did you enjoy this issue? Yes No
Brock Herion
Brock Herion @brockherion

Every Sunday, I share an exclusive email with 8 awesome things I found during the week. You'll get to see what I'm learning, building, using, reading, and so much more!

In order to unsubscribe, click here.
If you were forwarded this newsletter and you like it, you can subscribe here.
Created with Revue by Twitter.