I no longer have any need for mentors or friends now that I have AVClub the AVA and Gateways to Geekery columns in particular uora and Stack OverflowCase in point That I found this book Over the past couple of years I have been radually writing and less radually maintaining a code base for separate projects It s etting the point where I might as well figure out what the hell I m doing So I o to Stack Overflow and find my way to a uestion like What programming book do you wish you had read early in your career This book is the top answerThe think I like about this book is that it is very high level and it makes a lot of sense They make their point and move on But that doesn t mean they aren t touching on some key issues in "knowing what they hell you are doing When I found myself thinking yeah yeah that s when I "what they hell you are doing When I found myself thinking yeah yeah that s when I I needed to slow down and pay attention Unlike
most books on coding this one has agedwill age very wellOut of books on coding this one has agedwill age very wellOut of many ood points made in this book three of them are my main motivation lately1 Don t keep separate copies of important code or data Eventually they will Class and Conformity: A Study in Values - With a Reassessment (Midway Reprint) get out of sync and lead to madness This is summed up as the DRY principle Don t Repeat Yourself2 Automate everything possible If you are following 1 you will wind up doing 2 out of necessity3 Keep everything even the dinkiest script under source control With tools like Dropbox that have a packrat option this is easier than ever But a formal source control system is preferableWith these three principles you can pretty much bootstrap yourself to any level of competency Now I look at the regular manual tasks that I perform and others perform with utter disdain And I understand why Doc Brown automated feeding his dog in Back To The Future It is the only way forwardI bought this book to read on a flight to NY But I found it so motivating that a few chapters into the book Iot out my laptop and started implementing the ideas that were popping in my head Good stuffTheir love of Perl strikes me as a little misguided but who am I to judge 40 Good for new programmersThis seems to be a favorite in the office so before I participating in the recommending of this book to new hires I figured I should check it out first There is definitely some Class Warfare: Class, Race, and College Admissions in Top-Tier Secondary Schools good stuff in here but most won t be new for anyone who s been programming professionally for 2 or 3 years or I think most engineers problems is that they don t do what they know is the right thingI think many people have said this before but at the risk of duplication I ll say that the book contains a lot of common sense codified The other interesting bits are the suggestions for ways to behave as aood engineer Thing is many of them feel like personality traits than things you can learn or decide to dosuch as learn new things languages editors frameworks see how things work if something s broken find out why don t just Common People: The History of An English Family get tests passing if you find rotten code refactor try to learn keyboard shortcuts write time saving scripts and tools like Robert just did automate everything especially testing test hardBut if you want to be better and don t do some of these maybe reading this will remind you how important it is to do them I didn t like the structure of the book Some of the concepts were vaguely presented I was also bored a little bit while reading itSome notesChapter 1 A Pragmatic PhilosophyTip 3 Provide Options Don t Make Lame ExcusesBefore you approach anyone to tell them why something can t be done is late or is broken stop and re evaluateTip 4 Don t Live with Broken WindowsDon t leave broken windows bad designs wrong decisions or poor code un repairedTip 5 Be a Catalyst for ChangeStart with something hot water with stones to make a soup and slowly people will be adding ingredients to your water and see how useful it can beTip 6 Remember the Big PictureConstantly review the project look out for the big pig picture things can deteriorate pretty fastTip 7 Make uality a Reuirements IssueGood software today is better than perfect orreat software tomorrow ive your users something to play with and evolve from thereTip 8 Invest Regularly in Your Knowledge PortfolioLearn a new language read a technical book every uarter read non technical books too take classes participate in local user roups stay current experiment with different environmentsTip 9 Critically Analyze What You Read and HearTip 10 It s Both What You Say and the Way You Say ItChapter 2 A Pragmatic ApproachTip 11 DRY Don t Repeat YourselfDuplication can happen when it s imposed by the environment when developers don t realize they re duplicating code when we et lazy code duplicated across different teamsTip 12 Make It Easy to ReuseThrough the following Tip 13 Eliminate Effects Between Unrelated Things Orthogonalityunrelated modules should be self contained and independent if you change one the others shouldn t change dramaticallyTip 14 There Are No Final Decisions ReversibilityTip 15 Use Tracer Bullets to Find the Targetget the code out thereTip 16 Prototype to LearnPrototyping is a learning experience Its value lies not in the code produced but in the lessons learned That Ward Cunningham Straight from the programming trenches The Pragmatic Programmer cuts through the increasing specialization and technicalities of modern software development to examine the core process taking a reuirement and producing working maintainable code that delights its users It covers topics ranging from personal responsibility and career development to architectural techniue.
Andy Hunt ë 9 SummaryMostly I was bored because I didn t learn anything "NewOne Has To Respect That This Book Is From 1999 "has to respect that this book is from 1999 in that perspective it must have been uite round breaking Had I read it in 1999 I wouldn t have known any of these thingsThe uestion is though would I have been able to use this book for anything back then While I found myself agreeing with lots of advice Composition and Literature: Bridging the Gap given in the book I also found that the reason I could agree with so much is that the advice is so vague that you can read your own interpretation into itPerhaps you could view that as a strength of the contents It attempts to plant a lot of seeds into the readers minds without ever being prescriptive or dogmatic In that sense it lives up to its titular pragmatismStill it leaves me with the feeling that if you don t already know how to work in this way will you be able to learn it from the book I don t think soAs an overall observation it seems that most of what the authors call pragmatic programming is simply what s later become known as agile development Thus I have much respect for the authors in 1999 they were certainly at the bleeding edge of modern software development perhaps they still are today but I don t think the book stands the test of time This is my favorite non technical tech book It exploresood software development practices In my opinion it is than just a checklist of what you should do it literally changed my approach to development with positive resultsOthers have mentionned that they already knew most of the things in this book and practice these Creating Country Music: Fabricating Authenticity good habits in their development environments I ve worked in dozens of environments ranging from very successful experienced companies to fly by night operations that have no business writing code Any one of these environments would have been vastly improved if some of these practices were incorporated And in several environments I was able to introduce some of these concepts which led to increases in productivity and happinessIf you and your organization already does everything in this book and you see it as a ho hum read congratulations to you For the rest of us I think this is chocked full of high level abstract concepts that will improve any development environment It s communicated in a very straight forward manner and also advises you to take a pragmatic approach to everything only using the things that make sense in your situationOverall a wonderful book While many complain about already knowing everything in the book or that it s outdated I believe they are uite missing the point Perhaps this book didn t speak to you at the point you are at in developing your skills and crafts but it might speak to someone else just beginning Rating the book low for the reason it wasn t what you needed is rather disingenuous as a rating should be auide to the uality of the book overall The information contained in this book is essential for software developers
who want to develop their skills and knowledgewant to develop their skills and knowledge a craft worthy of renown to become masters of the field It is essential for anyone working in a team or working soloThe book is dated in the specific examples it uses as would any book become so dated What is not dated are the principles the tips the stories the wisdom of this bookAs I was reading it it felt all so familiar Yes most anyone who has been at the craft of software development will probably recognize much of this I felt like the authors had been following me around during my consulting practice in the 90s as they pull from the same stories lore and practice that I taught Reading this book now in 2012 I recognize all this and am rateful for the review One may know a lot of practices but having a refresher on the extent of what matters in software development helpsAs I approach a new team a new job I am looking to convey a lot of these concepts to people who may have only been cursorily exposed to them and develop the team into a high uality high craftsmanship roup This book will aid in that uite a bit I hope although the Russian translation may be lackingIf you are just starting out read this bookIf you are in the midst of your career read this bookIf you are an experience veteran of the craft or feel yourself a master read this book THEN TEACH IT A must read for any developer who yearns to fine tune their craft For a total beginner the concepts will be difficult to internalize For a seasoned programmer on a Contingent Lives: Fertility, Time, and Aging in West Africa good team it will be little than aeneral reinforcement While it s hard to imagine the right time in one s career to read the The Pragmatic Programmer probably often it s a classic It s written at a high enough level that very little material is outdated In fact some of the arguments ring much truer now than they would have in 1999See this review and others on my blog In fact it s a ood book if you re just beginning to program I ve just read it late so it contains nothing new to me I can t imagine that there are software developers who don t know about practices described in this book Besides it s already outdated RCS ReallyAs to Russian edition of this book it s translated very badly it s almost unreadabl. Teams of pragmatic programmers; and Make your developments precise with automation Written as a series of self contained sections and filled with entertaining anecdotes thoughtful examples and interesting analogies The Pragmatic Programmer illustrates the best practices and major pitfalls of many different aspects of software development Whether youre a new coder an experienced progra. Really the point of prototypingTip 17 Program Close to the
problem domaintip 18domainTip 18 to Avoid SurprisesTip 19 Iterate the Schedule with the CodeChapter 3 The Basic ToolsTip 21 Use the Power of Command ShellsLearn some shellTip 22 Use a Single Editor WellTip 23 Always Use Source Code ControlTip 25 Don t PanicTip 27 Don t Assume It Prove ItTip 28 Learn a Text Manipulation LanguageChapter 4 Pragmatic ParanoiaTip 30 You Can t Write Perfect SoftwareTip 31 Design with ContractsThe caller must not pass variables which violate the conditions example sending negative numbers to sort It s not the responsibility of the method itself Tip 32 Crash EarlyTip 33 If It Can t Happen Use Assertions to Ensure That "It Won tTip 34 Use Exceptions for Exceptional ProblemsChapter 5 Bend or BreakTip 36 Minimize Coupling Between ModulesBy following "Won tTip 34 Use Exceptions for Exceptional ProblemsChapter 5
Bend Or BreakTip 36or BreakTip 36 Coupling Between ModulesBy following law of Demeter a function should only act on it s parameters objects it creates methods in the object it createsSymptoms of ill code Developers afraid of changing the code because they re aren t sure what might be affectedTip 37 Configure Don t IntegrateTip 41 Always Design for ConcurrencyTip 42 Separate Views from ModelsChapter 6 While You Are CodingTip 44 Don t Program by Coincidenceplan document testTip 45 Estimate the Order of Your AlgorithmsTip 46 Test Your EstimatesTip 47 Refactor Early Refactor OftenDon t try to refactor and add functionality at the same time Make sure you have tests firstTip 48 Design to TestWhen you design a module or even a single routine you should design both its contract and the code to test that contractTip 49 Test Your Software or Your Users WillTip 50 Don t Use Wizard Code You Don t UnderstandChapter 7 Before the ProjectTip 51 Don t Gather Reuirements Dig for ThemTip 52 Work with a User to Think Like a UserTip 53 Abstractions Live Longer than DetailsTip 55 Don t Think Outside the Box Find the BoxIs there an easier way Are you trying to solve the right problem or have you been distracted by a peripheral technicalityWhy is this thing a problem What is it that s making it so hard to solveDoes it have to be done this wayDoes it have to be done at allTip 56 Listen to Nagging Doubts Start When You re ReadyBut how do you tell if you re procrastinating or if it s a ood judgment to waitA techniue that has worked for us in these circumstances is to start prototyping Either you ll be bored and start doing the real work or that you realize something isn t right and you ll find a solutionTip 57 Some Things Are Better Done than DescribedAs a Pragmatic Programmer you should tend to view reuirements Creating Chicago's North Shore: A Suburban History gathering design and implementation as different facets of the same process the delivery of a uality system Distrust environments where reuirements areathered specifications are written and then coding starts all in isolationChapter 8 Pragmatic ProjectsTip 62 Test Early Test Often Test AutomaticallyTip 63 Coding Ain t Done Til All the Tests RunTip 65 Test State Coverage Not Code CoverageTip 66 Find Bugs OnceTip 67 Treat English as Just Another Programming LanguageTip 68 Build Documentation In Don t Bolt It OnTip 69 Gently Exceed Your Users Expectationstake the extra mileTip 70 Sign Your Work This is essentially a self help Couplings guide for programmers the kind of book that enumerates the habits of Good and Happy People and makes you feel slightlyuilty about not practicing most of them but probably won t result in you forsaking your evil ways and stepping on the path toward Nirvana Hunt and Thomas are friendly but occasionally annoying Chicana Falsa gurus Their cloying metaphors boiled frogs etc and kitsch jokes are offputting and some of their advice borders on insult One assumes that when they devote a whole section to interpersonal communication that they are targetting the particularly closeted and uncouth breed of computereek recently emerged from the dark and brutish cave of high school struggling to make headway in a world full of messy inconsistent emotional people who don t even know how to reverse D'Albuquerque's Children: Performing Tradition in Malaysia's Portuguese Settlement grep an Apache logThat said I think there are nuggets ofood advice for everyone all over the book Programming like reading and writing is ultimately a private personal activity and to be honest most of us software engineers were that closeted high school nerd at some point and draw upon that focused single minded persona when we do things like coding so there are lessons to be learned from taking a step back occasionally and examining the craft as Hunt and Thomas do They are as I said occasionally infuriating but even their silly aphorisms and mantras are usually memorable what software engineer isn t constantly trying to stay DRY I ve no doubt I ll be flipping through it again in the future especially when I feel like I ve hit a wall fell in a rut or found myself exploiting tired and hackneyed idioms that don t do the English language any justice Who is this book forCertainly not for experienced skilled software developers Considering myself at least experienced I found most of the material in this book a rehash of methodologies and techniues I ve used for than a decade Granted there were a few ems here and there but. S for keeping your code flexible and easy to adapt and reuse Read this book and youll learn how to Fight software rot; Avoid the trap of duplicating knowledge; Write flexible dynamic and adaptable code; Avoid programming by coincidence; Bullet proof your code with contracts assertions and exceptions; Capture real reuirements; Test ruthlessly and effectively; Delight your users; Build.