17 Jun 2009

NDC 2009 Kicks off - Robert C. Martin (Uncle Bob): "Are you a professional".

NDC 2009 in Oslo kicks off with a keynote from Robert C. Martin (Uncle Bob) in the topic "Are you a professional".

Started off with a historical perspective and then depicts what he sees as professional behavior.

Principles that defines professional:
1st principle - Do no harm
Function
Examples: make it work and ensure that you validate it, if errors/bugs are discovered in QA, you should ask yourself "how could this happen".
How: Write and run, automated tests. (Coverage in the 90ies) Everyone should know the coverage of their code.

Structure
Do not make a mess, it will slow you down.
Everything you do to code must allow for future changes.
The way to make code changeable is to change it all the time.
Again: Have tests that will validate where you break your code when changing it.

The boyscout rule: When you leave a module, leave it cleaner than it was before.

Test Driven Development: 10 years ago, people where skeptical. It has now been proven that it works well, and must be a part of every developers professionalism.

The 3 laws to TDD.

Avoid debugging, use your tests
Tests works as code examples
Writing test first makes the code testable and more flexible (de-coupled)

Definition of Done - Make this completely clear
- Including unit tests
- Including acceptance tests (written before any code is written)
Lots of tools available

2nd principle - Work ethics
- working overtime should not be the standard
- instead, go home and spend time on evolving your own competence. Experiment, read, learn.

3rd principle - Know your field
- Software development
- Design principles
- Know algorithms
- Design patterns
- Several languages
- Methodologies

4rt principle - Continuous learning
You must learn continuously and it is YOUR responsibility
Step outside your comfort zone - learn new stuff
Do not rely of one source/vendor for learning

5th principle - Practice
Ref. musicians and martial art. This applies to sw development skills as well.
Examples: codingdojo.com
Test-Code pingpong, with clock

6th principle - Collaborate
Pair programming - Learn and collaborate
Look at others when programming, help each other
Avoid silos of information - No single person should be the only one to know a field of interest

7th principles - Mentoring
Mentor juniors and prepare for two way learning

8th principle - Know your domain
Understand more than the requirements, get in a position to ask and challenge them
It is your job to know that you are building the right things
Identify with your customer, make his problems your problems
Understand the needs - not only the requirements

2 comments:

Alexei Zheglov said...

Thank you for the conference notes. Great stuff!

Torbjørn Marø said...

I also blogged about Uncle Bob's keynote at NDC, especially the part where he talked about how developers should spend 20 hours of their own time becoming better developers.

It's in Norwegian: blog.kjempekjekt.com/2009/06/23/a-bruke-av-egen-fritid