There are constantly new libraries and frameworks coming out on the market. Most are open source and some even become popular very quickly. While this might seem like a great thing since it continuously pushes what technology can do, there are some darker sides to it that no one seems to talk about.
Staying On Top of Things
First of all, developers have to constantly keep up with the latest developments. While this isn’t a problem in itself, the rate at which new technologies emerge makes it very difficult, time-consuming and often stressful to do so.
Personally, I love to play with new frameworks as they come out. I love to experiment with them and see what they can do. In fact, I feel like I read more documentation than I do books. Sometimes I fall in love with one and want to immediately abandon the codebase for whatever project I’m currently working on and start over again with that new tech. Most of the time though, I try it and the excitement quickly fizzles out.
I do this in my free time which, since having my first child, has been significantly reduced and I am no longer able to experiment and play as much as I could before. Fortunately, I have no pressing need to learn anything new at the moment that isn’t for work (which I use work time for), but it also means I am going to fall behind.
Decision Time
Even if you are able to keep up with the latest technologies, that doesn’t mean you don’t have any more problems. In fact, one of my greatest problems stems from the fact that I have experimented and played with a significant number of libraries and frameworks: what the heck do I use for my projects?
I am constantly coming up with new development projects to keep myself entertained and, once I have the initial idea, the first hurdle to getting started is deciding what technologies I want to use. Since I have played with several of them, I know a lot about their pros and cons. This might seem like a good thing, but it means I have to think a lot about what to use before I begin.
This usually takes the form of first sorting out the technologies that I either don’t want to work with or that aren’t suitable for the project. Then, I weigh the pros and cons of each of what remains until I finally come up with a reason to pick one.
Of course, it isn’t necessarily a bad thing at all to carefully choose technologies that are most suitable for your project. The problem with it lies in the fact that so many technologies are so similar with only nuanced pros and cons that several of them would be equally as good for the task at hand.
For example, if you are going to create a web application, do you choose React, Vue or Angular? Or something else entirely? Svelte? Would it make more sense to just skip a frontend framework entirely and go with good old-fashioned server-side rendering?
All of them will get the job done just fine, so what do you choose? Whatever happens to be your favorite at the time? In my case, I have professional experience with all but Svelte, so I know their ins and outs pretty well and am equally as efficient in terms of development time with all of them.
The same goes with backend technologies. Should I build a TypeScript-based backend? If so, do I use Nest.js? Or do I just use Express or Fastify? Or do I go with something even more mature and feature-rich such as Symfony for PHP or Spring Boot for Java?
I have experience in all of them and could easily work with any one of them. Because of that, I often end up spending days getting wrapped up in the decision and often don’t even start the project because I exhaust myself just deciding what to use to make it!
This isn’t a problem that exists for work, however. Usually, you work with a team of people and the technologies are already established. If you are starting a new project, there is usually some sort of consensus amongst the developers about which technologies to use and it usually quickly becomes obvious what the choice is going to be.
Conclusion
I have discussed this issue with other developers and it seems like I am not alone with these problems. Some either fight to keep up with what’s new on the market or they are stressed out because they don’t have time and are unable to.
Surprisingly few seem to have the problem of deciding which technologies to use as I described above. That is because they just simply have a set of technologies they always use for personal projects and, even if they experiment with new ones, they still use their favorites for everything because they know them best and are most comfortable with them.
I have always thought that having a set of favorite technologies I can fall back on would be ideal, but that starts the loop all over again: which ones do I choose?!?
Do you have a problem deciding which technologies you want to use for your projects? How do you keep up with emerging technologies? Let me know in the comments below!
This article originally appeared on Developer’s Notebook.