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/
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
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
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
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
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.
Moreover, enjoyed even more to construct things and to see them connecting together.
But, something was missing: It’s like having you breakfast's cornflakes with a milk, just without the cornflakes.It’s a feeling / struggle
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.
Needless to say, that I found myself doing somebody else job…
Did I say, enjoying constructing? Most of the time I did crate a “lego”, though I am not sure I succeeded in combining it.
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
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
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)
In order to be truly great in our profession – there is a real need of hard and long work
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
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.”
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.”
During our meetings we will dive deeper in each and every item.
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.
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.
During our meetings we will dive deeper in each and every item.
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)