Extreme Project Management for Architects
How to Get Work Done Right
How do you know that the work you do is right? When you hand a task over to someone else, how do they know what you expect?
This paper discusses a process to help you and others get work done, get it done right, and get it done efficiently. The process is based on the use of testlists. A testlist is a list of tests, similar to a checklist.
When is Work Done Right?
When we talk about work, we usually talk about a task or set of tasks that comprise the work. Any project or block of work can be broken down into a set of tasks. When all the tasks are done, the work is done.
If we want to know if a task is done correctly, we can ask:
- How do we know it's right?
- How do we know it's done?
To answer these questions, create a set of tests. If the task passes all the tests we can think of, it's done.
In other words, for each task, we can say:
- How do we know it's right? When it passes all its tests.
- How do we know it's done? When we can't think of any more tests.
The most effective way to assure that work is done, and done right, is by testing.
Work on a project is easier to organize and control if it's first broken down into phases, the phases into tasks, and the tasks into subtasks. Testing is easier as well. To summarize the process, which I call test-first in honor of its XP legacy:
- Break project into phases. For each phase:
- List tasks for phase. For each task:
- Write tests for task. Do task. Test task. Repeat until all tests pass.
The process is very simple, but very effective. I'll talk about each step in detail.
Break Project into Phases
Nothing unusual here. Architects are accustomed to breaking projects down into schematic, design development, contract documents, bidding, and construction phases. Breaking a large project into time-based phases makes it easier to manage.
List Tasks for Phase
List the tasks, one at a time, that are required to complete the work. Order isn't important. Just be sure to include every task you can think of. Then break each task down into successively smaller sets until each task is small enough to complete in few hours. For example:
- Complete working drawings
- Complete cover sheet
- Show abbreviations
- Show symbols
- Show project data
- Complete floor plans
- Show walls
- Show openings
- Show dimensions
- Show room symbols
- Complete elevations
This site has an section devoted to listing project tasks. See the
Once all required tasks are listed, select a task and complete it: write the tests, do the task, make sure the tests pass. Repeat the process until all the tasks are completed and the work is done. One of the best processes for selecting the next appropriate task is discussed in
Extreme Project Management.
Assume, for the next few sections, that you have a task selected.
Write Tests for Task
Instead of immediately completing a task, write the tests for it first. Tests explicitly define the task. Without tests, the task is vague and nebulous. With tests, you know exactly what needs to be done. When the tests all pass, they give you confidence that what you've done is right.
How do you write the tests? Just write down every test you can think of that will assure you that the task is complete. List things that you intuitively check when you do a task. Word each test so it can be answered with a simple yes or no, pass or fail response. As you proceed, keep asking yourself:
- Is this task is correct?
- Is this task is done?
And continue adding additional tests to the list. For example, let's say our task is to complete the floor plan for a set of working drawings. A set of tests might start with:
- Every room is identified by a unique name or number
- Every window is identified by window reference symbol
- Every window identified is listed on window schedule
- Window reference symbol is listed and described in legend
- Window reference symbol conforms to office standards (size, location, shape, layer)
This list of tests is called a testlist. Testlists can be re-used each time you do a similar task. They can be improved over time and shared among colleagues. This site maintains a steadily growing collection of testlists so you don't have to write your own. See the
Note that testlists identify only what needs to be done; they don't tell how. Thus, they control the scope of work while allowing for a wide range of alternative solutions.
How do you do the task? The tests define scope. You're free to work however you wish. Here are a few guidelines:
- Do only enough to satisfy the tests. There is no need, in fact, it is undesirable, to do more. To paraphrase a popular XP mantra: "don't draw a line unless a test requires it".
- If you discover the need for additional tests, add them to the testlist so they won't be forgotten next time.
- When the tests all pass and you can't think of any more, the task is complete.
For now, tests must be done by visual inspection. For each test, just look to see whether it's done or not.
In the future, most tests will be automated. They'll probably run similar to a grammar checker, notifying you when a test doesn't pass. When I talk about running the tests, I'm looking to the future, where tests are run by pressing a button. For now, tests are run by checking each item in the testlist, manually or visually.
When do you run the tests? Ideally, whenever you add or change something. The person doing the work is responsible for assuring that the tests pass, not someone doing a backcheck after the work is complete.
Some tests fail or can't be performed because they depend on other work being completed. For example, the window schedule may not have been started, so you can't verify that every window on the floor plan has been listed. Note all failing tests on the testlist so they can be easily identified and run later.
Here are some tips on using testlists.
- Focus each list on one small task. If a task can be easily broken down into subtasks, do so. Then write a separate testlist for each subtask.
- Add tests as you learn more about the task. You're not done writing a testlist until you can't think of any more tests to add.
- Continually improve your testlists. Add or improve tests based on personal experiences, bidding questions, construction observations, RFIs, change orders, and post-occupancy evaluations. Modify them based on feedback from clients, contractors, consultants, suppliers, subcontractors, and others. Testlists are like checklists. They should include every necessary test you can think of. It's easier to delete tests that aren't needed for a specific task than to add them.
- Use and contribute to the testlists on this website. As more people contribute, the better the testlists will be. It's easy to copy and paste the site's testlists into your own project records and use them as-is. See
- Anyone can write testlists. Ideally, team members write them collaboratively.
Testlists Compared to Checklists
- Both checklists and testlists are comprehensive. They include everything you can think of about a topic. Their objective is to remind you of something you might otherwise forget.
- Checklists are broad-based and usually unorganized. Testlists are task-based and organized by subtask. Testlists are easier to use because you can ignore subtasks you're not interested in. For example, a floor plan testlist might include a subtask to verify that residential features are included. If you aren't doing a residential floor plan, you can ignore that task and all its related tests.
- Checklists are done when you've checked off all items in the list. Testlists are done when you've checked off all tests on the list and can't think of any more. You keep adding tests to testlists until you're thoroughly convinced that your task is correct and complete.
Using testlists and participating in their creation and improvement will benefit you, your office, the architectural profession, and the construction industry.
- Scope of work is precisely defined. You know exactly what you need to do, and what you don't.
- Finish tasks with confidence. When all the tests pass, nothing important is neglected.
- If you leave something out, it is the result of a conscious decision, not an error.
- Get instant, unbiased, feedback. If the tests pass, the work is done right. No need for anyone else to check.
- Testlists are (or soon will be) readily available and focused on the task at hand. You won't need to read through hundreds of unrelated documents, checklists, standards or other materials to guide your efforts.
- Work gets done faster. Focus is on doing only enough work to make the tests pass, no more.
- Objectives are clear. Everyone involved understands the scope of work. Requirements for each task are listed clearly and concisely.
- Measure progress. Compare the number of tests completed with those remaining.
- Continual improvement. Improve testlists over time based on feedback and experience.
- Re-use testlists for any project. Tests are generic, can be applied to a variety of projects.
- Get free publicity. Help improve the testlists with your specialized expertise. Testlist contributions are acknowledged by a link to you or your firm. See
- Central repository for all to use. Anyone can use and contribute to the improvement of the testlists. As more people contribute, testlists will become even more comprehensive and valuable.
- Clarifies effort required. Many clients and associates aren't aware of the amount of work required to complete an architectural project. Listing tasks and testlists shows the requirements clearly. Task Lists and testlists can serve as valuable resources for creating fee proposals.
- Testing opportunities. Over time, the tests in testlists will be automated. As more architects use the same testlists, the market becomes larger, and automated tests more likely to be developed.
- Feedback from industry. Testlists are maintained here, in one central repository, available to the public. Anyone can offer an opinion on what should or should not be included: clients, contractors, subcontractors, suppliers, building officials. See
Using testlists is one of the most effective ways to assure that a task is correct and complete. Of all the XPM practices, testing provides the biggest payback for the least effort. If you want to introduce XPM practices in your office, I recommend that you start by using testlists.
for a version of this page that's more suitable for printing. After printing, click the back-arrow of your browser to return to the original format with an index alongside.
I welcome your comments and suggestions.
for more information.
Original post: February 4, 2004, written by Dennis V. O'Neill.
Last revision: November 20, 2007.
Copyright 2004 - 2007, Dennis V. O'Neill