+0.24 Choose Boring Technology (boringtechnology.club S:+0.14 )
1357 points by luu 2434 days ago | 344 comments on HN | Mild positive Editorial · v3.7 · 2026-02-28 11:31:48
Summary Labor Autonomy & Participation Acknowledges
This software engineering essay indirectly engages with human rights principles through advocacy for inclusive organizational decision-making, worker welfare, and open discourse. While the content does not explicitly reference the UDHR, its underlying argument against systems that exploit developer labor and for transparent, collective governance aligns with rights to work, participation, and expression. The essay primarily frames these issues through organizational and operational lens rather than as explicit human rights concerns.
Article Heatmap
Preamble: +0.16 — Preamble P Article 1: +0.10 — Freedom, Equality, Brotherhood 1 Article 2: ND — Non-Discrimination Article 2: No Data — Non-Discrimination 2 Article 3: ND — Life, Liberty, Security Article 3: No Data — Life, Liberty, Security 3 Article 4: ND — No Slavery Article 4: No Data — No Slavery 4 Article 5: ND — No Torture Article 5: No Data — No Torture 5 Article 6: ND — Legal Personhood Article 6: No Data — Legal Personhood 6 Article 7: ND — Equality Before Law Article 7: No Data — Equality Before Law 7 Article 8: ND — Right to Remedy Article 8: No Data — Right to Remedy 8 Article 9: ND — No Arbitrary Detention Article 9: No Data — No Arbitrary Detention 9 Article 10: ND — Fair Hearing Article 10: No Data — Fair Hearing 10 Article 11: ND — Presumption of Innocence Article 11: No Data — Presumption of Innocence 11 Article 12: ND — Privacy Article 12: No Data — Privacy 12 Article 13: ND — Freedom of Movement Article 13: No Data — Freedom of Movement 13 Article 14: ND — Asylum Article 14: No Data — Asylum 14 Article 15: ND — Nationality Article 15: No Data — Nationality 15 Article 16: ND — Marriage & Family Article 16: No Data — Marriage & Family 16 Article 17: ND — Property Article 17: No Data — Property 17 Article 18: ND — Freedom of Thought Article 18: No Data — Freedom of Thought 18 Article 19: +0.20 — Freedom of Expression 19 Article 20: +0.22 — Assembly & Association 20 Article 21: ND — Political Participation Article 21: No Data — Political Participation 21 Article 22: ND — Social Security Article 22: No Data — Social Security 22 Article 23: +0.32 — Work & Equal Pay 23 Article 24: ND — Rest & Leisure Article 24: No Data — Rest & Leisure 24 Article 25: ND — Standard of Living Article 25: No Data — Standard of Living 25 Article 26: ND — Education Article 26: No Data — Education 26 Article 27: ND — Cultural Participation Article 27: No Data — Cultural Participation 27 Article 28: ND — Social & International Order Article 28: No Data — Social & International Order 28 Article 29: ND — Duties to Community Article 29: No Data — Duties to Community 29 Article 30: ND — No Destruction of Rights Article 30: No Data — No Destruction of Rights 30
Negative Neutral Positive No Data
Aggregates
Editorial Mean +0.24 Structural Mean +0.14
Weighted Mean +0.20 Unweighted Mean +0.20
Max +0.32 Article 23 Min +0.10 Article 1
Signal 5 No Data 26
Confidence 3% Volatility 0.07 (Low)
Negative 0 Channels E: 0.6 S: 0.4
SETL +0.13 Editorial-dominant
FW Ratio 53% 16 facts · 14 inferences
Evidence: High: 0 Medium: 0 Low: 5 No Data: 26
Theme Radar
Foundation Security Legal Privacy & Movement Personal Expression Economic & Social Cultural Order & Duties Foundation: 0.13 (2 articles) Security: 0.00 (0 articles) Legal: 0.00 (0 articles) Privacy & Movement: 0.00 (0 articles) Personal: 0.00 (0 articles) Expression: 0.21 (2 articles) Economic & Social: 0.32 (1 articles) Cultural: 0.00 (0 articles) Order & Duties: 0.00 (0 articles)
HN Discussion 20 top-level · 30 replies
dang 2019-07-01 23:46 UTC link
dm3 2019-07-02 09:03 UTC link
Another case of someone discovering, after 10+ years in tech, that code is a liability and you're supposed to solve problems instead of chasing trends and padding the resume.

Great that he's spreading the word!

neilwilson 2019-07-02 09:18 UTC link
There's a longer term issue that appears to be missing here. At what point do you change? There must be a point otherwise we'd all be here writing COBOL/CICS with some whizzy Javascript interface library.

Over time it becomes harder and harder and more and more expensive to maintain old technology. Because frankly maintaining old technology is pretty boring and career destroying so you need to be paid more and more to do it.

The marginal benefit of the new shiny is indeed an overhead you should try and avoid, but also you have to dodge the trap of being stuck in a technology when everybody else has moved on.

Anyway back to the Adabas support...

TickleSteve 2019-07-02 11:39 UTC link
The phrase "Bleeding edge" was coined for a reason...

The HN audience typically lives at the bleeding edge and assumes the world does too.

joaodlf 2019-07-02 11:49 UTC link
I am more and more resonating with these feelings, for the good and bad. In fact, my own writing reflects that over the years: https://joaodlf.com/ , I started my blog with information regarding technologies like Spark, Cassandra, Go, etc, and I am now writing about Postgres and Python web dev and Celery.

Boring is boring but it simplifies so much. I still love new technology, but I am now much more likely to try it out extensively and privately before even dreaming of bringing it to my company. An example: A few years ago I got very excited about Go, I started introducing it at work and solved some difficult issues with it. I could not get the rest of the developers to gain an interest in the language, though. Effectively, no one else but me could touch any of that code, this is not good for business. I have now revamped that same code, using old technology, and learned a lot along the way - so much so that I now feel like this old tech behaves as nicely as the more complicated, flashy, new language implementation.

oftenwrong 2019-07-02 12:25 UTC link
Always glad to see this making the rounds, as it has been influential for me, especially the perspective of "Happiness comes from shipping stuff".

I often think about this part, in particular:

>Then we walked away. We didn’t do anything related to activity feeds for years after that. We barely even thought about it.

>Then one day I said, “hey, I wonder how activity feeds is doing.” And I looked at it and was surprised to discover that in the time since we’d launched it, the usage had increased by a factor of 20. And as far as I could tell it was totally fine.

>The fact that 2,000% more people could be using activity feeds and we didn’t even have any idea that it was happening is certainly the greatest purely technical achievement of my career.

I get a huge kick from making something, and then forgetting about it. For me, implementing something that provides value with near-zero maintenance for years is the ultimate sign that I've done well.

pqdbr 2019-07-02 12:40 UTC link
That's why I keep choosing Rails for my new projects. Boring as hell. Gets the job done.
lvh 2019-07-02 12:51 UTC link
Author mentions Clojure a few times as an example of shiny-thing. Ironically, it's one of the few languages that I can reliably do in the browser, on the backend (on real servers or say, Lambdas), and build native binaries for -- which addresses the later "many tools" problem better than a "boring" programming language like Ruby. Unless you don't care about frontend code I guess :-)

(Overall this talk is fine! I think the problem/technology set illustration is particularly useful. I run Latacora's Cloud practice and we own all production infrastructure and "no, more boring, boringer than that, keep going" is a good way to describe what that looks like. We deploy half a dozen projects with exactly the same zero config storage and in ECS Fargate because I'm not managing servers.)

xwdv 2019-07-02 13:09 UTC link
There’s a certain amount of ladder kicking involved in telling people to choose boring and beige technologies after you started up your career chasing after new and exciting shiny things.

Every developer should spend some time working at the bleeding edge, so they know how it feels to get cut. The best time is absolutely at the beginning, when you’re a fresh grad and have the energy. You have the rest of your life to work on boring stuff that pays the bills, and who knows, if you are successful with a new technology early on, you might just be working on it for a very long time, continually breaking new grounds.

Choose bold technology early, then boring.

ravenstine 2019-07-02 13:15 UTC link
I choose boring technology because it less likely to waste my time. If I choose exciting technology, I will inevitably run into a cryptic error, even if I follow "Getting Started" perfectly, and it will be either difficult or impractical to resolve properly. That happens to me all the time, and I imagine it's due to insufficient testing and developers relying too heavily on their local environment.

Better to work on something boring, but was carefully constructed over time and doesn't require 1/10 the dependencies of today's newfangled thing.

liveoneggs 2019-07-02 13:17 UTC link
I proudly used "boring" to describe a massive simplification of my work's architecture that I have been working on for the last few years. It has been a successful culling of tech down to the bare minimum (as always- still a work in progress).

Anyway my boss got so so offended and angry that I would use the word "boring". I spent the rest of the day trying to explain it and calm him down.

Anyway use caution with the word "boring". It's more toxic than nuance would suggest.

parasubvert 2019-07-02 13:25 UTC link
A huge part of our VC bubble in OSS infrastructure (NoSQL, clouds, middleware, automation) is fueled by a generation of technologists not choosing boring technology.

This is a great presentation, and great advice.

What this piece misses are the marketing, hiring practices and incentives in that capital pool that is fueling FOMO (fear of missing out) as the main driver of our technology trends.

Most people orbiting IT wants to be a part of something that changes the world: it’s their ticket to higher paying job elsewhere, bragging rights at a conference, internet fame/notoriety via blog posts, etc. This is how we wind up with Service Mesh proxied MongoDB on Kubernetes as THE ANSWER, and all the ensuing political battles / turf wars to fight boring alternatives as “yesterday’s news”.

It would be nice to see a greater focus on business outcomes, but I find few have the patience or bandwidth to truly track the success of a technology choice, unless you’re a larger company making a periodic cash bet with a business partner (eg software vendor). And even then, failure can be swept under the rug sometimes.

It requires strong leadership and management (or a great culture) to encourage your teams to communicate tradeoffs and make these sorts of “boring tech” decisions without it being more about individuals playing a turf game.

sethc2 2019-07-02 13:35 UTC link
If you work on a Node backend with Javascript, Where does the idea of switching to Typescript fall into this discussion? Is it a boring technology, or a shiny new technology? It is still using the same tech in Node, which you already know the benefits and pitfalls for, but it isn't like there is no overhead to start consuming Typescript if you haven't used it before.

My hope is for those who agree with the author's premise, that it is still using the same "boring" technology and more people switch to it, because over the last two years when we switched to use Typescript, it has gotten significantly more valuable as more and more people have used it because now a majority of the dependencies I take on have type definitions provided via DefinitelyTyped, or are included with the package.

fogetti 2019-07-02 14:08 UTC link
> "You can’t do poetry if you’re worried about what you’re going to eat today"

Well let me just add this:

> "Shortly after his release from the prison at Meung-sur-Loire he was arrested, in 1462, for robbery and detained at the Châtelet in Paris. He was freed on November 7 but was in prison the following year for his part in a brawl in the rue de la Parcheminerie. This time he was condemned to be pendu et etranglé (“hanged and strangled”). While under the sentence of death he wrote his superb “Ballade des pendus,” or “L’Épitaphe Villon”, in which he imagines himself hanging on the scaffold, his body rotting, and he makes a plea to God against the “justice” of men." - I wouldn't call that the highest step on the pyramid

kabes 2019-07-02 14:27 UTC link
Somewhat playing devil's advocate, but if everyone joins that club, we keep the status quo and there's no more progress. If everyone joined this club in the 50's/60's we'd still be writing assembly. It's the guys pushing new shiny things that allows our domain to go forward, we just need to accept that 90% of the shiny new things eventually turn out to be crap. It's about the other 10%.
mark_l_watson 2019-07-02 17:02 UTC link
Great points. I was reminded about a period of close to ten years when “my stack” was Apache Tomcat with servlets and JSP. I would handle background tasks in threads initialized in servlet init methods. For me it was a universal platform for anything I was required to develop and deploy.

I was in Chicago last month and had breakfast with an old customer (I had never met him in person even though I did a ton of work for him between 2000 and 2006). One of my tasks for him was writing a Sharepoint clone that ran for five years totally unattended by his ops team. After five years they ran out of disk space and did a quick migration to a larger server. My customer thought that in five years they had never restarted to system or rebooted the server (yikes!, no security updates?).

yepguy 2019-07-02 17:20 UTC link
Like many developers I have a strong desire to work with more exciting technology, even when there's no business case for it. Strangely enough, I've found the best outlet for that energy (other than personal projects when I get free time) is configuring Emacs.

It's less disruptive than putting a new language or database into production, and makes me significantly more content to work with a boring stack. Plus I get a more comfortable computing environment out of it.

Maybe someday I'll get Emacs just the way I like it, and need to find something else to distract me from chasing the new and shiny, but I kind of doubt it.

mcguire 2019-07-02 17:41 UTC link
I am in complete agreement with this. (Sing it, brother!)

But,

"My friend Andrew wears the same brand of black shirt every day. He thinks that if he conserves the brainpower it would take to pick something to wear, he’ll bank it and be able to use it later for something else. [...] I like to think about it like this. Let’s say that we all get a limited number of innovation tokens to spend. [...] These represent our limited capacity to do something creative, or weird, or hard. We really don’t have that many of these to allocate. Early on in a company’s life, we get like maybe three. Not too many more than that."

I don't buy this. If you try to save up your brainpower, innovation tokens, intellectual capital, or whatever, what you'll find when you come to try to use it is that you don't have it. Sort of like if you try to save up your upper body strength for a couple of years before you try to climb El Capitan. But I am just saying that is a poor example.

switchbak 2019-07-02 18:06 UTC link
It's fun to dive in and "modernize all the things" - and certainly you can learn a lot in the process (perhaps at the expense of the business).

I don't believe that the only reasonable alternative to that is to "choose boring tech" though. Like so many things in life, it's very contextual, and this is where you need someone with a lot of background and war wounds who can discern valuable improvements from yet-another-CADT-library-rewrite. Sometimes they're hard to differentiate from an old crusty cynic though.

I'm resistant to either pole - I think there's often a 'middle way', where you can leverage proven, high-quality software (think PostgreSQL) while still benefiting from modern approaches (pragmatic functional idioms, etc). I'm old enough to remember when the industry was generally more entrenched in ossified approaches - it definitely has its downsides too!

The hard part is when a (supposedly) proven technology turns out to be a turd. Much of the job of choosing good tech appears to be using heuristics to avoid low quality tech with good marketing. I'd love to have better tools to guide that problem!

bpyne 2019-07-02 18:34 UTC link
I'm only part way through the presentation, but I loved this line.

"And when people succumb to this instinct they tell themselves that they’re giving developers freedom. And sure, it is freedom, but it's a very narrow definition of what freedom is."

Yup. You get the freedom to choose a language and/or database with unknowns but you lose the freedom to leave work at a reasonable hour to see your family, pursue a hobby, or just veg out. Experimenting with new (to your organization) languages and infrastructure pieces is something you do between projects, not during.

It reminds me of something a jazz musician said in an interview, "The audience doesn't pay to see you rehearse. Rehearsal is done on your own time away from audiences." Rehearsals are where you try new techniques, harmonies, instruments, etc.

tw1010 2019-07-02 10:34 UTC link
History is filled with re-discovery and explanation of things that were blindingly obvious to the generation that came before.
rlonn 2019-07-02 10:35 UTC link
Recipe for getting things done:

1. Place every new & cool technology into mental quarantine for 3-5 years. 2. If, after that: a) the tech is still widely used, and doesn't seem to be getting overtaken by something else b) you're about to start a NEW project where the tech would help c) you're not in a rush and feel like trying something new

...then go for it.

Learning complex tech that just arrived is a waste of your life, if you want to accomplish things. It's only useful if your aim is to appear knowledgeable and "in the loop" to your developer peers.

virgilp 2019-07-02 10:46 UTC link
You know, it's the same as with financial advice. Good financial advice is good.... except if absolutely everyone applies it, then it becomes a disaster. Fortunately, there's no risk of that happening.

Same here. No matter what you do, leave others to try the cool new stuff & get burned by it & work to fix it (when/if possible). Stay informed, but don't be an early-adopter. It's sound advice - though it wouldn't be if everyone applied it. Fortunately, there's no risk of that happening.

reallydontask 2019-07-02 10:59 UTC link
I spoke once with a Microsoft consultant, he was advising us on upgrading strategy, as our customer had a mandate to be at least on version N-1, that is the customer must be on the latest major version or the version before, so at the time we were migrating off Windows 2003 as Windows 2012 was going through internal validation.

He mentioned that on a bank he'd been advising, the mandate was the opposite, namely at most they could be on N-1 and were in the exact same position as we were, except that they were migrating to Windows 2008 and we to Windows 2012 as the N-1 mandate in practice meant that we'd upgrade services every other release, except when there was a waiver, which was often and explained why when I left in late 2012 we still had some Windows 2000 boxes.

As a techie, it was always a pain going back to an old box as you'd try to do something and realise that it was not possible as that feature had only been introduced in later versions. Even worse, was when it was possible but extremely convoluted and error prone.

It's interesting how everybody thinks that it's career suicide to support old stuff when it actual fact most people are hired for a mixture of their knowledge and their capacity to learn. I appreciate that it's lower risk to hire somebody with experience on the exact product but would you rather have an extremely good engineer with no experience in your stack or a good one with experience in your stack?

murgindrag 2019-07-02 11:07 UTC link
I'll contradict everyone here: You figure it out on a case-by-case basis.

Generally, risks go down over time and with broad use. SQL, as a technology, is 100% risk-free, having been around forever, and widely used. COBOL is high risk, since while it's been around forever, hardly anyone uses it anymore, at least on modern projects. Moving your Cobol app to Android is fraught with unknown-unknown risk. Something that's been around 2-3 years is generally much lower risk than something which came out last year, and a good 10 years drives risks down further most of the time, but not always. It depend on whether people seem happy with it. Mongo seemed like a really good idea first few years, until people figured out (1) it had wonky performance issues (2) it was really hard to query for some type of queries (3) and what was the problem with postgresql again (it seems to do JSON pretty well too!)? Things change too. Java was the bedrock, stable, safe choice. It wasn't the fastest to code in, it was a bit clunky, but it was THE safe choice, and enterprises flocked to it. That is until Sun died, Oracle happened, and litigation+monetization kicked up to try to treat Java as a cash cow.

The flip side is why would you use it? When I was building an app a while back, I chose React although React Native had just come out at that point. It let me build the app once, and run on web, Android, and iOS, instead of 3 times. I figured cost savings of building and maintaining one codebase outweighed the risks. On the other hand, in most cases, the upsides of switching away from Python -- now three decades old -- are usually negligible, so with the exception of a specific need (run-anywhere, above), I almost never pick something different.

And the final piece is code complexity, abstraction, and modularity. I don't feel bad adapting new numerical algorithms. It's usually a few hundred lines of self-contained code. If a better algorithms comes out, I might swap it out anyways. On the other hand, a programming language or framework is a lifetime commitment.

You work through all the risks and upsides, figuring maintenance is 90% of the cost, and you sometimes end up around the rules-of-thumb everyone gave. But not always.

Trick is to learn probability. It give a good mental framework for estimating expected costs and benefits. You don't usually do this explicitly with equations (what's the probability-Oracle-screws-us times costs-of-Oracle-screwing-us versus cost of upgrading to Python?), but it gives a language to think about risks.

crispyambulance 2019-07-02 11:48 UTC link
Code is not "a liability".

It is a tool that can be used masterfully or utterly abused.

Every craftsman has to invest in their tools. And for someone to truly master their craft they must sometimes hone their tool skills speculatively, without short-term gain, and by sacrificing the time and attention used for other things, like actual projects.

If everyone just obeyed their project manager and always focused 100% on the problem at hand, we would be producing sad, boring things. If you want to see what that's like look at enterprise applications.

agumonkey 2019-07-02 11:54 UTC link
chasing trends is a problem but suffering java <5 too

You can deliver so much more, so much safer using other techniques...

nickjj 2019-07-02 12:00 UTC link
For me, change happens when I see a real improvement in almost every way possible which is usually determined by building a few things and letting my brain simmer on the technology as a whole so I can look at it with a logical and unbiased perspective.

I remember looking at Node when it first came out and got mildly excited, but that excitement quickly went away after writing a couple of small apps with it. It just wasn't for me. The same thing happened with Go. I didn't see enough wins to switch over to using either of them for building web apps.

On the other hand, for me Rails and Flask stood the test of time. Nowadays I'm working with Phoenix and I'm past the hype phase and it looks to be another winner. But in all 3 cases (Rails, Flask, Phoenix) I typically don't switch away from them for good. They just become another tool that I know. Of course I will gravitate towards the one I'm the most happy writing code with, but it's not a black / white progression from 1 to the other.

I don't think there's really a definitive answer on when to change. Like 3 weeks ago I picked up a Flask contract and it was a pleasant experience, even though I'm using Phoenix to build a side project currently. You don't always need to throw the old thing out. You can use multiple technologies in harmony. You change when you start dreading writing code in the old thing, which is very user specific. In other words, write more code and you'll quickly find out what you like and dislike.

stinos 2019-07-02 12:48 UTC link
For me, implementing something that provides value with near-zero maintenance for years is the ultimate sign that I've done well.

Such a good point it's worth repeating. We have a bunch of small tools of which the code might not exactly be brilliant or adhering all possible good practices, but after 10+ years they still just work without any unsurprising behavior nor bugs and still also just build/deploy with a click of the button so to speak. That's just nice.

Does make me wonder sometimes what exactly all other knowledge I gathered since then is good for. Some of it is definitely wasted on shiny stuff. But most of it is software architecture and with repect to the subject I'd translate that as 'how do I make this large scale application a combination of all those small and nice tools, and make that combination itself also work as those small nice tools'.

pif 2019-07-02 13:02 UTC link
> "Happiness comes from shipping stuff"

Actually, the rest of your comments points to: "Happiness comes from shipping good stuff"

sydd 2019-07-02 13:04 UTC link
But: - good luck finding a Clojure programmer if your current one quits. - good luck finding answers for your exotic bug/performance issue etc. Code is a liability, it's much more than language/VM/compiler features
jerf 2019-07-02 13:15 UTC link
Generally, "shiny-things" have some sort of appeal over the "boring" technology, or nobody would choose them at all.

One of the places I'd say they are appropriate are in places where you have some problem where some "shiny-thing" stands head and shoulders above the "boring technology" in some particular and you can ram home those advantages well enough to overcome the other issues. For instance, if you've got a server where you're going to have several thousand clients opening a socket connection and babbling away at each other in some custom manner, starting with Erlang/Elixir is quite possibly a very good idea, because none of the "boring" tech is anywhere near as good at that, even today.

But I do agree that when doing the cost/benefit analyses of these choices, far too many developers plop an unprofessional amount of weight on the "benefit" side that amounts to "it's fun to play with the pretty-shiny". (I'm still recovering from some old "NoSQL" decisions made in a context where a relational database would have been more than adequate, at most backed by something that even at the time was tested like memcached, instead of a combination of what are now completely defunct and semi-defunct databases.)

salixrosa 2019-07-02 13:30 UTC link
I literally had this conversation yesterday as a "why I'm not sure web development is for me, long-term."

The level of familiarity that can be achieved with a tool in the timeframe allotted before the "oh no, we're behind-the-times!" fervor strikes just doesn't seem sufficient to me. I'll have co-workers coming to me with the tool-specific roadblocks they're hitting, and have reached the point where I can easily say "yeah, I've been there, you'd never guess but the problem is with [X], just do [Y]." And just as I'm getting really efficient, I've got to throw it all out because that tool isn't cool anymore, and nobody wants to work with not-cool tools, and we've all got our resumes to worry about.

I wonder if there are some cultural changes that could help mitigate this. If there really is an endorphin rush when working with a fancy new tool, why is that there and what can we do to replace that? Is it resume-building, is it enjoyment of that stage of knowing-nothing, is it happiness when you easily do that one thing that was annoying the shit out of you with the old tool?

Can you pick apart why you were excited about and wanted to adopt Go?

nemild 2019-07-02 13:40 UTC link
I would go for it, but just the fact that you're asking shows that you're less susceptible to injecting needless technology. Typescript has also been used for years, and it has a place as Javascript is used for more complex products than it was intended.

I wrote a short bit in "Handling Hype" here arguing that you need to dig into your problem, assess claims, and weigh tradeoffs:

https://www.nemil.com/mongo/1.html

chucky_z 2019-07-02 13:45 UTC link
I would like to throw my 2 cents in that some of these advances around "new" ways do lead to some good things. The focus on service discovery is something that is incredibly helpful even for older technologies.

Consul is something you can add to even a very old application and give it modern scaling features, simply because it has a plain old DNS interface.

Redis is similar for caching, it's advanced, the interface is so simple to use, and it's so easy to deploy and manage.

On the flip side, I'd like to add that I worked for a startup and we chose a lot of boring technologies because we had a job to get done, and they all just worked. :)

sudhirj 2019-07-02 13:47 UTC link
I’d say talk about it with the team, see there’s enough buy in from the existing team and enough awareness of the extra stuff to learn for both current and future team members. Then try it incrementally on some of the most hairy or type bug ridden parts of the codebase (so you can quickly prove utility) or on some smaller / newer parts of the code (so you can quickly prove compatibility). Then a wider rollout should build up its own momentum if it’s anywhere as helpful as you’re hoping it’s going to be.
shapiro92 2019-07-02 13:48 UTC link
So much this! I mean the author also worked for 7 years at Etsy which did ship quite a lot of new things (bad and good). For me this is similar to telling a 20 year old, dont go out, stay home, watch tv you will less likely get injured.
Datenstrom 2019-07-02 14:00 UTC link
Beautiful code denies its existence so perfectly you forget you wrote it.
steve_adams_86 2019-07-02 14:00 UTC link
A wonderful thing about TypeScript is that if you decide you don't like it or need it, you still have recognizable and refactorable JavaScript. On the other hand, if you have a ton of relational data and get excited about the latest nosql DB, you're going to have a hell of a time unravelling that mess.
KaiserPro 2019-07-02 14:04 UTC link
It fits in the ruby part here: http://boringtechnology.club/#33

It would be something that you are adding to the stack. Yes, you are intending to replace something, but in practice there will still be legacy nodejs hanging around.

But crucially this one: http://boringtechnology.club/#43

If you are spending time (and therefore money) changing from one language to another, you are not making features for the business. Yes, you might get more speed re-implementing features, but its almost never going to make up for the hit you took in porting everything.

rektomatic 2019-07-02 14:34 UTC link
At the end of his shpeel he talks about how to adopt new technologies intelligently. He's not saying that no one ever should but that you need to go about it a certain way to reduce risk.
hadsed 2019-07-02 14:34 UTC link
Not sure I agree with this perspective. Many of these companies are started by engineers or product managers who have seen the boring solutions not work for them. In some cases they either see it not work many times or see a future where other organizations get to that point and need a better solution. In digging into what these companies do it becomes clear that they aren't doing it just to push new tech, but maybe I'm the one who hasn't seen enough.

You mention k8s and related stuff isn't always the answer. Seems you think it's somewhat valuable? I'd like to hear what sort of tech you think is creating a bubble by being so useless! Certainly k8s can't be it, because for large companies the automation abilities of such a system are quite clear. Does it intro new problems, of course, and if they aren't well solved yet you'll have to think hard about the benefits of adopting The New Way, but to call this a bubble is hard to accept.

rb808 2019-07-02 14:45 UTC link
> you're supposed to solve problems instead of chasing trends and padding the resume

Yeah I thought that until I had to look for a new job and my resume just had boring old technology on it. Now I make sure I do some padding!

fogetti 2019-07-02 14:52 UTC link
The problem is that those people who chose shiny new technology only see the benefit, while all the others in the company will rot in hell because of the stupid choice of a junior engineer (who jumped ships 3 times meanwhile). I don't see how does that benefit the company? The whole point of the article is that you should make wise technology decisions which benefits the whole organization.
gfodor 2019-07-02 15:25 UTC link
Surely what you state here can be said of any advice given due to experience. As long as the natural inclinations of younger developers push up against said advice, it's completely sane to give it. Because without it, young developers will have an incomplete mental model, and will lack the intellectual tools to potentially make better choices early in their career.

Also it seems to miss the point somewhat: choosing 'boring' technology has little to do with working on things that are unfulfilling. On the contrary, when tech stack choices are the thing from which developers derive their excitement from, in my view, it's often "empty calories" masking the lack of "emotional nutrition" they are getting from the problem they are solving or the users they are serving. For every whiz-bang neural network getting users to click on ads, there's a 'boring' embedded system running on an ancient C framework somewhere putting satellites in space. I'd rather work on the latter any day of the week.

As Hamming said, "if you're not working on the most important problem in your field, why not?"

esoterica 2019-07-02 15:45 UTC link
No, your mandate is to advance your career, not solve problems. If you’re rewarded for resume padding more than problem solving then keep resume padding.
brightball 2019-07-02 15:55 UTC link
The code that I've shipped that, 10 years later still runs at previous organizations with no support needed is really something I'm very proud of when I look back.

At once point we actually wrote an AJAX site that worked in IE6, Firefox and Safari (pre-Chrome), before Prototype, jQuery or JSON was even a thing...and it still worked perfectly 10 years later. All hand coded JS and backend PHP + Java.

It's one of the reasons that I get kinda shocked when I see people look at code on Github and then avoid it because it hasn't had a recent commit. It's also of the big reasons that I'm a fan of Elixir, because the language is approaching a point where it's creators consider it "complete". Boring and stable is the goal.

buboard 2019-07-02 15:55 UTC link
You can argue there has been a lot of progress in web development since 2000, and you can argue it hasn't. I think we did a lot of circles around ourselves, creating new frameworks that do the same stuff as the ones before them. The real progress was in browsers and CSS which allowed things like access to device cameras/inputs, rtc technologies and adaptible layouts.
delusional 2019-07-02 16:40 UTC link
Isn't it a bit silly to presuppose that what we have now is the best we are ever going to get. I mean, files were state of the art at one point, but i don't think anyone will suggest we go back to punchcards.

"Boring Technology" is the wrong thing to aim for. Aim for simplicity.

godshatter 2019-07-02 16:54 UTC link
I'm always amazed at the lifespan of some of the code I've written over the years. I wrote an api that we use internally in 1996 that is still being used in all of our new production code in that language in our organization. I've learned a lot in the intervening 23 years so looking at some of that code can be a bit jarring. We've had to adapt it a bit when our environment changed a few times, and we've certainly added to it, but I don't think the core code has had any problems that I know of this century. Millennium, I guess, technically.

Part of me really wants to rewrite it, but it doesn't make sense from a developer-time perspective (and I don't want to spend the time tracking down the inevitable bugs again).

Editorial Channel
What the content says
+0.40
Article 23 Work & Equal Pay
Low Advocacy
Editorial
+0.40
SETL
+0.28

The essay fundamentally advocates for better working conditions and against worker exploitation through improved organizational practices. The essay frames technology decisions as having direct impact on developer welfare, criticizing systems that bind workers perpetually to maintenance burden. The core argument is that choices should prioritize reducing unnecessary operational toil on workers.

+0.30
Article 20 Assembly & Association
Low Advocacy
Editorial
+0.30
SETL
+0.24

The essay strongly advocates for making technology decisions a collective conversation rather than individual choice. The author explicitly states that technology governance requires bringing people together to discuss and decide, directly supporting rights of association and collective decision-making.

+0.20
Preamble Preamble
Low Advocacy
Editorial
+0.20
SETL
+0.14

The essay implicitly advocates for organizational structures grounded in dignity, freedom, and justice through its criticism of systems that exploit worker labor and its emphasis on inclusive decision-making. Values of human dignity are present in the rejection of binding developers indefinitely to operational burden.

+0.20
Article 19 Freedom of Expression
Low Advocacy
Editorial
+0.20
SETL
0.00

The content itself is an exercise of free expression and opinion. The author openly shares critical analysis of technology practices and personal experience. The essay advocates for open discourse and transparent conversation about organizational decision-making.

+0.10
Article 1 Freedom, Equality, Brotherhood
Low Advocacy
Editorial
+0.10
SETL
0.00

The essay advocates that all people (developers, teams, organizations) deserve equal voice in technology decisions affecting their work, implicitly supporting the principle of equal dignity in organizational governance.

ND
Article 2 Non-Discrimination

Not engaged

ND
Article 3 Life, Liberty, Security

Not engaged

ND
Article 4 No Slavery

Not engaged

ND
Article 5 No Torture

Not engaged

ND
Article 6 Legal Personhood

Not engaged

ND
Article 7 Equality Before Law

Not engaged

ND
Article 8 Right to Remedy

Not engaged

ND
Article 9 No Arbitrary Detention

Not engaged

ND
Article 10 Fair Hearing

Not engaged

ND
Article 11 Presumption of Innocence

Not engaged

ND
Article 12 Privacy

Not engaged

ND
Article 13 Freedom of Movement

Not engaged

ND
Article 14 Asylum

Not engaged

ND
Article 15 Nationality

Not engaged

ND
Article 16 Marriage & Family

Not engaged

ND
Article 17 Property

Not engaged

ND
Article 18 Freedom of Thought

Not engaged

ND
Article 21 Political Participation

Not engaged

ND
Article 22 Social Security

Not engaged

ND
Article 24 Rest & Leisure

Not engaged

ND
Article 25 Standard of Living

Not engaged

ND
Article 26 Education

Not engaged

ND
Article 27 Cultural Participation

Not engaged

ND
Article 28 Social & International Order

Not engaged

ND
Article 29 Duties to Community

Not engaged

ND
Article 30 No Destruction of Rights

Not engaged

Structural Channel
What the site does
+0.20
Article 19 Freedom of Expression
Low Advocacy
Structural
+0.20
Context Modifier
ND
SETL
0.00

Open access without gatekeeping or censorship; multilingual translation availability demonstrates structural commitment to enabling diverse expression across language barriers.

+0.20
Article 23 Work & Equal Pay
Low Advocacy
Structural
+0.20
Context Modifier
ND
SETL
+0.28

The site provides free, accessible knowledge resources that empower readers to understand and advocate for better work conditions. However, the site does not directly engage with labor rights infrastructure, unions, or formal worker protections.

+0.10
Preamble Preamble
Low Advocacy
Structural
+0.10
Context Modifier
ND
SETL
+0.14

Open access model and transparent authorship support Preamble values, though limited explicit accessibility features and lack of engagement infrastructure reduce structural alignment.

+0.10
Article 1 Freedom, Equality, Brotherhood
Low Advocacy
Structural
+0.10
Context Modifier
ND
SETL
0.00

The site presents content without apparent discrimination based on user characteristics; however, default English presentation with opt-in translation could exclude non-English readers.

+0.10
Article 20 Assembly & Association
Low Advocacy
Structural
+0.10
Context Modifier
ND
SETL
+0.24

The site itself is a one-way publication; it does not structurally enable reader assembly, association, or collective conversation (no comments, forums, or community features visible).

ND
Article 2 Non-Discrimination

Not engaged

ND
Article 3 Life, Liberty, Security

Not engaged

ND
Article 4 No Slavery

Not engaged

ND
Article 5 No Torture

Not engaged

ND
Article 6 Legal Personhood

Not engaged

ND
Article 7 Equality Before Law

Not engaged

ND
Article 8 Right to Remedy

Not engaged

ND
Article 9 No Arbitrary Detention

Not engaged

ND
Article 10 Fair Hearing

Not engaged

ND
Article 11 Presumption of Innocence

Not engaged

ND
Article 12 Privacy

Not engaged

ND
Article 13 Freedom of Movement

Not engaged

ND
Article 14 Asylum

Not engaged

ND
Article 15 Nationality

Not engaged

ND
Article 16 Marriage & Family

Not engaged

ND
Article 17 Property

Not engaged

ND
Article 18 Freedom of Thought

Not engaged

ND
Article 21 Political Participation

Not engaged

ND
Article 22 Social Security

Not engaged

ND
Article 24 Rest & Leisure

Not engaged

ND
Article 25 Standard of Living

Not engaged

ND
Article 26 Education

Not engaged

ND
Article 27 Cultural Participation

Not engaged

ND
Article 28 Social & International Order

Not engaged

ND
Article 29 Duties to Community

Not engaged

ND
Article 30 No Destruction of Rights

Not engaged

Supplementary Signals
How this content communicates, beyond directional lean. Learn more
Epistemic Quality
How well-sourced and evidence-based is this content?
0.53 high claims
Sources
0.6
Evidence
0.5
Uncertainty
0.6
Purpose
0.7
Propaganda Flags
No manipulative rhetoric detected
0 techniques detected
Emotional Tone
Emotional character: positive/negative, intensity, authority
measured
Valence
+0.2
Arousal
0.3
Dominance
0.6
Transparency
Does the content identify its author and disclose interests?
0.75
✓ Author
More signals: context, framing & audience
Solution Orientation
Does this content offer solutions or only describe problems?
0.82 solution oriented
Reader Agency
0.7
Stakeholder Voice
Whose perspectives are represented in this content?
0.35 3 perspectives
Speaks: individuals
About: workerscorporationinstitution
Temporal Framing
Is this content looking backward, at the present, or forward?
retrospective historical
Geographic Scope
What geographic area does this content cover?
global
United States
Complexity
How accessible is this content to a general audience?
moderate medium jargon domain specific
Audit Trail 3 entries
2026-02-28 11:31 eval Evaluated by claude-haiku-4-5-20251001: +0.20 (Mild positive) +0.31
2026-02-28 11:20 eval Evaluated by claude-haiku-4-5-20251001: -0.11 (Mild negative) -0.31
2026-02-28 10:49 eval Evaluated by claude-haiku-4-5-20251001: +0.20 (Mild positive)