It often surprises me that people who spend their whole day focusing on details, software developers, so often ask question in broad and generic terms. Here’s some that I’ve heard over the years:
- Why should I learn Object Oriented Programming? (I have been writing software for a while. Long enough to remember the days before we discovered that OO was the only right way to write software.)
- Won’t having a VM with Garbage Collection be really slow? (This question came up a lot when Java was just being rolled out.)
- Isn’t C# just Java with different keywords? (When C# was first rolling out.)
- Why should I learn functional programming? (One of the more recent vague and generic question I’ve gotten tons of.)
- Will I be more productive if I write a website in Elixir/Phoenix than if I write it in (Web Framework X)?
Now consider some of the implied assumption in those questions. All other things being equal will B (new technology) be better than A (which I’m already using)?
Remember we are discussing human beings performing a human activity–writing software. Of anything humanity has ever tried to measure, quantify and generally treat in an empirical way, software development seems to be one of the least amenable to analysis. Just some of the implied parameters of some of those questions above are:
a.) Is B more productive than A?
How do you measure “productive”? Economists and experts on the subject of productivity don’t agree about measuring productivity in terms of hard goods (cars, appliances, etc.) so how should we measure productivity in terms of something we can’t even really measure?
b.) Will B allow me to create better software than A?
Define “better”. Better in what sense? Less errors? Runs faster? Less source code? Easier for maintenance developers to understand? More secure against hacking?
The point is this: while we wish we could answer the question of whether a new technology is better than an existing technology at all there’s so much ambiguity in so many facets of what we’re discussing there’s no way to even frame these questions in a way they can be discussed intelligently. So for goodness sake–look for yourself and make your own decision.