Not sure what you would consider exciting or boring, but I thought it was decent advice.
Not sure what you would consider exciting or boring, but I thought it was decent advice.
Not being exceedingly serious here but... you pretty much summed up why Python is so successful in AI/ML and science ;)
The boring technology in AI/ML is C++.
Which is why TensorFlow etc. have a boring & hard C++ core, and a lovely & easy Python layer that transmits the computational graph to the core.
Electron is similar: a boring & hard Chromium C++ core, and a lovely & easy JS layer.
What pains me is that there is no reason to include libraries we don't use.
Each Electron embeds a large amount of memory-consuming libraries that do things that are way out of scope for most apps: screen recording, sound editing, GPU graphics libraries…
Cooler and more advanced (in terms of language features) languages are Julia (it has real macros, advanced type inference etc.) and even R (yeah, it's a mess, but as a language it's more advanced and "cooler" than Python). On the "web backend" scene Ruby is a way more "not boring" language, but the ML and science communities avoided it almost completely (I have a few theories as to why...).
And then there's the "truly cool" and "0% boring" languages like: Scala, Rust, Elixir, Clojure, Haskell, Elm, Crystal, Pony etc.
But don't get me wrong, I like Python for being what it is: an incredibly boring scripting language, that encourages a "stone age level" style of dumbed-down programming. With slightly awkward but stable libs (on which people agree almost unanimously of which to use). Because with Python I can focus on the product instead.
C++17 written using best practices in safety learned in the last decades, is exciting and simple.
Anyway, C++ is nothing but boring... even the bugs you encounter are nothing bu extremely surprising and "creative" :P
Of course, it will take time to move from "C compiled with C++ compiler" to something better, specially in the embedded domain where Assembly and C still rule.
The tools are there, and an incremental update into safer code is always better than throwing everything away, and rewrite everything, including the already fixed bugs.
The only thing that C++ cannot fight against is the C mentality. That is only possible in languages that lack copy-paste compatibility with C.
(Higher risk on a simple project, because that's the only opportunity to learn new stuff, as in the worst case you can start over. Lower risk for a complex project, because there's already enough risk in the project itself.)
But if you reach for that new language that hasn't been battle-tested yet, you're probably screwing the bank over.
There is tremendous fear in the industry right now over being seen as outdated or dinosaur, especially with all the blockchain hype.
You can make simple technology choices like moving from a stateful SQL database over to a blockchain ledger like Sequence, and in doing so, you will attract a way higher calibre level of talent. You will also have way more people interested in working for you, and the skillsets and knowledge learned within the company for doing it will future proof you far better than going the boring old route.
The feature is absolutely hype, and a selling point, or was til the RBA required everyone else to follow suit.
But it doesn't change the fact that fundamental things that cannot be allowed to fail should not be built on twigs.
CBA worked with Wells-Fargo to build a blockchain ledger, running atop skuchain, which itself Go and JS. That's a lot of hype and new in one place.
But it wasn't in a simple systems-critical place, it was done for one contract, with one customer first, with regulatory approval for the experiment, to see if blockchain technology was feasible. It was also not proof that this can scale, that needs more experimentation.
Lots of simple things are fundamental, and you do not mess with those.
Simple/complex isn't enough to say whether you should experiment, because experiments should be as far from impacting your bottomline as possible.
R&D should stay in R&D, until it is proven stable. You can't afford to build a house of cards.
If the team and managers agree, by all means use the exciting tech, but it isn't a decision to make in isolation.
The canonical link on choosing boring technology is http://mcfunley.com/choose-boring-technology.
A relevant example is microservices which are all the rage right now. But, you have to be this tall to use them[0]. You cannot effectively just say you are going to do microservices, especially if you don't know how to do microservices.
Alternatively, consider the potential problems for your company if you had introduced React on your own in a core business element, and your company had a patent beef with Facebook, and FB hadn't switched to the MIT license.
[0]: https://martinfowler.com/bliki/MicroservicePrerequisites.htm...