SCNA 2009 - Craftsmanship Under Pressure: Robert C. Martin
Object Mentor
"Uncle Bob" needs no introduction.
Professional
- Carries a note of responsibility
- Cool under pressure
- People want things from us
- We make promises
- Pressure is fear that we will break these commitments
- Undercommit, overdeliver - make your commitments and more
Estimation
We all estimate badly, but we must estimate.
- Don't give a number; give a mean and standard deviation.
- Best case, worst case, nominal case
- Probability distribution, wide spread - honest
- Narrow over iterations as learn more
- Generally on wrong side of mean
Manage expectations. Down. ;-)
Rushing
- Standard reaction to pressure
- Reduce scope, put in overtime, reduce quality - leave something out
- Care disappears. Carelessness.
- A professional does not rush. Can reduce scope, but not quality.
- He disagrees with the term. It's not debt, it's making a mess. A mess slows us down.
- As soon as you go down the wrong path, forever it will dominate your destiny.
- You never will go back to that code and clean it up.
- You'll always be on the wrong side of the mean.
Principles
First, do no harm.
Test.
- Know that your software works.
- Unit, acceptance (not necessarily written by developers), etc.
- Coverage.
- Automate tests.
- TDD (or at least the time between code and test is very small).
Mercilessly refactor.
- Must be able to make changes to your software without exorbitant cost.
- Change it. Find what's hard. Fix that.
- Flexible software is never designed up front. The act of changing makes it changeable.
- Leave it better (cleaner) than you found it. Never check it in dirty.
Pressure
- Under pressure is when you're most likely to do harm.
- OK to work overtime - for a week.
- Professionals know how to have uncomfortable discussions.
- (As early as you can)
- Scope
- Move the date
- When you feel pressure, slow down. Avoid temptation.
Work ethic.
- Deliver value.
- 40 hours a week belong to your employer.
- Your employer is not responsible for learning time - that's your responsibility.
- Developers must take responsibility for their own careers.
- 20 hours a week (over 40) is learning time.
- Manage overtime.
Know your field.
Continuous learning.
- Never stop learning.
- Live to learn, love to learn - passion
- Different kinds of learning - mind, muscle, etc.
- Read books, blogs, articles
- Go to conferences, users' groups, lunch & learn
- Step outside your comfort zone
- Practice. (See Katas under Further study)
Further study
Final thoughts
Small reference groups? Not the AMA, but "Do you know Fred? How good is he?"
Your Host: webmaster@truewill.net
Copyright © 2009 by William Sorensen. All rights reserved.