I mostly program on the side and basically every eight years or so I find the tech I comfortably use out-of-date. I 'surface' to find a completely new world of platforms and technology and try to pick a new one to learn. The advice I get is mostly based on big commercial projects and the latest fancy tech.<p>Current example:
Web: I use AngularJS and can very quickly achieve what I want. I love its capability to run without a server from a local file. I cannot stand node.<p>Migration Decision: So far I believe I will migrate to Vue.js.<p>App & Server: I use Google App Engine Standard, but the tools are getting worse and worse. I work on a shared Java codebase with Android Java, APIs on Cloud Endpoints work instantly. Google now pushes Kotlin on the app, I missed platform changes for 4 years.<p>Migration Decision: I am ready to abandon it all and go Flutter on the clients and Spring Boot on App Engine as the server. Or is that a good idea? Flutter is moving too fast. Whatever I do will likely be out of date in a year....<p>And there are many other platforms (Firebase Realtime, Firebase Auth, SQL server) that have had iterations, were acquired and have had so many iterations it's impossible to catch up 'after a tech coma'.<p>Anyone have a good idea how to deal with this? It's almost as if you review and update detailed Architecture Decision Records....
Debugging code is like sorting + searching a boolean function of the code ("looks_good(line of code)"). So debugging is for all intents and purposes O(n log n). So writing more lines of code leads to even greater debugging. And, let's throw in another 'unfamiliarity' factor k, where k is high if you are using a new technology.<p>So, I would say, either keep lines of code low (don't bother learning a framework that will make you take months to get to an MVP) or keep unfamiliarity low (use what you know, or something that can act as a bridge between what you know and what seems hot).<p>Another approach: use the language/framework that you know that you think tends to result in the tersest resultant code :^)