Part I: Robert C. Martin - Clean Code II: Craftsmanship and Ethics.
Do software developers feel comfortable with their profession? Many of us prefer to introduce themselves as architects or designers. Others expect to be Project Managers. Symptoms? Signs of a bad comprehension of our activity?
Bob Martin opened JAOO conference by introducing a track on the craft of software developer (Wednesday track).
We have to define our profession, elaborate an ethic, a corpus of tools and methods. For him, things are getting better, in particular with the advent of Agile practices.
Here are the main points of his speech:

What makes a Professional Developer?
Discipline
There is a lack of Discipline! L… Agile values are welcome!
Green Band (see on the picture above?)
A symbol of personal ethic and professional pride (I write good code with tests). Can’t remove it.
Short iterations to keep projects on track
Cycles to deployable solution (not necessary deployed)
Don’t wait for Definition
In particular, don’t wait for definitions from the customer.
Zeno and the paradox of motion: run after specifications of existing software.
Abstract away volatility (GUI / Business Rules)
No need to put business rules in JavaScript… J
Commission > Omission
It’s better to do than not: experiment rather than wait for something (e.g. between team A and team B).
Decouple from others! Use mocks, stubs, simulators.
Never be blocked, always find some ways to progress.
Avoid Turgid Viscous Architectures, built by architects who try to solve everything. They create more problems than it solves.
Build simple, focus on problems. The architect must write code.
Incremental Improvement
Clean up day by day. Always check in code a little bit better that it was when checked it out.
No grand redesigns
Let time for usual work, fixing bugs…
Progressive Widening
Build by spikes from the GUI to data. Then, widen them.
Progressive Deepening
Go deep into layers progressively. Start with something that works (e.g. direct GUI to Data).
Don’t write bad code :-) You will immediately be slowed down by bad code. Go fast is go well.
Bad code progressively decline.
Write Clean Code:
What is clean code?? 10 lines. 5 minutes to understand. Read it is obvious. Code that do what you expect.
TDD: Nonsense! I’ve got a brain!
No… Test Driven Development is a fundamental activity. It forces to adopt a style to develop code that works minutes after minutes.
Test is what makes code flexible and maintainable. You can change and clean without breaking anything.
QA Should Find Nothing: don’t use QA to find your bugs!
100% code coverage: Not for managers!
Avoid Debugging: Temptation of leap into the debugger (« follow the debugger! »). Think & understand is better.
Manual test Scripts are Immoral: they are just big documents to put to sleep elephants.
Automate as much as possible and have testers to do exploratory testing.
Definition of done. Choose definition of done, only one definition (not “Done” and “Done done”J).
Test through right interface
Otherwise, it leads to things like « never change the GUI » to avoid break GUI tests. Don’t test business rules through the GUI.
Apprenticeship: teach to other developers (unfortunately being a good developer is not taught at school).
Pair Programming is also made for that.
Use Good Tools



[...] A point of view can be disputed – and actually, during the presentation, it was! Laurent seemed to suggest that education in computer science at university was worthless. The problems of education and learning returned many times during the conference. I already mentioned Bob Martin saying “unfortunately being a good developer is not taught at school” (see Professional Developer Part I). [...]
Pingback by Julien Delhomme’s Blog » JAOO2007 – Professional Developer (Part III) — September 30, 2007 @ 9:59 pm