Livable Code

Sarah Mei presented at Rocky Mountain Ruby September 2017. Establishing a new metaphor for software development. Teams work better if you think of them as a theater company. Code bases work better if you think of them as somewhere you live. Your (theatrical) team are your roommates. youtube

YOUTUBE 8_UoDmJi7U8 Livable Code, Sarah Mei, Rocky Mountain Ruby September 2017.

Inspirations: Conway's Law & No Silver Bullet Metaphors: Simple Living magazine & Hoarders TV show. We can't live in either extreme. Theater metaphor instead of engineering. Roommate metaphor. Move attention towards the people.

# Conway's Law implications There are two directions to approach any problem you have writing software. Changes in your team drive changes in your code base. Or changes in your code base drive changes to your team. For any given issue you can do one or both depending on which seems more effective.

# No Silver Bullet implications Fred Brooks says unlike civil or hardware engineering, for example, there are irreducible complexities in software engineering that make it impossible to improve by orders of magnitude. Brooks could describe the symptoms but could not explain exactly why. From inside the box of engineering, he couldn't see why software was different. We think of software like a product but that doesn't quite fit. It's more like a shared experience between the development team, our code, other people in our organization, even our customers. It really is at its best a group creative effort; more like theater than workers fabricating artifacts. Teams are more successful when we think about them as groups of creative people collaborating. This model gives more information and predicts more behavior than a manufacturing model.

# How to get there from here? Change the team's day-to-day habits. 1. Don't Make it Worse 2. Improvement over Consistency 3. Inline everything (no big-bang changes. clean up is part of everything you do) 4. Liaise (communicate with everyone about what you're doing all the time) a. don't ask permission (but be up front) b. don't ask forgiveness (but learn every time) c. do ask for advice (but don't always take it) d. do work together You _have_ to live here. Change the code base so you can say You _get_ to live here.

Teams work best as creative groups (like theater) Codebases work best when you think of them as a space inhabited by people. Move the focus away from the code and towards the people. Code is not most important. People are not most important.

The important part of software is **the system**.

The more we can think of software as an interconnected system of code and people, the closer we're going to get to a revolution. But more importantly, the closer we'll get to a code base that we're excited to work in.

.

As in joint-cognitive system... see Human Performance in Systems

The gadget-minded people often have the illusion that a highly automatized world will make smaller claims on human ingenuity than does the present one ... This is palpably false. Joint-Cognitive Systems: Patterns book

Also, Alexander's _A Pattern Language_ was also about recovering wisdom preserved and encoded in livable spaces.