The Three C's

The three C's we will be talking about are: challenges, constraints, and contrasts.

These will provide a framework on how to improve.

The general idea for all of this is what is called deliberate practice, where you find gaps in your skills and try to create practices to work on those gaps.

Our goal is to

  • push ourselves to find gaps, in knowledge, skills, etc.
  • start to build mental models of the space
  • explore the domain, see what is possible
  • identify and question our assumptions

So how to we do that? By putting ourselves in situations that gives us new challenges, constraints us in new ways, or provides contrasts between things we normally take for granted. I think the brain learns a lot through contrasts.

A lot of advice on advancing in your career talks about switching jobs often. Why, because a new job often will provide all of those things, hopefully.

If you are at a big company and jump to a startup, everything from expectations to organizational and process will all be there, or maybe non-existent. Or even vice versa.

Desperation is the mother of invention

If you want to get better, or discover something new, constraints and challenges force you into a "desperate" state without hopefully the life fearing stress.

We don't tend to learn from abundance or success.

We need scarcity and failure to force use in new directions and to reflect.

Many stories of how people got great at something start with they didn't have a choice.

Intial D is a Japanese Anime, where a Japanese teeneger becomes an amazing driver because he is forced to deliver tofu.

He can't spill the tofu and he wants to get back to sleep as fast as possible, so with those constraints, he learns how to drive as fast and as smooth as possible.

Slow is smooth, smooth is fast.

A friend of mine is an amazing cook, when I asked her how, that when she was younger she was broke and had to feed herself, so she learned how to make simple ingredients taste good.

Failing

Discovery comes not when something goes right, but when something is awry, a novelty that runs counter to what was expected - Thomas Kuhn

Failing is not something to try and avoid, we are actively trying to fail. You need to keep strecthing and failing, if you are not failing in some ways then you are not challenging yourself.

For whatever reason we tend to not learn from success but failure, failure causes us to reflect and see that there is a gap. If you are hitting a wall then you need to look for a way around it.

It is easy to dismiss things and right them off but this is where the most growth can come from, identifying those nagging suspicions in the back of your head.

I have done this so much were I saw something, usually debugging a problem, and discounted it as a fluke, when I finally solved it, it wasn't a fluke but something much larger.

Some of the greatest discovires happened because people had something random happen and instead of just moving on they got curious. We wouldn't have pencillin if Dr Alexander Fleming had just moved on and cleaned his petri dishes.

This is how you build a model of things, you try it and fail and it forces you to rethink you model.

The goal with failing though is it has provide some information back. If you are just failing and not learning then there is no point.

Good failures are those that bring us valuable new information that simply could not have been gained any other way - Right Kind of Wrong Amy Edmondson

Useful accidents

Many types we make a mistake, screw up but that turns out to be useful. Often when we are too intentional and our focus is too small we miss out on things.

I have heard many stories of muscians practicing a bunch then slip up and love the sound of that, later turning that into something new.

We talked about the discovery of pencillin and how that was a usefull accident. We put in reps and do challenges to force the volume of mistakes in hopes to have usefull accidents.

Ground rules

For the following things you have to set the goal or guide lines ahead of time. Otherwise you don't learn anything because there is now review cycle.

We will talk about this more in the design section but there is a reason many programmers don't progress past a certain point. As thier projects get larger, they never evalute the success after a fixed time.

A large project could take months to release and maybe longer to trully evaluate how successful it was. Most of the time they have moved on to other projects and never look back.

Don't do this. You are missing half of the value of the challenge. This feedback loop is so crucial to learning. This is why certain expert classes suck. Because the time line is too long for anyone to remeber or care what they said 5 or 10 years ago. An economist can say anything as it doesn't matter because no one is going to fact check them 10 years later, let alone themselves.

For the challenge you want to

  • Set your goal as clearly and concretly as possible, also a end condition success or failure.
  • Run a pre-mortem. This is a future post-mortem. What do you expect to happen? This is so amazing to see what you thought would happen and then look back.
  • When you compelete run a post mortem. What went well, what succeeded what failed and why, and what was the gap between your pre mortem exptations?

Challenges

Challenges are the main tool to stretch yourself. The goal is to fail. The goal is to find gaps where you lacked something to achieve a goal.

A good challenge should force you to

  • learn something new
  • see the connection between things
  • become more efficient

We are trying to push past our current state and to force us into new situations.

Constraints

Constraints are your best friend. Constraints are often see as a negative but I think they are a real positive to force efficencies and to make things better because it narrows the number of choices and forces you to think about the outcome and not the tools.

Slight tangent and rant. I don't think George Lucas is a very good director. The orginal Star Wars didn't have a big budget and George Lucas was forced with a lot of constraints. Which I think was a gift, had he had the money to do all the stupid things that he wanted to do the movie would have sucked. I can easily prove this by all the pointless updates to the orginal trilogy that add nothing and only make things worse. We don't need a scene with Han and Jaba.

Many bands fall into this trip after they make it. It is not always the sole reason but when you have ample studio time and all the things you want then you don't have any constraints. There are too many options and nothing pushing you in direction, so often the result is a bloated mess.

Constraints are also a way to get over functional fixedness. If you are limited in what you can use then you can start to see the things you do have access to in new ways.

It is in constraints that we muss find other ways to do something and then we learn the problem at a deeper level.

Subsituting something in a dish because of a constraint requires you to understand how that indgredient functions.

Constraints:

  • Reduce the delimia of choice
  • Forces us to focus on the goal or output and not the tool
  • By not relying on certain things we must be creative and also see the problem in a new ofter deeper way
  • Come up with the most elegeant solution or approach.
  • identify and test assumptions

It can also allow us to practice key areas.

Daniel Coyle in "The Little Book of Talent", mentions how FC Barcelona, one of the best soccer teams in the world, play a game in a small room where they play keep a way and whoever can for the longest wins. By creating a constraint of a small space, the team can focus on a subset of skills.

I have been learning photography and there are so many options with everything but also lenses. What lense should you loose. So I have started out with a fixed lens. There is an oft heard quote, and that is to zoom with your feet. It is not bad but having a fixed lens is a good way to learn why people do use multiple lens. As you zoom with your feet sometimes the thing you really liked disappears. You see a cool curve but to get it and the other things you like as you walk closer that curve disappears.

This constraint shows us contrasts between options.

Contrasts

We notice contrasts, or, put another way, contrast enables us to see. - Molly Bang

We want to see constrasts. That is where our brains learn. Constrasts bring the hidden features into focus. A mask in order to see something that was hidden or hard to see before, or to focus on something.

There is a technique called Background Subtraction that is used in photos. Want a picture of a cool place but tons a people there? Take a ton of photos and then find the things that don't change.

Constrasts highlight the things that are difficult to see but always there.

You see x, then take an action and see y.

This why it large projects are hard to learn from, or if you don't keep track from the start.

By the time you end you are not comparing and seeing the contrasts.

We see the shape of things in the constrasts. When things are too similar we see no difference, and learning nothing.

It is the contrast that makes is possible to see the things that where always there but not obvious.

Are brains igrnore the common.

In photography light is obviosuly important but what does that mean specifically? For light it could be taking pictures of the same things multiple times per day. How does the weather, the time of day, the season affect the same photo?

We want to find exercises to incorparate that produce or highlight contrasts.

If you are trying to get better at programming and want to learn new programming languages, you should pick languages wildly different then the one you normally use.

Challenge Ideas

These are just a bunch of ideas for challenges that I have used.

Give yourself a time constraint

I think this is one of the best challenges. It is exposes so many weaknesses. This used a ton in competitions or what I have heard as the "gun to the head" heuristic. 1

There is a good reason for the time constraints. Masters are more efficient in not just how they do things but what they do.

The difference between a high productive person and a less is speed but that is a secondary outcome of efficiency. It is that the non performer often wastes time on stupid or useless step or lacks better ways of doing the same thing in a efficient manner.

Then how do you get better at speed, well force yourself to have less and find out the things that are not important and find new more efficenent ways to do things.

If you have problems with time management then this is also a good challenge.

Ideas:

  • Top Chef style quick fire: 30 minutes to do something that often takes hours
  • Plan/Execute split: You are allowed virtually endless planning but you must execute in a very short time frame. Code the hangman game you can plan for hours but you only have 15m to type in the code and run it.

Build the tool you use

Pick a tool you use that you want to better understand and try to build even a simplified version of it from scratch.

Try to pick a key aspect of it to buid, it doesn't have to be the whole thing. Think back to the early days of the craft. Probably there was a person just figuring things out. How was paint made before commerical paints. If you learned to make your own paint what could that teach you the medium?

Ideas:

  • Photography: Pinhole camera
  • Cooking: Build heat source or ingredients that you normally just purchase like mayo, sauces.

Reduce a tool or technique

Audit the things you normally use and challenge yourself to not use one. This isn't forever, but it is to force you to understand what the tool does or doesn't bring. Maybe it is not needed, or maybe it is blocking you from doing something in a better way. This is a staple of competition shows.

Ideas:

  • Photography: Using only one setting on your camera.
  • Coding: Use only a subsection of your programming language.
  • Coding: Code without a computer, write it on paper and then just type it in, does it work?
  • Cooking: Can't use an ingredient or a tool

Chaos monkey

At Netflix, they have a tool called Chaos monkey that turns random things off. While in software, we try to test everything as best as possible, but it is difficult to imagine all the things that could go wrong. So Netflix's chaos monkey introduces some randomness into the system to see how the rest of the system behaves and hopefully recovers and continues to function given the chaos.

Use the same idea to force randomness in your tools and process.

Extreme Performance

Pick one aspect and set an extreme goal. When I was starting out programming, one of the things that lead me down this road of craft and deliberate practice was just being tired of sucking. Well, more the stress of crashing the computers of fortune 100 and 500 companies that ran my software. My code crashed a lot and in some cases caused blue screens on the companies of banks and other large enterprises.

So for an oncoming project where I had the opportunity to start from scratch. It was a brand-new project, and so I set the goal that it wouldn't crash once in production. From where I was this was an extreme goal.

To do that, I had to think and research not just why programs crash but techniques and even different ways of writing code to facilitate it. I looked at how people that have the most on the line write code.

I looked at NASA's style guide. https://ntrs.nasa.gov/citations/19950022400

I learned about a technique called defensive programming. I removed all things that I could think of that caused memory issues.

If things got bad, it would fail instead of crashing. Now maybe that sounds like moving the goal posts, and perhaps it is in some ways, but when a program, in this case, running on a customers machine, crashes. It is harder to debug. Failing predictably is much better than crashing in chaos.

What is one aspect you would like to improve at? What goals or metrics can you set to create a challenge to find ways to reach it?

What would be an extreme goal from where you are now?

Mystery Box Challenge

On the flip side, we can also get stuck being comfortable with the things we already know how to use. In this challenge, you have to use something you wouldn't normally use.

  • Cooking: Where every step of the way you get a new ingredient or a new tool
  • Painting: You have to use a new color, brush, stroke style
  • Coding: You have to use a new language or new technique.

Style challenges

Take up a challenge to try what you do in a different style. The first part of this exercise is to start to document the different in your styles in your craft.

Once you have a few, pick one up and try to emulate it as best as possible, basically in good faith, even if you do hate it, which might happen.

Our goal is to find things to steal and to learn the intention behind the style.

Teaching

Writing is a good way to find gaps and to solidify knowledge, but there is nothing like trying to teach something. You make think you know something but when you go to explain it to some else if falls apart.

The goal with all of this is to force you to solidify and find gaps in your knowledge.

You can still easily skip over things in your head when writing, but when teaching it, the student will probably poke holes in your knowledge quickly.

Teaching is hard if you are good. You have to understand the material at a different level then just working with it.

You need to find ways to conceptualize it for others, that may mean finding common threads, ordering lessons.

Teaching is a good shortcut to better mastering a topic.

Richard Fenyman, a Nobel laureate, was a master and making the complex simple.

Feynman’s learning technique comprises four key steps: 2

  • Select a concept and map your knowledge
  • Teach it to a 12-year-old
  • Review and Refine
  • Test and Archive

Five ways

Often when we create something, we latch on to the first idea or solution. I have found that rarely is the first idea that great.

The goal of these challenges is to force you to come up with alternatives, it doesn't have to be five, but five is a good number to make you really stretch. Usually, you can think of a few alternatives, but you often need to work for 4 and 5.

Volume challenges

You can use this to make a skill or technique second nature or try to build a habit. This is also good when starting out with a new skill. It also can push you creatively as you might need to push to figure out how to make it work every day.

  • Do x for y days

Make it specific so you don't cheat but also low enough that it is doable.

  • Photography: take 5 pictures of 5 different subjects per day.
  • Coding: Write a small project every day, or work on a project every day.
  • Language Learning: Write 3 sentences every day.

Photography Challenges

Since I am learning photography, here are some of the challenges I put together to get better.

  • 10 pictures from challenge (James Popsys) : Try to get 10 decent shots from one location
  • 5 ways challenge: Try to take a picture of one subject 5 different ways 3
  • Black and White Challenge: Shoot only black and white
  • Fixed lens challenge: Only use one prime lens (no zoom)
  • Create a pinhole camera
  • Film camera challenge: Try to use a film camera
  • Cheap camera challenge: Get cheap or disposable camera and use it
  • Create mood boards: Create several mood boards of photos I like, study what I live about the photos
  • 1 subject challenge or one color challenge: Try to find one aspect or color and photograph it. Fire hydrants or anything orange.
  • Pick and emulate one new style
  • Document a place
  • 30 days of daily pictures

References

1

https://grantslatton.com/software-pathfinding#algorithms-we-develop-software-by

2

https://fs.blog/feynman-technique/

3

https://www.youtube.com/watch?v=GZ8nnbdmihA