What the LEGO Movie and programming are helping me learn about delegation

The LEGO Movie rocks. This post may contain minor spoilers, although I don’t think I give any of the big secrets away. =)

Many people need instructions, and many people who don’t need instructions can’t stand instructions. Regular people want to have somebody tell them what to do. Artists can’t stand having other people tell them what to do, and also struggle with telling other people what to do. Then there are people who might be able to combine both. They can create something unconventional. They can also tap the systems and processes needed to make that happen.

2014-02-11 The LEGO Movie - Reflections on Master Builders

2014-02-11 The LEGO Movie – Reflections on Master Builders

Watching The LEGO Movie made me think about master builders. In the movie, master builders can see parts and build crazy contraptions to adapt to changing situations. It didn’t matter if the part belonged to a different system. You could imagine unconventional ways to use these parts, and you could adapt your plans as the situation changes. You don’t hesitate, you build, and you inspire other people to make things. Maybe this is a metaphor for what I want to be able to do.

I want to be able to deal without having instructions and also be able to give instructions or take instructions. I want to have that ability to be creative, but also to have that ability to channel that creativity in ways that make it scale beyond me. I think that’s what Emmet (the hero in The LEGO Movie) becomes: this person who both works inside the system and outside the system.

Using The LEGO Movie as a source for metaphors makes it easier for me to identify specific skills I want to develop and plan how I can learn. For example:

  • See the parts and know how they can fit together: How do you learn this with regular LEGO? Practice. How do you do this with life? Also practice. Using other people’s instructions lets me take advantage of their experience. I can familiarize myself with the “parts” that I can work with. Research and reflection make it easier for me to recognize and name those parts.
  • See unconventional possibilities: You can boost your creativity through exercises. Free association, forced association, and breaking things down into their components can help. I can practice this by asking uncommon questions and exploring unusual approaches.
  • Quickly adapt as things change: Don’t build for yesterday, build for today (and a little bit of tomorrow, if possible). Don’t get stuck in the past.
  • Act, and inspire others to act: Yes, reflect and plan, but also act and learn. If necessary, act first, adjust later.

I’m comfortable with systems because of my experience with software development. Computers are nothing but instructions. You try to figure out how to express what you want in specific enough terms that the computer can understand and do them. I enjoy that. I find it to be a lot of fun to write programs that get the computer to do what I want. I get a lot of enjoyment out of writing and testing instructions as well. I’m curious about applying ideas from this structured world of computer programming to business. For example, what can programming paradigms help me understand about delegation?

2014-02-10 Delegation as programming

2014-02-10 Delegation as programming

When you’re delegating, you might show what you want and say, “This is what I this is what I’m looking for; please make something like it.” This is like programming by example. You might give detailed step-by-step instructions, and that’s like assembly or low-level programming. You might work at a higher level, writing instructions that refer to other instructions for more details. That’s like procedural programming.

But there are so many other different types of programming! For example, functional programming treats the instructions as a thing you can work with. Maybe there’s a way I can get people to improve or work with the instructions. Functional programming also tends to involve list processing. Maybe you do things in batches, and you think about how you can prepare the output so that you can use it as the input for something else.

Object-oriented programming is about thinking about the objects those processes belong to. Can you keep the information together so that you can see an overview? How can you use the idea of polymorphism? Maybe you might have a common process that handles several different types of objects.

Here’s how I’ve been thinking about applying object-oriented programming to the way I delegate. I’ve gotten most of my podcast/show process worked out. The next step might be to structure more of the work involved in following up after conversations. I can also work on getting a visual overview of the objects I’m working with and what state they’re in. Afterwards, I’ll look into the processes around packaging info, and then I might fill in the gaps for posts and then for sketches.

2014-02-10 Thinking about object-oriented programming and delegation

2014-02-10 Thinking about object-oriented programming and delegation

Back to programming paradigms. If you’re building up a virtual team, parallel programming might be useful. Parallel programming deals with synchronization and communication issues. It might be worth accepting a little less intra-process efficiency to improve communication efficiency.

Declarative programming might be the end-goal of delegation. You just say what you want, and people will figure out how to make it happen: what steps the team needs to take and in what order, and so on. Wouldn’t that be awesome?

I want to get better at taking these ideas about systems and using them to learn more about how to create things. Like Emmet, my first ideas are going to be crappy. I think that learning to work with and without instructions is going to be interesting. I’m looking forward to learning how to become a Master Builder. Who’s with me? What can help you become a Master Builder of life?