Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010
Upcoming SlideShare
Loading in …5
×

Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010

2,546 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,546
On SlideShare
0
From Embeds
0
Number of Embeds
537
Actions
Shares
0
Downloads
21
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • Welcome to the first London Software Craftsmanship Community meeting.
  • David Green - Java developer; gambling - Writing software 20 yrs; commercially for 10
  • Passionate about software Believe software can be better; we can be better Keep seeing same mistakes: - complexity, technical debt - typists, not craftsmen - software factory Didn't write the book – I'm no Bob Martin just passionate professionals Bring community together so we can all learn - share experiences/ideas Its about you – ask questions Phones silent
  • How many ppl are programmers? Everyone stand - Java - C# - Python - Ruby - PHP - Anything else? Anyone not a developer? - PM - Agile Coach - Anyone else? Summarize – good mix, mostly...
  • Programmers stand again - Over the age of 30 sit down (need rest) - Anyone still in university? - Rest sit
  • Programmers stand Sit down if: - taught yourself first language - learnt first language at university - learnt first language at work
  • Let’s talk about software engineering
  • Software crisis – extremely large projects Hardware still being developed Hardware worth millions National security and people’s lives at risk Bugs could be catastrophic
  • -Software Engineering can be very effective for critical systems
  • Money is not a problem Thin slice of NASA’s pie Most expensive dollar-per-line project One of the most expensive software organisations
  • -Development process seen as production line -Coders not developers -Creativity was forbbiden
  • - Cheaper hardware - business at all sizes needed software; Could not afford to pay $35m per year Not expensive hardware nor life-threatening situations. - Process had to be adapted impatient and lower budget businesses - New process aimed faster and cheaper development - Most adopted were the iterative and incremental (RUP) - Evolution to the Agile software development methodologies Yourdon also wrote Decline and Fall of the American Programmer (1992).
  • - Biggest success of various methodologies - Defined the last decade - Moving away from engineering – to empirical approach. Inspect & adapt. Unknowns - Process people; process police Individual responsibility; encouraging right interactions - Working software – not doc; Project success: amount of doc - Seen both sides of contract negotiation Not productive – who's paying - Change is the only constant; “ how are we tracking against the baseline plan?”
  • This year's IT Project Success Rates Survey 200 individuals; US, Europe & Asia 12% of agile projects failed; 18% of traditional projects failed Mike Cohn tells story of salesforce.com Big scrum adoption – 200 engineers virtually overnight Compelling story of how scrum, agile can improve delivery
  • Richard Feynman: 1940s remote islands in South Pacific Natives never seen modern civilisation. Allied troops build temporary base of operations. Setup airstrip, control tower, don headphones Call down great metal birds from the sky Valuable cargo shared with the natives When troops leave, cargo stops coming Natives view cargo with religious significance They build airstrip out of bamboo, coconuts for headphones- but metal birds never come back Agile adoption in danger of doing same Visible behaviours without understanding the ideas
  • Agile became synonymous of Scrum (Process oriented) XP practices were not largely adopted Quality is overlooked by managers and dev team -Projects failing. - No specifications or diagrams anymore. - Management process improved but development still production line with unskilled and cheaper workers.
  • Agile is a success Agile became synonymous of Scrum and a project management tool Improvement not at the desired level proposed by creators -Agile not used as proposed -Not being used to improve the quality of code delivered -Not being used to create long-lasting software
  • I don't think that this definition really catches the essence. It's a bit cold and dull.
  • - A bit more passion here. - better metaphor - software as a craft, creative process and art. Pride of our work professional and pragmatic during implementation.
  • 2009 – Conferences in US, UK and other European Countries 2010 – Code retreats more popular around the globe.
  • Well-crafted software: Greenfield / brown field 5 year-old legacy we are scared to touch. Software Hostage, bad code. must be maintainable and predictable. steadily adding value: Not just add features / fix bugs. Software as asset. Keeping tidy stretches life-span and ROI. Boy Scout Rule community of professionals: what we are doing here tonight Our responsibility for training the next generation Our responsibility for moving the industry forward. productive partnerships: Question requirements, propose improvements. Our best interest to make a software succeed. build reputation Partnership with customers. Shift of perspective bringing advantages to the customer.
  • PC story 9-5 People in the audience Musician play guitar, Accountant new regulation, chef restaurant Bad code slows us down Professional developer Time constraint and req not excuse Long lasting, high quality, robust, maintainable, testable Cares about ROI Care about reputation
  • Looked at various methodologies; but what about individual developer? What does it take to craft great software? Creativity & problem solving Design as art; inspired; inspiring; hard to understand “ Problem solving easiest part, which problem to solve is hardest” Judgement; pragmatism. Need experience Observe others; bitter personal experience Computer science, understand the machine Know a language, source control, TDD, pair programming Excel in all four areas to craft great software
  • If we're to excel in all four areas – a lot to learn How many did a sw eng / comp sci degree? How many been on training course? How many read programming books? How many go to conferences?
  • All very interesting; good theoretical foundation. How much is actually used in industry?
  • Graduate has lot to learn Right that uni doesn't teach this Who had to learn this? Who has taught it?
  • Then start learning alphabet soup: SOAP, JMS, RMI, Spring, Hibernate etc.. etc... Learn thru books; colleagues or training courses here at skillsmatter How many have been on training courses? - SCJP - CSM - other courses? SCJP – good programmers who haven't; poor programmers who have CSM – everyone & their aunt. Great course. Danger of being devalued
  • How many mentored someone new to company? How many kept that going beyond first 3 months? Personally found mentoring hugely valuable - continuous feedback - pass on his knowledge - improve judgement – impossible to learn thru books, courses
  • We need continuous learning: - degree courses - training courses - feedback (pair programming / peer review) - books - conferences - mentoring
  • Practice, practice, practice! Crafting software: learn by doing Deliberate practice
  • Kata is an exercise – designed to allow student to learn through practice and repetition - removes commercial constraints - focus on learning Dojo – take problem and work thru as a group - normally one pair; others observe - pair rotates every 5 minutes Code retreat – longer format; work thru a problem numerous times - delete code after each iteration - add constraints to an iteration (no arrays, no ifs)
  • Only way to improve practical skill is to do it Deliberate practice allows us to focus on learning
  • Recall "Judgement" from earlier slide Understanding how others make decisions Competence over certification Pragmatism over specific processes Mentoring over training
  • Software craftsmanship is about a community of professionals raising the bar of software development, by continually learning through deliberate practice and the sharing of knowledge, experience and ideas.
  • -better metaphor -Apprenticeship more learning than teaching; Apprentice -> journeymen: public recognition; work without assistance, verifiable work Journeymen: acceptance of the responsibility for creating robust, high-quality applications and acceptance of the craftsmanship approach. Work for different masters A master needs to take journeymen and apprentices under his wings and provide an environment which they can practice their craft. Becoming a master: Not a certificate or exam. Mastery is achieved by sequence of successful projects; Recognised by other software developers and customers Constantly recommended. Ages to build this reputation.
  • - Promotion - from apprentice to journeyman - from journeyman to master - Team structure - Mater craftsman: 1 master, 3 journeymen, 9 apprentices - Chief Programmer Team - Ivory tower? Dependency on a single person? Hierarchy? What about self-organised teams? - The journey - Work for different masters - Change jobs frequently?
  • - Promotion - from apprentice to journeyman - from journeyman to master - Team structure - Mater craftsman: 1 master, 3 journeymen, 9 apprentices - Chief Programmer Team - Ivory tower? Dependency on a single person? Hierarchy? What about self-organised teams? - The journey - Work for different masters - Change jobs frequently?
  • ×