February 2005 - Posts

Approaching System Boundaries with TDD

Bill Caputo has a wonderfully clear explanation of how to address questions regarding using TDD at system boundaries.

TDD is fundamentally about writing tests (or 'checked examples' as Brian Marick calls them) before you write the code. One of the benefits of this is that the resultant code is decoupled from the rest of the system. This becomes particularly important when the code is near a boundary (e.g. acesses a database, a queue, another system, or even an ordinary class if that class is "outside" the area your trying to work with or are responsible for).

However this benefit doesn't just happen, you have to want to find a way to structure the code so that it can be tested without resorting to resources beyond the test.

[via Bill Caputo]

Posted by Wayne Allen | 1 comment(s)
Filed under: ,

Skiplists in C#

Thanks to Patrick Logan I now know what Skiplists are.

Skip lists are an ingenious data structure that turns a linked list into a data structure that offers the same running time as the more complex self-balancing tree data structures... In the latter part of the article, we'll be building a skip list class in C#, which can be downloaded.

[via Patrick Logan via MSDN]

Posted by Wayne Allen | with no comments
Filed under:

Practical Agile Testing

Elisabeth Hendrickson has a great post about the practicalities of agile testing where she takes Brian Marick's breakdown of testing vectors and talks about what to actually do differently to achieve agility in testing.

Agile project teams generally reject the notion that they need an independent group to assess their work products or enforce their process. They value the information that testing provides and they value testing activities highly. Indeed, Extreme Programming (XP) teams value testing so much, they practice Test-Driven Development (TDD), writing and executing test code before writing the production code to pass the tests.  However, even though agile teams value testing, they don't always value testers. And they're particularly allergic to the auditing or policing aspects of heavyweight, formal QA.

So how can testers make themselves useful on a team that does not see much use in traditional, formal QA methodologies? Here's what I've been doing.

[via Elisabeth Hendrickson]

Posted by Wayne Allen | 1 comment(s)
Filed under:

Portrait Of An Agile Development Process

Jake Lawlor gives a great overview and lots of practical details around the implementation of an agile development process.

    1.  What Does It Mean To Run A Project Using An Agile Process?
    2.  Basic Terminology
      • User Stories and Technical Stories
      • Tasks
      • Team Velocity
      • Unit test
    3.  Agile Patterns and Practices To Choose From When Crafting Your Process
      •  Establish Iterations and Release Cycles 
      •  Employ a Planning Game To Identify Stories and Tasks 
      •  Utilize a Daily Standup Meeting to Reinforce Communication 
      •  Use a Planning Board to Communicate Task Activity and Ownership 
      •  Identifying and Procuring the Development Tools to Establish a Refactoring Space 
      •  Establishing an Automated Build, Test, Source Control, Stage and Deploy Process 
      •  Use Paired Programming Where It Makes Sense on Difficult Tasks 
      •  Promote Collaboration and Shared Code Ownership 
      •  Use Automated Regression Testing (Unit Tests) Where It Makes Sense 
      •  Track Team Velocity by Comparing Estimates Vs Actual Task Time 
      •  Follow a Strict Development, Test, Production Environment Deployment Flow 
      •  Use Technical Spikes to Gather Information for Unknowns 
      •  Pay Down Your Projects Technical Debt – Increase Your Velocity! 
      •  Design Solutions Using Object Oriented, N-Tier, Service-based Architecture Practices 
      •  Refactor Mercilessly to Keep Your Code Base Cruft-Free 
      •  Continue to Improve Your Process – Try Something New Every Iteration!
    4.  Our Teams Development Process Overview
      • Planning 
      •  Implementation 
      •  Testing Release 
      •  Production Release
    5.  Summary

[via Jake Lawlor's Blog]

Posted by Wayne Allen | 2 comment(s)
Filed under:

Dynamic SQL INSERT Generator Unleashed!

Mark Clerget has another excellent post on using SQL to generate SQL. This time Mark demonstrates how to generate a series of INSERT statements from an arbitrary table.

So you are probably saying, "Great, so you can generate a CREATE TABLE statement...Whoopee!". Well, if I could help you fill that table or tables using a script that dynamically generates INSERT statements based on the contents of a table, would that be worth something to you? Great! Read further and lets really impress those SQL jockey friends of yours. [Mark Clerget's Blog]

Posted by Wayne Allen | with no comments
Filed under:

Beyond Bullets: Microcasts

Cliff Atkinson has recently produced several microcasts (using Camtasia)demonstrating several key aspects of his new book "Beyond Bullet Points". I've enjoyed Cliff's eye opening series on how to make stunning PowerPoint presentations.

Posted by Wayne Allen | with no comments
Filed under:

You know you're a geek when...

You record the Superbowl on the PVR so you can watch the commercials, but your wife makes you watch some of the plays...


Posted by Wayne Allen | with no comments
Filed under:

Utility: PureText

I've come to rely on this great little utility from Steve Miller.

Have you ever copied some text from a web page, a word document, help, etc., and wanted to paste it as simple text into another application without getting all the formatting from the original source? PureText makes this simple. Just copy/cut whatever you want to the clipboard, click on the PureText tray icon, and then paste to any application.  Better yet, you can configure a Hot-Key to convert and paste the text for you.  The pasted text will be pure and free from all formatting.

Posted by Wayne Allen | with no comments
Filed under:

Portland Extreme Programming Users Group (XPDX)

XPDX is having another meeting Tuesday Feb 8, 2005. I will be running a workshop I am preparing for Agile 2005.

Pushing & Pulling Teams - An Exercise in How Things Get Done

Are you interested in how traditional task management, lean task management, multitasking and multiprojecting affect your project's time lines? Join Wayne Allen as he leads a series of hands-on activities designed to expose the real impact of these and other choices that influence your project's schedules. See where Extreme Programming (XP) fits in the mix and get a better understanding of how XP's planning works so well.

Posted by Wayne Allen | with no comments
Filed under:

Writing SQL with SQL

Mark Clerget of the Consultants Guild has a great post on generating SQL using SQL. Many moons ago Mark taught me this trick and it has served me well over the years.

Ever feel left behind when one of those SQL Server jockies breezes through a complex query that generates SQL on the fly? After all its a bit over the top to use SQL to generate SQL, isn't it? Well, its time to level the playing field. I'm going to pass on a simple pattern that you can use to generate the most sophisticated queries. This pattern will lead to an endless supply of SQL/Database tools to add to your library.

Posted by Wayne Allen | with no comments
Filed under:
More Posts « Previous page