The document discusses the history and development of the software craftsmanship movement. It began in the 1990s with ideas around treating software development as a craft similar to other skilled trades. In the 2000s, these ideas saw renewed interest through Robert Martin's talks advocating for craftsmanship over poor quality code. This led to the creation of the Software Craftsmanship Manifesto, which outlined principles for developers to focus on quality, learning, and sharing knowledge. The document examines issues that led to interest in craftsmanship such as poor code quality and a lack of practical skills training. It presents craftsmanship as an alternative that emphasizes pride in work, learning from others, and stakeholder trust through
Software Craftsmanship - It's an ImperativeFadi Stephan
The document discusses the history and development of the software craftsmanship movement. It began in the 1990s with ideas around treating software development as a craft similar to other skilled trades. In the 2000s, the concepts of software craftsmanship gained more attention through conferences and manifestos promoting practices like test-driven development that help developers write high-quality code. The software craftsmanship movement aims to improve code quality by treating code as an artisanal craft and valuing skilled practitioners who continuously learn, share knowledge, and produce work they can stand behind.
The document discusses software design principles and patterns, including the SOLID principles, design patterns like factory method and abstract factory, code smells like duplicated code and feature envy, and refactoring techniques to address smells like extracting classes and collapsing hierarchies. It provides examples of applying principles and patterns to real code and suggests design is key to creating high-quality, maintainable software.
Masters of Process Episode 1: On Deck with Michael Gill and Curtis CummingsLizzyManz
Masters of Process brings you the no-code revolution in full. Join us as we meet with top innovators in the space and explore how they are reinventing the way a modern business operates. Brought to you by industry insiders from No Code Ops and Process Street, each half hour episode is a goldmine of productivity, products, and scaling.
The document discusses the benefits of using low-fidelity or "lo-fi" prototyping, which involves building prototypes of user interfaces using paper and testing them with real users. Some key benefits are that lo-fi prototyping is very fast, allows designers to iterate and test many ideas early in the design process when changes are less costly, and surfaces issues with a design's core functionality rather than superficial visual aspects. The document provides examples of how lo-fi prototyping was effectively used on a project, spreading an appreciation of usability testing throughout the organization.
Workshop held for startup founders and executives for Fall 2014 cohort at MACH37™, a vertical accelerator focused on information security product companies.
In this workshop, I shared with the attendees, excerpts of my unique experience from four prior startup businesses interleaved with my public company experiences of building durable products that have a long life span, often outliving multiple mergers, acquisitions and change of control in businesses that own the asset.
bringing design to life with lean ux & lean engineering - Lean Day West 2013Bill Scott
What does a good Lean UX working rhythm look like for designers & engineers? In this workshop, Bill & one of his design partners at PayPal, Cody Evol, will guide you through this experience. A set of principles, patterns (and anti-patterns), best practices, technologies & tools will be explored in this hands-on workshop leaving you with a clear understanding of how to mesh prototype & production.
(English slides - except for the title page)
Slides from my presentation delivered in Kraków at SFI 2017 conference.
My attempt to analyse why Software Development in Central Europe (including Poland) concentrates on outsourcing services, what it means in practice and what we can so as the profession of software engineers to become the partners for "the business" similarly to how IT industry evolves in the US or some other most advanced western economies.
Enter Product Engineering!
The document discusses the benefits of using low-fidelity or "lo-fi" prototyping, where interfaces are designed on paper and tested with real users early in the development process. This allows teams to go through many iterative design cycles in a short period of time to incorporate user feedback, as paper prototypes can be created and modified much faster than digital prototypes. The key benefits outlined are that lo-fi prototyping (1) is extremely fast, (2) brings user testing results very early in the process when changes are cheap to make, and (3) allows teams to try far more design ideas than with digital prototypes. The document provides guidance on assembling materials for building paper prototypes and preparing for useful user testing
Software Craftsmanship - It's an ImperativeFadi Stephan
The document discusses the history and development of the software craftsmanship movement. It began in the 1990s with ideas around treating software development as a craft similar to other skilled trades. In the 2000s, the concepts of software craftsmanship gained more attention through conferences and manifestos promoting practices like test-driven development that help developers write high-quality code. The software craftsmanship movement aims to improve code quality by treating code as an artisanal craft and valuing skilled practitioners who continuously learn, share knowledge, and produce work they can stand behind.
The document discusses software design principles and patterns, including the SOLID principles, design patterns like factory method and abstract factory, code smells like duplicated code and feature envy, and refactoring techniques to address smells like extracting classes and collapsing hierarchies. It provides examples of applying principles and patterns to real code and suggests design is key to creating high-quality, maintainable software.
Masters of Process Episode 1: On Deck with Michael Gill and Curtis CummingsLizzyManz
Masters of Process brings you the no-code revolution in full. Join us as we meet with top innovators in the space and explore how they are reinventing the way a modern business operates. Brought to you by industry insiders from No Code Ops and Process Street, each half hour episode is a goldmine of productivity, products, and scaling.
The document discusses the benefits of using low-fidelity or "lo-fi" prototyping, which involves building prototypes of user interfaces using paper and testing them with real users. Some key benefits are that lo-fi prototyping is very fast, allows designers to iterate and test many ideas early in the design process when changes are less costly, and surfaces issues with a design's core functionality rather than superficial visual aspects. The document provides examples of how lo-fi prototyping was effectively used on a project, spreading an appreciation of usability testing throughout the organization.
Workshop held for startup founders and executives for Fall 2014 cohort at MACH37™, a vertical accelerator focused on information security product companies.
In this workshop, I shared with the attendees, excerpts of my unique experience from four prior startup businesses interleaved with my public company experiences of building durable products that have a long life span, often outliving multiple mergers, acquisitions and change of control in businesses that own the asset.
bringing design to life with lean ux & lean engineering - Lean Day West 2013Bill Scott
What does a good Lean UX working rhythm look like for designers & engineers? In this workshop, Bill & one of his design partners at PayPal, Cody Evol, will guide you through this experience. A set of principles, patterns (and anti-patterns), best practices, technologies & tools will be explored in this hands-on workshop leaving you with a clear understanding of how to mesh prototype & production.
(English slides - except for the title page)
Slides from my presentation delivered in Kraków at SFI 2017 conference.
My attempt to analyse why Software Development in Central Europe (including Poland) concentrates on outsourcing services, what it means in practice and what we can so as the profession of software engineers to become the partners for "the business" similarly to how IT industry evolves in the US or some other most advanced western economies.
Enter Product Engineering!
The document discusses the benefits of using low-fidelity or "lo-fi" prototyping, where interfaces are designed on paper and tested with real users early in the development process. This allows teams to go through many iterative design cycles in a short period of time to incorporate user feedback, as paper prototypes can be created and modified much faster than digital prototypes. The key benefits outlined are that lo-fi prototyping (1) is extremely fast, (2) brings user testing results very early in the process when changes are cheap to make, and (3) allows teams to try far more design ideas than with digital prototypes. The document provides guidance on assembling materials for building paper prototypes and preparing for useful user testing
From TrainedMonkey to Google SoC mentor – How to become an OOo developerAlexandro Colorado
The document discusses the author's path from working on smaller open source projects like libwpd to becoming a mentor for Google Summer of Code with OpenOffice.org. Some challenges of contributing to OpenOffice.org included its complex codebase and lengthy build times. The author advocates improving modularity, providing coaching for new developers, and streamlining contribution processes.
Lean principles, Open Source, and the road ahead (Roberto Di Cosmo)AdaCore
In this series of talks, our panel of experts present real world examples that illustrate how Lean Production concepts are being successfully applied to software development. In particular to applications that have to meet the highest levels of safety and security.
Developer plantations - colonialism of XXI century (GeeCON 2017)Wojciech Seliga
Slides from my presentation delivered at GeeCON 2017.
Have you ever wondered why great multi-billion dollar software products changing our lives are built in the US, Western Europe or Australia and not in Poland, Ukraine or Bulgaria? Uber, Facebook, Spotify, Tesla (sic!), JIRA - all of them built by software geeks. Are Polish (or other CEE) IT specialists less intelligent or worse than their colleagues from the West? Or maybe it’s about the huge capital those countries have and we don’t. Or maybe the problem is in our approach to IT and our mindset? Regardless of the true reasons, as the effect, tens and hundreds of thousands of relatively low-cost and controllable people in Poland and other CEE countries work on conserving and maintaining software systems envisioned and usually designed elsewhere. Together with other emerging countries, we have become a development plantation for the most modern countries. I’d like to analyse some reasons of this situation and present what mindset change must happen so that Poland and other CEE countries are not anymore colonies providing human resources, but instead have a creational impact on the advancement of the civilisation and modern economy.
The document provides an overview of the CodeNow program, which teaches high school students computer programming skills through workshops led by technology professionals. It discusses the mission to provide youth an entry point into coding and collaboration with local tech companies to offer coding instruction. The summary highlights the four levels of workshops, online portal, hackathons and summer competition that make up the CodeNow program. It also gives details about the workshop structure and curriculum that will be taught, including HTML, CSS, Ruby on Rails, and an introduction to application development.
I am a passionate reader of topics on new trends and best practices in software development. In my spare time, i like to read essays, listen podcasts, view webinars and examine source code of other developers, in order to learn from them.
Every time I find a quote that proves motivating for me and other developers, I try to save it, and then share it with my friends and classmates.
This work is a collection of twenty quotations that have impacted positively on my work style and way of thinking. The order they are published do not due to any selection criteria, it's just the order they were read and filed.
The following videos were linked from the original presentation:
1) Scenario - http://www.vimeo.com/4903991
2) Touchscreen UI Concept: http://vimeo.com/4910002
3) No Touchscreen UI Concept: http://www.vimeo.com/4910043
This document provides information on how to become a software developer. It begins with an introduction that defines a software developer and notes they design, implement, and test software. It also provides the median salary range of $84,200 and high job growth of 24.6% expected through 2020. The document then outlines the roles and responsibilities of a software developer, and the requirements which do not necessarily include a computer science degree. It provides 10 steps to become a software developer including choosing a pet project, learning from books and online courses, implementing the pet project, asking questions online, and contributing to open source projects. It concludes with a list of free resources for learning C#.
Enabling Lean with Tech: lessons learned applying lean at paypalBill Scott
Couple of lessons learned with changing the technology stack at PayPal to support Lean UX methodologies.
This talk is happening as part of the Lean Startup in the Enterprise talk with Jeff Gothelf on Tues, Dec. 4, 2012.
The document introduces the SOLID principles of object-oriented design, which are Single Responsibility Principle, Open-Closed Principle, Liskov Substitution Principle, Interface Segregation Principle, and Dependency Inversion Principle. It discusses each principle in detail and provides examples of how to apply them to refactor code and improve design. Design principles help create high-quality software by improving modularity, reusability, and maintainability of code. The SOLID principles in particular help achieve these goals and are fundamental for object-oriented design.
This document provides summaries of what several experts consider "clean code". It discusses how clean code is readable, focused on doing one thing well, has minimal dependencies, is well-tested, has meaningful names, and shows that the author cares about quality. Overall, clean code is well-crafted, maintains professional standards, and can be easily understood and maintained by other programmers.
- The document discusses the career progression of Java developers from juniors to principals over 15-32 years, focusing on changes in mindset, skills, and responsibilities at different stages.
- As developers gain experience, their focus shifts from code quality to design, from asking questions to mentoring others, and from predictions to understanding true customer needs.
- While Java remains a powerful platform, the most senior developers look beyond technologies to learning constantly, seeing their own ignorance, and impacting a wider community through frameworks and innovation.
[DesignOps Global Conference 2019] Samir Dash - 3-steps for buildingdesign e...Samir Dash
This is a PDF of my keynote for DesignOps Global Conference 2019 [https://designops-conference.com/day-2-may-31/]
This is about exploring a framework to build a scalable, portable design system for collaboration and automation by machines.
This keynote is part of Session 4.
Session 4 | (PM) DesignOps in the era of AI and cognitive computing
How are different organizations leveraging people-to-people, people-to-machine and machine-to-machine interactions and autonomous systems to design and create new products and services? How do companies need to change their design practices and development processes in the era of cognitive computing and what roles will DesignOps play?
More :
https://designops-conference.com/
http://desops.io
This document provides advice for working with developers. It recommends learning common development jargon, getting good at project estimation by partnering with an experienced manager, understanding cloud computing and Software as a Service models, and different development paradigms like agile development. Local developers are valuable because they understand local needs and can tailor remote services. The document advocates using local talent like students and treating developers as people with career paths.
This document discusses ways to raise the bar of software development by combining it with other disciplines. It proposes 6 intersections between software design and other fields: 1) Software Design and UX, 2) Other design disciplines, 3) Materials Science, 4) Math, 5) Engineering principles of built-in self-testing, and 6) Reaching out to scientists. It argues that considering ideas from other domains could improve software design and help address challenges like dependencies in legacy code. The document also suggests ways to fundamentally change development by precisely defining requirements and generating code from them.
Keynote at halfstackconf 2017 discussing the falsehood of the idea that in order to survive the automation evolution everybody needs to learn how to code. Machines can code, too.
How to become a Software Engineer Carrier Path for Software Developerjeetendra mandal
Software engineers are responsible for creating different software programs that power many technologies and applications we use everyday. There are many types and roles for software engineers, including developing applications, systems, security features, and ensuring quality. Becoming a software engineer involves obtaining a relevant degree, mastering programming skills, databases, algorithms, software engineering theory, and gaining experience through projects. Experience can then be used to find jobs through websites, recruiters, freelancing, or networking in local tech communities. The field continues to evolve, with growing opportunities in areas like cloud, AI, blockchain, and cybersecurity.
Case Study: Practical tools and strategies for tackling legacy practices and ...Alejandro S.
In this talk you will learn how strategic tools like Wardley Maps, the C4 model and DDD’s strategic design helped a struggling CTO to fight against a crumbling monolith and the organizational practices that allowed its creation.
Among other things we will cover:
* How to plan, communicate and challenge strategies.
* Why strategy and thinking strategically is important for software developers.
* High-level overview of Simon Brown’s C4 Model
* High-level overview of DDD’s strategic design
* DDD Context Mapping
* High-level overview Wardley Maps.
* Wardley Maps: Landscape.
* FUN random facts about software development in startups :)
What is the Easiest Way to Hire a React Developer?BOSC Tech Labs
Explore the streamlined approach to hiring a React developer with Bosc Tech Labs. Our guide simplifies the process, ensuring you connect with top-tier React talent effortlessly. Start building your dynamic team today!
Software Craftsmanship VS Software EngineeringAndy Maleh
Software craftsmanship and software engineering both aim to deliver high-quality, reliable software, but differ in their approaches. Software engineering focuses on macro goals and processes, while craftsmanship emphasizes mastering skills through experience. Both are used at Groupon, where engineering practices like architecture, testing and iteration are combined with craftsmanship techniques including apprenticeships and pair programming.
Based on my observations, in IT we suffer from continuous collective amnesia and we are even proud of it.
For at least 50 years meanwhile, we struggle how to build systems, that are easy to understand, to maintain, to change and to operate in a reliable way. Each time we hit the wall again, we start to look for a new silver bullet on the horizon, strongly believing that it will solve the problem for good.
The key word is "new": "New" is good in our community, while "old" is bad, worthless, crap. We suffer from youthism, not only in recruiting, but in all areas. This way we discard any "old" knowledge, no matter if it is valuable or not. We separate by age, not by value.
Additionally we continuously lose our collective memory with every new generation that leaves university as they are also taught not to value anything old and instead only look for the new, shiny stuff.
While not all old knowledge is worth being preserved, admittedly, there is still a lot of valuable old knowledge available, offering answers to the problems that we face today - creating maintainable and reliable systems, dealing with distribution and tackling complexity, just to name a few of the challenges.
This presentation is a journey through some (very) old computer science papers that contain a lot of very valuable knowledge regarding the problems we face today. For each of the papers, some of the key ideas are presented and how they address our current challenges.
Of course, the voice track is missing and there are a lot more papers that would be worth being mentioned in this presentation. Still, I hope that also the slides alone will be of some value for you - and convince you a bit that not everything "old" in IT is automatically worthless ... ;)
From TrainedMonkey to Google SoC mentor – How to become an OOo developerAlexandro Colorado
The document discusses the author's path from working on smaller open source projects like libwpd to becoming a mentor for Google Summer of Code with OpenOffice.org. Some challenges of contributing to OpenOffice.org included its complex codebase and lengthy build times. The author advocates improving modularity, providing coaching for new developers, and streamlining contribution processes.
Lean principles, Open Source, and the road ahead (Roberto Di Cosmo)AdaCore
In this series of talks, our panel of experts present real world examples that illustrate how Lean Production concepts are being successfully applied to software development. In particular to applications that have to meet the highest levels of safety and security.
Developer plantations - colonialism of XXI century (GeeCON 2017)Wojciech Seliga
Slides from my presentation delivered at GeeCON 2017.
Have you ever wondered why great multi-billion dollar software products changing our lives are built in the US, Western Europe or Australia and not in Poland, Ukraine or Bulgaria? Uber, Facebook, Spotify, Tesla (sic!), JIRA - all of them built by software geeks. Are Polish (or other CEE) IT specialists less intelligent or worse than their colleagues from the West? Or maybe it’s about the huge capital those countries have and we don’t. Or maybe the problem is in our approach to IT and our mindset? Regardless of the true reasons, as the effect, tens and hundreds of thousands of relatively low-cost and controllable people in Poland and other CEE countries work on conserving and maintaining software systems envisioned and usually designed elsewhere. Together with other emerging countries, we have become a development plantation for the most modern countries. I’d like to analyse some reasons of this situation and present what mindset change must happen so that Poland and other CEE countries are not anymore colonies providing human resources, but instead have a creational impact on the advancement of the civilisation and modern economy.
The document provides an overview of the CodeNow program, which teaches high school students computer programming skills through workshops led by technology professionals. It discusses the mission to provide youth an entry point into coding and collaboration with local tech companies to offer coding instruction. The summary highlights the four levels of workshops, online portal, hackathons and summer competition that make up the CodeNow program. It also gives details about the workshop structure and curriculum that will be taught, including HTML, CSS, Ruby on Rails, and an introduction to application development.
I am a passionate reader of topics on new trends and best practices in software development. In my spare time, i like to read essays, listen podcasts, view webinars and examine source code of other developers, in order to learn from them.
Every time I find a quote that proves motivating for me and other developers, I try to save it, and then share it with my friends and classmates.
This work is a collection of twenty quotations that have impacted positively on my work style and way of thinking. The order they are published do not due to any selection criteria, it's just the order they were read and filed.
The following videos were linked from the original presentation:
1) Scenario - http://www.vimeo.com/4903991
2) Touchscreen UI Concept: http://vimeo.com/4910002
3) No Touchscreen UI Concept: http://www.vimeo.com/4910043
This document provides information on how to become a software developer. It begins with an introduction that defines a software developer and notes they design, implement, and test software. It also provides the median salary range of $84,200 and high job growth of 24.6% expected through 2020. The document then outlines the roles and responsibilities of a software developer, and the requirements which do not necessarily include a computer science degree. It provides 10 steps to become a software developer including choosing a pet project, learning from books and online courses, implementing the pet project, asking questions online, and contributing to open source projects. It concludes with a list of free resources for learning C#.
Enabling Lean with Tech: lessons learned applying lean at paypalBill Scott
Couple of lessons learned with changing the technology stack at PayPal to support Lean UX methodologies.
This talk is happening as part of the Lean Startup in the Enterprise talk with Jeff Gothelf on Tues, Dec. 4, 2012.
The document introduces the SOLID principles of object-oriented design, which are Single Responsibility Principle, Open-Closed Principle, Liskov Substitution Principle, Interface Segregation Principle, and Dependency Inversion Principle. It discusses each principle in detail and provides examples of how to apply them to refactor code and improve design. Design principles help create high-quality software by improving modularity, reusability, and maintainability of code. The SOLID principles in particular help achieve these goals and are fundamental for object-oriented design.
This document provides summaries of what several experts consider "clean code". It discusses how clean code is readable, focused on doing one thing well, has minimal dependencies, is well-tested, has meaningful names, and shows that the author cares about quality. Overall, clean code is well-crafted, maintains professional standards, and can be easily understood and maintained by other programmers.
- The document discusses the career progression of Java developers from juniors to principals over 15-32 years, focusing on changes in mindset, skills, and responsibilities at different stages.
- As developers gain experience, their focus shifts from code quality to design, from asking questions to mentoring others, and from predictions to understanding true customer needs.
- While Java remains a powerful platform, the most senior developers look beyond technologies to learning constantly, seeing their own ignorance, and impacting a wider community through frameworks and innovation.
[DesignOps Global Conference 2019] Samir Dash - 3-steps for buildingdesign e...Samir Dash
This is a PDF of my keynote for DesignOps Global Conference 2019 [https://designops-conference.com/day-2-may-31/]
This is about exploring a framework to build a scalable, portable design system for collaboration and automation by machines.
This keynote is part of Session 4.
Session 4 | (PM) DesignOps in the era of AI and cognitive computing
How are different organizations leveraging people-to-people, people-to-machine and machine-to-machine interactions and autonomous systems to design and create new products and services? How do companies need to change their design practices and development processes in the era of cognitive computing and what roles will DesignOps play?
More :
https://designops-conference.com/
http://desops.io
This document provides advice for working with developers. It recommends learning common development jargon, getting good at project estimation by partnering with an experienced manager, understanding cloud computing and Software as a Service models, and different development paradigms like agile development. Local developers are valuable because they understand local needs and can tailor remote services. The document advocates using local talent like students and treating developers as people with career paths.
This document discusses ways to raise the bar of software development by combining it with other disciplines. It proposes 6 intersections between software design and other fields: 1) Software Design and UX, 2) Other design disciplines, 3) Materials Science, 4) Math, 5) Engineering principles of built-in self-testing, and 6) Reaching out to scientists. It argues that considering ideas from other domains could improve software design and help address challenges like dependencies in legacy code. The document also suggests ways to fundamentally change development by precisely defining requirements and generating code from them.
Keynote at halfstackconf 2017 discussing the falsehood of the idea that in order to survive the automation evolution everybody needs to learn how to code. Machines can code, too.
How to become a Software Engineer Carrier Path for Software Developerjeetendra mandal
Software engineers are responsible for creating different software programs that power many technologies and applications we use everyday. There are many types and roles for software engineers, including developing applications, systems, security features, and ensuring quality. Becoming a software engineer involves obtaining a relevant degree, mastering programming skills, databases, algorithms, software engineering theory, and gaining experience through projects. Experience can then be used to find jobs through websites, recruiters, freelancing, or networking in local tech communities. The field continues to evolve, with growing opportunities in areas like cloud, AI, blockchain, and cybersecurity.
Case Study: Practical tools and strategies for tackling legacy practices and ...Alejandro S.
In this talk you will learn how strategic tools like Wardley Maps, the C4 model and DDD’s strategic design helped a struggling CTO to fight against a crumbling monolith and the organizational practices that allowed its creation.
Among other things we will cover:
* How to plan, communicate and challenge strategies.
* Why strategy and thinking strategically is important for software developers.
* High-level overview of Simon Brown’s C4 Model
* High-level overview of DDD’s strategic design
* DDD Context Mapping
* High-level overview Wardley Maps.
* Wardley Maps: Landscape.
* FUN random facts about software development in startups :)
What is the Easiest Way to Hire a React Developer?BOSC Tech Labs
Explore the streamlined approach to hiring a React developer with Bosc Tech Labs. Our guide simplifies the process, ensuring you connect with top-tier React talent effortlessly. Start building your dynamic team today!
Software Craftsmanship VS Software EngineeringAndy Maleh
Software craftsmanship and software engineering both aim to deliver high-quality, reliable software, but differ in their approaches. Software engineering focuses on macro goals and processes, while craftsmanship emphasizes mastering skills through experience. Both are used at Groupon, where engineering practices like architecture, testing and iteration are combined with craftsmanship techniques including apprenticeships and pair programming.
Based on my observations, in IT we suffer from continuous collective amnesia and we are even proud of it.
For at least 50 years meanwhile, we struggle how to build systems, that are easy to understand, to maintain, to change and to operate in a reliable way. Each time we hit the wall again, we start to look for a new silver bullet on the horizon, strongly believing that it will solve the problem for good.
The key word is "new": "New" is good in our community, while "old" is bad, worthless, crap. We suffer from youthism, not only in recruiting, but in all areas. This way we discard any "old" knowledge, no matter if it is valuable or not. We separate by age, not by value.
Additionally we continuously lose our collective memory with every new generation that leaves university as they are also taught not to value anything old and instead only look for the new, shiny stuff.
While not all old knowledge is worth being preserved, admittedly, there is still a lot of valuable old knowledge available, offering answers to the problems that we face today - creating maintainable and reliable systems, dealing with distribution and tackling complexity, just to name a few of the challenges.
This presentation is a journey through some (very) old computer science papers that contain a lot of very valuable knowledge regarding the problems we face today. For each of the papers, some of the key ideas are presented and how they address our current challenges.
Of course, the voice track is missing and there are a lot more papers that would be worth being mentioned in this presentation. Still, I hope that also the slides alone will be of some value for you - and convince you a bit that not everything "old" in IT is automatically worthless ... ;)
Clean Code Part i - Design Patterns and Best Practices -Theo Jungeblut
The document is a presentation on clean code principles and best practices. It discusses key concepts like the Single Responsibility Principle, Separation of Concerns, Don't Repeat Yourself, and others. It emphasizes that maintainable code is achieved through readability, simplification, decoupling, avoiding duplication, and testability. The presentation provides examples and references for attendees to learn more about writing clean, sustainable code.
Outpost24 Webinar - DevOps to DevSecOps: delivering quality and secure develo...Outpost24
Our experts discuss the key considerations for implementing security training and application security into the SDLC, how to engage with developers through gamified learning and embed security testing without any downtime and costing the earth.
Using Product Box to Build the Complete DeveloperLuke Hohmann
In 2006 I was asked to give the keynote at the Better Software Conference on "The Complete Developer". It was a perfect opportunity to use the Innovation Game® Product Box to with senior leaders of Silicon Valley Companies like Google and EMC to identify the three core sets of attributes that they consider most valuable in a developer: technical competence, customer driven and business acumen.
This document provides an overview of getting started in tech. It discusses how tech has expanded beyond just one industry to become the new business model, with the largest companies in many areas being tech-based. It outlines common entry-level tech roles like front-end developer, back-end developer, and full-stack developer. The document also discusses career progression in tech and "coding plus" roles. It emphasizes the importance of learning skills, building a portfolio, networking, and preparing for technical interviews to break into the tech industry.
InnerSourcing - Worldwide enterprise development teams collaborationJulian Werba
Why companies fail
Build a worldwide development community within the company
Boost collaboration and creativity
Increase Quality, Speed and Savings
Do you wanna know how?
The document discusses the principles and values of software craftsmanship. It emphasizes that while agile practices focus on processes, interactions, and collaboration, software craftsmanship takes technical excellence, professionalism, and continuously adding value to a higher level. It promotes practices like automated testing, test-driven development, and pair programming to help developers improve and deliver well-crafted software. Software craftsmanship is about leading by example and showing how developers can continuously improve, not about following rigid processes or writing beautiful code for its own sake.
- Many software projects fail to be completed on time and on budget due to unrealistic deadlines, poor estimation of tasks, and changing requirements. Architectural flaws and lack of domain knowledge also contribute to project failures.
- Common problems include inadequate testing, poor code quality, lack of documentation, and developers not wanting to work on code they did not write themselves. Traditional software engineering practices have not changed much over the past 30 years.
- A better approach focuses on rapid feedback through small iterative releases, collaboration with customers, responding flexibly to change, and empowering self-organizing teams. Continuous integration and testing also help catch problems early.
This document summarizes a talk given by Juan Delgado on the topics of product vs craft in software development. Some key points made in the document include:
- The quality and practices used in software development should be adapted based on the vision and goals of the product as well as where the product is in its lifecycle. Extreme quality may not be necessary early on.
- There is no single "right" way to build software - different approaches can both be appropriate depending on the context and needs of the product and business. Quality is contextual.
- Software teams should aim to implement "enough quality" - quality that allows for correctness and the ability to continue developing the product, but not necessarily perfect or extreme quality
This document summarizes Rik Dryfoos' presentation on software craftsmanship. It discusses that craftsmanship focuses on not just delivering working software, but well-crafted software that is easy to maintain. It presents the costs of only focusing on delivery over ownership. Craftsmanship is defined as code that is simple, lacks duplication, and is readable. The document also discusses a manifesto for software craftsmanship and challenges that top-down management poses for craftsmanship.
This document summarizes Rik Dryfoos' presentation on software craftsmanship. It discusses that craftsmanship focuses on not just delivering working software, but well-crafted software that is easy to maintain. It presents the costs of only focusing on delivery over ownership. Craftsmanship is defined as code that is simple, lacks duplication, and is readable. The document also discusses a manifesto for software craftsmanship and challenges that top-down management poses for craftsmanship.
The Realistic - Future : Web DevelopmentMalikZohaib27
In this I write all about the webdevelopement in which I explained all the types of web development and write the Real life examples of human which Developes their webs and earn money in huge amount.... Also I define the evolution of web development and Also I write 2 case studies In which I give all Ethical Handling and plagiarism Porr works which will decrease the human Trust in Countries. And In last I conclude all presentation in few slides
Similar to Software craftsmanship - Imperative or Hype (20)
Help, the hippies have taken my team to play games... or let’s get real we ha...SUGSA
The document discusses the perspectives of different stakeholders involved in an agile software development project. It includes the views of a sponsor who was initially skeptical of agile but became a believer after seeing results. Developers are portrayed as enjoying aspects of agile like retrospectives and tools, but the business stakeholder expresses frustration with a perceived lack of urgency and focus on revenues. There is a need to better communicate how agile practices help deliver business value and manage risks.
Overcoming real world challenges involves taming high risk "dragon" projects that can fail by focusing on quality, removing multiple priorities, gaining client buy-in of the Scrum process, and ensuring all parties are aligned on goals. The key aspects are quality being the top priority, focusing on one goal at a time rather than multiple, educating clients on Scrum to gain their support, and making sure everyone understands each other through face-to-face interactions. An email from a satisfied client thanks the teams for an exceptional sprint with 5 releases completed last month.
Daily Stand up patterns & heuristics - Fadi StephanSUGSA
The document discusses daily standup meetings, including their purpose of status updates, commitment to tasks, and identification of impediments according to the Scrum guide. It also examines how standups address the five dysfunctions of teams by promoting collaboration, commitment, transparency, accountability, and focus on results. The document provides tips to prevent "daily standup withdrawal" where meetings become boring and unproductive.
Sharna Sammy is a managing designer at Oxford University Press South Africa in Cape Town who discovered Scrum in February and adapted it for their design studio to help streamline their workload on a new school curriculum project. She won an innovation award for introducing Scrum and sought further advice from the Scrum community, including attending coaching circles. Her goals are to gain more knowledge and experience with Scrum and become a Certified ScrumMaster.
The document discusses how Scrum is more than just roles, artifacts, and ceremonies. It is primarily a culture and set of values that encourage collaboration, continuous improvement, and responsiveness to change. Effective Scrum implementation requires adopting values like simplicity, courage, feedback, and respect from eXtreme Programming in addition to the Scrum framework.
Fixed price contracts are often used by customers to control costs and reduce risk, but they can lead to scope wars between the customer and supplier as each tries to maximize their own interests. While estimates are educated guesses, scrum helps manage a fixed price project by prioritizing and sizing the backlog, having frequent reviews to catch misunderstandings early, and managing expectations and delivery dates. On one project, using scrum allowed the team to deliver an initial release on time with reduced scope and a second release for the remaining work, satisfying the customer's needs within the fixed budget. Scrum can work for fixed price projects if expectations are managed openly and the process is not abandoned.
A product owner's guide to saying no - Annu AugustineSUGSA
The document provides guidance for product owners on saying no to feature requests. It advises listening first to understand requests, then showing how the request does not align with strategy or roadmap. As an alternative to no, product owners can explore options by asking questions and suggesting "maybe we can add it" at a later date if a request better fits long term goals.
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on automated letter generation for Bonterra Impact Management using Google Workspace or Microsoft 365.
Interested in deploying letter generation automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Ivanti’s Patch Tuesday breakdown goes beyond patching your applications and brings you the intelligence and guidance needed to prioritize where to focus your attention first. Catch early analysis on our Ivanti blog, then join industry expert Chris Goettl for the Patch Tuesday Webinar Event. There we’ll do a deep dive into each of the bulletins and give guidance on the risks associated with the newly-identified vulnerabilities.
Taking AI to the Next Level in Manufacturing.pdfssuserfac0301
Read Taking AI to the Next Level in Manufacturing to gain insights on AI adoption in the manufacturing industry, such as:
1. How quickly AI is being implemented in manufacturing.
2. Which barriers stand in the way of AI adoption.
3. How data quality and governance form the backbone of AI.
4. Organizational processes and structures that may inhibit effective AI adoption.
6. Ideas and approaches to help build your organization's AI strategy.
Programming Foundation Models with DSPy - Meetup SlidesZilliz
Prompting language models is hard, while programming language models is easy. In this talk, I will discuss the state-of-the-art framework DSPy for programming foundation models with its powerful optimizers and runtime constraint system.
Trusted Execution Environment for Decentralized Process MiningLucaBarbaro3
Presentation of the paper "Trusted Execution Environment for Decentralized Process Mining" given during the CAiSE 2024 Conference in Cyprus on June 7, 2024.
Generating privacy-protected synthetic data using Secludy and MilvusZilliz
During this demo, the founders of Secludy will demonstrate how their system utilizes Milvus to store and manipulate embeddings for generating privacy-protected synthetic data. Their approach not only maintains the confidentiality of the original data but also enhances the utility and scalability of LLMs under privacy constraints. Attendees, including machine learning engineers, data scientists, and data managers, will witness first-hand how Secludy's integration with Milvus empowers organizations to harness the power of LLMs securely and efficiently.
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxSitimaJohn
Ocean Lotus cyber threat actors represent a sophisticated, persistent, and politically motivated group that poses a significant risk to organizations and individuals in the Southeast Asian region. Their continuous evolution and adaptability underscore the need for robust cybersecurity measures and international cooperation to identify and mitigate the threats posed by such advanced persistent threat groups.
Your One-Stop Shop for Python Success: Top 10 US Python Development Providersakankshawande
Simplify your search for a reliable Python development partner! This list presents the top 10 trusted US providers offering comprehensive Python development services, ensuring your project's success from conception to completion.
GraphRAG for Life Science to increase LLM accuracyTomaz Bratanic
GraphRAG for life science domain, where you retriever information from biomedical knowledge graphs using LLMs to increase the accuracy and performance of generated answers
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc
How does your privacy program stack up against your peers? What challenges are privacy teams tackling and prioritizing in 2024?
In the fifth annual Global Privacy Benchmarks Survey, we asked over 1,800 global privacy professionals and business executives to share their perspectives on the current state of privacy inside and outside of their organizations. This year’s report focused on emerging areas of importance for privacy and compliance professionals, including considerations and implications of Artificial Intelligence (AI) technologies, building brand trust, and different approaches for achieving higher privacy competence scores.
See how organizational priorities and strategic approaches to data security and privacy are evolving around the globe.
This webinar will review:
- The top 10 privacy insights from the fifth annual Global Privacy Benchmarks Survey
- The top challenges for privacy leaders, practitioners, and organizations in 2024
- Key themes to consider in developing and maintaining your privacy program
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...alexjohnson7307
Predictive maintenance is a proactive approach that anticipates equipment failures before they happen. At the forefront of this innovative strategy is Artificial Intelligence (AI), which brings unprecedented precision and efficiency. AI in predictive maintenance is transforming industries by reducing downtime, minimizing costs, and enhancing productivity.
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-und-domino-lizenzkostenreduzierung-in-der-welt-von-dlau/
DLAU und die Lizenzen nach dem CCB- und CCX-Modell sind für viele in der HCL-Community seit letztem Jahr ein heißes Thema. Als Notes- oder Domino-Kunde haben Sie vielleicht mit unerwartet hohen Benutzerzahlen und Lizenzgebühren zu kämpfen. Sie fragen sich vielleicht, wie diese neue Art der Lizenzierung funktioniert und welchen Nutzen sie Ihnen bringt. Vor allem wollen Sie sicherlich Ihr Budget einhalten und Kosten sparen, wo immer möglich. Das verstehen wir und wir möchten Ihnen dabei helfen!
Wir erklären Ihnen, wie Sie häufige Konfigurationsprobleme lösen können, die dazu führen können, dass mehr Benutzer gezählt werden als nötig, und wie Sie überflüssige oder ungenutzte Konten identifizieren und entfernen können, um Geld zu sparen. Es gibt auch einige Ansätze, die zu unnötigen Ausgaben führen können, z. B. wenn ein Personendokument anstelle eines Mail-Ins für geteilte Mailboxen verwendet wird. Wir zeigen Ihnen solche Fälle und deren Lösungen. Und natürlich erklären wir Ihnen das neue Lizenzmodell.
Nehmen Sie an diesem Webinar teil, bei dem HCL-Ambassador Marc Thomas und Gastredner Franz Walder Ihnen diese neue Welt näherbringen. Es vermittelt Ihnen die Tools und das Know-how, um den Überblick zu bewahren. Sie werden in der Lage sein, Ihre Kosten durch eine optimierte Domino-Konfiguration zu reduzieren und auch in Zukunft gering zu halten.
Diese Themen werden behandelt
- Reduzierung der Lizenzkosten durch Auffinden und Beheben von Fehlkonfigurationen und überflüssigen Konten
- Wie funktionieren CCB- und CCX-Lizenzen wirklich?
- Verstehen des DLAU-Tools und wie man es am besten nutzt
- Tipps für häufige Problembereiche, wie z. B. Team-Postfächer, Funktions-/Testbenutzer usw.
- Praxisbeispiele und Best Practices zum sofortigen Umsetzen
Best 20 SEO Techniques To Improve Website Visibility In SERPPixlogix Infotech
Boost your website's visibility with proven SEO techniques! Our latest blog dives into essential strategies to enhance your online presence, increase traffic, and rank higher on search engines. From keyword optimization to quality content creation, learn how to make your site stand out in the crowded digital landscape. Discover actionable tips and expert insights to elevate your SEO game.
6. OOPSLA 1991
Object-Oriented Programming, Systems, Languages & Applications Conference
Bruce Anderson workshop “Towards a Software Architecture Handbook”
Dedicated to developing a handbook for software architects
Richard Helm, Ralph Johnson, John Vlissides and Erich Gamma met here
Collaborated for couple of years to produce “Design Patterns” - GOF
6
7. OOPSLA 1998
Bruce Anderson workshop “Software as a Studio Discipline”
Discuss whether developing software is a careful blend of artistry and discipline
Pete McBreen inspired
In 2001, published book “Software Craftsmanship”
Main theme:
• Software engineering has run its course
• Building software systems requires set of skills and experiences beyond just book
learning, training courses, methodologies, and certifications
7
8. Book presented a craftsman paradigm in which apprentice software developer learns
from journeyman like other craftsman based professions
• Software is a craft: part art, part skill
• Developers should be measured on quality of work, ability to deliver value to
business and be accountable for what they produce.
At the time it was published, it did not generate much noise or interest and did not
become a hit like the GoF book.
Picture: http://www.flickr.com/photos/25507200@N07/3120849218/
8
9. Agile 2008 – Toronto
Keynote address by uncle Bob
Reviewed Agile manifesto
Proposed fifth value to agile manifesto: Craftsmanship over crap
Huge stage to bring up the same concepts again and created a lot of discussion
9
10. A week later Robert Martin revised it to craftsmanship over execution
Most software development teams execute, but they don’t care. We value execution,
but we value craftsmanship more.
“We're tired of writing crap. We are tired of embarrassing ourselves and our
employers by delivering lousy software. We have had enough of telling our
customers to reboot at midnight. We don't want bug lists that are a thousand pages
long. We don't want code that grows more tangled and corrupt with every passing
day. We're tired of doing a bad job. We want to start doing a good job.”
http://cleancoder.posterous.com/software-craftsmanship-things-wars-commandmen
Did not result in change to manifesto, but started a movement of its own.
December 2008, group of aspiring software craftsmen got together and tried to solve
some problems they were facing
Came up with a statement of things they believe in and crafted another manifesto,
the Software Craftsmanship manifesto
10
12. Agile 2008 – Toronto
Keynote address by uncle Bob
Reviewed Agile manifesto
Proposed fifth value to agile manifesto: Craftsmanship over crap
Huge stage to bring up the same concepts again and created a lot of discussion
12
13. They felt that we are heading in a bad direction.
The state of software development was going downhill.
13
14. Theory vs. practice
Mismatch with teaching and what is needed for work
Strong theoretical knowledge but can’t write good code
Picture:
http://www.flickr.com/photos/sakeeb/4647211575/sizes/m/in/photostream/
14
15. Popularity of Scrum.
Scrum focuses on process but does not prescribe technical practices.
Ken Schwaber said that we made a fundamental assumption that was wrong
Developers smart enough to come up with their own practices
But developers spent careers working in large cycles. They were used to it. waiting for
9 months before coding or before QA
Now they have to figure out how to do things in 30 days or even in 2 weeks.
Agile and Scrum requires skilled developers that know how to keep code base healthy
Delivering software every 2 to 4 weeks only possible if build up and keep code highly
maintainable
Picture: www.mountaingoatsoftware.com/scrum
15
18. Big ball of mud most popular way to design and architect software
Includes Greenfield projects that have full benefit of hindsight regarding bad design
approaches of past
Picture:
http://www.flickr.com/photos/24322735@N07/2393833499/sizes/m/in/photostrea
m/
18
20. Become sloppy
Use duck tape to fix things
The whole code is covered with duck tape.
Picture:
http://www.flickr.com/photos/wwworks/4471608005/sizes/m/in/photostream/
20
21. In a minefield
Anything you touch might break and explode
Now easier to do it all over again than to read and figure out other people’s code
Picture:
http://www.flickr.com/photos/timrich26/3308513067/sizes/m/in/photostream/
21
22. Need tools like crap4j - Change Risk Analyzer and Predictor
CRAP(m) = comp(m)^2 * (1 – cov(m)/100)^3 + comp(m)
m = method
comp(m) = Cyclometric complexity of method
m. cov(m) = Test code coverage for method m.
Crap gap measure
22
24. Software craftsmen: good software does not come from process
Comes from people who care about it
People have pride in their work
Stand by what they do
Willing to learn from others to improve
By sharing they bring up knowledge of entire team and company
Building code requires more than theoretical knowledge, it requires tacit knowledge
and experience.
24
25. We Care
We consider it our responsibility
to gain the trust of the businesses we serve;
therefore, we
take our customer's problems as seriously as they do and
stake our reputation on the quality of the work we produce.
We Practice
We consider it our responsibility
to write code that is defect-free, proven, readable, understandable and malleable;
therefore, we
follow our chosen practices meticulously even under pressure and
practice our techniques regularly.
We Learn
We consider it our responsibility
to hone our craft in pursuit of mastery;
therefore, we
continuously explore new technologies and
read and study the work of other craftsmen.
We Share
We consider it our responsibility
to perpetuate the craft of Software;
therefore, we
enlist apprentices to learn it and
actively engage other craftsmen in dialogue and practice.
25
26. We Care about quality. We stake our reputation on the quality of the work we
produce.
We Care
We consider it our responsibility
to gain the trust of the businesses we serve;
therefore, we
take our customer's problems as seriously as they do and
stake our reputation on the quality of the work we produce.
26
27. We Practice: We practice our techniques regularly and follow our practices even
under pressure in order to write defect-free, proven, readable, understandable and
malleable
We Practice
We consider it our responsibility
to write code that is defect-free, proven, readable, understandable and malleable;
therefore, we
follow our chosen practices meticulously even under pressure and
practice our techniques regularly.
27
28. We Learn: we continuously explore new technologies, read and study the work of
other craftsmen.
We Learn
We consider it our responsibility
to hone our craft in pursuit of mastery;
therefore, we
continuously explore new technologies and
read and study the work of other craftsmen.
28
29. We Share: we look for newcomers and actively engage other craftsmen in dialogue
and practice
We Share
We consider it our responsibility
to perpetuate the craft of Software;
therefore, we
enlist apprentices to learn it and
actively engage other craftsmen in dialogue and practice.
Picture:
http://www.flickr.com/photos/das_butzele/227637183/sizes/z/in/photostream/
29
31. TDD – verifies that our code works and makes it possible to refactor and constantly
improve code over time.
TDD: Follow 3 rules: 1) not allowed to write production code until you have a failing
unit test, 2) you are not allowed to write more of unit test than is sufficient to fail
(not compile is failing), 3) you are not allowed to write more production code than is
sufficient to pass. This forces us to keep the code executing all the time. Tests make
the software flexible and maintainable.
31
32. CI: Use tools like Hudson, CruiseControl, Bamboo, and TeamCity. If build fails,
immediately fix build.
32
33. Pairing: If you don’t want to code pair, at least make sure team is communicating,
sharing and working closely together.
33
36. Apply the boy scout rule: Always leave camp ground cleaner than way you found it.
That is, whenever you work on a class or function, spend some extra time to refactor
it and clean it a little.
Picture:
http://www.flickr.com/photos/fotoecke/5177140233/sizes/m/in/photostream/
36
37. Apply Extract till you drop: Function size should be small. Keeping extracting until you
can no longer extract function. This takes all the concepts in the function puts them
in well named places.
37
38. No argument is best argument. Functions should have smallest number of arguments
possible. Try not to exceed 2 arguments. Do not pass Booleans as arguments; instead
create two well named functions.
Picture:
http://www.flickr.com/photos/drinksmachine/3732782275/sizes/m/in/photostream/
38
42. SOLID Principles
S SRP Single responsibility principle the notion that an object should have only a
single responsibility.
O OCP Open/closed principle the notion that “software entities … should be open for
extension, but closed for modification”.
L LSP Liskov substitution principle the notion that “objects in a program should be
replaceable with instances of their subtypes without altering the correctness of that
program”.
I ISP Interface segregation principle the notion that “many client specific interfaces
are better than one general purpose interface.”
D DIP Dependency inversion principle the notion that one should “Depend upon
Abstractions. Do not depend upon concretions.”[
Dependency injection is one method of following this principle.
42
48. Abstract away volatility: look at what is likely to change and separate it from what is
not likely to change. (do not mix gui with business rules).
48
50. http://www.flickr.com/photos/11904001@N00/3983980813/
Work in small increments
Use progressive widening: Add a small feature from top to bottom (GUI to database)
Use progressive deepening: Get something working in one layer and then move it
down to other layers. 1st make it work, then make it right, then make it fast.
Avoid grand redesigns. They generally do not work very well. A “tiger” team will
constantly be trying to catch up with maintenance team.
50
51. Short iterations (1 or 2 weeks). Plan, code, testing, documentation (complete cycle
resulting in deployable software.
Participate in the definition process by demonstrating working code.
51
52. Commission instead of omission. It is better to experiment than to wait.
Never be blocked: always find some way to make progress
Picture: http://www.flickr.com/photos/7821771@N05/4679360979/
52
53. You Ain’t gonna need it. Avoid turgid viscous architectures. They do harm than good.
They slow you down. Don’t try to create a solution for all possible (imaginable) cases.
Just try to solve the problem at hand use a simple architecture. Use good coding
techniques (like decoupling and SRP) and adding in new cases as they are need
should be easy.
Picture: http://www.flickr.com/photos/97041449@N00/5261698908/
53
54. Automate everything. Playing with system should be explorative testing. The other
vast majority of testing should be automated. Builds should be automated.
Deployments should be automated.
Check out the book “Continuous Delivery: Reliable Software Releases through Build,
Test, and Deployment Automation” by Jez Humble and David Farley
54
55. Test through the right interface. Do not test business rules through the GUI. Test GUI
connected to a dummy (mock) layer.
Picture: http://www.flickr.com/photos/37164718@N02/5365226277/
55
56. Don’t jump into the debugger. Look at the code 1st. Use TDD. Debugger should be
last resort.
Picture: http://www.flickr.com/photos/71962092@N00/2874328851/
56
57. Clean code: Only way to go fast is to slow down a minute and write clean code.
Readable, obvious, small functions, good names
Don’t write bad code: It does not only slow down others months from now but will
slow you down immediately.
57
58. Software craftsmanship is about pride in work, team work, mentorship, improving
skills, practicing
Yet there is some disagreement
58
59. Not everyone agrees
Dan North, and David Harvey
Argue software craftsmanship manifesto is weak
Just adds riders or extensions to agile manifesto
Most already covered in agile principles
59
61. 2nd, manifesto is tame
Manifesto - a statement of belief, a call-to-arms, feisty, opinionated, and brash.
Marx and Angels communist manifesto
Futurist manifesto
SCUM manifesto
All compelling, persuasive, controversial and polarizing
Should be something we can disagree with
No reasonable person can disagree with software craftsmanship manifesto
No one can say they don’t care about adding value, create community of
professionals, having productive partnerships and writing quality software.
Not much of a manifesto
61
62. Manifesto is attack on software engineering and scientific research
Manifesto is giving permission new generation to ignore all lessons learned from
software engineering
Lessons like the works of DeMarco, Yourdon, Parnas, Dijkstra, Hoare, Weinberg.
62
63. Language matters
choosing inappropriate metaphors, like craftsman, apprentice, journeyman, increases
gap between development and business.
Software developers have their own definition of craftsmanship, but what matters is
perception of customers
Associate craft with quality at a flea-market or craft fair - not something can really
rely on
http://www.flickr.com/photos/58289610@N00/3610407879/
63
64. Terms "Master", "Journeyman", and "Apprentice“ bring up secretive guilds of middle
ages with ritual, mysticism, and intrigue
Software craftsmen should be egoless, humble, with focus on outcome rather than
code or process
64
65. Manifesto brought people together and made it easier for them to roll out some
ideas on how to practice
65
66. Code katas - Dave Thomas from pragmatic programmers
Small problems to solve
Uncle Bob switched to practice on a solution instead
Like martial arts and how you repeat small motions and practice them until they
become natural reflexes
Do it over and over again until it becomes reflex
Katacasts.com – Corey Haines has various screencasts known as katacast that show
folks practicing a small kata
66
67. Example Bowling Kata, Poker Kata, Supermarket Kata, Tennis Kata
Picture: http://www.flickr.com/photos/49715404@N00/3267627038/
67
68. Code retreats started worldwide
Developers get together on Saturday for full day of practice
Work on Conway’s game of life using technique “TDD as if you meant it”
Focuses on TDD being all about evolutionary design
Pair-up, work on it for 45 minutes, then delete code, swap pairs and do it again
68
69. 2 companies swap employee for week
Employees learn practices of another company and come back and try to improve
their own environment
69
70. Craftsman journey – you go to company for 1 week and learn what they do
Instead of going to conference, company will give you time off to go and work and
learn what others are doing
70
71. Craftsman spikes are side projects that you use to practice craftsmanship
Companies offers employees 20% time to work on side projects
71
72. Software craftsmanship conferences established and 2 held each year, one in the UK
and one in the US
Several Software Craftsmanship User groups started
72