May 2006 Archives

Automating "All" Tests

|

Ron Jeffries:

"Sure, test automation is a good thing. But we can't, and shouldn't, automate them all. Why then, ask people to 'automate all tests'?"

The YAGNI Development Assistant

|

Very Cool: The YAGNI Development Assistant.

Mising in both Visual Studio 2003 & Xcode 2.3.

(Via Jeremy D. Miller)

Programmers and Chefs

|

Jeff Atwood elaborates on Programmers and Chefs inspired by the Ron Jeffries's quote I posted a few days ago.

As always, Jeff's thoughts are a great read. Plus, to kind of push the kitchen analogy even further, it's always great to come up with some vague idea for a meal and someone else is doing the hard work of actually cooking the meal (and cleaning the kitchen afterwards, of course).

Test automation capabilities

|
Another great quote by Ron Jeffries (this time picked up via MemoRanda):
"The only time not to automate a test ought to be if we are never going to want to run it again. But it isn't. The more common time we don't automate a test is because it would be 'too hard' to automate it. That is, however, not really a property of the test, though we like to put it that way. It's really a property of our own test automation capability and tools."

Welcome...

|

...Uncle Bob.

Of course, you're lucky because you don't have one of those MacBook Pro emitting whining noises, featuring an LCD panel with brightness issues and having general excessive heat issues. But still, even with those issues, it's still way better than anything else out there.

Spitzenklasse

|

Der ist wirklich gut.

Code Smells

|

An excellent collection of Code Smells by Coding Horror.

Usability

|

Creating passionate users:

Make the right things easy and the wrong things hard.


On Big Upfront Design

|

Ron Jeffries (taken from an interview with Bruce Eckel):

"The reason the kitchen is a mess is not because the kitchen is poorly designed, it is because we did not do the dishes after every meal."

Hallmarks Of A Great Tester

|

Hallmarks Of A Great Tester - Great presentation by The Braidy Tester.

I also like the subtitle of his blog: Making developers cry since 1995.

Discipline

|

Smell to Refactoring Cheat Sheet

|

Nice overview of code smells and what to do about them: Smell to Refactoring Cheat Sheet.

(Via William C. Wake)

Coercing Your Developer

|

Here's a good one: Coercing Your Developer.

The Smalltalk Browser

|

Andy Dent on Object Master & the classic beauty of the Smalltalk Browser.

That's something I crave: Having a Smalltalk 3-pane browser to edit C++ code - like Object Master. Occasionally, I spent some time googling for one, but it looks like there's nothing like that out there.

Foundation

|

Here's an excellent post by Jonathan Pickup on the need for a solid foundation to successfully complete advanced projects.

I would like to add that you will need to work on your foundation, the basic skill set of your profession every day. It's one of most important things you can do.

Martin Luther King, Jr.: I Have a Dream

|

If Christoph blogs, you can count on him blogging something deeply relevant: Martin Luther King, Jr.: I Have a Dream.

Even though the speech was delivered more than 40 years ago, it's still relevant today.

Back to our regular scheduled programming.

Why face-to-face still matters

|

Another excellent post from Creating Passionate Users.

Wrapping (procedural) APIs

|

Why wrap a (procedural) API of a third-party library / host application - instead of using the API straight away? Here are some reasons plus some simple techniques to accomplish just that:

  • Wrapping the API makes unit testing much easier because you can mock your own classes instead of mocking the API itself (which tends to have more dependencies)
  • Creating your wrapper may actually deepen your understanding of the API
  • You may be able to tie up a few loose ends in the API (e.g. mix of deprecated and new API functions to accomplish a task)
  • Creating your wrapper may simplify the API (witness the change from AddPopupItem() to AppendPopupItem() in the sample provided below

Here are some simple techniques for wrapping:

  • Save on parameters - Instead of using AddPopupItem(..., long dialogID, short popupID, short insertAfterEntry, String entry) you could use MyAppendPopupItem(long dialogID, short popupID, String entry) - not a substantial improvement, but if combined with the next techniques quite powerful...
  • Transmogrify the API into an object-oriented API - Use myDialog.AppendPopupItem(short popupID, String entry) instead
  • Make it even more object-oriented - Use myPopup.Append(String entry) instead

There are a number of arguments against wrapping an API - but at the end of the day, I'm quite firmly in the "Wrap it" camp.

Illusion of agreement

|

Here's a great one from the 37signals blog: Illusion of agreement.

Darren Hobbs:

...just because all the fields (of a class) are final and there are no setters, this doesn't mean that the object is immutable.

Microsoft's Mac testing lab

|
Here's a nice tour of Microsoft's Mac testing labs - courtesy of David Weiss.

About this Archive

This page is an archive of entries from May 2006 listed from newest to oldest.

April 2006 is the previous archive.

June 2006 is the next archive.

Find recent content on the main index or look in the archives to find all content.