HN user

dondraper36

1,704 karma
Posts68
Comments128
View on HN
news.ycombinator.com 4h ago

Ask HN: What changed in your life when you started meditating (and how)?

dondraper36
21pts12
www.seangoedecke.com 2mo ago

Notes on Incidents

dondraper36
1pts0
codeandcake.dev 3mo ago

Job Isn't Programming

dondraper36
3pts1
www.semicolonandsons.com 3mo ago

Scaling a Monolith to 1M LOC: 113 Pragmatic Lessons from Tech Lead to CTO

dondraper36
1pts0
www.seangoedecke.com 3mo ago

Engineers do get promoted for writing simple code

dondraper36
4pts1
essenceofsoftware.com 3mo ago

The Essence of Software by Daniel Jackson

dondraper36
2pts0
www.seangoedecke.com 7mo ago

Becoming Unblockable

dondraper36
1pts0
www.seangoedecke.com 8mo ago

Thinking Clearly about Software

dondraper36
1pts0
www.seangoedecke.com 9mo ago

Acing the Design Interview

dondraper36
2pts0
opensource.zalando.com 9mo ago

Zalando RESTful API Guidelines

dondraper36
1pts0
www.seangoedecke.com 9mo ago

What is "good taste" in software engineering?

dondraper36
6pts0
www.oreilly.com 10mo ago

Designing Data Intensive Applications 2nd edition

dondraper36
35pts7
www.seangoedecke.com 10mo ago

Seeing Like a Software Company

dondraper36
8pts0
www.seangoedecke.com 10mo ago

Do the simplest thing that could possibly work

dondraper36
1111pts387
www.seangoedecke.com 11mo ago

How I know I'm working with a strong engineer

dondraper36
4pts0
www.seangoedecke.com 11mo ago

Good system design

dondraper36
957pts390
news.ycombinator.com 11mo ago

Ask HN: Would you still recommend SICP in 2025?

dondraper36
3pts1
theaircurrent.com 1y ago

Air India 171: Preliminary report confirms movement of fuel control switches

dondraper36
4pts3
theaircurrent.com 1y ago

Air India 171 investigation focused on fuel switches movement

dondraper36
6pts4
news.ycombinator.com 1y ago

Ask HN: What are fundamental books on systems, system thinking, reliability?

dondraper36
4pts1
endler.dev 1y ago

The Best Programmers I Know

dondraper36
20pts6
news.ycombinator.com 1y ago

Ask HN: How do non-famous developers get invited to Lobsters?

dondraper36
5pts6
news.ycombinator.com 1y ago

Ask HN: What front end framework/library is the best to learn as a BE dev?

dondraper36
1pts2
news.ycombinator.com 1y ago

Ask HN: Would you still choose Ruby on Rails for a startup in 2025?

dondraper36
193pts175
news.ycombinator.com 1y ago

Ask HN: What are some no fluff books on engineering, career, and general wisdom?

dondraper36
9pts5
jmgarridopaz.github.io 1y ago

Hexagonal architecture: the one explanation that made it click for me (2018)

dondraper36
3pts0
news.ycombinator.com 1y ago

Ask HN: Isn't there a lightweight and popular Rust?

dondraper36
5pts3
news.ycombinator.com 1y ago

Ask HN: What is a programming language that you don't use at work but enjoy?

dondraper36
11pts26
www.oreilly.com 1y ago

The 2nd Edition of Designing Data Intensive Applications

dondraper36
9pts4
news.ycombinator.com 2y ago

Ask HN: What tech stack would you use as a back end for a mobile app in 2024?

dondraper36
2pts2

The idea sounds related to the distinction between essential and accidental complexity.

https://ferd.ca/complexity-has-to-live-somewhere.html

I really like the article above in that complexity does have to live somewhere. If you have a hard problem to solve, there is a minimum level of complexity (essential complexity) that can't be further reduced, only moved from one place to another.

And yet we often add accidental complexity by making bad choices (thinking of you, microservices). If your choice is bad enough, you get all the disadvantages (challenges with distributed systems, complicated debugging), but without any of its advantages (a distributed monolith doesn't get you any deployment or team independence).

Telling one from the other, well, is something I'd like to learn and that seems to require both experience and some sort of intuition.

If I understood correctly, the queue implementation in the blog post holds a transaction while an operation is in progress.

I see the advice to make it as short as possible, but why can’t we update the status column to, say, “processing” and avoid potentially long transactions at all?

Not a novel idea, but it always resonates with me when I hear that the goal of every software engineer is to manage complexity.

That said, I still find it hard to formulate for myself how to tell the difference between accidental and essential complexity.

It’s a fantastic performance booster for a lot of mundane tasks like writing and revising design docs, tests, debugging (using it like a super smart and active rubber duck), and system design discussions.

I also use it as a final check on all my manually written code before sending it for code review.

With all that said, I have this weird feeling that my ability to quickly understand and write code is no longer noticeable, nor necessary.

Everyone now ships tons of code and even if I do the same without any LLM, the default perception will be that it has been generated.

I am not depressed about it yet, but it will surely take a while to embrace the new reality in its entirety

[dead] 9 months ago

As Martin recently posted, now the production should take about 4 more months until we can buy the paperback version.

That said, if you have an O'Reilly subscription, you can already enjoy the new edition.

12 out of 13 chapters are already available on the O'Reilly website in the "raw and unedited" format.

The book is scheduled for publication in February 2026, but if you have an O'Reilly subscription, you can already access the new content.

Not directly related to the article we're discussing here, but, based on your experience, you might be the ideal kind of person to answer this.

At the scale you are mentioning, even "simple" solutions must be very sophisticated and nuanced. How does this transformation happen naturally from an engineer at a startup where any mainstream language + Postgres covers all your needs, to someone who can build something at Google scale?

Let's disregard the grokking of system design interview books and assume that system design interviews do look at real skills instead of learning common buzzwords.

Until you get enough experience for your own good judgment, you need some rules of thumb and guidelines from more experienced peers.

As long as you understand that everything is a trade-off and, unfortunately, that the modern field is based on subjective opinions of popular and not necessarily competent people, you will be fine.

I see your point, but, taken to the extreme, all it leaves us with is "everything is a trade-off" or "there's no free lunch".

Some generalizations are necessary to formalize the experience we have accumulated in the industry and teach newcomers.

The obvious problem is that, for some strange reason, lots of concepts and patterns that may be useful when applied carefully become a cult (think clean architecture and clean code), which eventually only makes the industry worse.

For example, clean architecture/ports and adapters/hexagonal/whatever, as I see it, is a very sane and pragmatic idea in general. But somehow, all battles are around how to name folders.

Such a familiar feeling. Articles similar to this one make lots of sense to and I do try to embrace simplicity and not optimize prematurely, but very often I have no idea whether it's the praised simplicity and pragmatism or just a lack of experience and skills.

Good system design 11 months ago

Absolutely. To put it differently, unfortunately not everyone has a chance to be part of a product's organic evolution from "all we need is Postgres" to "holy crap, we're a success, what is Cassandra by the way?"

Good system design 11 months ago

I believe even at FAANG-like companies, only a lucky minority is involved at that level of scale. Most developers just use the available infrastructure and tools without working on the creation of S3 or BigTable.

Good system design 11 months ago

Yes, I would probably phrase it like this. "Under the current load, I would go super simple and use X, which can work fine long enough until it doesn't. And then we can think about horizontal scaling and use Y and Z". Then proceed with a deeper discussion of Y and Z, probably.

After all, interviewing and understanding what your interviewer expects to hear is also a valuable skill (same as with your boss or client).

Good system design 11 months ago

Unless it's encouraged by the modern technical interviewing culture, which it partly is.

Good system design 11 months ago

There's another reason for that. Deep in my heart, I would love to be part of a team that works on truly data-intensive applications (as Martin Kleppmann would call them) where all the complexity is justified.

For example, I am more of the "All you need is Postgres" kind of software engineer. But reading all those fancy blog posts on how some team at Discord works with 1 trillion messages with Cassandra and ScyllaDB makes me envious.

Also, it seems that to be hired by such employers you need to prove that you already have such experience, which is a bit of a catch-22 situation.

Good system design 11 months ago

This also happens because plenty of candidates learn the buzzwords and patterns without understanding the trade-offs and nuances. With a competent enough interviewer, the shallowness of knowledge can be revealed immediately.

Good system design 11 months ago

I enjoyed reading this book (it's a short one), even though the prose is very, well, special :)

Good system design 11 months ago

Yes, and this is exactly why LinkedIn-driven development exists in the first place. Listing a million technologies looks much more impressive on paper to recruiters than describing how you managed to only use a modular monolith and a single Postgres instance to make everything work.

Good system design 11 months ago

Especially given that generating documentation and tests (of course, with manual revision) is so much faster with, say, Claude Code.