When designing systems, applications, and frontends, it's easy to get carried away. Premature abstraction and over-engineering just lead to burnout without real progress.
Sometimes you need to take a step back and go back to your original idea. What are you actually trying to accomplish? Are you solving your problem, or just creating new ones in the process?
As a quick example, over the past month or so I've been working on a CMS for my static site generator HydePHP. My problem and goal were simple, I wanted something that would give me a good overview of the content on large sites.
In short, I went from an entire full-stack desktop program to a Laravel Lumen application, to a single-file PHP website, to eventually landing on a super simple project dashboard template in the form of a single Blade file that you can just drop into any existing project.
As you can tell, I've gone through many revisions, all of which I am thankful for as I learned an incredible amount about so many things, though that's another article.
In the end, I solved my original problem and created something that will be easy to maintain and understand. It's also 300 lines of code, instead of a 900MB desktop application that only runs on Windows.
What do you think about this post, do you agree? Do you disagree? Leave a comment and let's discuss it!