This Hacker News discussion explores various facets of the software development process, touching upon productivity, creativity, the role of AI, and personal well-being. Here's a summary of the key themes:
The Nature of Software Development: Craft vs. Plumbing
A significant portion of the discussion revolves around the analogy of software development being either a creative writing endeavor or a plumbing task. This sparks debate about the inherent nature of the work and how developers perceive themselves.
- "I love how we developers see ourselves like creative writers instead of plumbers" - siva7
- "Some jobs are more like plumbing, some more like creative writing, some more like planning and architecture. It really depends on the project." - RealityVoid
- "Well it is quite literally writing, and fairly often starting with a blank page (file) and then doing a lot of editing." - frou_dh
- "It depends on whether you are working for someone or building for yourself. If you work for someone, you are essentially plumbing... Now, if you are building something for yourself, you are the creative writer." - adithyassekhar
- "It's a spectrum. Most projects span the entire spectrum. Lots of boring plumbing work, and a little bit of brilliant algorithmic work." - woadwarrior01
- "Both are crafts, full of art and love." - danjl
Overcoming Developer's Block and Inertia
A recurring theme is the struggle with developer's block and the strategies employed to overcome it. This includes both traditional methods and the emerging role of AI.
- "“What next?” can overcome inertia quite easily." - JimDabell
- "That and I find it’s usually easier to start with a shitty first attempt that kind of works that you’re then refactoring" - petesergeant
- "If my brain is totally blocked, perhaps after half day of meetings, I do sometimes take a smaller local model, explain a simple task to it, and let it try to implement to my specs. At this point I'm usually annoyed and engaged enough to get back in the zone." - ekidd
- "If a human is available, 30 minutes of pairing works even better." - ekidd
- "We are being constantly pushed to ship code at faster and faster rates. AI has only hastened the process. If you want to learn anything new you have to slow it down, push back against all the forces urging you to do more, ship more, make more money." - meander_water
- "To overcome this, I ask Claude Code to implement the feature, figuring out some details but leaving others for Claude to decide. 'Ironically' because I usually rewrite almost everything it generates (sans the file and class names, sometimes). But when I describe the idea enough to give Claude some chance of implementing it, I refine it and start planning the high-level implementation. Then the file of LLM slop, even though I have to rewrite most of it, is much less overwhelming than a blank file." - armchairhacker
- "When faced with a big task and not knowing where and how to start, a trick I like is writing something crappy that is roughly a step in the right direction." - kryptiskt
- "when stuck, write debugging infrastructure." - EdwardCoffin (referencing Oxide and Friends podcast)
- "Two things that help me: have a good boilerplate and ship things that do nothing." - hoistbypetard
- "I find if I just write some code even slightly related to the goal, even if it’s complete garbage that gets deleted later, then I get unstuck." - supersparrow
- "some of my best work has been done the second time around (i.e. the first pass was just doing whatever hacky, exploratory code I needed to do in order to get the feel and shape of the thing, and then the second pass was doing it for real once I had figured it out)" - wilkystyle
- "Simplify the mental model of the code, product, etc. Discuss it with someone." - ruslan_sure
- "Being able to force a minor draft that I can begin tweaking to overcome dev or writers block." - tomrod
- "Using a LLM was a great way to overcome this and get a MVP that I could start evolving." - MarkSweep
- "A good defense against this is borrowing stuff from your prior projects, alongside eventually creating templates for the most common stuff." - KronisLV
The Importance of Breaks, Rest, and Well-being
Several users emphasize the critical role of rest, breaks, and maintaining a sustainable pace for long-term productivity and mental health.
- "take breaks when your body tells you to. It's an absolute killer if you force yourself to work on your projects just because there's stuff on your to do list, new issues on Github, or whatever. Just stop working if you don't feel it." - Kovah
- "Go to sleep. Now. Then you wake up knowing immediately what to do." - Martin_Silenus
- "Sleep restores you. Exercise is the spark." - esperent
- "Good exercise also contributes to good sleep." - mikepurvis
- "As I've gotten older, instead of working half the night on a difficult end-of-day problem that I'm stuck on, I just set it aside at the end of the day and by the time I start back up in the morning, I've got a good idea how to solve it." - eschneider
- "Rest is essential." - aswanson
- "The key is to be in only one mode at a time and to avoid getting stuck in any single one. Based on nature of the work, you might switch two or three times a day. And always know the next two immediate steps; if you don't, that's your signal to switch." - wseqyrku
- "walking during rest periods, unpopular as the idea may be. Incidentally, the relaxed activity of shaving can be a fruitful source of minor ideas" - libraryofbabel (quoting JE Littlewood)
- "what sleep or rest gives me isn't so much a new insight but just the gumption to make a decision or grind through what I know needs to be done." - patrick451
- "Also exercise. And/or take a nap." - willmadden
- "walks and sleep I found meditation to be really helpful; you often can get the benefits, ideas-generation-wise, of a full-night sleep doing solid 30-minute session." - BinaryIgor
- "even a 10m zazen session is helpful. Also, a 20m nap can be surprisingly restorative. Physical movement (even a couple min of stretching) goes a long way, as does changing the environment (switching rooms, and/or writing design notes by hand instead of typing)." - chrisweekly
- "intermittent chores... helps you to relax while being productive and putting your mind at ease from the main task you are focusing on otherwise." - wseqyrku
The Role and Usage of AI in Development
The discussion acknowledges the growing influence of AI tools, particularly Large Language Models (LLMs), in assisting developers, especially in overcoming initial hurdles and generating code.
- "I don't use models to write serious code. But if my brain is totally blocked, perhaps after half day of meetings, I do sometimes take a smaller local model, explain a simple task to it, and let it try to implement to my specs." - ekidd
- "For every piece of generated code you accept, scrutinize every line, ask clarifying questions, ask for alternate implementations, ask what the tradeoffs are." - meander_water
- "I hate to turn everything into a conversation about AI, but this essay maybe explains best what LLMs have done for me recently." - lordnacho
- "LLM lets me do "one whole step" at a time." - lordnacho
- "I let the LLM look at the code and ask it to implement some change. It works pretty well with Claude Code. Much better than cursor, which is a step up from copilot." - lordnacho
- "When faced with a big task and not knowing where and how to start, a trick I like is writing something crappy that is roughly a step in the right direction." - kryptiskt (This sentiment is echoed in the use of AI for quick drafts).
- "This is the most useful to me [of LLMs]. Being able to force a minor draft that I can begin tweaking to overcome dev or writers block." - tomrod
- "Using a LLM was a great way to overcome this and get a MVP that I could start evolving." - MarkSweep
- "Naming was often my biggest block. Turns out the AI is fantastic at choosing good names, so that block is largely obviated these days." - danjl
- "Ironically, I overcome developer's block on new features with AI. I ask Claude Code to implement the feature, figuring out some details but leaving others for Claude to decide." - armchairhacker
Planning, Structure, and Definition of Done
Several participants highlight the importance of having clear plans, structured goals, and defined "done" criteria to maintain direction and clarity.
- "I think a lot of this is addressed by having a definition of done and more generally being explicit about quality expectations." - duncanfwalker
- "I've been experimenting with writing DoDs for anything longer than an hour's work... It helps. I think there's also something to setting structured goals, and sequencing mid-term sub-projects." - RossBencina
- "It helps. I think there's also something to setting structured goals, and sequencing mid-term sub-projects. If you can define scope and definition of done for the current sub-project then you can be clear on what is important now, and what you can defer for a later phase." - RossBencina
- "I prefer to keep things granular. Like: add the endpoint; validate the input; return sample data; connect to the db and return something from it;…. It’s easier to go with small wins. I have the plan/design/architecture to keep me pointed in the right direction." - skydhash
- "I start to experiment with coding agents to try some things to make me unstuck. These are cheap to try. Then, the outcome is either "wow, this can actually work" or "but this is bullshit, and will never work, let me do it myself the right way!" Win/win." - atemerev
- "I find it helps to start a project using my good boilerplate then set up builds and releases (so for web projects, put them online) so that the page doesn't look so blank anymore, and I can see my progress in "releases" even if they're just for me/others contributing." - hoistbypetard
The Nuances of Contributing to Dependencies
The discussion touches on the practicalities and philosophical aspects of contributing back to open-source dependencies, with differing views on when and how this should be done.
- "It is tempting to start filling in the missing docs, but try to resist that temptation. Better to make minimal personal notes for now and, after you’ve made good progress, considering scheduling time to contribute some docs to the dependency." - (quoted from article, debated in comments)
- "Scheduling to contribute later will almost never work. Either I do it now or never." - baduiux
- "I try to think in terms of owing the dependency a contribution as a small payment for using it, and this bugs me until I do it. But, sure, better to contribute docs sooner rather than not at all." - glynnormington