Product Details
|
–Markus Gärtner
Senior Software Developer
it-agile GmbH
www.it-agile.de
www.shino.de
“Some technical books inspire and teach; some delight and amuse. Rarely does a technical book do all four of these things. Robert Martin’s always have for me and The Clean Coder is no exception. Read, learn, and live the lessons in this book and you can accurately call yourself a software professional.”
–George Bullock
Senior Program Manager
Microsoft Corp.
“If a computer science degree had ‘required reading for after you graduate,’ this would be it. In the real world, your bad code doesn’t vanish when the semester’s over, you don’t get an A for marathon coding the night before an assignment’s due, and, worst of all, you have to deal with people. So, coding gurus are not necessarily professionals. The Clean Coder describes the journey to professionalism . . . and it does a remarkably entertaining job of it.”
–Jeff Overbey
University of Illinois at Urbana-Champaign
“The Clean Coder is much more than a set of rules or guidelines. It contains hard-earned wisdom and knowledge that is normally obtained through many years of trial and error or by working as an apprentice to a master craftsman. If you call yourself a software professional, you need this book.”
–R. L. Bogetti
Lead System Designer
Baxter Healthcare
www.RLBogetti.com
Programmers who endure and succeed amidst swirling uncertainty and nonstop pressure share a common attribute: They care deeply about the practice of creating software. They treat it as a craft. They are professionals.
In The Clean Coder: A Code of Conduct for Professional Programmers, legendary software expert Robert C. Martin introduces the disciplines, techniques, tools, and practices of true software craftsmanship. This book is packed with practical advice–about everything from estimating and coding to refactoring and testing. It covers much more than technique: It is about attitude. Martin shows how to approach software development with honor, self-respect, and pride; work well and work clean; communicate and estimate faithfully; face difficult decisions with clarity and honesty; and understand that deep knowledge comes with a responsibility to act.
Readers will learn
Great software is something to marvel at: powerful, elegant, functional, a pleasure to work with as both a developer and as a user. Great software isn’t written by machines. It is written by professionals with an unshakable commitment to craftsmanship. The Clean Coder will help you become one of them–and earn the pride and fulfillment that they alone possess.
Suggested Tags from Similar Products(What's this?)Be the first one to add a relevant tag (keyword that's strongly related to this product)
|
|
Share your thoughts with other customers:
|
||||||||||||||||||||||
|
Most helpful customer reviews
5.0 out of 5 stars
Worth reading,
This review is from: The Clean Coder: A Code of Conduct for Professional Programmers (Paperback)
I have been freelancing for a few years and this book was a refreshing look at my business. Many of the scenarios described in this book are true to life and things I have been through before. For the remainder, the lessons will certainly benefit my business. I've already changed my methodology for doing estimates after reading this.
3 of 7 people found the following review helpful
2.0 out of 5 stars
Uneven, Lacks Depth,
This review is from: The Clean Coder: A Code of Conduct for Professional Programmers (Paperback)
According to the subtitle, this book tries to define and advise on professional software development conduct. With this in mind, the title of the book sounds somewhat peculiar since there is more to professionalism in software development than being "clean", in any sense of the word.The first chapters (Professionalism, Saying Yes/No, Coding) are the more interesting part of the book. In the chapter on professionalism, the author brings up the important concepts of individual responsibility, striving for defect-free outcome, the need to dedicate to the employer or client the time paid by the employer/client, the do-no-harm principle. Some of these topics deserve deeper treatment, however. For example, the do-no-harm principle is described in the context of structure and function of software. There is no mention of doing no harm to public, employers or colleagues (is coding and distributing a virus professional?). The author speaks about minimizing bugs, but there's no attempt to define or treat software quality in a more general way. Communication with management gets a bit digital coverage (Saying Yes, Saying No). In the second part of the book the author gives advice on professional developers' practice. The advice is often questionable, however. A few examples: - In the section on Test-Driven Development the author claims that the only way to achieve testability is to write tests first. While this probably works, we are not given any explanation as to why would this approach be the best or the only one. The TDD criteria could have been listed with more clarity: one needs to write unit tests first but should not write more of a unit test than it is sufficient to fail, and not compiling is failing. This begs the question whether anything that does not compile is a sufficient unit test to "allow" one to start with deliverable code? - The author recommends constant changes to keep the code flexible, as if the code text is somehow going to become rigid if left alone. In reality, any change has more potential to introduce defects than no change, no matter how thoroughly we test, and this needs to be factored into the judgement call on whether something should be changed or not. - In the author's words, the primary purpose of testing is actually documentation, in particular requirements and API documentation. This is in contradiction with the generally accepted view of testing as a way to uncover defects. - Another unusual idea is that "exploratory testing", which happens without test plan, is the one that is supposed to confirm the expected behaviour of the system. - When advising to overcome "writers' block" by finding a pairing partner, the author does not consider that this way of unblocking may effectively block the pairing partner. The section on tools seems off-topic as the author himself explains that his intention is mainly to define his favourite tools. There definitely are tool selection, evaluation and recommendation considerations that are very relevant to professionalism, but they are not mentioned here. Yet, this section is not without controversy - the advice on two-tiered version control, with "enterprise" version control system that satisfies the management and "developer-friendly" system that meets developers' needs seems detached from the realities of configuration management on a software project of any significant size. The the book is organized into loosely related chapters that do not appear to form a cohesive whole with the beginning and end. The book starts with the story of Challenger shuttle disaster, but the author does not relate this story to professionalism in software development in any way. The ending is abrupt and with no conclusion - the description of the author's workstation looks out of place. This book should be credited primarily for an attempt bring into focus the complex subject. The treatment however is shallow and the advice too often sounds subjective and unsubstantiated.
Share your thoughts with other customers: Create your own review
Most Helpful Customer Reviews on Amazon.com (beta) Amazon.com:
3.7 out of 5 stars (34 customer reviews) 62 of 63 people found the following review helpful
4.0 out of 5 stars
Like a long talk with a software mentor,
By Michelle J. Kenoyer - Published on Amazon.com
This review is from: The Clean Coder: A Code of Conduct for Professional Programmers (Paperback)
This book is good at providing a general overview of what it means to be a software professional. Lots of good advice and provides many resources and a general framework for thinking about the subjects he presents.Sometimes the author presents strategies very specific to him that wouldn't work for me. For example, I tried the pomodoro method before and had mixed results. I think readers would benefit more looking at the goal (better time management) and finding a methodology that works for them to accomplish that goal. He is very bullish on unit tests, stating that there is no longer and controversy over TDD. As a huge fan of unit tests, I find many places I have worked at have very little interest in unit testing or don't see any real benefit. The book is also very strongly against being in the Flow to program which I found interesting. This is pretty much 100% the opposite of everything else I have ever heard/read. He is also against listening to music while programming. He provides a weird example where while listening to Pink Floyd his code comments had Pink Floyd references. The author has a tendency to confuse something that is true for him ("I don't listen to music while programming") to a general universal rule ("Programmers shouldn't listen to music while programming"). Most programmers I know who listen to music do so as white noise. For instance, I listen to techno many times while programming. I don't like techno but the droning drum servies to drown out the office chitter chatter at my current gig. Like Clean Code, I don't always agree with the author but provides good food for thought and is worth the read! 57 of 69 people found the following review helpful
2.0 out of 5 stars
Disappointing.,
By Andrew Coats "awcoats" - Published on Amazon.com
Amazon Verified Purchase(What's this?)
This review is from: The Clean Coder: A Code of Conduct for Professional Programmers (Paperback)
Overall, I would say this book was disappointing. Admittedly, I had high expectation after reading "Clean Code". Perhaps it was the rather too personal anecdotes that initially turned me off. I would say you are better of reading "Pragmatic Programmer" and a book on Scrum XP and software project estimation.As other reviews have said, it feels like a collection of blog articles published in a book. Chapter 1. Professionalism The book got off to a bad start for me... the first chapter on professionalism: "Do the math. In a week there are 168 hours. Give your employer 40, and your career another 20. That leaves 108. Another 56 for sleep leaves 52 for everything else. Perhaps you don't want to make that kind of commitment, That's fine, but should not think of yourself as a professional. Professionals spend time caring for their profession." Really? 20 hours per week; so if you spend 10 per week reading blogs, listening to podcasts, doing kata's etc... you are no longer a professional? While I agree, you have to take personal responsibility for your career, asserting that you have to spend 20 hours a week seems over the top to me. Perhaps the author wishes to be controversial and overly opinionated to provoke debate? Chapter 4. Coding. The section on listening to music while coding has a truly bizarre anecdote: "One day I went back into a module that I been editing while listening to the opening sequence of The Wall. The comments in that code contained lyrics from the piece, and editorial notations about dive bombers and crying babies." I'm guessing lots of people listen to music while coding without a problem. I can imagine, if I had been working 80 hour weeks for the last month, I would something similar, but surely that is a symptom of being on a death march? I liked the section on false delivery. It can sometimes be difficult for everyone to have a shared understanding of 'done'. A former Scrum Master used to have a short meeting whenever a new team member joined us to cover the "definition of done". 6. Practicing I'm a little skeptical of repeatedly doing the same kata; yes create side projects to spike a new technology that you wish to learn about - but I'm not convinced that continued repetition of kata helps. 9. Time Management I was glad to read, that it is OK to decline a meeting. It validates my practice of declining meetings without an agenda/ goal/ deliverable. I liked the advice, on how to leave a meeting that you are not adding value to and from which you are receiving no value. Focus-Manna I thought this section contradicted what the author mentioned about 'The Flow Zone' in chapter 4. "We write code when our focus-manna is high; and we do no other, less productive things when it's not.". On the Zone - "It is the highly focused, tunnel-vision state of consciousness that programmers can get into while they write code.". 10. Estimation. The following excerpt I found very peculiar - "I've only been drunk two times in my life, and only really drunk once. It was at the Teradyne Christmas party in 1978. I was 26 years old.". 14. Mentoring, apprenticeships and Craftsmanship. I felt this chapter could have been longer, with more depth and more concrete proposals; this chapter should of been the highlight of the book - as the most of the themes of the book are either covered in depth elsewhere or are part of best practices/ agile bandwagon (TDD, unit tests, acceptance tests). It would have been nice to provide more information about efforts the IEEE or the ACM are doing to promote the idea of software professionals. A discussion on certifications may have been useful. It felt like the book ended rather abruptly with on Tools. It seems this chapter is going to make the book dated very quickly; whereas a book on titled "The Clean Coder: A Code of Conduct for professional programmers" should be timeless. 10 of 10 people found the following review helpful
4.0 out of 5 stars
There is no try!,
By Robert H. Stine Jr. "Bob" - Published on Amazon.com
Amazon Verified Purchase(What's this?)
In "The Clean Coder: A Code of Conduct for Professional Programmers," Uncle Bob Martin is his usual, controversial self, but he is often convincing. One upshot is that I will never again tell a manager that "I'll try" to hit an overly ambitious deadline: I will either commit or refuse to commit, or offer an estimate of the odds of success. On the topic of deadlines, Martin observes that project managers and "suits" regard completion dates as commitments, while programmers tend to regard them as estimates, usually overly optimistic estimates. He makes the case that it is the professional duty of programmers to come up with realistic estimates and then stick to their guns.Another good point Martin makes is that a professional programmer should take the responsibility to hone his or her skills outside working hours. He recommends working a focused and productive 40 hours a week, and then spending 20 hours a week on career development: reading, learning other languages, even practicing programming "katas". One of the most controversial claims Martin makes is that getting into "the zone" - that mental state of total concentration for which programmers strive - is a bad idea, because it results in too narrow a focus. Personally, I'm not convinced. I think that the problems of focused programming can be remedied by being sure to take a big-picture view from time to time, and also by code reviews. A problem with this book is Martin's use of overstatement to indicate emphasis. So when he says "never, never, never" agree to meet a deadline by working extra hard and long, he means "hardly ever". His insistence that agreeing to accelerate effort inevitably result in low quality code just does not wash. Not that it can go on forever, but my own experience is that a brief and intense push can often get things done faster without sacrificing quality. Even Martin's suggested regimen suggests that there is slack in the schedule: surely the 20 per week of career development could be sacrificed from time to time. I shudder to think of a mid-level programmer, influenced by Martin's rhetoric, refusing to work extra hours "on principle", thus harming both his own career and the prospects of his company. With that caveat, however, the book has much sound advice, and is an excellent read to boot. |
|
|
|
|