Applied craftsmanship

Post on 11-May-2015

174 views 1 download

Tags:

description

We've been discussing software craftsmanship for years. But does it match the realities of a business? How? This is a story about applying the ideas and practices of software craftsmanship for a real project in a difficult context. The conclusion? It helped us, it might help you as well.

Transcript of Applied craftsmanship

AppliedCraftsmanship

In

A Real ProjectA talk by Alex Bolboaca & Claudia Ro uș

alex.bolboaca@mozaicworks.comclaudia.rosu@mozaicworks.com

The Challenge

5 topics● Starting with a new technology● Apprenticeship● Consistency● Testing Strategy● Adapting to the Customer

About Us

● Software crafter● Experience with Java● Active in communities

● Polyglot programmer● Trainer● Coach

Background● Innovative eHealth application for a GP

association● Started in March 2013 with Alex part time● First picked the right technologies● Claudia joined September 2013 full time● Alex half time

Constraints● Demo twice a week

– Because client is very involved in the process

● Had to use Java technologies– Because of specific needs for eHealth applications

● Limited monthly budget● Web-based, usable on tablet

1. Starting with a New Technology

How it started● Evaluation of Java frameworks

● Evaluation of UI libraries

How it started (cont'd)● Templating: Client vs. Server side?● Javascript library

Deferred decisions● Database engine: working with in-memory

database● Authentication and authorization: picked Shiro

in Jan 2014● Public API

How We Improved● Self-assessment● Identified weak points● Learned and practiced them● Applying in production

– New code: written based on new understanding– Refactoring when revisiting old code– Test First Programming => TDD

Self-Assessment

Conclusions● Learning a new technology is challenging● Build upon strong points!

– Alex: Polyglot programming, Training and coaching experience, Strong knowledge of design and technical practices

– Claudia: Unit testing, Java, Java Web Development– Eager to improve

● Learning should be included in the development process

2. Apprenticeship

Why● Now: Deliver twice a week● Near future: Coordinate own team

Structure● Self-assessment (project-related)● Identify necessary skills to achieve the goal

(professional growth)● 121 meetings every 2 weeks

– Discuss progress– Define next actions – reading, watching videos, coding

kata etc.– Coaching, mentoring

Skills

How● Learn grails, javascript through katas● Include refactoring in daily work● Test First Programming => TDD● Growing knowledge on software design

– Reviews, discussions, articles, videos etc.

● Continuous– Pair programming– Review sessions

Code - Tests

Code - Production

3. Consistency

Why● Facilitate decisions● Enable user-centric conversations

The User View● User perspective = “storymap”● UI

– Same type of info presented in the same way

– Same actions in different places look the same

The Code View● Same concept should have same name

– Eg: doctor *, physician, personalGP...

● The concept should be named in business terms– Eg. current encounter, consultation *

The Design View● Separate responsibilities

– Exception handling– Controller only renders, Service works with data– Client side – refresh UI and minimal UI logic

● Tests organization– Avoid duplication in tests

Conclusion● Consistency helps us make decisions, have

meaningful conversations● Consistency requires attention to detail● Consistency is a general design principle

4. Testing Strategy

Why● Keep the development rhythm● Structure tests for maximum efficiency● Ideally:

– One test per behavior– No duplication between tests

Pyramid of Tests

How we started

Where we are

Acceptance Tests

Acceptance Tests Report

Controller Unit Tests

Service Unit Tests

Javascript Tests

Conclusion● The testing strategy evolved based on what

we learned● We improved test and application design● Acceptance tests

– help us structure our work– allow customer to understand the complexity

5. Adapting to the Customer

Benefits● Optimize our work based on reality● Increase customer satisfaction

How we started

Where We Are

Transparency

Results● Excellent feedback

– “Very good”– “You show a lot of care for my money”– “Very beautiful application”

● Improved collaboration

3 Core Ideas1.High Quality, Fast Feedback At All Levels

2.Continuous Improvement

3.Attention to Details

We believe this is software craftsmanship.

Your Questions?

“The important thing is not to stop questioning”

Photo Attributionhttp://3.bp.blogspot.com/-_wmj16Vjb3Y/Uckwv7kSQJI/AAAAAAAAAik/RC6Hat-2dLo/s1600/Casa_batllo_2.jpg

http://s1ngal.files.wordpress.com/2012/11/up.jpg

http://www.wallsave.com/wallpapers/1920x1080/new-technology/2313189/new-technology-hd-hdpaperz-com-2313189.jpg

http://www.trendecoration.com/wp-content/uploads/fantastic-idea-for-interior-design-and-decoration-by-gaudi.jpg

http://2.bp.blogspot.com/-jy6M3uYUgtM/UgJShTrwtfI/AAAAAAAAI4M/jM7w39ed8xg/s1600/1290462608-gaudi5-1000x864.jpg

https://lh6.googleusercontent.com/-jl4_nEiEsog/TXtvoKGClxI/AAAAAAAAAC0/SaUP996hmPw/s1600/IMG_1591.JPG