top of page

Software Craftsmanship Training

This training course provides software professionals with the expertise needed for exceptional software craftsmanship, applicable across all programming languages and frameworks. Here is a summary of what participants will learn:

 

Software Craftsmanship:

Learn about the importance of craftsmanship skill over process (Agile, Scrum, SAFe/LeSS, VSM, Lean, Kanban) in creating high-quality, maintainable code. This includes mentorship and critical feedback on real coding tasks to cultivate excellent design skills.

 

Software Architecture Importance:

Discover the critical role of software architecture in determining the success or failure of a project, emphasizing the enduring impact of early decisions. Understand why relying solely on testing and refactoring strategies falls short in producing high-quality, maintainable software systems.

 

Conquering Technical Debt:

Understand the unique challenges of software engineering, which requires strategic organization of complex systems and vigilant monitoring of Technical Debt. Learn to identify, measure, and manage technical debt efficiently, turning it into Technical Wealth with each software delivery. Focus on controlling the natural increase in disorder over time by adopting practices that maintain order and minimize entropy.

 

Critical Analysis of Mainstream Design Advice:

Explore the drawbacks of widely accepted design principles and Design Patterns, understanding how they can add complexity instead of simplifying projects. This section critically assesses conventional approaches, promoting simplicity in design and a focus on principles that genuinely improve maintainability and quality.

 

Methodology Customization:

Discover why a one-size-fits-all approach doesn't work for software development. Customize your software engineering methodologies to meet your specific business needs. Learn to identify and approach the complex, complicated, and obvious aspects of your larger development projects appropriately. Additionally, differentiate between rapid prototyping and long-term sustainable development.

 

Developing Abstraction Skills:

Use OO techniques to design intuitive and maintainable class ecosystems. By aligning software abstractions with the real world and problem domain, software designers can achieve much more highly intuitive & maintainable designs.

 

This course is designed for software professionals who aspire to continuously grow in the art of software craftsmanship, enabling them to lead and innovate within their teams and organizations. It offers a deep dive into the principles that foster robust, intuitive, and maintainable software systems, making it an essential program for anyone looking to advance in the tech industry.

bottom of page