July 2010
1 post
An Accurate View of Organizations?
“Institutions, like organisms, seek survival for themselves and their descendants. One of the conceits at the heart of most theories of government, which has perhaps reached its apogee in this age of technocratic, managerial liberalism, is the idea that institutions are fundamentally instrumental. To an anarchist, this is a flatly silly proposition. (An analogue might be a Christian trying...
Jul 29th
2 notes
September 2009
1 post
Frustration-Driven Language Development by Michael Feathers April 6, 2004 Summary There are an incredible number of programming languages out there. What would it be like if we had a few with features that really supported testing? I just noticed that Brian Marick had an interesting response to something I said in my last blog entry. I was talking about how difficult it is to instantiate...
Sep 21st
July 2009
1 post
The End of the Era of Patronizing Language Design
Earlier this year, I was asked to speak at a Ruby Conference.   I was happy to go, but I also felt a bit out of place.  I haven’t done much Ruby, but I’ve admired the language from afar.  I have numerous friends and acquaintances who’ve left C++ and Java to jump toward Ruby and Python, and for the most part, they are happy. They do great work, and they enjoy it.  They are living proof that the the...
Jul 13th
1 note
June 2009
1 post
The Deep Synergy Between Testability and Good...
Think about your first unit testing experience.  It was probably frustrating.  It is for most people.  You probably took a class, tried to instantiate it in a test harness and ran into a host of difficulties. You might have had to create a bunch of objects to pass as constructor arguments.  Some of them might have been difficult to create because they depended on other objects.  You might have had...
Jun 18th
1 note
April 2009
3 posts
“I used to think that statically checked languages are better for teaching because they prevent the students from doing obviously stupid things. About two years ago I changed my mind. The students learn much better by doing stupid things than by being told by an oppressive compiler that their programs are stupid. So this year I switched to Python. The students are happier, and so am I...
Apr 12th
2 notes
Truth in Metaprogramming
I find it convenient to distinguish between two types of metaprogramming.  One kind augments the source code, the other kind nullifies it. Ideally, whenever you see behavior in the source code you know that it is accessible in the precise way outlined in the source.  For instance, if a class named Registry has a method named getProperty, we should have confidence that when we send the getProperty...
Apr 7th
The Golden Rule of API Design
It’s not enough to write tests for an API you develop, you have to write unit tests for code which uses your API. When you do, you learn first-hand the hurdles that your users will have to overcome when they try to test their code independently.
Apr 2nd
February 2009
1 post
10 Papers Every Programmer Should Read at Least...
‘On the criteria to be used in decomposing systems into modules’ - David Parnas ‘A Note On Distributed Computing’ - Jim Waldo, Geoff Wyant, Ann Wollrath, Sam Kendall ‘The Next 700 Programming Languages’ - P. J. Landin ‘Can Programming Be Liberated from the von Neumann Style?’ - John Backus ‘Reflections on Trusting Trust’ - Ken...
Feb 25th
3 notes
November 2008
2 posts
Coda - The Dance of Protection (excerpt from...
When I’ve discussed testability issues with API developers, I’ve had a mixed response.  Most of what I suggest involves opening up APIs – making them a little bit less protected.  This runs completely counter to most people’s instincts.  At one company, I told several members of a team that they would be able to enable a bit more testing if they made several methods public.  Immediately they said...
Nov 27th
Notes for the Afflicted (excerpt from ADAIUM)
When I decided to write this paper, my intention was to raise awareness of the testability issue among API designers.  But, I wouldn’t feel comfortable finishing it without talking about how we can move forward when API designers don’t do any of these things. There is one simple answer: wrap it.  I’ve visited a number of teams who have decided that it is just easier to wrap all APIs .  If you...
Nov 18th