complex-adaptive-systems-thinking complex systems Agile Leadership Software Design Sociotechnical Systems TDD & BDD
London, England, United Kingdom
Software craftsman, entrepreneur, Systems thinker and student, restless traveler, philosopher - all blended with Venetian humor. I was 9 when I self-learnt Basic on a Commodore and my passion for programming has never fade since. I worked in Italy and from 2006 in London (UK) as an independent consultant. Embracing principles from lean and agile software development, Domain Driven Design and Systems Thinking, I currently coach XP practices, helping technical teams reaching their full potential. Co-authored "Agile Technical Practices Distilled - A learning journey in technical practices and principles of software design". Speaker at international conferences.
"Human beings make quite reasonably decisions, but only based on the information they have." This is the concept of bounded rationality, as defined by Nobel prize Herbert Simon. If we look at Agile principles and practices from a systemic perspective, they focus on maximize rationality boundaries related to the product we are building. However, the whole organization and its teams are interacting complex systems which follow the very same principles of Systems Theory. Bounded rationality plays a subtle but fundamental role in every System, beyond just development teams. In this talk I will try to explain how Systems Theory can help organizations and why motivation is the key of success in complex Systems made by human beings.
Hands on workshop where we will guide participant on implementing and designing software from the business perspectives with tests that won't get in the way.
In 2009 Jim Weirich defined Connascence as "The Grand Unified Theory Of Software Development". The concept it is simple, yet very powerful in context of Object Oriented software development. It generalizes the ideas of Cohesion and Coupling, combining them in a more exhaustive classification under three axis, using a proper taxonomy. In this talk I will try to explain you the different kinds of Connascence using code and real life examples.
In this session we will use a board game to collaboratively tryout several approaches for designing an architecture of an e-commerce web site. The goal of the exercise is to trigger conversations about where the modules of the software we create stand and how they communicate, in relation with the logical boundaries of the architectural context.