Presentation: Thinking Methods - Systems Thinking at Work and Play
This presentation is now available to view on InfoQ.com
Watch video with transcriptWhat You’ll Learn
- Learn how to see things at a larger scale can help to write better software.
- Get a tool bag for exploring systems and relationships between things
- Find out how agile and systems thinking can complement each other
Abstract
Complexity creates fun in the games we play and bugs in the code we squash. Thinking in systems focuses on understanding the context of this complexity through the patterns and structures around us; a perfect complement to Agile's small iterable steps.
Software features and bugs do not exist in a vacuum. Thinking in systems enables us to ask better questions and spot weaknesses. We will take an introductory look at identifying and understanding systems in our companies, projects, and software. The goal is to expand our view of the entire structure and relationships to better understand behaviors and limits.
What is the focus of your work today?
I work at Carbon Five as a consultant. Carbon Five is really well known for pragmatically applying agile in a ton of different situations from startup to Fortune 500. On every project that I come into, it ends up being kind of the same concept of coming into a team and coming together to either create or make changes to both a product and generally some level of the process. Applying agile principles in the specific manner instead of just those nice general manner principles of iterative process change and reflecting and moving forward together taking all those concepts together and applying them slowly and together as a team with our clients. Day in and day out it's mostly coding, it's actually getting the product shipped out the door.
What’s the motivation for this talk?
Something that I've been thinking about for a long time is how to see things at a larger scale and then use that ability to see the interconnection between all things, and be able to use that as you're working at a small level. When I'm actually writing code down, how does being able to see the larger interconnectedness of the software within the software within the servers within the humans connecting to the humans and how that helps me write better software on a day to day basis.
How would you describe the persona and level of the target audience?
It’s on two levels. We have one level that is someone who is already used to seeing the big picture. There are definitely people who kind of naturally trend toward the big picture views and can see these connections a bit better. The talk aims to give frameworks and patterns to help bring some of that into the conscious level. A lot of times we do these sort of, oh yeah I understand that, and it's the subconscious level that's doing it. Bringing into the conscious level helps you both see it in different ways, subconscious tends to be a singular manner of seeing something.
The group that I most want to reach is the is people who are better at seeing something at the extremely fine detail level and giving them the tools and perspectives that they don't maybe naturally tend towards. When we have a tool to do something it's a lot easier for something you're not good at. I'm not good at playing the piano but I can sit there on a computer and use a tool to make music. It's this tool bag that you can take whether you're good at it or not and start using those to be able to see some of these interconnections.
What do you want this persona to walk away from your talk with?
I think the best thing to walk away with is this idea that they can see a bigger picture and they can see these interactions but primarily to give them tools, some of these are very specific as far as tools go, and also the resources to find additional ones. These tools can be used to better understand behavior both of mechanical systems but also of human interactive systems.
Can you define what you mean by systems?
I would define a system as a set of relationships between things and those are very generic words we're working with here. It's these relationships between things, relationships as digital relationships or human relationships or potential relationships between humans and machines and those relationships produce behaviors. As you begin to understand the relationships and the things between them, a system is when you see those relationships and you see those behaviors in a low fidelity way perhaps and hopefully growing in fidelity. In that low fidelity way, you can understand where these behaviors arise from so with the system itself is key to these interconnected relationships.
The talk goes into detail about this, drawing boundaries and such to limit the recursion depth so that you don't stack overflow your brain. But that's kind of the key to what a system is; a group of relationships. If you have just a pile of things you don't really have a system until you start seeing the relationships in between.
You said that Carbon Five is mainly known for agile perhaps as incremental steps, feedback loops cross-functional teams, dealing with change and so on. I was curious as to how you see agile and system thinking fitting together? It seems like quite a difficult match in a lot of ways?
Agile does have that principle of iterative development. Carbon Five does this without necessarily talking so much about it. Agile is an easier thing to talk about in that way but without some level of thinking about the system you tend to either go in circles or not necessarily go smoothly in a direction, you don't have the ability to understand behaviors. I won't go into examples because I've got some great stories in my talk for that time. When Carbon Five talks about it, it's the concept of product mindedness. We're focusing on a goal and understanding how the human side as well as the machine side in that holistic manner does all of the relationships, and how those relationships work towards a product.
What do you feel is the most important trend in software right now?
The biggest trend in software is the human side. We're kind of over the top a little bit on the machine learning side of things. Perhaps a newfound understanding that humans are what make software work and humans are why we make software. Traditionally as software engineers, we aren't the best at the human side as a group. There's a coming understanding of human interactions, both human software and the importance of human-human interactions and creating software.
Similar Talks
Scaling DB Access for Billions of Queries Per Day @PayPal
Software Engineer @PayPal
Petrica Voicu
Psychologically Safe Process Evolution in a Flat Structure
Director of Software Development @Hunter_Ind
Christopher Lucian
PID Loops and the Art of Keeping Systems Stable
Senior Principal Engineer @awscloud
Colm MacCárthaigh
Are We Really Cloud-Native?
Director of Technology @Luminis_eu
Bert Ertman
The Trouble With Learning in Complex Systems
Senior Cloud Advocate @Microsoft
Jason Hand
How Did Things Go Right? Learning More From Incidents
Site Reliability Engineering @Netflix
Ryan Kitchens
What Breaks Our Systems: A Taxonomy of Black Swans
Site Reliability Engineer @Slack, Contributor to Seeking SRE, & SRECon Steering Committee
Laura Nolan
Cultivating High-Performing Teams in Hypergrowth
Chief Scientist @n26
Patrick Kua
Inside Job: How to Build Great Teams Within a Legacy Organization?
Engineering Director @Meetup