TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

How to Build Good Software

1016 pointsby jingwenalmost 6 years ago

51 comments

mr_tristanalmost 6 years ago
This struck a chord with me: &quot;Software Is about Developing Knowledge More than Writing Code&quot;<p>I&#x27;ve experienced more issues caused by management passing around tasks between teams and never paying attention to knowledge and knowledge transfer.<p>What&#x27;s amazing, is that in over 18 years as a software engineer, I&#x27;ve seen this so many times. Teams will function well, then the institution tries to change. Often they will try to open up the &quot;innovation&quot; by throwing money at R&amp;D, basically trying to add bodies in order to grow. Then you have tons of teams, and communication becomes very challenging, so then they grow some kind of &quot;task management&quot; layer. Management that never understands who actually _knows_ something, just tracks how much &quot;theoretical bandwidth&quot; they have and a wishlist of features to create. And then the crapware really starts flowing. And then I get bored and move on to the next place.
评论 #20735306 未加载
评论 #20734957 未加载
评论 #20735076 未加载
评论 #20737460 未加载
评论 #20736175 未加载
评论 #20739413 未加载
评论 #20736541 未加载
评论 #20737725 未加载
评论 #20739515 未加载
评论 #20738405 未加载
评论 #20735521 未加载
stygiansonicalmost 6 years ago
Some good tidbits from the government perspective on software development:<p>“<i>Beware of bureaucratic goals masquerading as problem statements. “Drivers feel frustrated when dealing with parking coupons” is a problem. “We need to build an app for drivers as part of our Ministry Family Digitisation Plans” is not. “Users are annoyed at how hard it is to find information on government websites” is a problem. “As part of the Digital Government Blueprint, we need to rebuild our websites to conform to the new design service standards” is not. If our end goal is to make citizens’ lives better, we need to explicitly acknowledge the things that are making their lives worse.</i>”
评论 #20734813 未加载
jrumbutalmost 6 years ago
I thought &quot;what a bold title, if someone&#x27;s figured it out we can just close HN&quot; and upon reading, hey it&#x27;s not far off.<p>The following is a wonderful point I have hardly ever heard said directly:<p>&quot;The main value in software is not the code produced, but the knowledge accumulated by the people who produced it.&quot;
评论 #20735219 未加载
评论 #20735080 未加载
iEchoicalmost 6 years ago
&gt; Reusing software lets you build good things quickly<p>It also introduces unknown amounts of debt and increases the likelihood that you&#x27;ll end up with intractable performance&#x2F;quality&#x2F;velocity problems that can only be solved by re-writing large portions of your codebase.<p>This can be a dangerous cultural value when it&#x27;s not presented with caution, which it isn&#x27;t here. I think it&#x27;s best to present it alongside Joel Spoelsky&#x27;s classic advice: &quot;If it’s a core business function — do it yourself, no matter what&quot;.<p><a href="https:&#x2F;&#x2F;www.joelonsoftware.com&#x2F;2001&#x2F;10&#x2F;14&#x2F;in-defense-of-not-invented-here-syndrome&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.joelonsoftware.com&#x2F;2001&#x2F;10&#x2F;14&#x2F;in-defense-of-not-...</a>
评论 #20737760 未加载
评论 #20738190 未加载
评论 #20752839 未加载
nneonneoalmost 6 years ago
I found this to be an incredibly accessible and easy to read guide for software development. It’s a very short read - just a few minutes - but it’s full of practical examples and written in a way that speaks to non-engineers (like bureaucrats). If you are a non-technical person handling software stuff, this article should definitely be high on the reading list.<p>The author seems like an unknown in the software development world, but they’re one of the managers for Singapore’s fairly successful digital government initiative. So it does feel safe to say they have some experience.
评论 #20735502 未加载
tonyalmost 6 years ago
Nice post! Agreed on keeping the initial stuff simple as possible.<p>In python, I typically follow a pattern of keeping stuff in __name__ == &#x27;__main__&#x27; block and running it directly, then splitting to functions with basics args&#x2F;kwargs, and finally classes. I divide into functions based on testability btw. Which is another win, since functional tests are great to assert against and cover&#x2F;fuzz with pytest.mark.parameterize [1]<p>If the content of this post interested you: <i>Code Complete: A Practical Handbook of Software Construction</i> by Steve McConnell would make good further reading.<p>Aside: If the domain .gov.sg caught your eye: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Civil_Service_College_Singapore" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Civil_Service_College_Singapor...</a><p>[1] <a href="https:&#x2F;&#x2F;docs.pytest.org&#x2F;en&#x2F;latest&#x2F;parametrize.html" rel="nofollow">https:&#x2F;&#x2F;docs.pytest.org&#x2F;en&#x2F;latest&#x2F;parametrize.html</a>
评论 #20752856 未加载
9nGQluzmnq3Malmost 6 years ago
The article appears to be written by Singaporean prime minister Lee Hsien Loong&#x27;s son, Li Hongyi.<p><a href="http:&#x2F;&#x2F;theindependent.sg&#x2F;li-hongyi-singapore-has-a-lot-of-problems-but-we-have-political-stability-and-resources&#x2F;" rel="nofollow">http:&#x2F;&#x2F;theindependent.sg&#x2F;li-hongyi-singapore-has-a-lot-of-pr...</a>
评论 #20735626 未加载
评论 #20734928 未加载
steventhedevalmost 6 years ago
Regarding &quot;Seek Out Problems and Iterate&quot;, it&#x27;s a bit of an understatement how important this is. I&#x27;ve invested a lot of time helping my coworkers understand the distinction between tasks and problems. The end goal being only tracking problems in the ticketing system. It&#x27;s not easy to do this and it takes constant effort, but it pays off very quickly. I&#x27;ve yet to see a real &quot;problem&quot; ticket stay unresolved for a long time, whereas &quot;task&quot; tickets tend to stay around until they&#x27;re either irrelevant or they get closed after getting kicked between a few people.<p>A good example of this is:<p>- Add worker thread for X to offload Y<p>When the actual problem is more along the lines of:<p>- Latency spikes on Tuesdays at 3pm in main thread<p>Which may be caused by a cronjob kicking off and hogging disk IO for a few minutes.<p>A good rule of thumb I&#x27;ve found is that task tickets tend to have exactly one way of solving them, whereas problem tickets can be solved in many ways.
评论 #20737153 未加载
ak39almost 6 years ago
Building good software requires mainly achieving two things:<p>1. Making sure what you build is what was really requested (correct), and<p>2. Making sure what you&#x27;ve built doesn&#x27;t have a higher running &quot;cost&quot; than the thing it replaced (either manual process or old automated solutions).<p>Everything else, IME, is ancillary. Performance, choice of platform, frameworks, methodology to build, maintainability etc are sub-objectives and should never be prioritized over the first two objectives. I have worked on many projects where the team focussed mostly on the &quot;how to build&quot; parts and have inevitably dropped the ball on the &quot;what&quot; to build of the projects. Result: failure.<p>Sauce: personal experience with several years of different projects (n = 1; episodes = 20+ projects that have gone live and have remained live versus 100+ projects lying by the wayside).<p>Writing software is <i>not</i> easy.
评论 #20737885 未加载
siemprebalmost 6 years ago
&gt; 3. Hire the best engineers you can.<p>This is where most companies fail. Yes, they do want the best developers, but for the budget of an average junior&#x2F;medior dev.<p>For some reason most companies&#x2F;managers I worked for do not understand the financial impact of a not so good developer. Or the other way around; they fail to value the best developers and are unable recognize them.<p>I&#x27;ve worked for plenty companies where they let mediocre dev&#x27;s build a big app from scratch (including the architecture), in an Agile self managed team.. These are the codebases that always need to be rewritten entirely because they have become an unmanageble buggy mess of bad ideas and wrong solutions.
评论 #20736729 未加载
评论 #20737582 未加载
akerstenalmost 6 years ago
One of the principles the article highlights is that additional features make a software complex and therefore more likely to fail. This is true, but I&#x27;d argue it&#x27;s not for the reason the article claims.<p>The claim is:<p>&gt; Stakeholders who want to increase the priority for a feature have to also consider what features they are willing to deprioritise. Teams can start on the most critical objectives, working their way down the list as time and resources allow.<p>In other words, the argument is &quot;competing priorities in a large-scale project make it more likely to fail, <i>because stakeholders can&#x27;t figure out which ones to do first</i>.&quot; Actually, in this very paragraph, the author glosses over the real issue: <i>&quot;Teams can start on the most critical objectives, working their way down the list&quot;</i> - treating development as an assembly line input-to-output process.<p>I argue that it&#x27;s not time constraints that complex programs bad, but instead the mere act of thinking that throwing more developers at the work will make it any better. Treating the application as a &quot;todo list&quot; rather than a clockwork of engineering makes a huge difference in the quality of the work. When developers are given a list of customer-facing features to achieve, more often than not the code winds up a giant ball of if-statements and special cases.<p>So yes, I do agree that complex software is worse and more prone to failure than simple software - but not for the reason that there&#x27;s &quot;too much to do&quot; or that prioritizing is hard. Complex software sucks because it&#x27;s requirement-driven, instead of crafted by loving hands. No one takes the time to understand the rest of the team&#x27;s architecture or frameworks when just throwing in another special case takes a tenth of the time.
评论 #20734786 未加载
评论 #20735598 未加载
评论 #20735133 未加载
andy_pppalmost 6 years ago
I&#x27;ve personally been thinking about this for some time and wondering if in the real world this looks like building as much as possible at the database level and treating your DB as a state machine for your app, aiming to disallow whole classes of errors and communicating the design of the business logic at the SQL functions&#x2F;triggers&#x2F;data layer, separate from the API, Services, Programming Language, and Frontend layer(s).<p>This means that instead of lots of issues with business logic being separate from the data the business logic and data sit together and prevent your system from getting into bad states.<p>Thinking about this, maybe I just stole this thought from Derek Sivers: <a href="https:&#x2F;&#x2F;sivers.org&#x2F;pg" rel="nofollow">https:&#x2F;&#x2F;sivers.org&#x2F;pg</a>
评论 #20737722 未加载
nine_kalmost 6 years ago
All very good points. Don&#x27;t write code, solve the problem. For that, first understand the problem. Take time to reduce complexity, else you won&#x27;t be able to evolve. Gather knowledge along th he way.<p>This all takes a bird-eye view and a long perspective, very unlike quarter-results-driven development.
hnickalmost 6 years ago
This is great. So many quotable quotes. If only we could make it required reading for our clients!<p>This one struck me, because as soon as I read it I knew it was true yet had never considered it:<p>&gt; Most people only give feedback once. If you start by launching to a large audience, everyone will give you the same obvious feedback and you’ll have nowhere to go from there.<p>I&#x27;ve been on both sides of that fence and it rings true.
评论 #20736076 未加载
DantesKitealmost 6 years ago
Jesus Christ that’s a well-written article. There’s no fat to it. All signal, no noise.
smacktowardalmost 6 years ago
Write code. Not too much. Mostly test-covered.
评论 #20735187 未加载
lifeisstillgoodalmost 6 years ago
&gt;&gt;&gt; The hard limit to system complexity is not the quantity of engineering effort, but its quality.<p>This article is full of good ideas, an antidote to creeping corporate take over of software projects - make this required reading for software projects.
axilmaralmost 6 years ago
The initial proposition of the article, that software is bad because it follows the lifecycle &quot;gather requirements - write software - deliver it&quot; is simply wrong. There are huge projects in specialized domains that are delivered on time and on budget and use this approach.<p>The problem is lack of knowledge. The successful projects mentioned above did not have a lack of knowledge, and so they were finished successfully.<p>When there is a lack of knowledge, then it makes sense to use the iterative approach...as knowledge is slowly gathered, the software gets improved. As with all things in life!
评论 #20736693 未加载
zero_kalmost 6 years ago
I like the article, it gets to the point. I would, however, change this: &quot; 3. Hire the best engineers you can.&quot; to: &quot;3. Hire and work hard to keep the best managers and engineers you can.&quot; As they mention, accumulating knowledge is important. Keeping that knowledge around is therefore also important (and sometimes difficult). The best managers will know what technical debt is, how to handle pressure from higher-ups, and how to keep a team happy, healthy and productive.
lifeisstillgoodalmost 6 years ago
Years ago I wrote <a href="http:&#x2F;&#x2F;oss4gov.org&#x2F;manifesto" rel="nofollow">http:&#x2F;&#x2F;oss4gov.org&#x2F;manifesto</a> saying that governments needed to not only embrace OSS but that it is the only moral option to take.<p>Now we have government digital systems leading the charge across most western countries, and we have excellent polemics like this. I am just so happy to see this level of insightful ness at top levels of government.<p>I am so glad they listened to me :-)
ptidhommealmost 6 years ago
&gt; <i>Overall, good engineers are so much more effective not because they produce a lot more code, but because the decisions they make save you from work you did not know could be avoided.</i><p>This is spot on, and very much my experience (of the good engineers I&#x27;ve come across).<p>Kind of : management had planned extensive and painful testing of a component that turned out to be discarded entirely (not because of functionality reduction but because it was actually unecessary).
acdalmost 6 years ago
Keep it simple software should be open source. Government software often has similar demands as other countries. Share and reuse.<p>Reusing good modules and software will make the software work.<p>Kiss engineering still works keep it simple stupid. Make it as simple as possible. Simple software and systems are easy to maintain and understand.<p>Use modules as these can be swapped out.<p>Use proven boring technology such as SQL and JSON. Boring tech has been tried by others and generally works well.
评论 #20736142 未加载
soup10almost 6 years ago
&gt;The better your engineers, the bigger your system can get before it collapses under its own weight. This is why the most successful tech companies insist on the best talent despite their massive size.<p>Translation: the successful tech companies have so much poorly documented legacy enterprise spaghetti code and tooling that they need the best talent they can get just to make sense of it and maintain it
评论 #20737107 未加载
koevetalmost 6 years ago
The article lists the characteristics of a good engineer:<p><pre><code> * has a better grasp of existing software they can reuse * (has) a better grasp of engineering tools, automating away most of the routine aspects of their own job * design systems that are more robust and easier to understand by others * the decisions they make save you from work you did not know could be avoided </code></pre> I obviously concord with the analysis (not sure about the 10X myth). It also states that:<p><pre><code> * Google, Facebook, Amazon, Netflix, and Microsoft all run a dizzying number of the largest technology systems in the world, yet, they famously have some of the most selective interview processes </code></pre> This sounds a bit like a paradox to me. Given the current state of &quot;selective interview processes&quot; (algo riddles, whiteboard coding, etc.), none of the above traits can be easily evaluated in a candidate during an interview. On the other hand, these companies <i>do hire</i> stellar engineers: the technological supremacy of FAANG is irrefutable.
评论 #20736296 未加载
评论 #20736231 未加载
评论 #20736090 未加载
Silhouettealmost 6 years ago
Excellent article, well grounded in the reality of software development. New developers and managers would benefit from understanding the practical points made here as early as possible.<p>I do think perhaps there is too much emphasis on reuse and particularly cloud services. Ironically, this is partly for the reasons given elsewhere in the article. If you rely on outsourcing important things, you also naturally outsource the deep understanding of those important things, which can leave you vulnerable to problems you didn&#x27;t anticipate. Also, any integration is a source of technical debt, so dependencies on external resources can be more fragile than they appear, and if something you rely on changes or even disappears then that is a new kind of potentially very serious problem that you didn&#x27;t have to deal with before. Obviously I&#x27;m not advocating building every last thing in-house in every case, but deciding when to build in-house and when to bring something in can be more difficult than the article here might suggest.
einpoklumalmost 6 years ago
&gt; Software has characteristics that make it hard to build with traditional management techniques<p>Perhaps some software development techniques would work though...<p>&gt; The main value in software is not the code produced, but the knowledge accumulated by the people who produced it.<p>Those people go on to work on other things or for other organization. So, while that statement might have some truth to it, it&#x27;s still the case that the code has to be useful, robust, and able to impart knowledge to those who read it (and the documentation).<p>&gt; Start as Simple as Possible<p>That&#x27;s a solid suggestion to many (most?) software projects; but - if your goal is to write something comprehensive and flexible, you may need to replace it with:<p>&quot;Start by simplifying your implementation objectives as much as possible&quot;<p>and it&#x27;s even sometimes the case that you want to sort of do the opposite, i.e.<p>&quot;Start as complex as possible, leading you to immediately avoid the complex specifics in favor of a powerful generalization, which is simpler&quot;.
评论 #20739385 未加载
einhverfralmost 6 years ago
One additional principle is this:<p>When faced with a standard solution, use a standard component if you can. If you can&#x27;t use a standard component, build a standard component. Keep your components simple, well-understood, and easy to maintain.
pmontraalmost 6 years ago
Hiring the best engineers, technically-wise, is a good thing but it&#x27;s not enough. In my experience it&#x27;s better to hire somebody with a previous experience in the domain. Somebody that already built something similar or related. Those engineers will ask the right questions, make the customer think about the system in the right way, not lose time on worthless details. Even if the implementation is not shiny it will be working. It beats shiny but misguided. And if you can find great engineers with great skills, that&#x27;s even better.
unicornmamaalmost 6 years ago
After a brief visit and further readings, I’ve learned to admire Singapore’s 1st world transformation. I’m a absolutely in awe that a government body can produce such a high quality article.
opvasgeralmost 6 years ago
&gt; The root cause of bad software has less to do with specific engineering choices, and more to do with how development projects are managed.<p>...While I do agree that &quot;project-management&quot; is important, I think the tools we are using today are really underpowered to deal with complexity&#x2F;human-error - Which is the bigger problem IMO.
exabrialalmost 6 years ago
&gt; The main value in software is not the code produced, but the knowledge accumulated by the people who produced it<p>The problem is most CEOs see the binary as the asset, not the knowledge gained. I&#x27;ve tried to explain this concept to multiple startup CEOs, who hire outside development firms, for which it rarely works out for them.
zeckalphaalmost 6 years ago
&gt; Software has characteristics that make it hard to build with traditional management techniques; effective development requires a different, more exploratory and iterative approach.<p>Or the management techniques considered “traditional” are overlooking a century of iterative development outside of software. See Deming.
fooblitzkyalmost 6 years ago
The author is very cavalier about open source licenses - they seem to be implying you can just use open source code whenever you want, even for closed-source, proprietary applications. Whether or not that is true depends on the licenses involved.
driverdanalmost 6 years ago
#1 web rule: Don&#x27;t require JS to read an article.<p>This site is an empty page without JS.
评论 #20739213 未加载
mcgwizalmost 6 years ago
The lead image features two laptops and a desktop. And three hardcopies of code. All with a light-on-dark color scheme. I&#x27;d wager they had a bit of fun taking this programmery photo.
k__almost 6 years ago
&quot;Software Is about Developing Knowledge More than Writing Code&quot;<p>This is also the real problem with vendor lock-in.<p>You are more often locked in by the knowledge of your employees than by your tech stack.
edpichleralmost 6 years ago
What excellent article. It summarizes things that sometimes need decades to learn by ourselves. Reading books and good articles like this give us a shortcut for such wisdom.
wwarneralmost 6 years ago
`There is no such thing as platonically good engineering` +1
Orasalmost 6 years ago
&gt; 3. Hire the best engineers you can.<p>What is the definition of &quot;best engineers&quot;? Those with extensive experience? those who follow design patterns and coding standards religiously? those who solve algorithms on a whiteboard? I would like to see if there is a definition for this.<p>I would say build the right culture (collaborative, always learning from mistakes and revise decisions and no blame or pointing fingers).<p>You can get a bunch of great <i>coders</i>&#x2F;engineers _who follow code standards, break down codes to zillions of functions&#x2F;methods ... etc_ but will fail to work together and conflicts will raise quickly.
mychaelalmost 6 years ago
This reads like conventional wisdom. No one is going to argue against &quot;Hire the Best Engineers You Can&quot; and &quot;Start as Simple as Possible&quot;.
评论 #20735853 未加载
dajonkeralmost 6 years ago
This is beautiful, I feel like I should memorize the entire thing.
blue_devilalmost 6 years ago
Impressive that this comes from a Civil service college.
Aeolunalmost 6 years ago
Now, how do I convince my management this is a problem?
dwipurnomoalmost 6 years ago
I think only hire the best is wrong
kitsune_almost 6 years ago
Except for the 10x myth a fairly good article.
评论 #20735766 未加载
apoalmost 6 years ago
&gt; Surprisingly, the root cause of bad software has less to do with specific engineering choices, and more to do with how development projects are managed. The worst software projects often proceed in a very particular way:<p>&gt; The project owners start out wanting to build a specific solution and never explicitly identify the problem they are trying to solve. ...<p>At this point, it looks like the article will reveal specific techniques for problem identification. Instead, it wraps this nugget in a lasagna of other stuff (hiring good developers, software reuse, the value of iteration), without explicitly keeping the main idea in the spotlight at all times.<p>Take the first sentences in the section &quot;Reusing Software Lets You Build Good Things Quickly&quot;:<p>&gt; Software is easy to copy. At a mechanical level, lines of code can literally be copied and pasted onto another computer. ...<p>By the time the author has finished talking about open source and cloud computing, it&#x27;s easy to have forgotten the promise the article seemed to make: teaching you how to identify the problem to be solved.<p>The section returns to this idea in the last paragraph, but by then it&#x27;s too little too late:<p>&gt; You cannot make technological progress if all your time is spent on rebuilding existing technology. Software engineering is about building automated systems, and one of the first things that gets automated away is routine software engineering work. The point is to understand what the right systems to reuse are, how to customise them to fit your unique requirements, and fixing novel problems discovered along the way.<p>I would re-write this section by starting with a sentence that clearly states the goal - something like:<p>&quot;Paradoxically, identifying a software problem will require your team to write software. But the software you write early will be quite different than the software you put into production. Your first software iteration will be a guess, more or less, designed to elicit feedback from your target audience and will deliberately built in great haste. Later iterations will solve the real problem you uncover and will emphasize quality. Still, you cannot make technical progress, particularly at the crucial fact-gathering stage, if all your time is spent on rebuilding existing technology. Fortunately, there are two powerful sources of prefabricated software you can draw from: open source and cloud computing.&quot;<p>The remainder of the section would then give specific examples, and skip the weirdly simpleminded introductory talk.<p>More problematically, though, the article lacks an overview of the process the author will be teaching. Its lack makes the remaining discussion even harder to follow. I&#x27;ll admit to guessing the author&#x27;s intent for the section above.<p>Unfortunately, the entire article is structured so as to prevent the main message (&quot;find the problem first&quot;) from getting through. As a result, the reader is left without any specific action to take today. S&#x2F;he might feel good after having read the article, but won&#x27;t be able to turn the author&#x27;s clear experience with the topic into something that prevents more bad software from entering the world.
crimsonalucardalmost 6 years ago
Nice Post. But everyone needs to understand something. Even if you follow these principles to the letter T, you can still produce very bad software. In fact you can also find many cases where people did the exact opposite of what this guy said and still produced great software. I&#x27;m sure many people can name examples of software that just came together out of blind luck.<p>Why?<p>Because there is no formal definition for what is bad or good software. Nobody knows exactly why software gets bad or why software gets good or what it even exactly is... It&#x27;s like predicting the weather. The interacting variables form a movement so complex that it is somewhat impossible to predict with 100% accuracy.<p>What you&#x27;re reading from this guy is the classic anecdotal post of design opinions that you literally can get from thousands of other websites. I&#x27;m seriously tired of reading this stuff year over year rehashing the same BS over and over again, yet still seeing most software inevitably become bloated and harder to work with over time.<p>What I want to see is a formal theory of software design and by formal I mean mathematically formal. A axiomatic theory that tells me definitively the consequences of a certain design. An algorithm that when applied to a formal model produces a better model.<p>We have ways to formally prove a program 100% correct negating the need for unit tests, but do we have a formal theory on how to modularize code and design things so that they are future proof and remain flexible and understandable to future programmers? No we don&#x27;t. Can we develop such a theory? I think it&#x27;s possible.
评论 #20738585 未加载
评论 #20735124 未加载
knownalmost 6 years ago
I&#x27;d start from here <a href="http:&#x2F;&#x2F;0.30000000000000004.com&#x2F;" rel="nofollow">http:&#x2F;&#x2F;0.30000000000000004.com&#x2F;</a>
johnfisher57almost 6 years ago
nice one
commandlinefanalmost 6 years ago
How many more decades are we going to have to spend learning this lesson before we learn it?
评论 #20734738 未加载
评论 #20734539 未加载
ensiferumalmost 6 years ago
&quot;2. Seek out problems and iterate;&quot;<p>This is bad advice. It&#x27;s like saying &quot;go into a bar and start picking up fights&quot;.<p>If some part of the software has problems, runs slow or has bugs but <i>nobody</i> is complaining, then there&#x27;s no problem. Why waste time improving it?<p>Almost 100% of the time when you solve a problem you just create new problems of different kind in turn.<p>Be lazy. The less code you write the better off you are.
评论 #20738130 未加载