Live data from Hacker News

Choose Boring Technology (2015)

mcfunley.com

201–210 of 269 posts

Re: Choose Boring Technology (2015)

#201

Golang was supposed to be boring by design ( https://go.dev/talks/2012/splash.article ) and you can use it in a boring way. Even learning golang is relatively boring.

Go the language and Go the ecosystem seem to be the antithesis of languages like Scala that seems to be a form of self-gratification when used to solve boring problems like HTTP APIs, or ecosystems like Javascript's where all the tools are rewritten into something faster and better in recent years.

Re: Choose Boring Technology (2015)

#202

Counter-position: "choose most appropriate technology".

Choosing the most appropriate tech is not mutually exclusive with choosing boring tech. In fact, "boring" (well-known, battle-tested) is very likely the most appropriate because it reduces unnecessary risk.

Re: Choose Boring Technology (2015)

#203
post #10
post #8

Love this post. Surprisingly controversial; it hasn't made me very many engineering friends.

It's bad for building your resume. Managers and employees are rewarded for popular thing. Popularity is mostly a function of novelty. So the (social and therefore economic) incentive structure is inversely correlated with choosing boring technology.

Exactly; I've seen a number of instances now of people pushing the hip new technology, but jumping ship (i.e. getting promoted, a new job, or a different assignment) shortly before or after the shiny new thing was "done".

In one case, ten years later, the company is still struggling to maintain their Scala applications in an environment where there's barely any Scala developers (and who charge a premium because it's specialist work), while the main author(s) went on to work at the company behind Scala itself. I'm sure Scala is great for specific use cases (just like every other non-top-10 language out there) but please, think very carefully before trying to build your company on top of it.

Re: Choose Boring Technology (2015)

#204
post #61
post #10

Earlier quoted context omitted.

It's bad for building your resume. Managers and employees are rewarded for popular thing. Popularity is mostly a function of novelty. So the (social and therefore economic) incentive structure is inversely correlated with choosing boring technology.

I see it as analogous to people are frequently rewarded for putting out the fire instead of preventing the fire.

Exactly. When I joined the company I'm at now (consumer energy industry), the energy crisis hit and the servers melted from all the people looking to fix their contracts etc. I wasn't directly involved, but loads of developers did a mammoth effort to rewrite old services to prevent this from ever happening again.

New energy crisis this year, the servers held, the company made a lot of money from new contracts via a combination of getting lucky with long-term buy-in contracts and the servers staying up unlike the competition. But there were no heroes, no praise to e.g. the developers putting in the extra hours, etc - it was business as usual, or business as it's supposed to be.

Re: Choose Boring Technology (2015)

#205
post #100
post #61

Earlier quoted context omitted.

I see it as analogous to people are frequently rewarded for putting out the fire instead of preventing the fire.

I've been noticing this as a solo dev. I need to put lots of work into infra and security, and all I get for it is... the thing not blowing up (hopefully!). The work is invisible, and impossible to "show off", so it's a bit unrewarding and demoralizing. But hey, someone needs to do it!

And the worst part is, because it's invisible, a higher up manager will think "Ah, we don't need these people anymore, let's replace them with juniors, an external company, and/or AI". It's maddening.

It's why senior developers should end up in management or in positions of making decisions, but it's a completely different type of job to software development, where reason and objective truth and whatnot is barely relevant compared to social skills and connections. (this may be inaccurate, I'm not in that 'layer').

Re: Choose Boring Technology (2015)

#206

Counter-position: "choose most appropriate technology".

It really depends, there are a lot of axes to consider. When the most appropriate technology is e.g. a programming language that less than 1% of developers on the market can write competently, would you risk the company on it?

Re: Choose Boring Technology (2015)

#207
post #80

Does nobody ever think of trying more than one technology? It’s like people buying a car based on what everyone else is driving rather than actually driving different cars.

Sure, that's what the POC stage of choosing technology is about if you can't make a decision on blurbs on websites or comparison tables.

Re: Choose Boring Technology (2015)

#208
post #80

Does nobody ever think of trying more than one technology? It’s like people buying a car based on what everyone else is driving rather than actually driving different cars.

I think you're conflating general "boringness" with tech-specific features. Test driving solutions is useful but it tells you nothing about reliability.

Say it's 2012 and you need a new car. Toyota Corollas have generally proven to be incredibly reliable. The Tesla Model S is brand new: definitely not boring. On paper both meet your needs, so you test drive both. The Tesla is way more fun to drive, and that's appealing, but if you just want your car to work for a long time with predictable maintenance, you should take the Corolla.

Re: Choose Boring Technology (2015)

#209
post #177
post #162

Earlier quoted context omitted.

I would say depends what you're trying to do? Is NodeJS the simple, solid and rugged way this has been done for a decade now? If not, then it is an innovation. Second it depends on what your or your teams experience level is. Have you ever built a serious thing with it and do you have multiple years of experience running and maintaining it? Yes? Then it is probably the boring choice. Would you be okay with leaving th…

> Second it depends on what your or your teams experience level is. +1. I work in a Skunkworks department inside a larger/older company and we recently decided to stop using Python in the future, the company's language. Node.js, Go, Rust, C#, etc, all of those are extremely boring for us . They're stable and we get things done in minutes. In Python it's like pulling teeth, with constant API changes and refactors from…

Python is fast for tiny programs. However if you have more than one team it isn't tiny. One developer can make something not tiny in a few weeks. For large programs a compiler that checks syntax, and ideally types before you run a comprehensive test suite ( which probably isn't comprehensive enough) is nearly mandatory to be maintainable. Otherwise you can never be sure you adjusted everything when you need to change an API.

Re: Choose Boring Technology (2015)

#210

Earlier quoted context omitted.

How many times has the stable and established X surprised you with some unexpected behavior? Once upon a time I wanted a URL /like/this/with%2Fslashes/ where a path parameter could, in rare cases, contain an encoded slash. Legit according to every RFC I checked. Works fine in browsers. But I couldn't get the web server to not convert it to a / before hitting my code. And woe betide thee who wants to make nginx return…

How many times have existing APIs made by experts in their fields had bugs. How many of those are you willing to let your own services and your customers’ data be hit by whole classes of bugs that battle-hardened APIs have already fixed? You sure you can get an LLM to handle every single one of them on first pass? Would you stake your company reputation and the PII of all your customers on it?

See now, we keep assuming without evidence that the old thing is actually better.

Sometimes it's true. I don't trust myself to write a non-trivial DBMS. I reach for Postgres. And there are some things I just don't want to do - like any kind of cryptography or compression. (I also wouldn't trust myself to avoid cryptography side channels.)

But existing APIs tend to do a lot more than you want, and that brings its own bugs. Consider the sqlite WAL-reset bug that Tailscale found when it corrupted several tailnets' control plane data. They were using a separate database file per network and a custom backup system too clever for its own good. How much control plane data do they have in a network? I'd imagine under a megabyte. They could have written the entire thing in JSON and committed with an atomic rename, and not had the bug. (On the other hand they could've used a single large Postgres.) I don't fault them for the corruption as sqlite is normally extremely reliable, but it just shows how adding things to a system can make it worse.

Or any reverse proxy when you do an HTTP Request Smuggling attack. If you hadn't used a reverse proxy, you wouldn't have been vulnerable because the attack is only relevant to reverse proxies (and forward proxies). Do you need a reverse proxy? Sometimes yes but other times no. You can also prevent that attack by using SCGI, FastCGI or WSGI instead of HTTP as your backend protocol.

I bet there's at least one vulnerability caused by X-Accel-Redirect processing, too.

Remember Log4Shell? The Log4J library had too many features, and some of them could be combined in an unintended way to cause remote code execution. Code worked exactly as intended, it just had too many features. You don't want that.

Remember Heartbleed? The old "battle tested" system turned out not to be.

Post reply on HN