18 Jun 2009

Robert C. Martin Clean Practice: Agility and Craftsmanship

Craftmanship is based on diciplines not process.

Work in short cycles
Team and personally

dont wait for definition
- its okay to throw things away, you have learned..
abstract away volatility

Decouple yourself from others (technically and personally). Use Mocking to be able to test your own use of interfaces

Never be blocked (this is one of the most vital ones)

Avoid turgid viscous architectures (cloudy/thick) - e.g. an enterprise architecture created by people that have no responsibility for delivering

Incremental improvement (the boyscout rule) - it will not happen later.. ref example with Sushi chef that cleans his tools as apart of the making..

No grand redesigns - (sidenote: Developers have much power in organisations. The requirements is in the old system.)
- if you have a mess, clean it gradually
- port it in bits to a new technology. Re-implement bit by bit.
Technology and language does not matter.. Good programers

Don't write bad code - there is no way to rush and go fast. Rushing will make you slower.
This is a mental shift when you are under pressure to deliver..

If you want to go fast, go well.. (Programmers put the preassure on themself)

Clean code

TDD

QA should find nothing

Avoid debugging (replaced by writing tests)

Manual Test Scripts are Immoral
Automation is required to do all the trivial regression testing!
The cost of automating is assumed to be 3 manual runs..

Definition of Done
Must not be ambiguous
- Requires successful run of all UnitTests (with 90% coverage)
- Required successful run of all acceptance tests (Uncle Bob uses FitNesse)

Test through the right interface
GUI testing tools test your system through the GUI
Business rules should not be tested via GUI, since the GUI can be unchanged when business rules change and vise versa.
API tests also need to be in place
Databasetests can also be applied when needed

Unit testing (90% coverage)
Components - API tests (50% coverage)
Cross components (20% coverage)
Full system integration (5% coverage)
Exploratory testing via GUI (

Apprenticeship
New people need mentors

Use good tools
Tip: Git source control

Continuous Integration
Use it..

Open Office
Collaborate and interact

Key takeaways: Uncle Bob is persuasive as always. This talk was detailing his keynote on Wednesday.

1 comment:

Otto Paulsen said...

Hi Torbjørn. I like this sentence: "- port it in bits to a new technology. Re-implement bit by bit."

Can you bring that home into your organization?

Otto