<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: needfish</title><link>https://news.ycombinator.com/user?id=needfish</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 18 Aug 2026 07:15:20 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=needfish" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by needfish in "Software Engineering fundamentals matter more"]]></title><description><![CDATA[
<p>Hi, CS graduate here. during my post-graduation unemployed year I have been wrestling with this question a lot. The answer is that there is none - the research on the practice of translating requirements into code has stopped in the 1970s with Structured Programming (Dijkstra) and Problem Frames (Jackson). There is a certain inspiration people had with reusable patterns of problems a la Alexander, but after some time people got lost in the Java enterprise world and started making "design patterns" (which has very much dominated the online space and I cannot search properly for general software design anymore). The second problem is with Clean Code, which to me is a really bad set of "if you know you know" hand-wavy advice that is purposefully vague, because observable, actionable advice is actually very hard to come by.<p>I think when people say software engineering, they confuse the high level designs (server, caching, db, etc. generally interaction constraints) and the lower level designs (modules, abstractions, classes, data structure design). There is a lot of content on the former but really few on the latter - which is some people cannot write new code, but can work on existing systems fine. Two main problems is 1. How to break down the problem at hand and 2. Organizing data into abstractions, and often creating new ones.<p>For (1) the advice everyone resorts to is "just do more" and rely on pattern recognition, because you can't really break down a thing you haven't seen nor can relate to what you've seen before. But there is [A Framework for Decomposition in Computational Thinking](<a href="https://www.researchgate.net/publication/334579725_A_Framework_for_Decomposition_in_Computational_Thinking" rel="nofollow">https://www.researchgate.net/publication/334579725_A_Framewo...</a>) that's the best attempt at it so far in my opinion. Some other approaches involve observation from ideal user flow and software ideal behaviour, or UI wireframing to see what elements should be there.<p>For (2), this also has the problem of organizing (which code goes into which file, which function does this belong to) and naming. For organizing data, I will recommend [The Many Forms of a Single Fact](<a href="https://www.bkent.net/Doc/manyform.htm" rel="nofollow">https://www.bkent.net/Doc/manyform.htm</a>) and the first chapter of [Data and Reality](<a href="https://cmpct.info/~calvin/Papers/Data%20and%20Reality.pdf" rel="nofollow">https://cmpct.info/~calvin/Papers/Data%20and%20Reality.pdf</a>) to see how impossible it is to create exactly correct representations in code. In areas that's entirely inside the box (e.g graphics) people don't often deal with messy representations of real world domains, but in business software they will do much more.<p>On the naming side, the first chapter of [Elements of Clojure](<a href="https://elementsofclojure.com/" rel="nofollow">https://elementsofclojure.com/</a>) was a really good attempt, making me realize it is way deeper into philosophy than anyone would like to wander in.<p>That said, the way software engineering discussion has been so far is very much influenced by the programming languages of the time (see Java), and so my recommendation is to try to learn concepts of organization independently, and see what its workaround is in your active language (e.g algebraic data type is sometimes useful, and people try to do it with sealed classes in Kotlin or interfaces in TypeScript). Once you have a good grasp of one tool (with all their warts, they all have pains), you'll find the capability to experiment.</p>
]]></description><pubDate>Mon, 17 Aug 2026 02:55:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=49326070</link><dc:creator>needfish</dc:creator><comments>https://news.ycombinator.com/item?id=49326070</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49326070</guid></item><item><title><![CDATA[New comment by needfish in "Threescaper: A website for loading Townscaper models into Three.js"]]></title><description><![CDATA[
<p>This might be what push me to buy Townscaper</p>
]]></description><pubDate>Sun, 16 Jun 2024 08:54:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=40695660</link><dc:creator>needfish</dc:creator><comments>https://news.ycombinator.com/item?id=40695660</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40695660</guid></item><item><title><![CDATA[New comment by needfish in "AI for math resources, and erdosproblems.com"]]></title><description><![CDATA[
<p>As a college student learning Web stuff on my own, this is a pretty nice thing to spend summer on.</p>
]]></description><pubDate>Sun, 16 Jun 2024 08:43:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=40695624</link><dc:creator>needfish</dc:creator><comments>https://news.ycombinator.com/item?id=40695624</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40695624</guid></item><item><title><![CDATA[New comment by needfish in "Show HN: YouTube Is Great Again"]]></title><description><![CDATA[
<p>Looks like SocialFocus, but more extensive options and only for YouTube. Seems great.</p>
]]></description><pubDate>Tue, 23 Apr 2024 14:35:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=40132466</link><dc:creator>needfish</dc:creator><comments>https://news.ycombinator.com/item?id=40132466</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40132466</guid></item></channel></rss>