5 ms·
Firstly, I agree with you! I like the philosophy that "Production should be as boring as possible." That being said, using tech that makes you enjoy your job
by joshmarlow 9y ago
Firstly, I agree with you! I like the philosophy that "Production should be as boring as possible."
That being said, using tech that makes you enjoy your job will help you be more productive and potentially attract enthusiastic developers.
I feel there's probably a balance (as in all things) between boring production/exciting development - but I don't feel I hear that discussed often enough.
- beckler 9y agoI heard once that if you're doing something boring to pick an exciting technology. If you're doing something exciting, pick a boring technology. Not sure what you would consider exciting or boring, but I thought it was decent advice.
- jkmcf 9y agoThat advice is good when you only report to yourself. If you report to a company and your decisions affect $$$$, directly or indirectly, then it's probably the worst advice.
- vog 9y agoDo you care to elaborate? That doesn't make any sense to me, as the advice given above is exactly what you should do in a company, if I understood it correctly. (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.)
- shakna 9y agoProcessing transactions at a bank is "boring". It's simple, apart from scale, and the spec is usually insanely well documented. But if you reach for that new language that hasn't been battle-tested yet, you're probably screwing the bank over.
- ExactoKnight 9y agoI'm in banking at a startup level and I'd have to disagree with this. 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.
- shakna 9y agoI'm one of the contractors that rolled out instant transactions at CBA. 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.
- jkmcf 9y agoThe main gist is whatever you add to the company stack, the company is now responsible to maintain, possibly forever. My current situation is basically this times 10 since the people who did exciting tech left. 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 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.html https://martinfowler.com/bliki/MicroservicePrerequisites.htm...
- nnq 9y ago> If you're doing something exciting, pick a boring technology. Not being exceedingly serious here but... you pretty much summed up why Python is so successful in AI/ML and science ;)
- espadrine 9y agoHow does that follow? 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…
- nnq 9y agoPython is a boring technology. It's a 10+ years old language, like ~20 years behind cutting edge programming language research and implementation. Also, as for the programming style it encourages, it strongly nudges you against any "cool" way of programming: even the most basic kinds of functional programming is something you end up avoiding in P and "dumbing down" your code to more procedural idioms, and OOP over-over-over-architecting is something you just don't do because of the performance penalty and the lack of serious refactoring tools for large codebases. The side effect is that all code is more readable and understandble to anyone, including self-taught devs. JS itself is a boring language at its core too, except that it evolves faster than anything else. And the ecosystem is anything but boring (and also anything but sane...). 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.