SlideShare une entreprise Scribd logo
1  sur  44
Software Craftsmanship Meeting #1 http://www.flickr.com/photos/renfield/17375998/in/set-388814/
Why? Enjoying Coding http://www.flickr.com/photos/declanjewell/2687934126/
Why? Enjoying Constructing http://www.flickr.com/photos/cibomahto/2133046342/
Why? Something Missing http://www.flickr.com/photos/ceanandjen/2442627144/
Why? Time to Market http://www.flickr.com/photos/aarongeller/360135019/
Why? Fire Extinguishing http://www.flickr.com/photos/thenationalguard/4443666692/
Why? Enjoying Constructing? http://www.flickr.com/photos/wwworks/2475349116/in/photostream/
Why? No Mentor, no Coach http://www.flickr.com/photos/dirkhansen/3235465927/
Software Craftsmanship Group ,[object Object]
http://www.linkedin.com/groups?gid=2578449,[object Object]
How? Long Journey http://www.flickr.com/photos/philliecasablanca/2052728068/
What? Craftsmen http://www.flickr.com/photos/34094515@N00/2554591721/
Software Craftsmanship Principles http://www.flickr.com/photos/renfield/351556388/in/photostream/
Chaos Wreckage http://www.flickr.com/photos/bobjagendorf/4122137519/
Software Craftsmanship Agile Manifesto http://agilemanifesto.org/ Manifesto: That is, while there is value in the items on the right, we value the items on the left more.
Software Craftsmanship “The Book of Five Rings” talks about mastership in martial arts. Surprising, but: “People usually think that all warriors think about is being ready to die…” “The martial way of life practiced by warriors is based on excelling in anything and everything.”
Software Craftsmanship “The Book of Five Rings” talks about mastership in martial arts by comparing a master warier to master carpenter. Master Carpenter has: A duty to understand in state and local laws A knowledge of different measurements, designs and all sort of structures A knowledge of the materials being used for a construction A knowledge of different tools of work An essential habit to “sharpen” the tools and exercise on small scale the habits of his work
Software Craftsmanship Software Craftsmanship Manifesto http://manifesto.softwarecraftsmanship.org/ Manifesto: >comprehensive documentation > following a plan > processes  & tools > contract negotiation That is, in pursuit of the items on the left we have found the items on the right to be indispensable
Software Craftsmanship How? Short Iterations Readable Code (OOP Best Practices) Test Driven Development (TDD), Unit Testing & Acceptance Tests Iterative Design (SOLID & OOD Best Practices) Refactoring Automatic Builds / Continuous Integration Automate Every Possible Process IDE & Tools Code Reviews / Pair Programming  Apprenticing  Exercising  Deliberate Practice Learning Techniques Code Katas Productive Partnership Well-crafted Steadily adding value Community of Professionals
Short Iterations Productive Partnership Really Listen http://www.flickr.com/photos/renneville/3358544222/in/set-72157612666319208/
Short Iterations Productive Partnership Establish Trust http://www.flickr.com/photos/pagedooley/1303402061/ In God We Trust, All Others Pay Cash
Readable Code Well-Crafted Newspaper Paradigm The code should be written as a newspapers’ article Reread Drafts http://www.flickr.com/photos/blackcustard/81680010/
TDD Well-Crafted Validate Expectations http://www.flickr.com/photos/nyuhuhuu/4442144329/ Safety Net
Iterative Design Well-Crafted Steadily adding value Software Development isn’t a Jenga game http://www.lostechies.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derickbailey/SOLID_5F00_6EC97F9C.jpg
Refactoring Refactoring (Noun) – A change made to internal structure of software to make it easier to understand and modifywithout changing its observable behavior. (Verb) – to structuresoftware by applying a series of refactorings without changing its observable behavior Well-Crafted Steadily adding value
Refactoring Well-Crafted Steadily adding value Refactoring in nutshell is a method to adjust changes, reuse the code that was developed in previous iterations and add new functionality to existing code without “breaking” software's external behavior
Continuous Integration What is Continuous Integration? Integrates source code and runs unit tests after each commit of code to the source repository Near-immediate feedback to the developer from the authoritative source, the system itself Well-Crafted Community of Professionals
Continuous Integration Well-Crafted Community of Professionals Continuous Integration Continuous Integration builds don’t need durable build products to be beneficial. They are a way for a developer to have a conversation with the system to gain reassurance that they have done their part Daily Builds Daily builds generate deliverables. They result in something tangible: something for QA to test, something for product managers to review, and something to reassure team members that they are in fact building a product. Because of the external audience, the daily build is a formal event, a mini-milestone that your team should hit without fail. Breaking the daily build is something that generates blame and often consequences, such as becoming the build mother or being awarded a dunce cap Use them BOTH
IDE & Tools Community of Professionals There is a time and situation in which the tools are appropriate
Code Review – Important Observation Community of Professionals Time Restrictions http://www.flickr.com/photos/mike-bensalem/3023717032/
Code Review – Psychological Barrier - I Community of Professionals Hard to concentrate Focusing for more than  a few dozens of minutes without any recession is hardly possible http://www.flickr.com/photos/txd/2681183845/
Code Review – Psychological Barrier - II Community of Professionals Hard to understand To read and to interpret somebody else’s logic (code) http://www.flickr.com/photos/dhammza/91435718/
Effective Code Review Community of Professionals How? Descriptive Abstract Focus Top-Down Overview Bottom-Up Review Read & Communicate “Drive” the code “Understand” the code Search for:  Code Smells Violations of OOD and OOP Violations of Code Conventions Comprehension
Pair Programming Community of Professionals http://www.flickr.com/photos/pokerbrit/3468717396/
Roles Driver Types commands or writes the code Explains actions taken Consults Navigator Navigator Watches & navigates the driver Ask questions Consults Driver Community of Professionals
Apprenticing Community of Professionals http://www.flickr.com/photos/mikaelmiettinen/3326060843/
Apprenticing Community of Professionals Define a Roadmap Execute Explain Loudly and Thoroughly Give Examples Ask for the Opinion +Supervise Projects +Point to Educational Materials
Exercising Community of Professionals http://www.flickr.com/photos/deerwooduk/1690299732/
Exercising Community of Professionals Deliberate Practice Musicians (Craftsmen) Open Source Projects Learning Techniques Podcasts www.reversim.com www.se-radio.com http://softwarecraftsmanship.libsyn.com/index.php . . . Blogs ...  Books Read at least 2-3 books each year Languages Principles Breakable Toys Write your own projects (probably supervised)
Code Kata Kata A Japanese word describing detailed choreographed patterns of movements practiced either solo or in pairs. Most commonly known for the presence in the martial arts. Code Kata Was first introduced by Dave Thomas (http://www.codekata.com/) Practice of the same methods, solutions and activities to a perfection.  Practice of the same problem, tackling it each time from a different angle or with a different solution Community of Professionals
Software Craftsmanship How? Short Iterations Readable Code (OOP Best Practices) Test Driven Development (TDD), Unit Testing & Acceptance Tests Iterative Design (SOLID & OOD Best Practices) Refactoring Automatic Builds / Continuous Integration Automate Every Possible Process IDE & Tools Code Reviews / Pair Programming  Apprenticing  Exercising  Deliberate Practice Learning Techniques Code Katas Productive Partnership Well-crafted Steadily adding value Community of Professionals
Next Meetings of the Software Craftsmanship Group – A Skeleton Gathering Descriptive Presentation (~1h) Hands On Code Reviews Pair Programming Code Kata
Contact Info ,[object Object]
http://www.irefactor.net

Contenu connexe

Tendances

jsDay - Javascript as a programming language
jsDay - Javascript as a programming languagejsDay - Javascript as a programming language
jsDay - Javascript as a programming languageMarco Cedaro
 
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...Marco Cedaro
 
Choosing a career goal as an IT graduate
Choosing a career goal as an IT graduateChoosing a career goal as an IT graduate
Choosing a career goal as an IT graduateTahsin Abrar
 
The Seven Deadly Coding Sins Slides
The Seven Deadly Coding Sins SlidesThe Seven Deadly Coding Sins Slides
The Seven Deadly Coding Sins Slidesmobiledevnj
 
Why you should use Django in your next project.
Why you should use Django in your next project.Why you should use Django in your next project.
Why you should use Django in your next project.Eyad Toma
 
Introduction to Agile (10/8/2014 at RedHat Agile Day)
Introduction to Agile (10/8/2014 at RedHat Agile Day)Introduction to Agile (10/8/2014 at RedHat Agile Day)
Introduction to Agile (10/8/2014 at RedHat Agile Day)jaredrrichardson
 

Tendances (6)

jsDay - Javascript as a programming language
jsDay - Javascript as a programming languagejsDay - Javascript as a programming language
jsDay - Javascript as a programming language
 
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
 
Choosing a career goal as an IT graduate
Choosing a career goal as an IT graduateChoosing a career goal as an IT graduate
Choosing a career goal as an IT graduate
 
The Seven Deadly Coding Sins Slides
The Seven Deadly Coding Sins SlidesThe Seven Deadly Coding Sins Slides
The Seven Deadly Coding Sins Slides
 
Why you should use Django in your next project.
Why you should use Django in your next project.Why you should use Django in your next project.
Why you should use Django in your next project.
 
Introduction to Agile (10/8/2014 at RedHat Agile Day)
Introduction to Agile (10/8/2014 at RedHat Agile Day)Introduction to Agile (10/8/2014 at RedHat Agile Day)
Introduction to Agile (10/8/2014 at RedHat Agile Day)
 

En vedette

Software Craftsmanship: Agile Is Not Enough
Software Craftsmanship: Agile Is Not EnoughSoftware Craftsmanship: Agile Is Not Enough
Software Craftsmanship: Agile Is Not EnoughKen Auer
 
A case for Code craftsmanship
A case for Code craftsmanship A case for Code craftsmanship
A case for Code craftsmanship Nirmalya Sengupta
 
A developer's journey to craftsmanship
A developer's journey to craftsmanshipA developer's journey to craftsmanship
A developer's journey to craftsmanshipTekkie Consulting
 
Software craftsmanshippresentation
Software craftsmanshippresentationSoftware craftsmanshippresentation
Software craftsmanshippresentationMeagan Waller
 
SW Craftsmanship in Sioux Embedded Systems
SW Craftsmanship in Sioux Embedded SystemsSW Craftsmanship in Sioux Embedded Systems
SW Craftsmanship in Sioux Embedded SystemsRoy Nitert
 
Continuous development - Growing Pains
Continuous development - Growing PainsContinuous development - Growing Pains
Continuous development - Growing PainsJohn Stevenson
 
Intro to SW craftsmanship
Intro to SW craftsmanshipIntro to SW craftsmanship
Intro to SW craftsmanshipRoy Nitert
 
Craftsmanship: The Meaning of Life
Craftsmanship: The Meaning of LifeCraftsmanship: The Meaning of Life
Craftsmanship: The Meaning of LifeHenry Jacob
 
A Question of Craftsmanship
A Question of CraftsmanshipA Question of Craftsmanship
A Question of CraftsmanshipKevlin Henney
 
소프트웨어개발참여자를위한철학 공간정보통신
소프트웨어개발참여자를위한철학 공간정보통신소프트웨어개발참여자를위한철학 공간정보통신
소프트웨어개발참여자를위한철학 공간정보통신Seokmoon Ryoo
 
Software Craftsmanship - Sandro Mancuso - BCS Agile Methods SG
Software Craftsmanship - Sandro Mancuso - BCS Agile Methods SGSoftware Craftsmanship - Sandro Mancuso - BCS Agile Methods SG
Software Craftsmanship - Sandro Mancuso - BCS Agile Methods SGJose Casal-Gimenez FBCS CITP
 
Be a better developer
Be a better developerBe a better developer
Be a better developerDiego Lemos
 
The Software Craftsman
The Software CraftsmanThe Software Craftsman
The Software Craftsmangoeran
 
Clean Code III - Software Craftsmanship
Clean Code III - Software CraftsmanshipClean Code III - Software Craftsmanship
Clean Code III - Software CraftsmanshipTheo Jungeblut
 
Tdd retro agile_korea_게시용
Tdd retro agile_korea_게시용Tdd retro agile_korea_게시용
Tdd retro agile_korea_게시용Sangcheol Hwang
 
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software EngineeringSoftware Craftsmanship VS Software Engineering
Software Craftsmanship VS Software EngineeringAndy Maleh
 
테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)KH Park (박경훈)
 
Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016Lemi Orhan Ergin
 

En vedette (18)

Software Craftsmanship: Agile Is Not Enough
Software Craftsmanship: Agile Is Not EnoughSoftware Craftsmanship: Agile Is Not Enough
Software Craftsmanship: Agile Is Not Enough
 
A case for Code craftsmanship
A case for Code craftsmanship A case for Code craftsmanship
A case for Code craftsmanship
 
A developer's journey to craftsmanship
A developer's journey to craftsmanshipA developer's journey to craftsmanship
A developer's journey to craftsmanship
 
Software craftsmanshippresentation
Software craftsmanshippresentationSoftware craftsmanshippresentation
Software craftsmanshippresentation
 
SW Craftsmanship in Sioux Embedded Systems
SW Craftsmanship in Sioux Embedded SystemsSW Craftsmanship in Sioux Embedded Systems
SW Craftsmanship in Sioux Embedded Systems
 
Continuous development - Growing Pains
Continuous development - Growing PainsContinuous development - Growing Pains
Continuous development - Growing Pains
 
Intro to SW craftsmanship
Intro to SW craftsmanshipIntro to SW craftsmanship
Intro to SW craftsmanship
 
Craftsmanship: The Meaning of Life
Craftsmanship: The Meaning of LifeCraftsmanship: The Meaning of Life
Craftsmanship: The Meaning of Life
 
A Question of Craftsmanship
A Question of CraftsmanshipA Question of Craftsmanship
A Question of Craftsmanship
 
소프트웨어개발참여자를위한철학 공간정보통신
소프트웨어개발참여자를위한철학 공간정보통신소프트웨어개발참여자를위한철학 공간정보통신
소프트웨어개발참여자를위한철학 공간정보통신
 
Software Craftsmanship - Sandro Mancuso - BCS Agile Methods SG
Software Craftsmanship - Sandro Mancuso - BCS Agile Methods SGSoftware Craftsmanship - Sandro Mancuso - BCS Agile Methods SG
Software Craftsmanship - Sandro Mancuso - BCS Agile Methods SG
 
Be a better developer
Be a better developerBe a better developer
Be a better developer
 
The Software Craftsman
The Software CraftsmanThe Software Craftsman
The Software Craftsman
 
Clean Code III - Software Craftsmanship
Clean Code III - Software CraftsmanshipClean Code III - Software Craftsmanship
Clean Code III - Software Craftsmanship
 
Tdd retro agile_korea_게시용
Tdd retro agile_korea_게시용Tdd retro agile_korea_게시용
Tdd retro agile_korea_게시용
 
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software EngineeringSoftware Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
 
테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)
 
Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016
 

Similaire à Software Craftsmanship - 1 Meeting

Agile Gurugram 2016 | Conference | Why your Agile Project will fail? Softwar...
Agile Gurugram 2016 | Conference |  Why your Agile Project will fail? Softwar...Agile Gurugram 2016 | Conference |  Why your Agile Project will fail? Softwar...
Agile Gurugram 2016 | Conference | Why your Agile Project will fail? Softwar...AgileNetwork
 
Building Drupal Apps for Distributions
Building Drupal Apps for DistributionsBuilding Drupal Apps for Distributions
Building Drupal Apps for DistributionsPhase2
 
The Road To Technical Team Lead
The Road To Technical Team LeadThe Road To Technical Team Lead
The Road To Technical Team Leadbenwaine
 
Why your Agile Project will Fail (Software Dev Practices to Save it)
Why your Agile Project will Fail (Software Dev Practices to Save it)Why your Agile Project will Fail (Software Dev Practices to Save it)
Why your Agile Project will Fail (Software Dev Practices to Save it)Vibhor Mahajan
 
ZF2 Modular Architecture - Taking advantage of it
ZF2 Modular Architecture - Taking advantage of itZF2 Modular Architecture - Taking advantage of it
ZF2 Modular Architecture - Taking advantage of itSteve Maraspin
 
Relaunching the look.co.uk website
Relaunching the look.co.uk websiteRelaunching the look.co.uk website
Relaunching the look.co.uk websitetomsinger
 
There's a Module for That, MIMA Summit 2010
There's a Module for That, MIMA Summit 2010There's a Module for That, MIMA Summit 2010
There's a Module for That, MIMA Summit 2010Emma Jane Hogbin Westby
 
JavaScript with Adobe applications - Acceleration web development!
JavaScript with Adobe applications - Acceleration web development!JavaScript with Adobe applications - Acceleration web development!
JavaScript with Adobe applications - Acceleration web development!shinobu tsutsui
 
Cloud Architecture + Cloud Architects / Jan 24th 2012
Cloud Architecture + Cloud Architects / Jan 24th 2012Cloud Architecture + Cloud Architects / Jan 24th 2012
Cloud Architecture + Cloud Architects / Jan 24th 2012Lothar Wieske
 
UX and the City - An introduction to user experience design in the financial ...
UX and the City - An introduction to user experience design in the financial ...UX and the City - An introduction to user experience design in the financial ...
UX and the City - An introduction to user experience design in the financial ...Amir Dotan
 
Start on mobile App: Native, Hybrid, and Make Money
Start on mobile App: Native, Hybrid, and Make MoneyStart on mobile App: Native, Hybrid, and Make Money
Start on mobile App: Native, Hybrid, and Make MoneyTeerasej Jiraphatchandej
 
Ensure Optimal Performance and Scalability: Implementing a Robust and Reliabl...
Ensure Optimal Performance and Scalability: Implementing a Robust and Reliabl...Ensure Optimal Performance and Scalability: Implementing a Robust and Reliabl...
Ensure Optimal Performance and Scalability: Implementing a Robust and Reliabl...Steve Feldman
 
Why reactive programing matter, and how PicCollage adaptive it.
Why reactive programing matter, and how PicCollage adaptive it.Why reactive programing matter, and how PicCollage adaptive it.
Why reactive programing matter, and how PicCollage adaptive it.PRADA Hsiung
 
Oracle licensing rules the 5 fatal mistakes
Oracle licensing rules   the 5 fatal mistakesOracle licensing rules   the 5 fatal mistakes
Oracle licensing rules the 5 fatal mistakesKay Williams
 
Web Development in Django
Web Development in DjangoWeb Development in Django
Web Development in DjangoLakshman Prasad
 
Shining a light on performance (js meetup)
Shining a light on performance (js meetup)Shining a light on performance (js meetup)
Shining a light on performance (js meetup)Yoav Niran
 
5 best practices for (web/ software) development (2010)
5 best practices for (web/ software) development (2010)5 best practices for (web/ software) development (2010)
5 best practices for (web/ software) development (2010)Erwin Elling
 
U. J o h n Tan i k P h .D. Apri l 2 014 SOF.docx
U. J o h n  Tan i k  P h .D.  Apri l  2 014  SOF.docxU. J o h n  Tan i k  P h .D.  Apri l  2 014  SOF.docx
U. J o h n Tan i k P h .D. Apri l 2 014 SOF.docxouldparis
 
Effective Code Review
Effective Code ReviewEffective Code Review
Effective Code ReviewUri Lavi
 

Similaire à Software Craftsmanship - 1 Meeting (20)

Agile Gurugram 2016 | Conference | Why your Agile Project will fail? Softwar...
Agile Gurugram 2016 | Conference |  Why your Agile Project will fail? Softwar...Agile Gurugram 2016 | Conference |  Why your Agile Project will fail? Softwar...
Agile Gurugram 2016 | Conference | Why your Agile Project will fail? Softwar...
 
Building Drupal Apps for Distributions
Building Drupal Apps for DistributionsBuilding Drupal Apps for Distributions
Building Drupal Apps for Distributions
 
The Road To Technical Team Lead
The Road To Technical Team LeadThe Road To Technical Team Lead
The Road To Technical Team Lead
 
Why your Agile Project will Fail (Software Dev Practices to Save it)
Why your Agile Project will Fail (Software Dev Practices to Save it)Why your Agile Project will Fail (Software Dev Practices to Save it)
Why your Agile Project will Fail (Software Dev Practices to Save it)
 
ZF2 Modular Architecture - Taking advantage of it
ZF2 Modular Architecture - Taking advantage of itZF2 Modular Architecture - Taking advantage of it
ZF2 Modular Architecture - Taking advantage of it
 
Relaunching the look.co.uk website
Relaunching the look.co.uk websiteRelaunching the look.co.uk website
Relaunching the look.co.uk website
 
There's a Module for That, MIMA Summit 2010
There's a Module for That, MIMA Summit 2010There's a Module for That, MIMA Summit 2010
There's a Module for That, MIMA Summit 2010
 
JavaScript with Adobe applications - Acceleration web development!
JavaScript with Adobe applications - Acceleration web development!JavaScript with Adobe applications - Acceleration web development!
JavaScript with Adobe applications - Acceleration web development!
 
Cloud Architecture + Cloud Architects / Jan 24th 2012
Cloud Architecture + Cloud Architects / Jan 24th 2012Cloud Architecture + Cloud Architects / Jan 24th 2012
Cloud Architecture + Cloud Architects / Jan 24th 2012
 
UX and the City - An introduction to user experience design in the financial ...
UX and the City - An introduction to user experience design in the financial ...UX and the City - An introduction to user experience design in the financial ...
UX and the City - An introduction to user experience design in the financial ...
 
Start on mobile App: Native, Hybrid, and Make Money
Start on mobile App: Native, Hybrid, and Make MoneyStart on mobile App: Native, Hybrid, and Make Money
Start on mobile App: Native, Hybrid, and Make Money
 
Ensure Optimal Performance and Scalability: Implementing a Robust and Reliabl...
Ensure Optimal Performance and Scalability: Implementing a Robust and Reliabl...Ensure Optimal Performance and Scalability: Implementing a Robust and Reliabl...
Ensure Optimal Performance and Scalability: Implementing a Robust and Reliabl...
 
Why reactive programing matter, and how PicCollage adaptive it.
Why reactive programing matter, and how PicCollage adaptive it.Why reactive programing matter, and how PicCollage adaptive it.
Why reactive programing matter, and how PicCollage adaptive it.
 
Oracle licensing rules the 5 fatal mistakes
Oracle licensing rules   the 5 fatal mistakesOracle licensing rules   the 5 fatal mistakes
Oracle licensing rules the 5 fatal mistakes
 
Web Development in Django
Web Development in DjangoWeb Development in Django
Web Development in Django
 
Shining a light on performance (js meetup)
Shining a light on performance (js meetup)Shining a light on performance (js meetup)
Shining a light on performance (js meetup)
 
5 best practices for (web/ software) development (2010)
5 best practices for (web/ software) development (2010)5 best practices for (web/ software) development (2010)
5 best practices for (web/ software) development (2010)
 
U. J o h n Tan i k P h .D. Apri l 2 014 SOF.docx
U. J o h n  Tan i k  P h .D.  Apri l  2 014  SOF.docxU. J o h n  Tan i k  P h .D.  Apri l  2 014  SOF.docx
U. J o h n Tan i k P h .D. Apri l 2 014 SOF.docx
 
Effective Code Review
Effective Code ReviewEffective Code Review
Effective Code Review
 
micro-frontends-with-vuejs
micro-frontends-with-vuejsmicro-frontends-with-vuejs
micro-frontends-with-vuejs
 

Plus de Uri Lavi

JavaScript TDD
JavaScript TDDJavaScript TDD
JavaScript TDDUri Lavi
 
Intro to Mahout
Intro to MahoutIntro to Mahout
Intro to MahoutUri Lavi
 
API Best Practices
API Best PracticesAPI Best Practices
API Best PracticesUri Lavi
 
Web Performance 101
Web Performance 101Web Performance 101
Web Performance 101Uri Lavi
 
Cloud Aware Architecture
Cloud Aware ArchitectureCloud Aware Architecture
Cloud Aware ArchitectureUri Lavi
 
Software craftsmanship - 4
Software craftsmanship - 4Software craftsmanship - 4
Software craftsmanship - 4Uri Lavi
 
Software Craftsmanship - 2
Software Craftsmanship - 2Software Craftsmanship - 2
Software Craftsmanship - 2Uri Lavi
 

Plus de Uri Lavi (7)

JavaScript TDD
JavaScript TDDJavaScript TDD
JavaScript TDD
 
Intro to Mahout
Intro to MahoutIntro to Mahout
Intro to Mahout
 
API Best Practices
API Best PracticesAPI Best Practices
API Best Practices
 
Web Performance 101
Web Performance 101Web Performance 101
Web Performance 101
 
Cloud Aware Architecture
Cloud Aware ArchitectureCloud Aware Architecture
Cloud Aware Architecture
 
Software craftsmanship - 4
Software craftsmanship - 4Software craftsmanship - 4
Software craftsmanship - 4
 
Software Craftsmanship - 2
Software Craftsmanship - 2Software Craftsmanship - 2
Software Craftsmanship - 2
 

Dernier

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 

Dernier (20)

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 

Software Craftsmanship - 1 Meeting

  • 1. Software Craftsmanship Meeting #1 http://www.flickr.com/photos/renfield/17375998/in/set-388814/
  • 2. Why? Enjoying Coding http://www.flickr.com/photos/declanjewell/2687934126/
  • 3. Why? Enjoying Constructing http://www.flickr.com/photos/cibomahto/2133046342/
  • 4. Why? Something Missing http://www.flickr.com/photos/ceanandjen/2442627144/
  • 5. Why? Time to Market http://www.flickr.com/photos/aarongeller/360135019/
  • 6. Why? Fire Extinguishing http://www.flickr.com/photos/thenationalguard/4443666692/
  • 7. Why? Enjoying Constructing? http://www.flickr.com/photos/wwworks/2475349116/in/photostream/
  • 8. Why? No Mentor, no Coach http://www.flickr.com/photos/dirkhansen/3235465927/
  • 9.
  • 10.
  • 11. How? Long Journey http://www.flickr.com/photos/philliecasablanca/2052728068/
  • 13. Software Craftsmanship Principles http://www.flickr.com/photos/renfield/351556388/in/photostream/
  • 15. Software Craftsmanship Agile Manifesto http://agilemanifesto.org/ Manifesto: That is, while there is value in the items on the right, we value the items on the left more.
  • 16. Software Craftsmanship “The Book of Five Rings” talks about mastership in martial arts. Surprising, but: “People usually think that all warriors think about is being ready to die…” “The martial way of life practiced by warriors is based on excelling in anything and everything.”
  • 17. Software Craftsmanship “The Book of Five Rings” talks about mastership in martial arts by comparing a master warier to master carpenter. Master Carpenter has: A duty to understand in state and local laws A knowledge of different measurements, designs and all sort of structures A knowledge of the materials being used for a construction A knowledge of different tools of work An essential habit to “sharpen” the tools and exercise on small scale the habits of his work
  • 18. Software Craftsmanship Software Craftsmanship Manifesto http://manifesto.softwarecraftsmanship.org/ Manifesto: >comprehensive documentation > following a plan > processes & tools > contract negotiation That is, in pursuit of the items on the left we have found the items on the right to be indispensable
  • 19. Software Craftsmanship How? Short Iterations Readable Code (OOP Best Practices) Test Driven Development (TDD), Unit Testing & Acceptance Tests Iterative Design (SOLID & OOD Best Practices) Refactoring Automatic Builds / Continuous Integration Automate Every Possible Process IDE & Tools Code Reviews / Pair Programming Apprenticing Exercising Deliberate Practice Learning Techniques Code Katas Productive Partnership Well-crafted Steadily adding value Community of Professionals
  • 20. Short Iterations Productive Partnership Really Listen http://www.flickr.com/photos/renneville/3358544222/in/set-72157612666319208/
  • 21. Short Iterations Productive Partnership Establish Trust http://www.flickr.com/photos/pagedooley/1303402061/ In God We Trust, All Others Pay Cash
  • 22. Readable Code Well-Crafted Newspaper Paradigm The code should be written as a newspapers’ article Reread Drafts http://www.flickr.com/photos/blackcustard/81680010/
  • 23. TDD Well-Crafted Validate Expectations http://www.flickr.com/photos/nyuhuhuu/4442144329/ Safety Net
  • 24. Iterative Design Well-Crafted Steadily adding value Software Development isn’t a Jenga game http://www.lostechies.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derickbailey/SOLID_5F00_6EC97F9C.jpg
  • 25. Refactoring Refactoring (Noun) – A change made to internal structure of software to make it easier to understand and modifywithout changing its observable behavior. (Verb) – to structuresoftware by applying a series of refactorings without changing its observable behavior Well-Crafted Steadily adding value
  • 26. Refactoring Well-Crafted Steadily adding value Refactoring in nutshell is a method to adjust changes, reuse the code that was developed in previous iterations and add new functionality to existing code without “breaking” software's external behavior
  • 27. Continuous Integration What is Continuous Integration? Integrates source code and runs unit tests after each commit of code to the source repository Near-immediate feedback to the developer from the authoritative source, the system itself Well-Crafted Community of Professionals
  • 28. Continuous Integration Well-Crafted Community of Professionals Continuous Integration Continuous Integration builds don’t need durable build products to be beneficial. They are a way for a developer to have a conversation with the system to gain reassurance that they have done their part Daily Builds Daily builds generate deliverables. They result in something tangible: something for QA to test, something for product managers to review, and something to reassure team members that they are in fact building a product. Because of the external audience, the daily build is a formal event, a mini-milestone that your team should hit without fail. Breaking the daily build is something that generates blame and often consequences, such as becoming the build mother or being awarded a dunce cap Use them BOTH
  • 29. IDE & Tools Community of Professionals There is a time and situation in which the tools are appropriate
  • 30. Code Review – Important Observation Community of Professionals Time Restrictions http://www.flickr.com/photos/mike-bensalem/3023717032/
  • 31. Code Review – Psychological Barrier - I Community of Professionals Hard to concentrate Focusing for more than a few dozens of minutes without any recession is hardly possible http://www.flickr.com/photos/txd/2681183845/
  • 32. Code Review – Psychological Barrier - II Community of Professionals Hard to understand To read and to interpret somebody else’s logic (code) http://www.flickr.com/photos/dhammza/91435718/
  • 33. Effective Code Review Community of Professionals How? Descriptive Abstract Focus Top-Down Overview Bottom-Up Review Read & Communicate “Drive” the code “Understand” the code Search for: Code Smells Violations of OOD and OOP Violations of Code Conventions Comprehension
  • 34. Pair Programming Community of Professionals http://www.flickr.com/photos/pokerbrit/3468717396/
  • 35. Roles Driver Types commands or writes the code Explains actions taken Consults Navigator Navigator Watches & navigates the driver Ask questions Consults Driver Community of Professionals
  • 36. Apprenticing Community of Professionals http://www.flickr.com/photos/mikaelmiettinen/3326060843/
  • 37. Apprenticing Community of Professionals Define a Roadmap Execute Explain Loudly and Thoroughly Give Examples Ask for the Opinion +Supervise Projects +Point to Educational Materials
  • 38. Exercising Community of Professionals http://www.flickr.com/photos/deerwooduk/1690299732/
  • 39. Exercising Community of Professionals Deliberate Practice Musicians (Craftsmen) Open Source Projects Learning Techniques Podcasts www.reversim.com www.se-radio.com http://softwarecraftsmanship.libsyn.com/index.php . . . Blogs ... Books Read at least 2-3 books each year Languages Principles Breakable Toys Write your own projects (probably supervised)
  • 40. Code Kata Kata A Japanese word describing detailed choreographed patterns of movements practiced either solo or in pairs. Most commonly known for the presence in the martial arts. Code Kata Was first introduced by Dave Thomas (http://www.codekata.com/) Practice of the same methods, solutions and activities to a perfection. Practice of the same problem, tackling it each time from a different angle or with a different solution Community of Professionals
  • 41. Software Craftsmanship How? Short Iterations Readable Code (OOP Best Practices) Test Driven Development (TDD), Unit Testing & Acceptance Tests Iterative Design (SOLID & OOD Best Practices) Refactoring Automatic Builds / Continuous Integration Automate Every Possible Process IDE & Tools Code Reviews / Pair Programming Apprenticing Exercising Deliberate Practice Learning Techniques Code Katas Productive Partnership Well-crafted Steadily adding value Community of Professionals
  • 42. Next Meetings of the Software Craftsmanship Group – A Skeleton Gathering Descriptive Presentation (~1h) Hands On Code Reviews Pair Programming Code Kata
  • 43.
  • 46.

Notes de l'éditeur

  1. Always enjoyed coding.“Piece of the mind” when writing a “well” piece of code.You probably understand a “well” piece of code, because when you see such one you recognize it.
  2. Moreover, enjoyed even more to construct things and to see them connecting together.
  3. But, something was missing: It’s like having you breakfast's cornflakes with a milk, just without the cornflakes.It’s a feeling / struggle
  4. When “entering” a real job the “Time to Market” presence confused all the perception of the software engineering.Though it was always wrapped with a real beautiful context (like the watch here) the purpose still was to constraint almost any action to a very limited time.Well it pays the bills – what we need here is something working, not a well crafted == beautiful softwareThe problem is that the business mistakes and calls a well crafted software as a beautiful software.a) In some places, like the web a non “beautiful” site actually means less revenuesb) In most of the other places, the “internal beauty” is the one that really importantIt’s similar to buying a hardware tools – you don’t need your hammer to be beautiful – just robust, easy to work with and long living.
  5. Needless to say, that I found myself doing somebody else job…
  6. Did I say, enjoying constructing? Most of the time I did crate a “lego”, though I am not sure I succeeded in combining it.
  7. But most importantly – I couldn’t find a mentor that could teach and instruct me.The “Manager” as a mentor?“Let’s bust their heads” and we will for sure succeedNext, most of the people decide on their own promotion - after 2 years the people start calling themselves “Consultants”Finally, technical people are promoted to be managers, but don’t know how to motivate and drive Or politicians are promoted to be managers, but they don’t know the technical staffHow many Systems did you see during your lives?How many architectures, designs and truly successful solutions did you apply?How technical you are? Even if you do know how to apply an architecture, without coding each day and solving day to day problems you will have only a very superficial overview. A mentor is needed. Once who teaches Once who cares Once who doesn’t blame
  8. If we combine together, time to market + understanding of what is the good practices, patterns and solutions and having mentors  this will drive the Group I wanted to establish
  9. This meeting’s objectives are to layout the future meetings that will allow us to become Software Craftsman.Therefore, the current meeting will be short and won’t be the rule.There shell be code!We will review the Software Craftsmanship Manifesto and discuss what does it mean in general terms.We will finish with a Code Kata (more in the future)
  10. In order to be truly great in our profession – there is a real need of hard and long work
  11. The purpose is to make us craftsmen – ones that really understand in the software construction process, ones that give the best values to the customers, ones that will build the best “product” based on customer’s need
  12. There is a book called “The book of Five Rings”.The book is taught in the Business Schools in US. (Explain why)What is surprising, though, that the book starts by:“People usually think that all warriors think about is being ready to die… The martial way of life practiced by warriors is based on excelling others in anything and everything.”
  13. There is a book called “The book of Five Rings”.The book is taught in the Business Schools in US. (Explain why)What is surprising, though, that the book starts by:“People usually think that all warriors think about is being ready to die… The martial way of life practiced by warriors is based on excelling others in anything and everything.”
  14. During our meetings we will dive deeper in each and every item.
  15. One step after anotherYour clients also your managers, proving them that it is possible to meet deadlines but also quality builds the trust for the future.Visibility – be visible on what you are doing.
  16. Jenga - During the game, players take turns to remove a block from a tower and balance it on top, creating a taller and increasingly unstable structure as the game progresses.
  17. During our meetings we will dive deeper in each and every item.
  18. This meeting’s objectives are to layout the future meetings that will allow us to become Software Craftsman.Therefore, the current meeting will be short and won’t be the rule.There shell be code!We will review the Software Craftsmanship Manifesto and discuss what does it mean in general terms.We will finish with a Code Kata (more in the future)