Blogs by Robert Martin

 3 Feb 2011 FLASH: TPP I read a nice blog today exploring the Transformation Priority Premise using...
 2 Feb 2011 Fib: The T-P Premise. Guilherme Silveira wrote a lovely blog exploring the Transformation Priority Premise using the Fibonacci sequence....
 19 Jan 2011 Brining Balance to the Force I read Martin Fowler's contribution to the craftsmanship thread...
 17 Jan 2011 Software Craftsmanship: What it's all about. I've gone from Dan North's post, to Gil Zilberfeld's to Michael Feather's to Jason Gorman's and back. And I'm at a loss....
 5 Jan 2011 STUB4: MDA: A forlorn hope.
 1 Jan 2011 Transformation Priority and Sorting Comic created with Comic Life...
 29 Dec 2010 STUB3: Validating the Visitor Why I like the much maligned visitor pattern....
 27 Dec 2010 STUB2: K&R around the Campfire
 24 Dec 2010 Clean Code mug and luggage tag Watch for them on
 23 Dec 2010 STUB 1: SICP & Assignment
 20 Dec 2010 Snow and Pandemonium These pictures are from Heathrow on Monday morning, 20 December after...
 19 Dec 2010 The Transformation Priority Premise This blog poses a rather radical premise. It suggests that Refactorings
 17 Dec 2010 Clean Code Course in Dallas. I'll be teaching a three-day Clean Code...
 16 Dec 2010 test italic bold monospaced...
 14 Dec 2010 Too Lazy to "Type". Loren Segal (@Islegal) in his blog ( makes...
 27 Nov 2010 Mentoring & Apprenticeship (A reading from: "The Clean Coder") mentoring.mp3
 23 Nov 2010 A Certification Worth Having. If you spend months studying and working just for the chance...
 22 Nov 2010 What Killed Waterfall Could Kill Agile. What Killed Waterfall could Kill Agile.docx
 9 Nov 2010 Craftsman 63: Specifics and Generics. I was sitting in the observation deck practicing some...
 21 Oct 2010 Danger! Software Craftsmen at Work. On October 12, 2010 at QCon David Harvey gave a talk entitled Danger! Software Craftsmen at Work....
 17 Oct 2010The Cost of Code? In a panel at #scna yesterday, @chadfowler asked the question: "How many projects fail because of the code?"...
 16 Oct 2010 Be a good one. #scna 2010 I didn't expect it, but something profound happened at #scna this week....
 3 Oct 2010 The Craftsman 62, The Dark Path. "Hey Alphonse," Jerry called as I walked by, "let's do a bit of practice.  I've got a kata I'd like to show you."...
 24 Sept The Hacker, The Novice, The Artist, and The Craftsman. In my last blog  "Too Small to Refactor", I made the statement...
18 Sept 2010 The Uncertainty Principle, and the Quantum Discontinuity. What is the uncertainty principle?  Some people think of it as the "Observer Effect", the fact that any time you measure...
 17 Sept 2010 Too Small to Refactor? In John MacIntyre's second blog about Clean Code he presented a very simple little payroll calculator,...
 9 Sept 2010 John MacIntyre's Clean Code Experience #1. John MacIntyre has written a lovely blog about his first experience with "Clean Code".   The change....
 24 Aug 2010 QA or When do you flip a pancake? When do you flip a pancake?  We know what a good pancake looks like.  It's nicely brown on both sides, with...
 18 Aug 2010 Why Clojure? I have recently become quite an enthusiast for the language Clojure.  But why?  Why would someone who has spent the last...
 5 July 2010 Software Calculus - The Missing Abstraction The problem of infinity plagued mathematicians for millennia. Consider Xeno’s paradox; the one with Achilles and the tortoise. While it was intuitively clear that Achilles would pass the Tortoise quickly, the algebra...
3 June 2010 TDD in ClojureOO is a tell-don’t-ask paradigm. Yes, I know people don’t always use it that way, but one of Kay’s original concepts was that objects were like cells in a living creature. The cells in a living creature do not ask any...
 2 June 2010 Orbit in ClojureI spent the last two days (in between the usual BS) writing a simple orbital simulator in Clojure using Java interop with Swing. This was a very pleasant experience, and I like...
 15 May 2010 Clojure Prime Factors Can anyone create a simpler version of prime factors in Clojure?...
 28 Apr 2010 Sufficient Design means Damned Good Design @JoshuaKerievsky wrote a blog entitled “Sufficient Design”.

Josh makes this point...

 27 Apr 2010Certification - Don't Waste Your Time! As I have said before, there’s nothing particularly wrong with the current mania for certification. If you want to be certified at the cost of a 2-day course, by all means get certified. If you want to certify people for attending your 2-day...
 23 Apr 2010   The Tricky Bit   I once heard a story about the early days of the Concorde. A british MP was on board for a demonstration flight. As the jet went supersonic he disappointedly commented to one of the designers that it didn’t feel any different at all. The designer beamed and said: “Yes, that was the tricky bit.”...
 21 April 2010The R.E.A.L.I.T.Y. Principles of Agile Software Certification As you are probably aware the Scrum Alliance is planning to offer a Certified Scrum Developer program. You can read...
 17 April 2010
 The Mayans are Coming!
 This one is just a quickie; too long for a tweet.
 15 April 2010
Sapient Testing: The "Professionalism" Meme James Bach gave a stirring keynote today at ACCU 2010. He described a vision of testing that our industry sorely needs. Towit: Testing requires sapience.
 6 April 2010
20% More Bugs or 20% Less Features? People often make the argument that time to market is more important that quality. I’m not sure just what they mean by that. Do they mean that it’s ok if 20% of the features don’t work so long as they deliver quickly? If so, that’s just stupid. Why not develop 20% fewer features, and develop them well. It seems to me that choosing which 20% you are not going to develop and then choosing to develop the other 80% to a high standard of quality is a better management decision than telling the developers to work sloppily.
 7 March 2010
Developer Certification WTF? It will convince you that we have to do something about the horrible state of software engineering.
 1 Feb 2010
Software on the Cheap When it comes to software you get what you pay for!
 23 Jan 2010    
Mocking Mocking and Testing Outcomes Mocking frameworks have proliferated in recent years and this please Bob!
 17 Jan 2010
 Dependency Injection InversionDependency Injection is all the rage!
 4 Dec    2009
Saying No! If you are  a professional, you NEVER allow yourself to be put in the role of the victim.
 21 Nov 2009
What's all this Nonsense about Katas? There has been an increase in interest in Software Katas of late. What is all this buzz about, and why might it be important?
 11 Nov 2009
Archeological Dig I was going through some old files today, and I stumbled upon some acetate slides from 1995. They were entitled: “Managing OO Projects”. Wow! What a difference fifteen years makes! (Or does it?) ...
 5 Nov 2009
Excuse me sir, What planet is this? So I apologize to the audience at large, and to Cashto. You should expect better from me.
 28 Oct 2009    
 Manual Mocking - Resisting the invasion of Dots and Parenthesis. The twittersphere has been all abuzz today because of something I tweeted early this morning
15 Oct 2009
We must ship now and deal with consequences. Martin Fowler has written a good blog about technical debt. He suggests that there are two axes of debt: deliberate and prudent.
 7 Oct 2009
TDD Derangement SyndromeMy recent blog about TDD, Design Patterns, Concurrency, and Sudoku seemed to draw the ire of a few vocal TDD detractors. Some of these people were rude, insulting, derisive, dismissive, and immature
 6 Oct 2009
Echoes from the Stone Age The echoes from Joel Spolsky’s Duct Tape blog continue to bounce off the blogosphere and twitterverse. Tim Bray and Peter Seibel have both written responses to Joel, me, and each other.
 22 Sept 2009    
A Mess is not a Technical Debt  If the customer is looking for a web 2.0 system, then frames just aren’t going to cut it for long.
 18 Sept 2009
The CSM Integrity Deficit Scott Ambler wrote a blog, and an editorial about the dirty dealings and desperate deception of the Scrum Alliance and their slimy certification scam. He rightly points out that the certification means little more than the applicant’s check didn’t bounce.
 11 Sept 2009
One Thing: Extract till you Drop For years authors and consultants (like me) have been telling us that functions should do one thing. They should do it well. They should do it only.
 9 Sept 2009 Ruining you Test Automation Strategy Everybody wants a test automation strategy nowadays. The reason is clear.
 11 Aug 2009
Jarvis March in Clojure I need your help.
 8 Aug 2009
 Using Clojure for Scripting
 Clojure makes a nice language for writing scripts that explore things on the filesystem.
 7 Aug 2009
Java Calling Clojure While I think Clojure is an interesting language, in order for it to be of real practical use, I must be able to use it in conjunction with other systems I am working on.
 6 Aug 2009
As the tests get more specific, the code gets more generic. As a general rule, good design dictates that the more specific your requirements become, the more general your code needs to be.
 6 Aug 2009
Don't be Lazy about Sequences Coding with infinite sequences is very powerful, but also very bizarre. If you aren’t careful you can get algorithms that work fine, but are O(N^2) instead of O(N).
 5 Aug 2009
Generating Pi in Clojure The 150th result (the first two lines of which are accurate) 3.14159265358979323846264338327950288419716939 93751058209749445923078164062862089986280348253 25256352154500957038098311477352066337027814620 46050836612955894790973622135628850706785335611 34661971615744147647325427374216175843967838084 09640502874355811103562027043480098593797655792 36344321165429010895M
 4 Aug 2009
Scenario Tables for FitNesse Scenario Tables are a very powerful new feature of FitNesse, allowing a whole new level of abstraction in the specification of tests. Scenario tables can be used on any page that uses the Slim test system.
 31 Jul 2009
More Clojure from Uncle Bob JSPS Thanks to all who posted their solutions to the Bowling Game. Just to be contrary, I decided to implement yet another kind of solution. This one clearly shows my OO roots.
 19 Jul 2009
Uncle Bob JSPS: Learning Clojure I’m trying to learn Clojure, and I’m finding the effort challenging. Perhaps you can help me.
 26 June 2009
The Rush There’s nothing like the feeling of achievement when you get a complex software system working. It’s the feeling of the hunter making a hard fought kill.
 20 May 2009
Clean Code and Battle Scarred Architecture  CRAP is disease at the cellular level. CRAP is a rot so pervasive that it can infest every nook and cranny of the system.
 11 May 2009
Why the sea is boiling hot We professionals aren’t prefect. We all make mistakes. We recover from those mistakes by owning up to them as mistakes. We do not cover those mistakes by claiming that everyone else is wrong.
 25 Apr 2009
The Scatology of Agile Architecture If you are working in an Agile team, don’t feel guilty about taking a day or two to think some issues through. Indeed, feel guilty if you don’t take a little time to think things through.
 23 Apr 2009    
Crap Code Inevitable? Rumblings from the ACCU I see a future of Clean Code, Craftsmanship, Professionalism, and an overriding imperative for Code Quality.
 1 Apr 2009
 Master Craftsman Teams. light of the movement towards software craftsmanship, perhaps it’s time to dust off this old idea and look at it from a different perspective.
 10 Mar 2009
 Let's Hear it for the Zealots!
 What a load of dingoes kidneys!
 7 Mar 2009
 Quality: It's alive! It's ALIVE!
 I encourage all of you to read and sign the manifesto, join the email group, and help bring quality back to life in the software profession.
 27 Feb 2009
 Whiners that Fail
 The acronym is not accidental.
 12 Feb 2009
 Getting a SOLID start.
 I am often asked: “How should I get started with SOLID principles?” Given the recent interest and controversy about the issue, it’s probably time I gave a written answer.
 6 Feb 2009
 An Open Letter to Joel Spolsky and Jeff Atwood
 Joel, Jeff, Here is an open letter to the two of you that I hope...
 3 Feb 2009
 Speed Kills
 Ron Jeffries wrote a wonderful blog about how we kid ourselves that there is a tradeoff between quality and speed. Isn’t there?
 10 Jan 2009
 Multi-dimensional Seniority
 I was at a meeting of the Chicago Software Craftsmanship groupObtiva and 8thLight. last night. Dave Hoover and Paul Pagel were talking about the different apprenticeship models at
 31 Dec 2008
 Fudge anyone?
 Back in September, when I was just staring the Slim project, I made a crucial architectural decision. I made it dead wrong. And then life turned to fudge…
 11 Dec 2008
 Hudson- A Very Quick Demo
 I recently set up Hudson as the continuous integration server for FitNesse....
 8 Dec 2008
 How to Guarantee That your Software Will Suck
  I think short-shrifting on tools, monitors, and schedules is stupid.
 7 Dec 2008
 The promise of Shalt.
 When writing requirements we often use the word “shall”.
 30 Nov 2008
 Automating the Saff Squeeze
 I want the JetBrains and Eclipse people to automate The Saff Squeeze
 29 Nov 2008
 Marick's Law
 A month ago I was deep in the throes of shipping the current release of FitNesse. I just wanted to get it done.
 27 Nov 2008
 The Truth about BDD
 I really like the concept of BDD (Behavior Driven Development). I think Dan North is brilliant, and had done us all a great service by presenting the concept.
 21 Nov 2008
 SLIM Comparison Operators
 This video describes how to use the comparison operators in SLIM.
 18 Nov 2008
 SLIM Tutorial
 This is a video overview of the new SLIM test system in the latest release of FitNesse
 16 Nov 2008
 Dirty Rotten ScrumDrels
 Stop blaming everything (and everybody) else for your own laziness.
 2 Oct 2008
 Slim Slim is a new testing front-end and back-end that I’m adding to FitNesse. Here’s what it’s all about.
 28 Aug 2008
 There will be code
 THIS is the change that I hope the next thirty years holds for software development.
 19 Aug 2008
 Baubles in Orbit
 A nice little demonstration of the Bauble concept.
 14 Aug 2008
 Quintessence: The fifth element for the Agile Manifesto
 “Quintessence” was the name of the keynote I gave at the banquet of Agile 2008. Though the talk covered a lot of ground, the upshot was that we need an addition to the agile manifesto…
 29 July 2008
 Tag: How did I get Started in Software Development
 How I got started in Software Development.
 20 July 2008
 Bauble, Bauble...
 I’m thinking about turning Bauble into a rubyforge project,
 26 June 2008    
 Now 'and' for something completely different.
 We were sitting at the kitchen table, and he showed me a function he was writing. In the midst of the function I saw this:
 24 June 2008
 So... You want your code to be maintainable.
  If you want your systems to be flexible, write tests.
 8 April 2008
 Clean Code. Whew!
 The Clean Code book is out!
 16 Feb 2008
The Quality of TDD
 Kieth Braithwaite has made an interesting observation here. The basic idea is...
 10 Jan 2008    
 Generated Tests and TDD
 TDD has become quite popular, and many companies are attempting to adopt it. However, some folks worry that it takes a long time to write all those unit tests and are looking to test-generation tools as a way to decrease that burden.
 12 Dec 2007
 Business software is Messy and Ugly
 “What do you do when your managers tell you to make a mess?” I responded: “You don’t take it. Behave like a doctor who’s hospital administrator has just told him that hand-washing is too expensive, and he should stop doing it.”
 7 Dec 2007
 Thinking about an Appendix
 The stomach pain was a low level annoyance that I was able to ignore for most of the evening. But it started to get pretty bad round midnight. By 2AM I threw up and then felt better. So I went back to bed and slept till morning.
 2 Nov 2007
 Active Record vs Objects
 Active Record is a well known data persistence pattern. It has...
 21 Oct 2007    
 A Rational Plan to Start using SOA
 If you want an SOA, you are going to have to design that SOA.
 20 Oct 2007
 Architecture is a Second Order Effect
 We often argue that in order to achieve flexibility, maintainability, and reusability, it is important to have a good software architecture.
 17 Oct 2007
 TDD with Acceptance Tests and Unit Tests
Test Driven Development is one of the most imperative tenets of Agile Software Development. It is difficult to claim that you are Agile, if you are not writing lots of automated test cases, and writing them before you write the code that makes them pass.
 3 Oct 2007
SOA, cuts the Gordian Knot --NOT.
 Most software systems are a mess. SOA is not the cure for that mess. Indeed, SOA doesn’t even start to be feasible until the mess has been cleaned up.
 3 Oct 2007  
 Schools of Thought
 We know there is no single “right” way to write software, and so we tolerate many different opinions and styles. But inside a project it’s chaos.
 4 Sept 2007    
 Thread Local: A Convenient Abomination.
 ThreadLocal variables confuse the issue of separating function from schedule.
 10 July 2007
 The Founding of the Agile Alliance
 Title says it all.
 17 May 2007 
 The Hidiocy of XML Languages


 18 April 2007
 Coding Standards
 Coding style is a matter of team pride and team identity. Teams should be free to adopt their own styles, and to change those styles as the spirit moves them.
 11 April 2007  
 What is SOA, really?         
 There are things in a business that don’t change very often.  They often represent a huge part of the business. We’ll call these things the _core business functions.
 11 Feb 2007  
 Testin GUIs Part II: JSP  
 Test virtually any static web page, or portion thereof outside of a container, and without a webserver running.
 11 Feb 2007
 Dependency Management: HtmlUnit
 When building an API think about dependency management and don't share more than is needed.
 8 Feb 2007
 Jasper: Problem resolved?
 After digging around in the Jasper source code, and fiddling hither and yon Bob found the solution.
 4 Feb 2007
 Jasper:  The Saga Continues.
 3 Feb 2007
 Ant, JspC, and Other Horrors
 Mishmatch between the tag processing libraries? Generated code that's hideous to read because of a subtle problem?
 1 Feb 2007
 Specs vs. Tests
 26 Jan 2007
 Going Fast
 Are quick and dirty solutions really quick?
 21 Jan 2007
 Private vs Protected
 Why make a field private since privacy ruins extensibility?
 13 Jan 2007
 Testin GUIs Part I: RoR.    
 Testing GUIs is one of the the holy grails of Test Driven Develoment (TDD).
 6 Jan 2007
 Money Format WTF    
 Beck’s rule: Never let the sun set on bad code.
 4 Jan 2007 
Web Death by Strings
 The web is hell for programming.
 21 Dec 2006 
 The Need For Speed    
 Getting it done under pressure.
 20 Dec 2006 
 I got tired and debugged!
 When you find you must debug, it’s time to get help or go home.
20 Dec 2006 Java Dates The horrible state of Dates in the Java standard library.
5 Dec 2006 Sketch Fighter If you own a Mac, you need to get this game.
26 Oct 2006 Abstract Factory by Daniel T Another "story" about Abstract Factory.
20 Oct 2006 The Hungarian Abhorrence Principle Denoting data type in variable names implies a design flaw.
18 Oct 2006 Rubarian Notation Egad! I am tempted to denote type in my ruby variable names!
18 Oct 2006 Craftsman 49 Abstract Factory
15 Oct 2006 P2M2: Pair Programming Maturity Model Pairing is useful, but...
29 Sep 2006 Craftsman Column All the "Crafstman" columns, including some that never made it to print.
6 Sep 2006 Safe Computations Math in a computer is not the same as math on paper.
5 Sep 2006 Convex Hull Timing More on the preformance of computational geometry."
4 Sep 2006 Joel on Ruby Joel says: "No! Don't do it!"
2 Sep 2006 The Yes and No Game A fun game to play with preschoolers, with a twist.
1 Sep 2006 Untested Code is the Dark Matter of Software Another response to Cedric
1 Sep 2006 The Danger of Mock Objects A response to Cedric
31 Aug 2006 Making Messes in Ruby It's easy!
30 Aug 2006 Refactoring Paralysis I wish I had a refactoring tool in Ruby!
28 Aug 2006 Comparing the Speed of Java, C++, and Ruby A simple benchmark with some surprises
26 Aug 2006 Stardust An astronomy lecture, and a best man's toast.
25 Aug 2006 The Perverse Nature of Performance Tuning It never works exactly the way you think.
18 Aug 2006 SRP in Ruby The Single Responsibility Principle in Ruby
17 Aug 2006 Ruby Combinations An issue with making Ruby code clean.
14 Aug 2006 Common Decency Washroom Etiquette
13 Aug 2006 Rails I've just started reading the (beta) Agile Web Development in Railsß
2 Aug 2006 Green Wrist Band Get your own!
12 Jun 2006 Agile People Still Don't Get It Response to a rant by Cedrick.
10 Jun 2006 Roman Numerals and Link Farmers Ever more security measures.
10 Jun 2006 Taking Care An attitude of development.
8 Jun 2006 Mac Book Pro Comic More on a sweet machine.
20 May 2006 Mac Book Pro A sweet machine.
8 Apr 2006 Wading through Code Get your hip-boots on.
23 Mar 2006 New Java Enums are Cool I have found the new Java Enums to be more than just curiosities.
20 Mar 2006 Architecture is a secondary effect. Architecture is important to keeping a system flexible, changeable, malleable. But it's a secondary effect.
15 Feb 2006 Clean Code: Args. An article about professionalism, craftsmanship, and refactoring.
19 Jan 2006 The Prime Directive of Agile Development. At the heart of the Agile movement there is a central theme: 'Never Be Blocked'
7 Jan 2006 Agile means you never have so meet your deadlines. A common myth
30 Dec 2005 On Documentation Documenation is not evil, and is not anathema to Agile.
1 Dec 2005 John Vlissides Obituary
17 Nov 2005 MSTDD Microsoft's notion of TDD.
8 Nov 2005 Bounded Wildcards More on the wonderfully twisted subtype relationships of generics.
5 Nov 2005 Is a list of circles a list of shapes? Of the wonderfully twisted subtype relationships of lists.
26 Oct 2005 Does Visual Studio Rot the Mind? A truly wonderful article (talk) by Charles Petzold
25 Oct 2005 Extract Class A pleasant combination of refactorings using IntelliJ[?] (and Eclipse?)
19 Oct 2005 Analysis vs. Design The difference between "what" and "how".
10 Oct 2005 Frackin' Variable Naming Contest Please help me figure out what the name of this variable should be.
7 Oct 2005 The Bastard Child Are unit tests the bastard child? How well do we treat them?
6 Oct 2005 The Three Rules of TDD Test Driven Development is driven by three simple rules.
5 Oct 2005 The Sensitivity Problem Software is very sensitive to error. Others have solved this problem.
5 Sep 2005 Palm Life Drive Premature? Elegant, cute, not ready for prime time.
30 Aug 2005 Pronouncing Binary How to pronounce binary numbers.
27 Aug 2005 World Weary XPers Purity, Stridence, or just being Right?
27 Aug 2005 Joel on XP (Again) Oh, Joel!
25 July 2005 The Agile Test A set of questions I asked during my Agile 2005 Keynote.
24 Jun 2005 The Prime Factors Kata Another Kata exploring a simple algorithm with rich implications.
23 Jun 2005 The Bowling Game Kata A complete Kata worked out in tiny little steps.
20 Jun 2005 The Coding Dojo A programming metaphor from the domain of martial arts.
11 May 2005 Principles of OOD Eleven principles of object oriented design.
10 May 2005 Empirical vs. Analytical Analysis A simple example showing the interplay between empirical and analytical analysis
30 Apr 2005 Visitor vs. instanceof When should you use Visitor, Acyclic Visitor, and instanceof
26 Mar 2005 Conformance To Plan Why is conformance to plan such a big deal? Especially since we almost never do.
18 Mar 2005 Joel and Eckel On XP How can two such credible people come away with two such different views?
13 Mar 2005 Brain Surgery Guides A Metaphor for Acceptance Tests.
3 Mar 2005 Just 10 Minutes without a Test I lapsed for ten minutes. I paid the price.
24 Feb 2005 Vehement Mediocrity Why do junior developers always argue that quality takes time?
21 Feb 2005 The Next Big Thing The next big thing that will capture the industry's attention
7 Feb 2005 Incremental Architecture Making long term sweeping architecture changes incremenally
8 Jan 2005 Stable Dependencies Fixture Yet another fixture to complement the JDepend suite of FitNesse[?] fixtures.
5 Jan 2005 Module Metrics Fixture A new fixture to complement the Module Dependencies Fixture in my previous blog
23 Dec 2--4 The JDepend Fixture Merry Christmas Everyone. Here's a free gift for you all.
7 Dec 2004 Outlook. Ugh. Who ARE these people?
22 Nov 2004 Home Computer of the Future Is this a fraud?
9 Nov 2004 Singleton vs. Just Create One The case against rampant use of the Singleton pattern
23 Sep 2004 The Web: Welcome to the 70's Feeling sorry for myself.
31 Aug 2004 A Wonderful Race Condition A cool discussion about an obscure technical detail.
31 Aug 2004 Speed Kills Another Tortoise and Hare rant.
21 Aug 2004 Skepticism Leads to Understanding A rant about something or other.
5 Aug 2004 I use Visitor all the time A defense of the poor Visitor pattern.