Readit News logoReadit News
jackfranklyn · 13 days ago
The "doing it badly" principle changed everything for me. I spent weeks planning the perfect architecture for some automation tools I was building. Then I just... stopped planning and built the ugly version that solved my own pain point.

What surprised me was how much the ugly first version taught me that planning never could. You learn what users actually care about (often not what you expected), which edge cases matter in practice, and what "good enough" looks like in context.

The hardest part is giving yourself permission to ship something you know is flawed. But the feedback loop from real usage is worth more than weeks of hypothetical architecture debates.

A_Venom_Roll · 13 days ago
While I do agree with the content, this tone of writing feels awfully similar to LLM generated posts that flood some productivity subreddits recently. Are there really people who "spend weeks planning the perfect architecture" to build some automation tools for themselves? I don't buy that.

Commenter's history is full of 'red flags': - "The real cost of this complexity isn't the code itself - it's onboarding" - "This resonates." - "What actually worked" - "This hits close to home" - "Where it really shines is the tedious stuff - writing tests for edge cases, refactoring patterns across multiple files, generating boilerplate that follows existing conventions."

JonathanFly · 13 days ago
> While I do agree with the content, this tone of writing feels awfully similar to LLM generated posts

> Commenter's history is full of 'red flags': - "The real cost of this complexity isn't the code itself - it's onboarding" - "This resonates."

Wow it's obvious in the full comment history. What is the purpose for this stuff? Do social marketing services maintain armies of bot accounts that just build up credibility by doing normal-ish comments, so they can called on later like sleeper cells for marketing? On Twitter I already have scroll down to find the one human reply on many posts.

And when the bots get a bit better (or people get less lazy prompting them, I'm pretty sure I could prompt to avoid this classic prose style) we'll have no chance of knowing what's a bot. How long until the majority of the Internet be essentially a really convincing version of r/SubredditSimulator? When I stop being able to recognize the bots, I wonder how I'll feel. They would probably be writing genuinely helpful/funny posts, or telling a touching personal story I upvote, but it's pure bot creative writing.

Terretta · 13 days ago
> The tone of writing feels awfully similar to LLM.

This particular piece is LinkedIn “copy pasta” with many verbatim or mildly variant copies.

Example: https://www.linkedin.com/posts/chriswillx_preparing-to-do-th...

And in turn, see: https://strangestloop.io/essays/things-that-arent-doing-the-...

Relatedly, LLMs clearly picked the "LinkedIn influencer" style up.

My guess is some cross-over between those who write this way on LinkedIn and those who engage with chatbot A/B testing or sign up for the human reinforcement learning / fine tuning / tagging jobs, training in a preference for it.

obruchez · 13 days ago
> Are there really people who "spend weeks planning the perfect architecture" to build some automation tools for themselves? I don't buy that.

I understand that it's not the main point in your comment (you're trying to determine if the parent comment was written using an LLM), but yes, we do exist: I've spent years planning personal projects that remain unimplemented. Don't underestimate the power of procrastination and perfectionism. Oliver Burkeman ("Four Thousand Weeks", etc.) could probably explain that dynamic better than me.

concats · 13 days ago
I didn't catch it immediately, but after you pointed it out I totally agree. That comment is for sure LLM written. If that involved a human in the loop or was fully automated I cannot say.

We currently live in the very thin sliver of time where the internet is already full of LLM writing, but where it's not quite invisible yet. It's just a matter of time before those Dead Internet Theory guys score another point and these comments are indistinguishable from novel human thought.

gabriel-uribe · 13 days ago
This reminds me of how bad browsing the internet will likely get this year. There are a ton of 'Cursor for marketing' style startups going online now that basically spam every acquisition channel possible.

Not sure about this user specifically, but interesting that a lot of their comments follow a pattern of '<x> nailed it'

bodge5000 · 13 days ago
> Are there really people who "spend weeks planning the perfect architecture" to build some automation tools for themselves?

Ironically, I see this very often with AI/vibe coding, and whilst it does happen with traditional coding too, it happens with AI to an extreme degree. Spend 5 minutes on twitter and you'll see a load of people talking about their insane new vibe coding setup and next to nothing of what they're actually building

dspillett · 13 days ago
> Are there really people who "spend weeks planning the perfect architecture" to build some automation tools for themselves?

Probably. I've been known to spend weeks planning something that I then forget and leave completely unstarted because other things took my attention!

> Commenter's history is full of 'red flags'

I wonder how much these red flags are starting to change how people write without LLMs, to avoid being accused of being a bot. A number of text checking tools suggested replacing ASCII hyphens with m-dashes in the pre-LLM-boom days¹ and I started listening to them, though I no longer do. That doesn't affect the overall sentence structure, but a lot of people jump on m-/n- dashes anywhere in text as a sign, not just in “it isn't <x> - it is <y>” like patterns.

It is certainly changing what people write about, with many threads like this one being diverted into discussing LLM output and how to spot it!

--------

[1] This is probably why there are many of them in the training data, so they are seen as significant by tokenisation steps, so they come out of the resulting models often.

Deleted Comment

Deleted Comment

matthewkayin · 12 days ago
I'm not so sure. There's a fair amount of voice and first person in their writing. I wonder if they just use LLMs so much that the language and style of LLMs have rubbed off on them.
josephg · 13 days ago
Yeah; this is such a hard intuition to teach beginners. And something I think will be lost as we move more and more toward vibe coding.

There is so much to be learned about a problem - and programming in general - by implementing stuff and then refactoring it into the ground. Most of the time the abstractions I think up at first are totally wrong. Like, I imagine my program will model categories A, B and C. But when I program it up, the code for B and C is kinda similar. So I combine them, and realise C is just a subset of B. And sometimes then I realise A is a distinct subset of B as well, and I rewrite everything. Or sometimes I realise B and C differ in one dimension, and A and B in another. And that implies there's a fourth kind of thing with both properties.

Do this enough and your code ends up in an entirely unrecognisable place from where you started. But very, very beautiful.

stevoski · 13 days ago
> What surprised me was how much the ugly first version taught me that planning never could.

Fred Brooks, author of “The Mythical Man Month” wrote an essay called “Plan to Throw One Away” in 1975.

He argues much what you’ve described.

Of course, in reality we seldom do actually throw away the first version. We’ve got the tools and skills and processes now to iterate, iterate, iterate.

pinkmuffinere · 13 days ago
+1, if you can get positive feelings from doing something bad, i think that gives real improvement to one’s life. “The first step to getting good is being bad”.

Of course you’ll also maintain the satisfaction of doing something well.

aaronblohowiak · 13 days ago
>The hardest part is giving yourself permission to ship something you know is flawed.

https://wiki.c2.com/?PlanToThrowOneAway

grvdrm · 13 days ago
> The hardest part is giving yourself permission to ship something you know is flawed. But the feedback loop from real usage is worth more than weeks of hypothetical architecture debates.

Nice statement.

I think there is another equally pervasive problem: balancing between shipping something and strategizing a complete "operating system" but in the eyes of OTHER stakeholders.

I'm in this muck now. Working with an insurance co that's building internal tools. On one had we have a COO that wants an operating model for everything and what feels like strategy/process diagrams as proof of work.

Meanwhile I am encouraging not overplanning and instead building stuff, shipping, seeing what works, iterating, etc.

But that latter version causes anxiety as people "don't know what you're doing" when, in fact, you're doing plenty but it's just not the slide-deck-material things and instead the tangible work.

There is a communication component too, of course. Almost an entirely separate discipline.

I've never arrived at acceptable comfort on either side of this debate but lean towards "perfect is the enemy of good enough"

nly · 12 days ago
Depends what "doing it badly" means.

The most important aspect of software design, at least with respect to software that you intend not to completely throw away and will be used by at least one other person, is that it is easy to change, and remains easy to change.

Whether it works properly or not, whether it's ugly and hacky or not, or whether it's slow... none of that matters. If it's easy to change you can fix it later.

Put a well thought out but minimal API around your code. Make it a magic black box. Maintain that API forever. Test only the APIs you ship.

dgb23 · 13 days ago
I guess the important (and hard) part is to not make a categorical error and mix up design of high level functionality and UI with the plumbing underneath it.

The plumbing also needs iteration and prototyping, but sound, forward looking decisions at the right time pay dividends later on. That includes putting extra effort and thinking into data structures, error handling, logging, naming etc. rather earlier than later. All of that stuff makes iterating on the higher levels much easier very quickly.

bionsystem · 13 days ago
I completely agree and went by the proverb "everything worth doing is worth doing poorly" about a year ago now, it took some time for it to sink in but now I'm actually productive. My main blocker was waiting for other's approval, now I feel a lot more free.
zipy124 · 13 days ago
I've forgotten where I've seen this now, but one of the best developers I've seen wrote code by writing it, deleting everything, then writing it again, sometimes many times in order to get their final code. I found it fascinating.
xmcqdpt2 · 13 days ago
To me, that is the only way to write code.

One of my friends calls it "development-driven development".

aryehof · 13 days ago
> ship something you know is flawed

There is a difference between shipping something that works but is not perfect, and shipping something knowingly flawed. I’m appalled at this viewpoint. Let’s hope no life, reputation or livelihood depends on your software.

moring · 13 days ago
This is the right point to mention "How Big Things Get Done" by Bent Flyvbjerg. You can iterate your design without putting lives into danger.

"I spent weeks planning" -- using the terminology from that book: No, you didn't spend weeks planning, you spent weeks building something that you _thought_ was a plan. An actual plan would give you the information you got from actually shipping the thing, and in software in particular "a model" and "the thing" look very similar, but for buildings and bridges they are very different.

vrighter · 13 days ago
For my personal projects, which are under zero time constraints, I usually build an ugly version, to figure out the kinks. Then delete it and write a proper one using the lessons I learned the first time.
Madmallard · 13 days ago
I want to do this with a multiplayer online game I'm working on but you just can't do it wrong and have it actually work though :/
sublinear · 13 days ago
Yes, but the experience you're describing is just getting stuck due to insufficient experience architecting a solution.

Not saying this is you, but it's so easy for people to give up and sour into hyper-pragmatists competing to become the world's worst management. Their insecurities take over and they actively suppress anyone trying to do their job by insisting everything be rewritten by AI, or push hard for no-code solutions.

KolibriFly · 13 days ago
Planning feels safe because it lets you postpone judgment
cik · 13 days ago
This nails my issue with systems design insanity. There are so many things you learn through living with systems that are correct, though counterintuitive.

Do a thing. Write rubbish code. Build broken systems. Now scale scale. Then learn how to deal with the pattern changing as domains specific patterns emerge.

I watched this at play with a friend's startup. He couldn't get response times within the time period needed for his third party integration. After some hacking, we opted to cripple his webserver. Turns out that you can slice out mass amounts of the http protocol (and in that time server overhead) and still meett all of your needs. Sure it needs a recompile - but it worked and scaled, far more then anything else they did. Their exit proved that point.

TheAlchemist · 13 days ago
"Doing it badly is doing the thing."

This one works for me, and I've learned it from a post on HN. Whenever I feel stuck or overthink how to do something, just do it first - even with all the flaws that I'm already aware of, and if it feels almost painful to do it so badly. Then improve it a bit, then a bit, then before I know it a clear picture start to emerge... Feels like magic.

black_puppydog · 13 days ago
"Everything worth doing is worth doing badly."

Got me through many a rough spot.

8note · 13 days ago
it fits well enough into another frame - make it work, then make it pretty, then make it fast

if youre worried about doing it well, youre a step or two ahead of where you need to be

nlawalker · 13 days ago
My two favorite bits of wisdom in this vein:

Dan Harmon's advice on writer's block: https://www.reddit.com/r/Screenwriting/comments/5b2w4c/dan_h...

>You know how you suck and you know how everything sucks and when you see something that sucks, you know exactly how to fix it, because you're an asshole. So that is my advice about getting unblocked. Switch from team "I will one day write something good" to team "I have no choice but to write a piece of shit" and then take off your "bad writer" hat and replace it with a "petty critic" hat and go to town on that poor hack's draft and that's your second draft.

"The Gap" by Ira Glass: https://www.reddit.com/r/Screenwriting/comments/c98jpd/the_g...

>Your taste is why your work disappoints you... it is only by going through a volume of work that you will close that gap, and your work will be as good as your ambitions.*

tclancy · 13 days ago
Henry Rollins too.

'“One day, I’m gonna write that novel.” Pal? You better start tomorrow morning because the right time never happens. It’s when you boldly determine it. It’s like running on a rainy day. You’re fine once you get out there. The only difficulty is getting off the couch when you lace your shoes up.'

llbbdd · 13 days ago
I miss Harmontown dearly. He was always dropping solid-gold wisdom like this in the middle of otherwise borderline-incoherent rants.
gonzalohm · 13 days ago
Except you do this in a corporate setting and they will stop you the second it works. And then you are stuck maintaining a barely working version forever.

I learned this the bad way, but now I just lie and say it doesn't work until it's good enough for me

dbvn · 13 days ago
^^^ THIS ... If what you're building is useful, showing someone a prototype too early can cause the whole company to rush you to deploy.
olliepro · 13 days ago
Everyone's threshold is different. I aspire to "move fast and break things", but more often than not, I obsess over the rough edges.
josephg · 13 days ago
This is what it looks like when trust has broken down at a company. Management don't trust engineers when they say "this needs more time". And engineers don't trust management with the truth (it kinda works - we really could ship it now if we wanted to).

Remarkably common, but not inevitable. Thankfully there's plenty of workplaces which don't look like this.

And yeah, lying is certainly one way to get work done in a bad organisation. I'd much rather - if at all possible - to find and fix the actual problem.

rewgs · 13 days ago
I always try and keep in mind that we typically think of software as having three versions -- alpha, beta, and release -- but for it's considered even kind of "finished."

In my own work, this often looks like writing the quick and dirty version (alpha), then polishing it (beta), then rewrite it from scratch with all the knowledge you gained along the way.

The trick is to not get caught up on the beta. It's all too tempting to chase perfection too early.

KolibriFly · 13 days ago
And overthinking starts to feel less like diligence and more like avoidance
replooda · 13 days ago
"When in doubt, use brute force."
tstrimple · 13 days ago
> Whenever I feel stuck or overthink how to do something, just do it first - even with all the flaws that I'm already aware of, and if it feels almost painful to do it so badly. Then improve it a bit, then a bit, then before I know it a clear picture start to emerge... Feels like magic.

Funny how these things when done by a human is a positive and when done by an LLM is a negative. According to all the anti-llm experts... Humans generate perfect code on the first pass every time and it's only LLMs that introduce bad implementations. And this isn't a callout on this user in specific. It's a generalization to the anti-ai sentiment on HN. If incremental improvement works, incremental improvement works.

degamad · 13 days ago
> Funny how these things when done by a human is a positive and when done by an LLM is a negative.

> Humans generate perfect code on the first pass every time and it's only LLMs that introduce bad implementations.

That's not what the "anti-llm experts" are saying at all. If you think of LLMs as "bad first draft" machines, then you'll likely be successful in finding ways to use LLMs.

But that's not what is being sold. Atman and Amodei are not selling "this tool will make bad implementations that you can improve on". They are selling "this tool will replace your IT department". Calling out that the tool isn't capable of doing that is not pretending that humans are perfect by comparison.

longnguyen · 13 days ago
The essay is quite similar to this one from strangestloop.io[0]

[0]: https://strangestloop.io/essays/things-that-arent-doing-the-...

HendrikHensen · 13 days ago
Honestly, it feels like straight up plagiarism. When I saw the title, I thought I knew which website was posted because I had seen it before. When I clicked, I saw an unfamiliar website and was surprised that it was posted 3 days ago rather than a couple months ago.

The contents are so similar, that it cannot be coincidence. It really seems like the author of this blog simply plagiarized the strangestloop post without referring to it at all...

Goofy_Coyote · 12 days ago
Same thoughts here. I gave it the benefit of the doubt, thought it might be an adoption for a specific field, or an extension of thought, or maybe a fun twist or something.

This is a tasteless copy.

lessconfused · 13 days ago
I’m glad someone mentioned this. Couldn’t remember where I’d read this but knew there was something really similar.
jgeada · 13 days ago
At a previous company we used to joke that most of management was a "problem admiration society":

They'd love to talk about problems, investigate them from all angles, make plans on how to plan to solve the problem, identify who caused it or how to blame for it, quantify how much it costs us or how much money we could make from solving it, everything and anything except actually doing something about it.

It was never about doing the thing.

falcor84 · 13 days ago
That definitely happens, but I wish had the displeasure of working at companies that were enamored with the solution they have, and couldn't be convinced to look again at the problem and see how it's changed since they originally solved it. As with most anything, the best approach is to somewhere in the middle, combining a love for the problem with a drive to repeatedly solve it. And one of the best tools for that seems to be dog-fooding, when the people in the company really want to use it for themselves.
KolibriFly · 13 days ago
What's ironic is that all that analysis is often framed as being responsible or strategic, when in reality it's risk avoidance dressed up as rigor
nlawalker · 13 days ago
Oh man, I feel this.

Somewhat related, I've learned that when you're the one who ends up doing the thing, it's important to take advantage of that. Make decisions that benefit you where you have the flexibility.

theshrike79 · 12 days ago
This is an excellent piece about how doing something is better than just talking about it: https://www.joelonsoftware.com/2002/01/06/fire-and-motion/
dzonga · 13 days ago
you remove "managers" then simply rate of output goes up.

specially the middle managers i.e engineering managers, senior engineering manager, director of engineering duh duh

there's less coordination to do - to keep managers up to date.

the most functional software orgs out there - don't have managers

bandrami · 13 days ago
Output goes up until everything fails catastrophically
esafak · 13 days ago
Which orgs did you have in mind?
hahahahhaah · 13 days ago
That is OK if that fed into a decision to do another thing now because of <good reasons>.
augusteo · 13 days ago
I used to think this. Then I noticed how often "preparation" became its own infinite loop.

At work we built something from a 2-page spec in 4 months. The competing team spent 8 months on architecture docs before writing code. We shipped. They pivoted three times and eventually disbanded.

Planning has diminishing returns. The first 20% of planning catches 80% of the problems. Everything after that is usually anxiety dressed up as rigor.

The article's right about one thing: doing it badly still counts. Most of what I know came from shipping something embarrassing, then fixing it.

jstanley · 13 days ago
I think you may have slightly misunderstood the article.

"Preparation" isn't mentioned explicitly, but by my reading it would come firmly under "is not doing the thing".

olliepro · 13 days ago
Getting everyone to fall in love with the thing is not doing the thing... learned this as a data scientist brought in to work on a project which ended soon thereafter. A team of 20 people spent 1.5 years getting people to love an idea which never materialized. Time was wasted because the technical limitations and issues came too late... it died as a 40 page postmortem that will never see daylight.
dakiol · 13 days ago
Is it always like that? I worked in teams where we had some planning beforehand (months, like in your example). We shipped just fine and the product started to bring money. I guess it depends, as usual.
dwd · 13 days ago
Rimmer planning for his astro-navigation exam sums up the "infinite loop" of preparation.

From the Red Dwarf book and quoted previously:

https://news.ycombinator.com/item?id=28033747

tshaddox · 13 days ago
I agree that planning has diminishing returns, yet simultaneously nearly every software project I’ve been part of has been under-planned and ended up worse off for it.
josephg · 13 days ago
I think the original agile people had the right idea. Do some planning, not too much. Then write some code - but not too much. Then take what you've learned from implementing and replan.

Or if you want another way of thinking about it, code isn't only useful for deployment. Its also a tool you can use during the planning process to learn more about the problem you're trying to solve. When planning, the #1 killer is unknown unknowns. You can often discover a lot of them by building a super simple prototype.

KolibriFly · 13 days ago
Once something exists, decisions collapse around reality instead of possibility
sghiassy · 13 days ago
That’s not a zero-sum game.

Pivoting to zero-planning, would also have a basket of flaws.

jillesvangurp · 13 days ago
Analysis paralysis is a thing. And as the article makes very clear, there are a lot of ways to get stuck doing anything else then the one thing you are supposed to be doing.

The way to break through that is indeed to start doing. Forget about the edge cases. Handle the happy path first. Build something that does enough to deliver most of the value. Then refine it; or rebuild it.

Seriously. The cost of prototyping is very low these days. So try stuff out and learn something. Don't be afraid to fail.

One reason LLMs are so shockingly effective for this is that they don't do analysis paralysis; they start doing right away. The end results aren't always optimal or even good but often still good enough. You can optimize and refine later. If that is actually needed. Worst case you'll fail to get a useful thing but you'll have a lot better understanding of the requirements for the next attempt. With AI the sunk cost is measured in tokens. It's not free. But also not very expensive. You can afford to burn some tokens to learn something.

A good rule is to not build a framework or platform for anything until you've built at least three versions of the type of thing that you would use it for. Anything you build before that is likely to be under and overengineered in exactly the wrong places. These places make themselves clear when you build a real system.

retropragma · 13 days ago
Just don't mistake prototyping for doing the thing.

Good enough is a self limiting fallacy.

A prototype failing to attract fans doesn't prove a lack of a market for the job the prototype attempts to perform. It only proves the prototype, as it stands, lacks something.

Beware quitting early. All good builders do.

arscan · 13 days ago
This is very similar to [1] (as discussed here [2]). It is a good message though, which is why I remember the earlier post at all.

1. https://strangestloop.io/essays/things-that-arent-doing-the-...

2. https://news.ycombinator.com/item?id=45939431

crazygringo · 13 days ago
The discussion is going to be so similar, this really ought to be marked as a [dupe].
Goofy_Coyote · 12 days ago
It’s eye-brow-raisingly similar to StrangestLoop’s original article
tibbar · 13 days ago
On the other hand: sometimes doing the thing is itself a bad idea. One reason I continue to insist on design docs and code review is that I'd rather find this out ahead of time rather than deal with the damage afterwards.

In the GenAI era, "doing the thing badly without planning" has become so easy that some counterweight is needed.

storystarling · 13 days ago
The happy path is trivial now but I've found the gap between prototype and production is actually wider. You end up spending all your time handling non-determinism and latency issues that simply didn't exist with deterministic code. It seems like the real engineering challenge is just getting the unit economics to work.