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.

The Pragmatic Pragmatic Programmer

135 pointsby rchavesover 3 years ago

17 comments

mattmcknightover 3 years ago
This review is an insult based on lies about the book&#x27;s content. The author says &quot;unlike the authors, I know that DRY does not hold true everywhere&quot;. Meanwhile, on pg. 35 of Pragmatic Programmer: &quot;Later on in the development process, you may choose to violate the DRY principle&quot;.<p>Similar exaggerations and mischaracterizations pollute the review. I could go on but it is too infuriating. Delete this.
评论 #29805836 未加载
评论 #29805846 未加载
Jtsummersover 3 years ago
I&#x27;m not finding I agree with this review, but because the author has chosen their quotes selectively, I want to point out:<p>&quot;broken windows&quot;. The book uses the turn of phrase, but does not (unless maybe in the original edition? I have the 20th anniversary one) actually quote the debunked theory beyond this phrase. Take it as the turn of phrase that it is, no need to read more into it than is present. If you don&#x27;t like it, consider something more like &quot;if you see trash on the ground, pick it up, don&#x27;t step over it.&quot; Though that&#x27;s a heck of a lot wordier. But about the selective quotes, let&#x27;s take the <i>whole</i> phrase from the book:<p>&gt; Don&#x27;t leave &quot;broken windows&quot; (bad designs, wrong decisions, or poor code) unrepaired. Fix each one as soon as it is discovered. <i>If there is insufficient time to fix it properly, then board it up.</i> [emphasis mine] -- page 7<p>The emphasized part is what the reviewer didn&#x27;t include. By only reading the first two sentences, sure it reads as a bit dogmatic. But reading the whole thing, it&#x27;s clear that there is more to it. What does &quot;board it up&quot; mean? Well, they expand on it in the following sentences:<p>&gt; Perhaps you can comment out the offending code, or display a &quot;Not Implemented&quot; message, or substitute dummy data instead. Take <i>some</i> action to prevent further damage and to show that you&#x27;re on top of the situation. [emphasis in original]<p>That seems pragmatic to me, &quot;I can&#x27;t handle it properly now, but I&#x27;ll do <i>something</i> that reduces the problem or draws attention so it can be properly handled later.&quot; In the JIRA-driven world, put in a new ticket.<p>They don&#x27;t prescribe <i>one</i> answer or <i>one set</i> of answers to the problem, except to address it. Which is pragmatic because leaving garbage in a system is a really good way (over a few years, anyone who has worked on long-running systems will have experienced this) to end up with a load of garbage.
评论 #29805382 未加载
评论 #29812949 未加载
rileyphoneover 3 years ago
Personally I think the broken window theory still holds up, at least at a superficial level. The notion of permissibility drives behavior in these human operated systems (neighborhood vandalism&#x2F;software development), and visible examples are signs of what&#x27;s allowed or acceptable that if left unchecked will soon be widespread - people like to push the limits. The study doing the &quot;debunking&quot; was itself looking at other studies tying broad local criminal behavior to signs of vandalism, which is not what should be correlated here, just more broken windows. Of course the theory itself has been weaponized quite unscientifically, but that doesn&#x27;t take away its explanatory power. Maybe for software we can call it the &quot;temporary hack&quot; theory, where a codebase will soon be held together with duct tape and one liners if things aren&#x27;t nipped at the bud.
评论 #29805320 未加载
评论 #29805724 未加载
dimglover 3 years ago
I&#x27;ve seen this sentiment more and more recently. This sentiment is shared with books like Clean Code, which, when I first heard this, was shocking. Clean Code was one of the best books I ever read on programming, and at the time was hugely influential to my career growth. In fact, it helped me so much that I was able to uplevel other engineers by mentorship at several organizations that I&#x27;ve worked at.<p>That being said, there have been some great critiques of these books and it&#x27;s kept me wondering if maybe I&#x27;m misremembering these books for what they were. Here&#x27;s a critique on Clean Code: <a href="https:&#x2F;&#x2F;qntm.org&#x2F;clean" rel="nofollow">https:&#x2F;&#x2F;qntm.org&#x2F;clean</a><p>Has it really been that long? Are these books really this outdated now? I saw a similar thread on Reddit recently and the alternative they recommended was this book... <a href="https:&#x2F;&#x2F;sandimetz.com&#x2F;99bottles" rel="nofollow">https:&#x2F;&#x2F;sandimetz.com&#x2F;99bottles</a> I&#x27;ve read only a couple of chapters, and I&#x27;m struggling to see why this book is so much better. Anyone have any opinions on this?
评论 #29806406 未加载
评论 #29809864 未加载
评论 #29806281 未加载
teh_klevover 3 years ago
I bought TPP when it was published and it changed my thinking about software development in many very positive ways (unit testing and refactoring for example).<p>But, the author of this article seems to forget that this book is now over 20 years old and not everything written by Hunt and Thomas still holds true. But thinking about and trying to define how best to produce good software is an ongoing dialectic and one size doesn&#x27;t fit everyone, some ideas reach their sell-by date. Pick the best bits and get on with the job.<p>Would I recommend TPP to novice developers? I&#x27;ve not read the 20th anniversary edition yet which apparently addresses how software development has changed since the original publication so my verdict is out on that question.<p>The article author doesn&#x27;t make it clear which edition of TPP he&#x27;s criticising, but if it&#x27;s the original edition then I think he&#x27;s unfairly beating a dead horse.
thrower123over 3 years ago
Most of these books that were standards in the 2000s don&#x27;t hold up great now, just because most of the important parts have diffused and become ambient omnipresent practices.<p>Putting so much emphasis on variable naming, to take one common theme from Code Complete, Pragmatic Programmer, Clean Code, et al, makes a lot more sense coming out as a reaction against some of the worst excesses of Hungarian notation.<p>They just aren&#x27;t the kind of revelation that they were 20 years ago, in part because they&#x27;ve been so successful at molding multiple generations of programmers now.
评论 #29805680 未加载
评论 #29805031 未加载
评论 #29805958 未加载
评论 #29804787 未加载
评论 #29804878 未加载
评论 #29805161 未加载
selfhifiveover 3 years ago
This review is trash. Calling a style guide for programming bad because it is opinionated is like calling sugar bad because it is sweet.<p>The whole review just drones on and on about why the book should not be opinionated about coding practices not realising that the books of this genre are useless without strong opinions.
ffhhjover 3 years ago
This is the No True Scotsman fallacy applied to pragmatism: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;No_true_Scotsman" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;No_true_Scotsman</a><p>No true pragmatic programmers would waste time minimizing technical debt, they will always take the simplest path.
jmfldnover 3 years ago
The point about broken windows having been debunked for crime is a non-argument when applied to programming. He&#x27;s comparing apples and bananas. Someone just happened to use a term for two things that are only kinda related.<p>I don&#x27;t even use the term &#x27;fixing broken windows&#x27; for programming, I use the term &#x27;repaying tech debt&#x27; . That&#x27;s pretty universally seen as a good thing, if not without difficult tradeoffs in real world business software eng.<p>There&#x27;s a fair bit else that&#x27;s off in this article and it&#x27;s quite an uncharitable reading of a classic book. There are no sacred cows but PP doesn&#x27;t warrant a hatchet job.
ARandomerDudeover 3 years ago
&gt; Dogmatic Programmer: let’s make everything abstract, what if we need to switch databases?<p>&gt; Pragmatic Programmer: we will never switch databases.<p>In other words, the blog author is saying &quot;I don&#x27;t have much software experience.&quot; I used to think I&#x27;d never switch databases too, until I built a very large system and had to switch databases.
评论 #29810113 未加载
评论 #29808783 未加载
deviantbitover 3 years ago
The author misses the point of abstracting portions of systems away. First, you can create shim layers for unit, component, and functional testing. Many of these tests can be automated, without the need of a database, or other functionality required during deployment. Next, if your software is written for you, and only you, then you&#x27;re losing on others using it or other customers. Customer A might not use DB 1. Customer 2 might use DB1 at certain locations, and DB2 at others.<p>The abstraction portion also gives a tester the ability to see if what comes in, is what needs to come out, without reliance on additional hardware and other sunk costs. A simple example is a currency&#x2F;bill validator. These are expensive pieces of hardware, and not needed to verify other portions of the system, but a module for that device can be emulated.<p>Next, it appears he hasn&#x27;t read the book Pragmatic Programmer, or the book went over his head. &quot;Don&#x27;t live with broken windows&quot;, &quot;Make it easy to reuse&quot;, and &quot;Decoupled code is easier to change&quot; are three hallmarks of the book. All three are in contradiction to his article.<p>If you haven&#x27;t read the Pragmatic Programmer, I highly encourage you to read it. It is a required read in my company.
Zababaover 3 years ago
&gt; Why? And “strategic”? I thought this book was about being pragmatic (foot on the ground, present) not “strategic” (heads in the cloud, future)<p>It&#x27;s a good summary of the article. All of the time is spent trying to frame the book in a way (non pragmatic) and the author of the article in another (pragmatic). Articles like that usually have little to no value. At most, 5% of the book has been covered in the article, and that seems to be enough to reject everything.
评论 #29806944 未加载
megamixover 3 years ago
I always code as specifically and practical as possible. Whenever I hear someone let&#x27;s do this as general as possible - the junior dev bell rings.
lifeisstillgoodover 3 years ago
Broken Windows is indicative of lack of resource, not lack of moral rectitude.<p>We leave the window broken because fixing it takes effort away from fixing the overflowing sewage or the dangerous roof.<p>If you have time to fix the windows, then someone has hired enough coders to fix the sewers and has time left over. That&#x27;s a nice position to be in.<p>Work to be in that position.<p>It may be that you should build your buildings from open, pre-fabricated material :-)
评论 #29808839 未加载
revskillover 3 years ago
To me, pragmatic programmer understands &quot;layer&quot; of effects.<p>Never mess effectful stuff with pure stuffs, it will hurt you soon.
kgartenover 3 years ago
Honestly, although I don&#x27;t agree with the author&#x27;s sentiment.<p>Yet, even though I found the old version very influential and a great read at the time, the updated version feels a bit quaint for me. Especially because it uses old metaphors. The author mentions the &quot;Broken Windows&quot; Theory. <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Broken_windows_theory" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Broken_windows_theory</a> Especially as it moved towards Stop-and-Frisk in NY, I would not use it in a technical book today: <a href="https:&#x2F;&#x2F;www.npr.org&#x2F;2016&#x2F;11&#x2F;01&#x2F;500104506&#x2F;broken-windows-policing-and-the-origins-of-stop-and-frisk-and-how-it-went-wrong?t=1641400259087" rel="nofollow">https:&#x2F;&#x2F;www.npr.org&#x2F;2016&#x2F;11&#x2F;01&#x2F;500104506&#x2F;broken-windows-poli...</a><p>Another one is the &quot;Boiled Frog&quot; from Topic 4:<p>&quot;We&#x27;ve never tried this—honest. But “they” say that if you take a frog and drop it into boiling water, it will jump straight back out again. However, if you place the frog in a pan of cold water, then gradually heat it, the frog won&#x27;t notice the slow increase in temperature and will stay put until cooked.&quot;<p>The same as with the broken window, it&#x27;s just not true: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Boiling_frog" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Boiling_frog</a><p>It makes it hard for me (personally) to use the lessons of the book (cognitive dissonance ... &quot;wait but a frog would jump out&quot; ... ). Given the work that went into the anniversary book, I am wonder if the authors could not have found better fitting metaphors.<p>Edit: clarity + typos.
holodukeover 3 years ago
I am looking for a list of type of developers posted here more than 10 years ago. Types like the shotgun programmer, the duplicator, the abstractor etc. It was an awesome text only list of many different types. I cannot find it.
评论 #29806342 未加载