For me, the choice is a trade off between the journey and the destination.
Destination is the final objective of your project, business value or whatever.
The journey is tinkering with "stuff".
Depending on the project there's value and enjoyment in both.
Doesn't fit in this case, I'd say Nix is still cutting edge.
It may also be simple, but it's not easy (in the Rich Hickey sense).
However, learning Nix / NixOS is quite difficult - it requires a specific set of skills (functional programming, shell, Nix building blocks which you can learn from existing Nix code), the documentation is lacking, error messages are cryptic, debugging support is bad.
The truth is tautologically unhelpful: choose good technologies.
Most people have trouble separating snake oil and fads from good things, so old/boring is a safe heuristic.
Nix is not boring, but it is honest. It's hard because it doesn't take half measures. It's not an easy learning curve gaslighting to you to a dead end.
But taste in choosing good technologies is hard to teach, especially when people's minds are warped by a shitty baseline.
This is a really good way of describing a certain type of technology. I'm stealing this line.
I was really pro Nix at the time I took on a rails project and it caused many problems for my team due to Nix just not having good support for my use case. If I could go back in time I would definitely choose something else.
I absolutely agree language-specific package managers need better support. Nix RFC 109 is a simple-stupid way to get some "important from derivation" in Nixpkgs, so we can collectively dogfood them "lang2nix" tools and finally make them good.
It is really sad to me that many users understandly think "hmm, C is crazy, surely this Nix should be even better with more uniform language ecosystems packages!", only to die on the hell of the lang2nixs all being just not quite good enough. This is huge stumbling block for developement shops that try to use Nix that I want to see removed!
The rails support was more of just to handle packaging existing software as opposed to being good for a development environment.
I've not used Nix so I legitimately don't know (but I am quite interested in it)
Typically, technologies I see described as boring have poor features for managing complexity.
Usually with poor reasonong justify meeting some silly definition of "simple“ and "boring" that ultimately makes your life harder.
Get the simple to understand, basic thing working and push the harder refactor / abstraction until later. Leave the fancy stuff for a future engineer who better understands the problem.
That future engineer is you with more experience with the actual problem.
In simple systems, you often have the option of simply throwing away entire components and remaking them because the system is simple and the dependencies between components are still clear.
Like, there's no point in scratching away at your own web CMS just to prove to yourself that you really do need Rails or Django. Especially when part of the purpose of a framework is to guide your design toward patterns which will fit with the common, preexisting building blocks that you are likely to end up needing. If you do the design separately, you risk ending up in a place where what you've built isn't really suited to being adapted to other stuff later.
For a humble example of this from myself, I built an installer system for Linux computers— initially very simple, just a USB boot, perform partitioning, unpack a rootfs tarball, and set up the bootloader. Then we added the ability to do the install remotely using kexec. Then we added an A/B partition scheme so there would always be fallback. It got more and more complicated and fragile, and the market around us matured so that various commercial and OSS solutions existed that hadn't when we first embarked on this effort. But the bigger and less-maintainable the homegrown system became, the more features and capabilities it had which it made it difficult to imagine ditching it in favour of something off the shelf. There isn't really a moral to this story other than it would be even worse if we'd built the in-house thing without doing a thorough evaluation of what was indeed already out there at the time.
With the average tenure of a software developer at a company being about 2 years, that future engineer is for sure some other poor soul.
So as you get older and you get more competent, the relative benefits of boring tech grow.
Whereas if you’re a noob at everything, being a noob with cool tech is better.
If the problems are hard enough, and you are competent, you iterate on boring tech for a while to solve the hard problems, and then it becomes cool tech.
Sure I can write a server in 5 lines of code but adding all that stuff is many many many person years of work and plus I'd have to go through all the learning pains of doing it wrong, crashing things, losing data, before I'd add it correctly.
I want some existing solution that domain experts already created that do things right.
It has nothing to do with "sexy/unsexy". It's unsexy to use UnrealEngine. It's sexy to write your own. But unsexy ships while sexy is spending time recreating stuff that already exists, unsexy is moving on to the actual content and shipping.
With new software one does not know if it is the one that will survive challenges from even newer software.
I'm in my late 50s and been developing for 35 of them. Honestly, containers are not rocket science and solve a mountain of ops-type problems simply.
If you really are only developing a single instance to be deployed in-house, then you may find you don't need them. But as soon as your instance might possibly get exposed to more than one environment, they're a no-brainer for me.
By definition the "old things" you use would also be "just a big bunch of unnecessary complexity" since they were once new.
Overall though, I'm finding the more unique sensory info you give your brain, the better it gets at solving problems in general. Even if that info isn't very related to your goal.
It's a bit like trying not to be a hammer that sees everything as a nail.
"Everything old is new again" does not BEGIN to do tech justice. Compared to nearly every other profession on the planet, tech knowledge churn is like 10x as fast.
Spot on! Moreover, every time the wheel is unnecessarily reinvented previous lessons are lost.
What is even worse is that people really want to reinvent the wheel and get defensive if you point that out.
Comments like "Or is cope for a loss of neuroplasticity" are a good example.
I have been studying a different trade, completely unrelated to software engineering or tech, and by far the weirdest thing is reading books or watching seminars from 20 or 30 years ago that are still relevant. How much of technology writing has that honor? Very little.
Like I have been obsessed with tech and computers my whole life, I studied computer stuff when all the other kids were outside playing football or chasing girls or whatever, I self-taught to a very high level of expertise and that knowledge has just been getting systematically ripped away. Which is fine, to an extent, gotta embrace change and yada yada yada. But I no longer have the patience to grind to expertise-level on something over a period of years only to find out the industry has moved on to something completely different to do the exact same thing! All because some starry-eyed shit somewhere in FAANG doesn't like something!
It's amazing how some people are familiar with every framework of the month and don't understand how a computer works...
[1] https://en.wikipedia.org/wiki/List_of_important_publications...
I did not mean my comment to say that seminal works in CS theory are useless, just that most of the books published in this field cover more practical matters and they tend to age very quickly. Like I have an e-bookshelf full of Packt freebies back when they did that, and those books aren't really that useful now unless I want to start on an old version of something.
The older I get, the more often I'm reminded that this un-sexy approach is really the best way to go.
When I was younger, I always thought the old guys pushing boring solutions just didn't want to learn new things. Now I'm starting to realize that after several decades of experience, they simply got burned enough times to learn a thing or two had developed much better BS-detectors than 20-something me.