cf objective2014 software-craftsmanship
DESCRIPTION
TRANSCRIPT
Software Craftsmanship
Kev McCabeCF Objective 2014Thursday 15th May http://bit.ly/softwareCraft
About Me
Software Craftsmanship Mentor @ General Electric
• ColdFusion since 1996 (v2)• London CFML & Web
Community Leader• Scrum Master• Kanban Practitioner• Agile Coach
T: @bigmadkevW: BigMadKev.com
http://bit.ly/softwareCraft
Introductionhttp://bit.ly/softwareCraft
Post Its & Pen
You may have questions to ask
Please note them, and put your email/twitter/name
I’ll follow up with you at a later stage
Or discuss here if time permits
Please place into the box at the front here
Agile Software Development
Individuals and interactions overprocesses and tools
Working software overcomprehensive documentation
Customer collaboration overcontract negotiation
Responding to change overfollowing a plan
http://bit.ly/softwareCraft
We adopted Agile and now things will be OK
… and the Agile Transformation Era began.
http://bit.ly/softwareCraft
& then we spend 10 year focusing on...
… people, interactions, team building, the ecosystem
Process and Interactions became more important than technical practices
http://bit.ly/softwareCraft
The Agile Hangover
Many Agile projects are now, steadily and iteratively, producing shit crap mediocre software.
http://bit.ly/softwareCraft
We want to get things done...
… but we are under pressure
http://bit.ly/softwareCraft
But what is to be Agile anyway?
http://bit.ly/softwareCraft
Agile Software Development
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to
value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items onthe right, we value the items on the left more.
http://bit.ly/softwareCraft
The invisible threat
Code quality
Time per feature
http://bit.ly/softwareCraft
Manifesto for Software Craftsmanshipraising the bar
As aspiring Software Craftsmen we are raising the bar of professional software development by practising it and helping others learn the craft.
Through this work we have come to value:
Not only working software, but also well-crafted software
Not only responding to change, but also steadily adding value
Not only individuals and interactions, but also a community of professionals
Not only customer collaboration, but also productive partnerships
What is Software Craftsmanship?
Software Craftsmanship is all about
putting responsibility, professionalism, pragmatism and pride back into software development
http://bit.ly/softwareCraft
How do we know we are building the right thing?
How do we know we are building the thing right?
http://bit.ly/softwareCraft
http://bit.ly/softwareCraft
Adding value through practice
Automated testing Test first Test-Driven Development Pair-programming Continuous Integration
http://bit.ly/softwareCraft
Mastering the practices is hard …
… and that's why we practice
http://bit.ly/softwareCraft
Perfect practice(narrowing the gap)
http://bit.ly/softwareCraft
Software Craftsmanship is a long journey to mastery
http://bit.ly/softwareCraft
Software Craftsmanship Attitude
- Owning your career- Not a 9 to 5 profession- Practice- Boy Scout rule- Expecting promotions
http://bit.ly/softwareCraft
Keep Learning
Learn stuff all the time
Small and often
You don’t want to be out of work and having a large learn curve
http://bit.ly/softwareCraft
Big Learning Curvehttp://bit.ly/softwareCraft
Small and Oftenhttp://bit.ly/softwareCraft
Seniority is subjective and transient
http://bit.ly/softwareCraft
The attitude towards legacy code
http://bit.ly/softwareCraft
Why would we want to be better developers?
http://bit.ly/softwareCraft
Software Craftsmanship is not...
… a church, trying to convert all developersIt's about leading by example and
showing how we can be better… about beautiful code
It's about continuously delivering value not writing crap code
http://bit.ly/softwareCraft
Raising the Bar
http://bit.ly/softwareCraft
Stop...
… being miserable and negative
… spreading your frustrations
http://bit.ly/softwareCraft
The only way to have people buying into what you believe is if they see you happy.
http://bit.ly/softwareCraft
Craftsmanship is not enough to guarantee the success of a project but the lack of it can be the main cause of its failure
http://bit.ly/softwareCraft
Agile and Craftsmanship complement each other and both are necessary.
Agile processes assume technical excellence and a professional attitude.
Software Craftsmanship takes technical excellence and professionalism to a whole new level.
http://bit.ly/softwareCraft
Clean Code
Meaningful Names Short Functions
Single Responsibility Principal Minimal Arguments
Show intent No need for comments
Formatting Unit Testing
http://bit.ly/softwareCraft
Unit Testinghttp://bit.ly/softwareCraft
Code Reviewshttp://bit.ly/softwareCraft
Code Layout Matters
Easy to scan Expressive layout Compact format Code is written once and Read ∞
http://bit.ly/softwareCraft
The Elements of Programming Style
1st edition 1974 2nd edition 1978
56 lessons Most of which are
still valid today
Book costs $150+
http://bit.ly/softwareCraft
http://bit.ly/softwareCraft
Some of the rules valid today
1. Write clearly -- don't be too clever.
2. Say what you mean, simply and directly.
3. Write clearly -- don't sacrifice clarity for efficiency.
4. Replace repetitive expressions by calls to common functions.
5. Parenthesize to avoid ambiguity.
6. Choose variable names that won't be confused.
7. Write first in easy-to-understand pseudo language; then translate into whatever language you have to use.
8. Modularize. Use procedures and functions.
9. Don't patch bad code -- rewrite it.
10. Write and test a big program in small pieces.
11. Check some answers by hand
11. Make it right before you make it faster.
12. Make it fail-safe before you make it faster.
13. Make it clear before you make it faster.
14. Don't sacrifice clarity for small gains in efficiency.
15. Don't strain to re-use code; reorganize instead.
16. Make sure special cases are truly special.
17. Keep it simple to make it faster.18. Don't just echo the code with
comments -- make every comment count.
19. Don't comment bad code -- rewrite it.
20. Use variable names that mean something.
21. Format a program to help the reader understand it.
22. Don't over-comment.
http://bit.ly/softwareCraft
Books
Ebook on Lean Pub
Written by the London Software Craftsmanship Community Manager
https://leanpub.com/socra
http://bit.ly/softwareCraft
Clean Code
Robert “Uncle Bob” Martin
Changes your thought process
+ Videos
Also Clean Coders – More about your career
http://bit.ly/softwareCraft
Extreme Programming Explained: Embrace Change
Kent Back
Good Technical Practices
http://bit.ly/softwareCraft
Working Effectively with Legacy Code
Michael Feathers
http://bit.ly/softwareCraft
TDD with Lego
Today @ 3pm In ad hoc room (next to lunch room)
Learn TDD / BDD Principles without code
Open to all
http://bit.ly/softwareCraft
Questionshttp://bit.ly/softwareCraft
Contact Me
Happy to work with people over Google hangout / Skype. UK Time(After lunch EST/Before Lunch PST)FREE / Amazon Wish list
T: @bigmadkevS:bigmadkevW: BigMadKev.com
http://bit.ly/softwareCraft