Developers focus too much on the details
I got fed up with my website host/builder, Squarespace. They decided it was a good idea to make breaking changes to their website builder, which means my site is currently stuck on an older version with zero way to upgrade. Even if I manually recreated my site, I wouldn’t be able to replicate it because the template that I currently use is no longer supported, with no way to implement it. I spent hours figuring out what site builder I should move to next, what the features were, and which was going to be the best. Instead of focusing on the process of writing and delivering these articles on a website that already exists and works well. Who cares how great your website is, if no one looks at it anyway.
Stick to the tools you know
This is all to common with developers, we obsess over which technology is the best. Spending hours figuring this out, instead of just getting on with it. Every time I decide to build a new project, I spend hours on all the various technologies I’m going to use, instead of actually building it. Why do I need to work out what backend technology to use, when I could just use the same Node setup I’ve used previously. At the end of the day, your customers won’t care what technology you are using, just that it works and isn’t slow.
If you plan to build something highly complex which requires ludicrous speeds or a special use case, then it’s worth spending the time figuring out how to build it. However, most of the applications we build are not that complex, or at least not initially. It's much better to spend the time actually building it with the skills you already possess, in technologies you have used many times before. If you have skills in Node and React, just use them. People shout that there are better frameworks out there, and there are, but who cares, you have to build the product.
Your end goal might be to test out a new technology in the process of building your application but ask yourself this. Are you trying to build a product or project, or simply play with a new toy? If you're building a product, build it with whatever technologies you have the most experience with. It will save you a tremendous amount of time in the long run, more than any early optimisation would ever. Stay away from using a new product as an avenue to try out new technologies, it will only make your life harder.
Early optimisation is a killer
Early optimisation is one of the worst acts you can perform as a developer. In reality, the chances that your code will cause performance issues on day one are slim. Yet time and time again, we spend large amounts of time finding the perfect solution. Finding the perfect technology that will solve the problem. It turns out that the perfect technology doesn’t exist, it just looks greener on the other side of the fence. Yes, new things can bring some great benefits, but it can also bring you a lot of pain. You have to remember you know nothing about this technology, you don’t know the limitations and the drawbacks. Conversely, with the skills you already possess, you know the exact limitations. You can work around them, reach for a technique that is documented, or that you have used in the past.
Developers by nature are curious, we take any opportunity to find something new and give it a go. We look for ways to improve, or simply to try something new to learn. However, in doing so, we waste many hours agonising over this and that. It’s the same in our job, although less so. The main goal is to get the work done in as good of a manner as possible without spending unlimited time. The 80/20 rule applies here in full force. You need to spend the 20% of the effort to get the 80% of the result, then workout how much more effort is actually going to benefit your customers.
Agile and the MVP (minimum viable product) share this same goal, to get something out the door that is good, that benefits your customer. While also not taking an eternity to build, missing the opportunity in the market as a result. It’s this kind of thinking you need to keep in the back of your head when you build anything. Will the extra 20% actually benefit the customer? If not, then move on. Can you come back later and fix it without creating magnitudes more work? If yes, then move on. Life is all about the 80/20 rule, you see it everywhere, the most benefit you will see is in that first 20% of the effort. You can drastically reduce the amount of effort you need by simply using the technologies you are proficient in. They might not be ideal, some other technology might be perfect. However, the chances of you knowing that in most projects at the start is slim, so build it the way you know first, then fix it later, if and when you actually need to.