Hacker News new | ask | show | jobs
by WesolyKubeczek 28 days ago
> Key has been to spend a fair amount of time on initial overall design document, which is split into tangible and limited phases.

> For each phase an implementation plan is made. At the end, a summary document of what was delivered and what was discovered.

> I do check the documents, and what they're doing. I also check the tests, some more thorough.

Sounds like programming, but with extra steps.

2 comments

It's software development, but with much less actual programming (in my case none).

When I said I check the documents, the initial design document was the only I really took a hard look at. The intermediary I just skimmed, looking for red flags or something I had forgotten to tell them. Those documents served as a basis for their work, and as a record of what was done.

Overall I spent perhaps a few hours on each project, over the course of a few days. I'd check in every half hour or whenever I had time, tell Claude "Great, let's do the next deliverable", or GPT "We're done with phase 4, please do a detailed code review, reference the design document and documentation of previous phases". Then I'd leave them cooking.

Also the least fun part of development. Maybe I’m the weird one but I like to just jump right in, planning every last detail before writing code is boring.
For me, the fun in programming is sometimes to actually write code, solving a problem in a specific way or try some new approach. Other times the fun is to create something that works, and the code is more a means to an end.

The first case I'll probably still do by hand, like handmade vases despite factory made are cheap and readily available.

For the second case I think these newfangled tools have made it even more fun, since writing lots of boiler plate, repetitive event handles and whatnot is not my idea of fun.

> I think these newfangled tools have made it even more fun, since writing lots of boiler plate, repetitive event handles and whatnot is not my idea of fun

That’s what code generators, snippets plugins, macros, and the old copy-paste are here for. I wonder if you were using notepad to code. Because even nano had macros.

Those tools only get you so far, especially if you write something novel to you. Using a new framework or programming language say.

Sometimes using a new framework or programming language is the fun part.

But sometimes it's just the best way of solving a problem incidental to the fun part.

One of the two projects I vibed included a web frontend. I didn't touch a single line of HTML, CSS or JavaScript of the frontend. And I didn't touch the API on the backend. I'm not a web dev, so this isn't something I've got snippets for or whatever, and in this case wasn't the interesting part.

The interesting part for me in that case was making a tool that could help us, not the details how exactly how that was done.

For someone who did a lot of webdev 20 years ago and hasn't done much in the last decade, and does mostly backend development now, being able to vibe code up a quick web or text-mode UI is killer. It might look like crap and not be very maintainable, but who cares - it's a temporary dashboard we'll throw away next quarter when we're done with our migration.
> The interesting part for me in that case was making a tool that could help us, not the details how exactly how that was done.

And I wouldn’t argue about the economics of getting a MVP out. But with software, you often got one happy path and myriads way of getting into an incoherent state (and crashing early would be a boon in this case) and/or returning the wrong response. When you care about failure, you also care that your code is semantically right. The devil is very much in the details, especially if you have N>1 users.

Getting thing dones for me include a high confidence that the code will do the right thing. And that’s means reviewing each line and checking the semantics (only when it’s a few line of code) or building a test harness and making sure I handle contracts and invariants.

Snippets, Code Generators, and Copy-Paste gives me sample that I can trust, although I may need to edit. But LLM doesn’t. And I’m doubly doubtful when it’s something I’m not familiar with.

> planning every last detail before writing code is boring

Not only that but you can't really plan everything. It is impossible. Without LLMs, with every line of code you are making a decision or discovering something new that must be dealt with or realizing how the current thing might impact something else and so on.

There is no way for a programmer to consider all of these little things ahead of time and if an attempt is made, it will take as long as actually writing that code.

> Without LLMs, with every line of code you are making a decision or discovering something new that must be dealt with or realizing how the current thing might impact something else and so on.

Part of this is true, part of it the agents catch at least a non-trivial portion of. If you prompt it to do a review, especially with a specific angle like ensuring sustained write performance, or how it will work when the future extensions are implemented, they do often catch a lot of issues.

I agree you lose a fair bit of the sense of "it feels like I'm doing something wrong", or "this doesn't seem optimal" etc. I think the skill in using these tools is to determine when you need that control and where it doesn't really matter.