CodeBetter.Com
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @CodeBetter

Darrell Norton's Blog [MVP]

Fill in description here...

February 2005 - Posts

  • Test-Driven Development in 1985

    Test-Driven Development in 1985:

    “The code was extraordinarily well-documented and there was a test word for every word in the program, as well as a word that ran all the tests as an automatic suite so that we could check for side-effects whenever we made a change. It is to these methods I attribute the nearly unique accomplishment of Information Appliance: a piece of commercial general-purpose software in which no bugs were ever discovered. We had the same splendid results in designing the Canon Cat.”

    Jef Raskin on the Swyft information applicance. Jef passed away this weekend.

    [via Raganwald]

    Posted Feb 28 2005, 07:55 AM by darrell with 3 comment(s)
    Filed under:
  • Kent Beck boots points in favor of real schedule estimates, communication improves

    Continuing with my reading of Extreme Programming Explained: Embrace Change 2nd ed., in chapter 12 Kent Beck writes:

    “The first edition of Extreme Programming Explained had a more abstract estimation model, in which stories cost one, two, or three "points". Larger stories had to be broken down before they could be planned. Once you started implementing stories, you quickly discovered how many points you typically accomplished in a week. I prefer to work with real time estimates now, making all communication as clear, direct, and transparent as possible.”

    Kent used points, others used “ideal days”, but the concept was the same. Points, or ideal days, were multiplied by some factor that converted the estimate into real days. I complained about this in my XP Overview article:

    “One thing that hurts XP in this area, in my opinion, is the use of “ideal days” for estimates.  To translate this to schedule time, the estimate is multiplied by a “factor” that is supposed to take into account interruptions, communication difficulties, and the like.  The problem with this is that it buries the bottlenecks and their associated buffers in the individual estimates.  According to critical chain theory, this is the worst thing to do! Another problem with this is that it effectively hides work inhibitors, rather than bringing them into full view of management to be dealt with on a daily basis (reference here is to the daily Scrum).  And the worst thing about this is that it is not the language the business people speak.  Business people want to know things in hours and days, not in craft-units or ideal days.  Putting up artificial barriers to communication is contrary to XP’s value of communication.”

    Nice to see that Kent is making things better in the second edition!

    Posted Feb 25 2005, 11:56 AM by darrell with 3 comment(s)
    Filed under:
  • New Managing Agile Projects book available

    Managing Agile Projects, a book edited by Kevin Aguanno, with contributions from noted agile authors:

    • Scott Ambler, the developer of Agile Modeling;
    • Sanjiv Augustine, a leading expert in Agile Project Management;
    • Alistair Cockburn, developer of the Crystal Methods;
    • David Cohen, a scientist studying agile methods;
    • Larry Constantine, developer of usage-centred design;
    • Patricia Costa, a scientiest studying agile methods;
    • David Hussman, an author and speaker on agile methods;
    • Ron Jeffries, the co-creator of Extreme Programming;
    • Gerold Keefer, a critic of Extreme Programming noted for his in-depth analysis and research;
    • Kirstin Kohler, a leading expert in requirements engineering;
    • Mike Lindvall, a scientist studying best practices and methodologies;
    • Barbara Paech, an expert in requirements engineering;
    • Linda Rising, a leading expert in object-oriented design and the use of "patterns;"
    • Jim Tomayko, a professor at the Software Engineering Institute;
    • Pascal Van Cauwenberghe, an expert in Extreme Programming and founder of a European XP conference; and
    • Susan Woodcock, VP of a major IT consulting firm who is researching the application of agile methods to packaged software implementation projects.

    Only $39.95, and if you order from the web site you get a couple extra goodies. [via Lasse’s weblog]

    Posted Feb 25 2005, 10:49 AM by darrell with 1 comment(s)
    Filed under:
  • Avoiding the mistakes of the past

    In chapter 9 of Extreme Programming Explained: Embrace Change 2nd ed., Kent Beck writes about the corollary practice of root cause analysis:

    “The goal is not just that this one defect won't ever recur, but that the team will never make the same kind of mistake again.”

    Ummm, isn’t that what the prescriptive methodologies try to do by adding more process? Let’s not make the same mistake again. :)

    Posted Feb 22 2005, 08:15 AM by darrell with 6 comment(s)
    Filed under:
  • You don't need an ego to own the product

    Jeff Atwood has an interesting post where he states that developers have to own the product. While I agree with it, his reasoning to get there seems a little off. He starts of by saying that developers should have an ego (and a big ego is somewhat implied), and he quotes Robert Glass from Facts and Fallacies of Software Engineering:

    "Consider the notion of an egoless manager. That idea, of course, is preposterous! The ego of the typical manager is the driving force that makes him or her effective."

    Robert Glass makes this statement with nothing substantial to back it up. The whole proof is the absurdity of the thought of it. Galileo ran up against the same argument, roughly paraphrased here, "Consider the notion that the sun is the center of the universe. That idea, of course, is preposterous!" Where are the facts? Don’t get me wrong, the facts part of Glass’s book is good because it has all sorts of, well, facts, but this fallacy is 100 percent opinion. The same argument can be used for whatever you don’t want to consider. “Consider the notion of college without beer. That idea, of course, is preposterous!” People that had fun in college are nodding their heads right now.

    From there Jeff derives an ego-driven ownership. Somehow that’s confusing ego with ownership. Having an ego, even an inflated ego, is not the same as being the owner of something important. Although there is often correlation, there is no causation. And the idea of egoless programming in no way diminishes ownership of the end product. I think the problem is taking egoless programming to the extreme, which I agree does not work. Of course, most things taken to the absolute extreme don’t work too well in practice, but they do serve to counterbalance the opposite extreme.

    So while I agree with Jeff, his argument doesn’t really work for me.

    Posted Feb 22 2005, 07:14 AM by darrell with 9 comment(s)
    Filed under:
  • Resize the Firefox search bar extension

    A couple of people left comments on the post where I resize the Firefox search box. There is now an extension that makes easy work of it.

    ResizeSearchBox is an extension that adds a resize thumb to the toolbar which can be used to resize the search box. The resize thumb is added by customizing the toolbar.

    Using the resize thumb to resize the search box.
    Posted Feb 21 2005, 07:48 AM by darrell with 5 comment(s)
    Filed under:
  • ISO Recorder power toy for Windows XP and Windows Server 2003

    Here's an awesome power toy that my coworker Matt pointed me to, ISO Recorder by Alex Feinman.

    • Recording ISO images
    • Creating ISO images
    • Copying CDs
    • Supports Windows XP SP2 and Windows Server 2003
    • Using ISO Recorder does not require administrator rights

    There's a handy ISO Recorder tutorial, but how hard can right-clicking be? Technically it is in "Beta 2", but I haven't had any problems with the supported features (it does not copy audio or video CDs yet).

    Posted Feb 19 2005, 08:13 AM by darrell with 2 comment(s)
    Filed under:
  • Custom FxCop rules

    Raymond asked where are all the custom FxCop rules? Check out David Kean's Managed From Down Under blog. He has several custom FxCop rules with code.

    Update: Fixed the spelling of David Kean's last name.

    Posted Feb 18 2005, 08:06 AM by darrell with 7 comment(s)
    Filed under:
  • What is software design? - article ideas still ring true 13 years later

    Here’s a link to an article by Jack Reeves called “What is Software Design?” from the C++ Journal in 1992.

    On source code:

    “The final goal of any engineering activity is the some type of documentation. When a design effort is complete, the design documentation is turned over to the manufacturing team. This is a completely different group with completely different skills from the design team. If the design documents truly represent a complete design, the manufacturing team can proceed to build the product. In fact, they can proceed to build lots of the product, all without any further intervention of the designers. After reviewing the software development life cycle as I understood it, I concluded that the only software documentation that actually seems to satisfy the criteria of an engineering design is the source code listings.”

    On builds:

    “There is one consequence of considering code as software design that completely overwhelms all others. It is so important and so obvious that it is a total blind spot for most software organizations. This is the fact that software is cheap to build. It does not qualify as inexpensive; it is so cheap it is almost free. If source code is a software design, then actually building software is done by compilers and linkers. We often refer to the process of compiling and linking a complete software system as "doing a build".”

    On testing:

    “The software design is not complete until it has been coded and tested. Testing is a fundamental part of the design validation and refinement process. The high level structural design is not a complete software design; it is just a structural framework for the detailed design. We have very limited capabilities for rigorously validating a high level design. The detailed design will ultimately influence (or should be allowed to influence) the high level design at least as much as other factors. Refining all the aspects of a design is a process that should be happening throughout the design cycle. If any aspect of the design is frozen out of the refinement process, it is hardly surprising that the final design will be poor or even unworkable.”

    On programming languages:

    “This says that the collective subconscious of the software industry instinctively knows that improvements in programming techniques and real world programming languages in particular are overwhelmingly more important than anything else in the software business. It also says that programmers are interested in design. When more expressive programming languages become available, software developers will adopt them.”

    On development process:

    “Also consider how the process of software development is changing. Once upon a time we had the waterfall process. Now we talk of spiral development and rapid prototyping. While such techniques are often justified with terms like "risk abatement" and "shortened product delivery times", they are really just excuses to start coding earlier in the life cycle. This is good. This allows the build/test cycle to start validating and refining the design earlier. It also means that it is more likely that the software designers that developed the top level design are still around to do the detailed design.”

    Posted Feb 17 2005, 11:36 AM by darrell with 11 comment(s)
    Filed under:
  • Tree Surgeon - open source project to make .NET development trees

    Mike Roberts has created Tree Surgeon, an open source product that creates a .NET Development Tree just like his great posts. [via Lasse’s weblog]

    Posted Feb 14 2005, 07:57 AM by darrell with no comments
    Filed under:
  • It's not dynamic vs. static typing

    Bruce Eckel states exactly my thoughts on static vs dynamic typing:

    "I think the biggest problem when thinking about this [thought process] is that static-mind is very deterministic and unforgiving, and says "if I can't find out about it at compile time, all is lost." In reality, you can only find out about some problems at compile time, anyway. Dynamic languages shift the discovery of problems more towards runtime. If you can accept that there are plenty of problems that can only ever be detected at runtime anyway, it's possible to look at this issue with a little more perspective, and to calm down the stridency of the static-mind a bit."

    Posted Feb 11 2005, 12:47 PM by darrell with 5 comment(s)
    Filed under:
  • Scrum and Agile blog posts worth reading

    Here's a set of Scrum and agile blog posts over on Conchango:

    Posted Feb 10 2005, 11:52 AM by darrell with 3 comment(s)
    Filed under:
  • Visual Designer for Microsoft SDC Build Scripts

    I’ve been quiet the past couple of days because I’ve been nuking and paving my development laptop. Why can BizTalk 2002 not uninstall itself? Why must it keep starting up services I don’t want started? The world may never know, but it won’t happen on my laptop. :)

    Anyway, here’s something to keep you busy. Howard van Rooijen created a visual designer for SDC build scripts. Check out the screenshot:

    Posted Feb 09 2005, 01:07 PM by darrell with no comments
    Filed under:
  • Scrum at Microsoft

    Posted Feb 04 2005, 01:48 PM by darrell with 7 comment(s)
    Filed under:
  • Maverick Development: an agile methodology

    Here’s an interesting agile method called Maverick Development that Geoffrey Slinker came up with based on the book Maverick: The Success Story Behind the World's Most Unusual Workplace. Start with the detailed introduction before reading the rest. It seems like an interesting combination of XP and Crystal along with some Agile Project Management.

    Posted Feb 03 2005, 12:41 PM by darrell with 3 comment(s)
    Filed under:
More Posts Next page »