Online Mind Mapping and Brainstorming

Create your own awesome maps

Online Mind Mapping and Brainstorming

Even on the go

with our free apps for iPhone, iPad and Android

Get Started

Already have an account? Log In

Craftsman Column by Uncle Bob by Mind Map: Craftsman Column  by Uncle Bob
5.0 stars - 4 reviews range from 0 to 5

Craftsman Column by Uncle Bob

All the "Crafstman" columns, including some that never made it to print.

#8: Socket Service 3 (Tests are a form of documentation)

01/2003Robert C. MartinAlphonse and Jerry work on the socket service project. Alphonse learns that unit tests are a form of design documentation.

#7: Once Is Not Enough

01/2003Robert C. MartinDigging deeper into the SocketService framework, Jerry and Alphonse find that substituting tests into the real application code can lead to designs that meet the needs of real users-is this a job for the MockObject pattern?

#2: Crash Diet

08/2002Robert C. MartinOn day two of my apprenticeship, I learned how to cut my code down to size—by dividing a gargantuan function into logical concepts and began to understand the value of organization.

#5: Baby Steps

11/2002Robert C. MartinIt seemed like incremental absurdity, but Jerry's madness concealed a method: Sneaking up on a solution one test case at a time made me realize I was actually learning something.

#6: Once Is Not Enough

12/2002Robert C. MartinThe first time I ran the SocketServer test, it passed, but Jerry was not convinced. Sure enough, further tests failed. Was I losing it? How can a program behave like that?

#4: A Test of Patience

10/2002Robert C. MartinThe apprentice struggles with his mentor's quixotic guidance: Spend hours or days writing code, and then blithely throw it away? How pointless is that?

#3: Clarity and Collaboration

09/2002Robert C. MartinThough I hate to admit it, when Mr. C's journeyman tore my maiden effort to shreds, he taught me some important lessons in simplicity and the necessity of teamwork.

#1: Opening Disaster

07/2002Robert C. MartinI was delighted to be accepted as Mr. C's apprentice. But despite high hopes, my first attempt at coding for the master developer quickly hacked my hubris down to size. Would I make it?

#9: Dangerous Threads

02/2003Robert C. MartinAlphonse and Jerry discover the frustrating and bizzare world of concurrent threads.

#10: Dangling Threads (Iterations Unbound)

03/2003Robert C. MartinAlphonse and Jerry learn the consequences of modifying containers in different threads.

#11: What's main() got to do with it?

04/2003Robert C. MartinThis article begins the SMCRemote project. Alphonse learns that main() is often the last function you want to write.

#12: Three Ugly Lines

05/2003Robert C. MartinJerry and Alphonse attempt to ship a file over a socket. They discover ugliness.

#13: Objects

06/2003Robert C. MartinAlphonse surprises Jerry by finding a more elegant solution to shipping a file over a socket. In the process, he meets 'Jasmine', his new tutor.

#14 Transaction Actions

08/2003Robert C. MartinWorking with a new journeyman is a harrowing experience for Alphonse. Can he withstand Jasmine's gimlet eye-and live up to his new nickname?

#15 Ess Are Pee

09/2003Robert C. MartinIn which our enthusiastic apprentice cleans up his file at Jasmine's request, while conducting an imaginary dialogue that gets him in way over his head -- all by himself.

#16 Excess Politesse

10/2003Robert C. MartinAn overdose of etiquette helps Alphonse, now chastened by embarrassment, complete the code -- but the New Jasmine makes him awfully uncomfortable.

#17 Call in the Guards

11/2003Robert C. MartinExpecting the worst after his run in with jasmine, Slphonse learns a new use for the if statement and and discovers that his new mentor's mundane facade belies a rigorous mind.

#18 Slow and Steady

12/2003Robert C. MartinWhen his new mentor's pokey pace seems to make progress a thing of the past, Alphonse blows up and learns a lesson about the importance of taking your time.

#19 Teaching Tolerance

01/2004Robert C. MartinAs our apprentice grows accustomed to his new mentor's deceptively slow pace, he learns a lesson in appreciation of both her knowledge and her knitting.

#20 Backslide

02/2004Robert C. MartinThe thrill of independent effort soon pales when Jerry rains on Alphonse's parade. Painfully, our apprentice realizes the bitter truth -- and pushes the delete key.

#21 Patchwork

03/2004Robert C. MartinAfter our apprentice stops fidgeting about being patronized, he learns a thing or two about putting two and two together -- and cleaning up after himself.

#22 Bug Eye

04/2004Robert C. MartinAlphonse meets Avery, a somewhat nervous and know-it-all apprentice.

#23 Raggedy

01/2001Robert C. MartinAlphonse and Avery get a lot of good work done while developing a rapport.

#24 Oh No!

03/2001Robert C. MartinShips Time 1800 2/20/2001 -- Alphonse and Avery start working on a new project: The Dosimeter Tracker.

#25 Register Suit

01/2004Robert C. MartinShip's Time: 0800-2-21-2002 -- Alphonse and Avery explore the reqiurements of the Dosimeter Tracking System with their customer.

#26 A Tabled Requirement

05/2004Robert C. MartinShip's Time: 0900-2-21-2002 -- Taking the plunge into a safety-critical project, Alphonse and the team wrangle out an acceptance test - but competitive currents threaten to sink their progress.

#27 Carole's Way Or The HighWay

05/2004Robert C. MartinShip's Time: 1000-2-21-2002 -- Avery's obstinate resistance to acceptance tests creates a stumbling block for the DTracker team, as our intrepid apprentice Alphonse wisely decides to remain neutral.

#28 An Encapsulation Break

06/2004Robert C. MartinShip's Time: 1100-2-21-2002 -- In the high-G end of the gamma arm, Jasmine and Jerry lock horns on object-oriented philosophy. Alphonse and Avery look on and ask some pertinent questions.

#29 Move the Date

08/2004Robert C. MartinShip's Time: 1130-2-21-2002 -- Is all this testing nonsense just make-work for morons? After working on the suit registration requirement for nearly four hours, the only production code the team's got to show for it is ...

#30 The Woodshed

09/2004Robert C. MartinShip's Time: 1230-2-21-2002 -- As Avery and Jean are sequestered for some serious attitude adjustment, our apprentice Alphonse proceeds with Jerry on the dosage tracker testing. Will they actually get something done before Avery and Jean emerge?

#31 Turn Off This Force Field

10/2004Robert C. MartinShip's Time: 1330-2-21-2002 -- As Alphonse grudgingly acknowledges yet again the value of unit tests, he delves into database theory with Jerry - and Avery, eventually, emerges from the woodshed.

#32: Indubitably!

10/2004Robert C. MartinShip's Time: 1430-2-21-2002 -- After the woodshed.

#33: Cleanup on Aisle 10

12/2004Robert C. MartinShip's Time: 1500-2-21-2002 -- Mock Objects, and refactoring bad designs into better designs.

#34: That's Final!

01/2005Robert C. MartinShip's Time: 1600-2-21-2002 -- The first acceptance tests begin to come together.

#35: What a day

02/2005Robert C. MartinShip's Time: 1630-2-21-2002 -- Alphonse and Avery refactor a module and eliminate nasty cruft.

#36: The Color Purple

03/2005Robert C. MartinShip's Time: 1630-2-21-2002 -- A deeply philosophical discussion about the speed of development and the definition of done. And a short medical emergency.

#37: Handling Rejection

04/2005Robert C. MartinShip's Time: 0800-2-22-2002 -- Alphonse meets Jasper and works on a new acceptance test. He also discovers how unit tests expose aspects of code even when there are acceptance tests.

#38: Test Independence

05/2005Robert C. MartinShip's Time: 0830-2-22-2002 -- Alphonse learns the value of keeping acceptance tests independent of each other.

#39: Test Refactoring

06/2005Robert C. MartinShip's Time: 0830-2-22-2002 -- Alphonse discovers DoFixture.

#40: Non-trivial Trivialities

07/2005Robert C. MartinShip's Time: 0900-2-22-2002 -- Alphonse and Jasper discuss the Single Responsibility Principle.

#41: Yeah, Sorta

08/2005Robert C. MartinShip's Time: 1000-2-22-2002 -- Alphonse and Jasper work together to get the next acceptance test to pass.

#42: Devious Thoughts

10/2005Robert C. MartinShip's Time: 1030-2-22-2002 -- Alphonse works with Jerry on writing new acceptance tests.

#43: Language Lawyers

10/2005Robert C. MartinShip's Time: 1100-2-22-2002 -- Alphonse and Avery explore Java 5 generics.

#44: Java Generics 2

11/2005Robert C. MartinShip's Time: 1100-2-22-2002 -- A painfully fun exploration of and in Java 5 generics.

#45: Visitor

12/2005Robert C. MartinShip's Time: 1100-2-22-2002 -- Avery and Alphonse explore the Visitor pattern, and the problem of dependency cycles.

#46: Squaring the Circle

01/2006Robert C. MartinShip's Time: 1100-2-27-2002 -- Jerry hijacks the brown bag with a lecture on dependency cycles and the Acyclic Visitor.

#47: Jinx!

02/2006Robert C. MartinShip's Time: 1100-2-28-2002 -- Alphonse, Avery, Jerry, and Jasmine discuss the strange and variegated nature of Java 5 enums.

#48: Statenum

03/2002Robert C. MartinShip's Time: 1100-2-28-2002 -- Jasmine gives a quick talk on the benefits of using Java 5 enums for the State pattern.

#49: Brown Bag VI - Abstract Factory

04/2002Robert C. MartinShips Time: 1100-4-4-2002 -- Adelaide presents a proposal to use the Abstract Factory pattern, which stirs up quite an argument amongst the Jouneymen and Aprentices. Avery goes too far, and Alphonse makes everyone reconsider the value of type safety.

#50: Brown Bag VII Ruby

06/2007Robert C. MartinWe had to change to a larger conference room because so many people showed up for today’s session. There were people there I had not seen since school...

#51: Brown Bag VIII Ruby Visitor

08/2007Robert C. MartinI'm not sure why they call these meetings 'Brown bags'. Apparently it's something from the old days at Los Alamos. In any case, over 30 people filed into the conference room for this one. The speaker was someone I hadn’t met before. His name was Dave Chelimsky...

#52: Clean Code - C1 Inappropriate Information

20/2009Robert C. MartinThe Brown-Bag was boring today. One of the virtual attendees gave a talk about some big framework. I didn’t get the name, but I think it rhymed with 'sore'...