The Soporific Manifesto
21 Jul 2003
In 1995 the Unabomber's manifesto was published in The New York Times. In 2001 the Agile Alliance published their
Agile Manifesto. Now our own Tedious Soporific gets in on the act. His personal manifesto leaves no area of software development untouched - from the hazards of frameworks to the role of "doof doof" music in requirements elicitation, it's all here. Truly a heartbreaking work of staggering genious.
Requirements
- Humans read requirements.
- Humans lose interest if they can't understand the requirement, or why it's there.
- Requirements numbers should never contain the section number of thedocument they are in.
- A requirement only needs to require an implementation in rarecircumstances when you need to require a point of concrete integration(shall run inside IE 4.0 and up etc.)
- Requirements should be able to be tested. If you write a requirement that may be hard to test, write supporting notes about how you wouldenvisage the requirement will be tested.
- User interfaces are design, not requirements.
- Track requirements met during development by mapping requirementcoverage to test results.
- Because a customer asks for a feature to be implemented, that alone doesn't make it a good feature.
- Moral time: A man walks into a hospital having already diagnosed himself with prostate cancer. He demands that a surgeon operate immediately toremove the cancer. The surgeon operates. The man is caused inconvenience, discomfort and pain for the rest of his life from side-effects of the operation. The surgeon could have refused tooperate, citing that 80% of men die with, and not because of, prostatecancer. The surgeon gave the man what he asked for and not what he needed.
-
Q: What can you brush your teeth with, sit on, and telephone peoplewith? A: A toothbrush, a chair and a telephone.
Performance
- Specify performance early.
- Optimize late.
Documentation
- Styles in Microsoft Word are your friend. If you want a Word processor, use Word. If you want a typewriter, use Notepad.
Design
- Beware the "framework."
- Spurn the "reusable component."
- It's hard to specify a framework because what users might require rarely becomes what they'll need for sure: "You ain't gonna need it." Your customer wants to pay for a solution for their problem, noteveryone else's.
Technologies
- XML: it's just a verbose way of representing structured data.
- SIP: it's just a signalling protocol.
Projects
- Top Ten Lessons from the Dot Com Meltdown
- Try not to build R2 before R1 has any customers.
- When someone says "I know this is a death march, but you will berewarded well if you succeed or fail," run (away) like the wind.
Peopleware
- Habitable development environments.
- Give directives in positive terms.
- Avoid saying what shouldn't be done.
- Toddlers and software engineers want to please you, and do the right thing.
- Toddlers and software engineers hear "Don't do X" and become paralysed with uncertainty because they now know for sure what they shouldn't do,but can't figure out what you do want them to do.
User Interfaces
- Usable interfaces should not be innovative. If it's clever or tricky,then it's probably confusing.
- Users don't use the right mouse button.
- It's hard to know when to double-click unless someone shows you.
- Users don't use tree views. Users don't get trees.
- Users only (very) rarely see trees on computers.
- Developers love tree-views.
- DevStudio has trees.
- Windows file explorer shows a tree.
- Most users never see or use tree-views when they're using Windows (orMacs) and don't find them comfortable.
- Think about where the Windows explorer is located in the Start-> menu(it's an "Accessory") and where the "My Computer" icon is (on theDesktop) and what happens when you double-click it.
- You have to configure Outlook to show a tree view of your folders on the left.
- Standard Windows application file (save/open) dialog does not show atree.
- A tree is not an easy metaphor. When was the last time you saw a reallive tree of folders?
Miscellaneous
- It's hard to write requirements unless you're ears are being pounded by"doof doof" music.
- Unfinished Sympathy is the finest pop song ever written.
- "Refactoring" is not synonymous with "fixing bugs".