Applied craftsmanship
-
Upload
alexandru-bolboaca -
Category
Software
-
view
174 -
download
1
description
Transcript of Applied craftsmanship
AppliedCraftsmanship
In
A Real ProjectA talk by Alex Bolboaca & Claudia Ro uș
[email protected]@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