Last updated : 09/11/2002; 12:44:39

Joe's Jelly

Joe Walnes rambling on and on about Software Development, Java and Extreme Programming.

NAVIGATION >>

/WIKI /WEBLOG /THOUGHTWORKS /OPENSYMPHONY /EMAIL

:: ELSEWHERE
xp developer wiki
c2 xp wiki
the server side
javaworld
sd magazine
jakarta

:: BLOGS
Ara Abrahamian
Mathias Boegart
Mike Cannon-Brookes
Paul Hammant
Aslak Hellesøy
Darren Hobbs
Patrick Lightbody
Charles Miller
Brett Morgan
Rickard Öberg
Joseph Ottinger
Mike Roberts
Chris Stevenson
James Strachan

:: INVOLVEMENTS
SiteMesh
QDox
MockDoclet
OSCore
OSUser
PropertySet
RichTags
Marathon
SiteMesh C++
Alt-RMI
Jelly MockTags
more...
:: BACKLOGS
October 2002
Sun Mon Tue Wed Thu Fri Sat
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
Sep   Nov



Click here to visit the Radio UserLand website.

Click to see the XML version of this web page.

joe@truemesh.com

:. 12 October 2002

  11:53:14 AM  

CMM is -Not- a Methodology. Capability Maturity Model for Software, also known as SW-CMM is an assessment tool to measure a given methodology. I'm sure many of you guys know this. But, lots of folks writing for software development journals and HR staff writing help-wanted adverts apparently do not realize this. I'm just tired of reading articles that describe the extremes of metholodies ranging from XP to CMM. XP is a process. CMM is a way to assess your implementation of your selected process. All processes, and even not-using-a-process can be considered 'CMM', though just CMM Level 0. At my current gig, we're doing a... [bob mcwhirter]

Amen.


  11:46:41 AM  

Java Exe Maker - exe4j. exe4j is a Java exe maker that helps you integrate your Java applications into the Windows operating environment. exe4j helps you with starting your Java applications in a safe way, displaying native splash screens, detecting or distributing suitable JREs and JDKs, startup error handling and much more. [Java-Channel] [James Strachan's Radio Weblog] [Steve's Radio Weblog]

Hmmm. exe4j + swt => ? [Brett Morgan's Insanity Weblog Zilla]

While you're at it, look at Jet. Jet builds native EXEs that are really small and don't require masses of extra libraries or a JRE to be redistributed. And it fully supports SWT.


  11:28:03 AM  

The Red-Hat Green-Hat Gameä (nothing to do with Linux)

I think the modern equivalent of 40,000 page specifications is lots of test cases that demonstrate what the software should do; document requirements through test code. There's an interesting part in the article where the software team is divided into two teams

  • coders who write the code
  • testers who try and break the code

And there's a healthy competition between the two. If the test cases are written in software this could amount to one team of people writing test cases to try break the code and another team trying to write bullet proof code to get past the test cases.

I think both teams could learn alot from each other. In particular the testers should really be developers who know how to develop unit and integration testing software. Far too often in the software world testing teams are viewed as people who 'push buttons' rather than people who develop test cases to automatically test software.

I wonder if it'd help if software teams took turns being in both camps? Say 2 weeks a month they spend purely writing test cases to try break a part of the system, the next 2 weeks they spend writing code on another part of the system to try get past the test cases put in place by the other team. This could lead to some healhy competition.

[James Strachan's Radio Weblog]

This IS a really effective way of writing development systems which I frequently put in place in teams on a much smaller level using pair-programming. However I use it for writing finer grained unit-tests rather than acceptance tests.

RULES: Get two developers in front of the same machine and give one of them a red hat to wear and another a green hat. Mr Red's role is to write a small unit-test that fails. In doing so, he clearly expresses the proposed interface and intention of the new code. As soon as he's happy with his failing test, he slides the keyboard over to Mrs Green. Mrs Green's intention is to do just enough work to make the test pass at which point the keyboard is passed back over to Mr Red. Repeat cycle.

This red/green cycle typically takes anywhere between one and ten minutes before they keyboard is passed back to Mr Red. Every so often (a few times a day) the developers switch hats.

The competition is fierce. Mr Red defines the best possible API as possible and the most evil tests. Mrs Green solves the problem set by Mr Red in the most elegant way she can.

Benefits:

  • If one developer has a better understanding of what needs to be done or is more familiar with the system than the other, they can express this easily in tests. The other then has a concrete specification to work to and can explore/experiment until they achieve the goal. This is particularly effective for bringing new members of a team up to speed on a system very quickly or bridging a skills gap.
  • Both developers are at maximum concentration all the time. It makes it hard for one developer to go off on a tangent whilst the other one stops paying attention, because they need to tackle the problem as a team to achieve the goal. This filters out lone-ranger coders - and the slackers!
  • Competition is fierce but friendly between the two. The harder they compete, the better the result.
  • The roles are very distinct and clear.
  • At the end of the task, both developers walk away with the same knowledge about what the system is supposed to do and how it does it.
  • The tester and implementor are working together - there's no chance of misinterpretation.
  • Testing and implementing must happen in very small blocks and immediate feedback must be available. The best way to achieve this is through pair programming.

The great thing about this is that it's so easy to get started with. Oh, and you don't actually need hats.


Web-design by John Doe from open source web design.