KEMBAR78
Cf objective2014 software-craftsmanship | PPTX
Kev McCabe
CF Objective 2014
Thursday 15th May http://bit.ly/softwareCraft
Software Craftsmanship
Mentor @ General Electric
• ColdFusion since 1996 (v2)
• London CFML &Web
Community Leader
• Scrum Master
• Kanban Practitioner
• Agile Coach
T: @bigmadkev
W: BigMadKev.com
http://bit.ly/softwareCraft
http://bit.ly/softwareCraft
 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
Individuals and interactions over
processes and tools
Working software over
comprehensive documentation
Customer collaboration over
contract negotiation
Responding to change over
following a plan
http://bit.ly/softwareCraft
We adoptedAgile and now things will be OK
… and the AgileTransformation Era began.
http://bit.ly/softwareCraft
… people, interactions, team building, the
ecosystem
Process and Interactions became more important
than technical practices
http://bit.ly/softwareCraft
 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
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 on
the right, we value the items on the left more.
http://bit.ly/softwareCraft
Code
quality
Time per
feature
http://bit.ly/softwareCraft
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
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
 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
- Owning your career
- Not a 9 to 5 profession
- Practice
- Boy Scout rule
- Expecting promotions
http://bit.ly/softwareCraft
 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
http://bit.ly/softwareCraft
http://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
… a church, trying to convert all developers
It'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.
 SoftwareCraftsmanship takes technical excellence
and professionalism to a whole new level.
http://bit.ly/softwareCraft
 Meaningful Names
 Short Functions
 Single Responsibility Principal
 Minimal Arguments
 Show intent
 No need for comments
 Formatting
 UnitTesting
http://bit.ly/softwareCraft
http://bit.ly/softwareCraft
http://bit.ly/softwareCraft
 Easy to scan
 Expressive layout
 Compact format
 Code is written once and Read ∞
http://bit.ly/softwareCraft
 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
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
 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
 GoodTechnical
Practices
http://bit.ly/softwareCraft
 Working Effectively
with Legacy Code
 Michael Feathers
http://bit.ly/softwareCraft
 Today @ 3pm
 In ad hoc room (next to lunch room)
 LearnTDD / BDD Principles without code
 Open to all
http://bit.ly/softwareCraft
http://bit.ly/softwareCraft
Happy to work with people over
Google hangout / Skype. UKTime
(After lunch EST/Before Lunch PST)
FREE / AmazonWish list 
T: @bigmadkev
S:bigmadkev
W: BigMadKev.com
http://bit.ly/softwareCraft

Cf objective2014 software-craftsmanship

  • 1.
    Kev McCabe CF Objective2014 Thursday 15th May http://bit.ly/softwareCraft
  • 2.
    Software Craftsmanship Mentor @General Electric • ColdFusion since 1996 (v2) • London CFML &Web Community Leader • Scrum Master • Kanban Practitioner • Agile Coach T: @bigmadkev W: BigMadKev.com http://bit.ly/softwareCraft
  • 3.
  • 4.
     You mayhave 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
  • 5.
    Individuals and interactionsover processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan http://bit.ly/softwareCraft
  • 6.
    We adoptedAgile andnow things will be OK … and the AgileTransformation Era began. http://bit.ly/softwareCraft
  • 7.
    … people, interactions,team building, the ecosystem Process and Interactions became more important than technical practices http://bit.ly/softwareCraft
  • 8.
     Many Agileprojects are now, steadily and iteratively, producing shit crap mediocre software. http://bit.ly/softwareCraft
  • 9.
    We want toget things done... … but we are under pressure http://bit.ly/softwareCraft
  • 10.
    But what isto be Agile anyway? http://bit.ly/softwareCraft
  • 11.
    We are uncoveringbetter 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 on the right, we value the items on the left more. http://bit.ly/softwareCraft
  • 12.
  • 13.
    As aspiring SoftwareCraftsmen 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
  • 14.
    Software Craftsmanship isall about putting responsibility, professionalism, pragmatism and pride back into software development http://bit.ly/softwareCraft
  • 15.
    How do weknow we are building the right thing? How do we know we are building the thing right? http://bit.ly/softwareCraft
  • 16.
  • 17.
     Automated testing Test first  Test-Driven Development  Pair-programming  Continuous Integration http://bit.ly/softwareCraft
  • 18.
    Mastering the practicesis hard … … and that's why we practice http://bit.ly/softwareCraft
  • 19.
    Perfect practice  (narrowingthe gap) http://bit.ly/softwareCraft
  • 20.
    Software Craftsmanship isa long journey to mastery http://bit.ly/softwareCraft
  • 21.
    - Owning yourcareer - Not a 9 to 5 profession - Practice - Boy Scout rule - Expecting promotions http://bit.ly/softwareCraft
  • 22.
     Learn stuffall the time  Small and often  You don’t want to be out of work and having a large learn curve http://bit.ly/softwareCraft
  • 23.
  • 24.
  • 25.
     Seniority issubjective and transient http://bit.ly/softwareCraft
  • 26.
    The attitude towards legacycode http://bit.ly/softwareCraft
  • 27.
    Why would wewant to be better developers? http://bit.ly/softwareCraft
  • 28.
    … a church,trying to convert all developers It'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
  • 29.
  • 30.
     Stop...  …being miserable and negative  … spreading your frustrations http://bit.ly/softwareCraft
  • 31.
     The onlyway to have people buying into what you believe is if they see you happy. http://bit.ly/softwareCraft
  • 32.
     Craftsmanship isnot 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
  • 33.
     Agile andCraftsmanship complement each other and both are necessary.  Agile processes assume technical excellence and a professional attitude.  SoftwareCraftsmanship takes technical excellence and professionalism to a whole new level. http://bit.ly/softwareCraft
  • 34.
     Meaningful Names Short Functions  Single Responsibility Principal  Minimal Arguments  Show intent  No need for comments  Formatting  UnitTesting http://bit.ly/softwareCraft
  • 35.
  • 36.
  • 37.
     Easy toscan  Expressive layout  Compact format  Code is written once and Read ∞ http://bit.ly/softwareCraft
  • 38.
     1st edition1974  2nd edition 1978  56 lessons  Most of which are still valid today  Book costs $150+ http://bit.ly/softwareCraft
  • 39.
  • 40.
    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
  • 43.
     Ebook onLean Pub  Written by the London Software Craftsmanship Community Manager  https://leanpub.com/socra http://bit.ly/softwareCraft
  • 44.
     Clean Code Robert “Uncle Bob” Martin  Changes your thought process  +Videos  Also Clean Coders – More about your career http://bit.ly/softwareCraft
  • 45.
     Extreme Programming Explained:Embrace Change  Kent Back  GoodTechnical Practices http://bit.ly/softwareCraft
  • 46.
     Working Effectively withLegacy Code  Michael Feathers http://bit.ly/softwareCraft
  • 47.
     Today @3pm  In ad hoc room (next to lunch room)  LearnTDD / BDD Principles without code  Open to all http://bit.ly/softwareCraft
  • 48.
  • 49.
    Happy to workwith people over Google hangout / Skype. UKTime (After lunch EST/Before Lunch PST) FREE / AmazonWish list  T: @bigmadkev S:bigmadkev W: BigMadKev.com http://bit.ly/softwareCraft