Got Rule? Share and win prizes!
Most of us live by the rules - those that community dictates and those that we set for ourselves. I guess software engineering is no different. We all use some rules when we build the software. But how do we manage these rules? Word doc, web searches, top of the mind? I think patterns&pracrices team has better idea providing us with the tool, Guidance Explorer, available for free and constantly updated content. There are plenty cool things that GE offers and one of these is that it can be updated by my/your own rules/guidleines/checklists.
Call to action
- Use the tool - it is for free
- If you live by some rules, why wouldn't you share it with me, all of us? What's in it for you? I'll publish the best rules online in this blog with the creadits plus I will send it to patterns&practices team for review plus I'll give away nice book on software
Programming Microsoft ASP.NET 2.0 Applications: Advanced Topics
- Use template below to write the rules
- Contact me via this blog's comments or alikl@microsoft.com
- Good luck and thanks
Enjoy, Alik
========================RULE TEMPLATE=====================
Rule name
<<goes here>>
Applies to
<<
Insert the most direct technologies, or application types this guideline applies to. Unlike technology field above, this section can contain a combination of items Make a simple list. Don’t be verbose.
Checkpoint:
- Do you list technology and version? (e.g. ASP.NET 2.0)
>>
What to Do
<<
Insert the specific action for the user to take. Express an explicit user action: design, implementation or configuration action. Leverage “do” and “do not” verbage (e.g. Do Not Create Threads on a Per-Request Basis)
- If context or condition is important preface with "If …" …. (e.g. If you call COM components, consider calling ReleaseComObject)
- Don’t include how to or implementation. That belongs in the How To section.
- Don’t include why information in this section. That belongs in the Why section.
Checkpoint:
- Do you state the action to take?
- Do you avoid stating more than the action to take?
>>
Why
<<
Insert why this guideline is important. This should motivate you to take action.
Checkpoint:
- Do you provide enough information for the user to make a decision?
- Do you state the negative consequences of not following this guideline?
>>
When
<<
Insert when this guideline is relevant here.
Checkpoint:
- Do you state when the guideline is applicable?
- Do you state when not to use this guideline?
>>
How
<<
Insert the steps required to apply this guideline
Checkpoint:
- Do you state enough information to take action?
- Do you provide explicit steps that are repeatable?
>>
Problem Example
<<
Insert problem example
Checkpoint:
- Do you show a real world example of the problem from experience?
- If there are variations of the problem, do you show the most common?
- If this is an implementation guideline, do you show code?
>>
Solution Example
<<
Insert solution example
Checkpoint:
- Does the example show the resulting solution if the problem example is fixed?
- If this is a design guideline is the example illustrated with images and text?
- If this is an implementation guideline is the example in code?
>>
Additional Resources
<<Add links to additional resources here>>
Related Items
<<Add information about related guideline or checklist items here>>
Additional Tests to Consider When Writing a Guideline
Checkpoint:
- Does the title clearly state the action to take?
- Does the title start with an action word (eg. Do something, Avoid something)?
- If the item is a MUST, meaning it is prevelant and high impact, is Priority = p1?
- If the item is a SHOULD, meaning it has less impact or is only applicable in narrower circumstances, is Priority = p2?
- If the item is a COULD, meaning it is nice to know about but isn't highly prevelant or impactful, is Priority = p3?
- If this item will have cascading impact on application design, is Type = Design?
- If this item should be followed just before deployment, is concerned with configuration details or runtime behavior, is Type = Deployment?
- If this item is still in progress or not fully reviewed, is Status = Beta?