Fermi Doesn't Blow up Chicago II

Since posting a TikTok on this question, I've received a bunch of responses - thanks to everyone who sent ideas my way!

I've reviewed all the comments and responses on my original TikTok and blog, and maybe I'm just being hard headed here - but I still don't get it. I have learned a bunch more though, and believe I have a higher quality set of questions to ask - which I've outlined in this colab notebook.

Help Me Figure Out How Fermi Avoided Blowing Up Chicago

Help! I’m trying to figure out how the math that Enrico Fermi used when building the world’s first nuclear reactor worked. As the reactor grew, Fermi’s team tracked the neutron intensity A at the center of the reactor, and computed the effective radius of the reactor squared divided by A. Fermi was able to accurately predict when the reactor would go critical by extrapolating this metric to zero. The pictures below are from Fermi’s collected papers - you can find a full pdf version of this paper here.

Fermi’s math, part 1.

Fermi’s Math, part 2.


What I don’t understand is why this works! Sure, we expect A to get really big as our reactor reaches criticality, but why include the R squared term? Fermi gives a clue in his report: 

“In a spherical structure having the reproduction factor 1 for infinite dimensions the activate of a detector placed at the center due to the natural neutrons is proportional to the square of the radius.”  

I dug deeper here but can’t quite see how how these pieces fit together. I did find one interesting clue in Principles of Nuclear Engineering by Glasstone, and a similar idea was echoed by a Professor of Nuclear engineering I emailed. 

Finally, I posted on physics stack exchange, and there’s been some interesting conversation there.

So, can you help me? Maybe the explanation is really simple - or maybe there’s more going on here - either way, I want to find out! Please post in the comments section here or on physics stack exchange if you have helpful clues or a complete answer!

Stop Telling People What To Do [Leadership is Language Book Notes]

Let’s say you’re in a position of leadership.

Maybe you lead a small team, a large organization, one part-time intern, a group of volunteers - maybe your position of leadership is formal, informal, explicit, or implicit.

Whatever your situations is, you have accepted a level of responsibility greater than those you’re working with.

And now it’s up to you to make sure that shit actually works.

It falls on you to make sure that projects are finished on time. That the pieces fit together and that no one murders each other along the way.

So, what should you do about this?

How do you get the people on your team to actually do all the big, medium, and small things that need to happen, at the right time, and in the right way?

Should you sit down, create a project plan along with a task list and timeline for each team member, and hold a meeting with each person to hand out their assignments?

This might make it difficult to make sure people are working together well, so maybe it would be better to create a unified “master plan”, and present it to the whole team team at once, so everyone understands how their part fits with the whole. You can then delegate each portion of the project.

Is this how it’s supposed to work? Something like that? The CEO is like supposed to tell everyone what to do? Leaders plan, non-leaders execute?

So, no.

Not anymore at least.

Now, depending on your background, this might seem like the most obvious thing in the world, maybe sort of interesting and a little counter-intuitive, or perhaps like down right heresy.

If this does seem obvious that the “master plan then delegate” model of leadership is broken - bear with me here, there’s some really interesting things that fall out of examining where this model breaks down.

And if this all seems ridiculous - definitely bear with me - I think you’ll really enjoy our discussion of former US Navy Captain David Marquet’s book Leadership is Language.

I’m The Boss - I’ll Do the Thinking, You Do the Doing

Isn’t that what leaders are supposed to do? Tell their teams what to do and make sure they get it done?

In Leadership is Language, David Marquet argues that this model of leadership no longer works, discusses why it can be really difficult to change, and presents six strategies for developing a more effective model of leadership.

David starts with some nice definitions that really help clarify the central dilemma here. Notice that in our “master plan then delegate” model of leadership, the leader does the thinking/planning/decision-making work, and the team does the execution/doing work. David gives these types of work the names “bluework” and “redwork”, and posits that these two types of work require very different types of thinking and language:

leadership-is-langauge-blog-post-fig-1-01.jpg

Now, notice that in the “master plan then delegate” model of leadership, bluework is the work of one group of people (management/leadership), and redwork is the work of another distinct group. Marquet argues that this division is artificial and really only around because of the role it played in the industrial revolution:

While bluework and redwork exist in every organization today, blue workers and red workers do not have to. However, as a result of the legacy of an artificial construct invented during the industrial revolution, we have cultural labels and uniforms to identify which group you are in: leader or a follower, salary worker or hourly worker, white hard hat, or blue hardhat, lab coat or overalls. We still want to make it clear which team you are on.
— Leadership is Language, p49

Further, Marquet argues that this division is not only artificial in modern organizations - but also dangerous - it could jeopardize the organization’s very existence:

Now, that is all changed. For organizations to survive, the doers must also be the deciders. We need the same people who used to view variability solely as the enemy to periodically view variability as an ally. We need the same people who used to have only a performance mindset to periodically have an improving mindset.
— Leadership is Language, p15

This is a strong assertion - basically that your organization will die if you try to run it this way.

So, what makes Marquet so confident about this?

Why does he believe this to be true?

What exactly is wrong with this model of leadership?

Stop Pretending You Have All the Answers

A big chunk of Marquet’s argument boils down to something like this:

The faster the world changes, the less leaders know.

Drawing on examples from the auto industry and elsewhere, Marquet argues that world is just changing too quickly now for the “master plan then delegate” strategy to work anymore - leaders just don’t and can’t have enough knowledge to do this effectively.

Henry Ford revolutionized human mobility with the introduction the Model T in 1908…the idea was for leadership to come up with the One Optimal Way to mass-produce the One Optimal Design. The subsequent production run would then be continued for as long as possible. This approach reduced the redesigning, retooling, and retraining costs. It successfully produced cars so efficiently that even the people building the cars could afford to buy them. In 1908, this was a revolutionary idea.

…But the world was changing. Consumer spending power ballooned during the Roaring Twenties, driving the demand for cars with modern appointments and flashy looks. By this point, Alfred Sloan had been appointed president for General Motors Corporation. In addition to refining the assembly process, Sloan experimented with introducing annual updates to vehicles. Consumers strongly preferred more up-to-date models to the by-then tired look and feel of the Model T.

…Sales of the Model T peaked in 1923 with 2 million units sold. Then, in both 1924 and 1925, sales dropped, even his overall automobile sales continue to increase. The market has shifted. Finally acknowledging the problem Ford shut down as assembly line for six months - halting redwork – to retool. But it was too little too late. Ford’s pause gave GM the opportunity to catch up and then pass for it all together overtaking what was an unassailable lead.
— Leadership is Language, p160

And of course, as Marquet points out - this rate of change has only increased since the 1920s.

A faster changing world means that the perception/viewpoint/understanding/information of blueworkers/leadership is getting worse. It takes time to figure out what’s really true about the world (e.g. will customers buy X, can we build solution Y leveraging open source technology Z), time that modern leaders simply don’t have if they want to move quickly enough to stay competitive.

Stop pretending you have all the answers.

Change is Hard Because We Still Have the Old Playbook

So, what’s the alternative?

Well, the main idea is pretty simple:

Empower your whole team to use their whole brains.

By making a master plan and delegating, effectively dividing your team into redworkers and blueworkers, you’re asking your redworkers to just shut off (or at least don’t bring to work!) the executive functioning parts of their brains - a big chunk of what makes us human!

Marquet uses a persona “Fred” to get across what it feels like to relegate your team to redwork:

Better not to get to know them too well. What Fred does all day long is to deny his humanity in order to conform to his role. No wonder he gets home depleted.
— Leadership Is Language, p219

Now of course, platitudes like these are only going to get us so far.

Let’s say some of Marquet’s ideas seam pretty reasonable to you - what should you do about them?

What should you actually be doing instead of making a master plan and delegating tasks? Maybe send your team an email, something like: “Hey everyone, great news!I’ve decided to stop denying your humanity. You all get to do redwork and bluework now!”

All joking aside, making these changes can be really hard. The reason it’s hard, Marquet argues, is that it requires us to swim upstream against a series of assumptions, power dynamics, queues, behaviors, and very importantly language, left over from the Industrial Age.

Marquet breaks these down into 6 old “Industrial Age Plays” and suggests replacing them with 6 new plays, creating a new playbook for leaders.

Play 1: Connect, Not Conform

So you’re in a position of leadership, and you’ve decided that the “master plan and delegate” approach is maybe not the way to go.

But, how will your team actually know what to like, do? How will you get everyone working towards the same goal?

The first piece of the puzzle is is trust.

Trust your team.

Trust that your team both wants and is capable of doing the right thing for the organization. Do this even you don’t 100% believe it, because the act of trusting your team will change the way they behave.

The Industrial Age play about trust needs to be turned on its head in two ways. First, we were programmed to make someone prove themself to be trustworthy before we trusted them. This naturally set up the case for judgment, not observation, and served to increase the power gradient. Now, leaders should trust first.

Second, trust does not mean you are always right. Trust simply means that your actions are being guided to support the best interest of the organization. This does not mean that your actions are always 100 percent in the best interest of the organization. This is important because without this underlying approach to trust, dissent equals distrust, and making a mistake once turns into “we can’t trust you”.

Assume Good Intent.

…trust people first because your trust in them will affect their behavior. They will work harder, stay longer, and unlock more discretionary effort when they feel trusted.
— Leadership is Language, p 235

Now, if you find some of your team going down random tangents, getting off track, or not focusing on the important things - what should you do?

Well, there’s certainly a chance that one or more of these team members for whatever reason don’t have the best interest of the organization in mind or aren’t capable of doing what’s needed - but, what I’ve found in my experience more often then not, is that this really falls back on me as a leader.

I haven’t created a strong and vivid enough shared vision, and/or created the culture and space needed for the team to collaborate on and take ownership of the bluework/planning required to get us there. As David Marquet says “this is an issue of organization clarity”.

Trust your team.

Play 2: Collaborate, Not Coerce

Ok, so you trust your team. Now what? Trust alone does not replace master planning and delegation. The team isn’t magically going to work together on the important things just because you trust them.

So as you may have already gathered, the next idea here is really simple:

*Make the plan with your team. Collaborate. Do the bluework together.*

However, in practice, this can get messy. This is where Marquet’s argument about being stuck with old paradigms and language from the Industrial Age really starts to hit home for me.

…this approach is far preferred to asking the question in a self affirming way - “are we all on board?” - and having the dissenting opinions lie dormant. Not only will the CEO and group be deprived of potentially critical information, but those dissenters, not having felt heard, will find other ways to sabotage the program.
— Leadership is Language p114

Have you been in those meetings? Where the leader or someone with some level of power has decided that the organization is just going to do something their way?

How did it feel? Did you feel heard? Did it make you excited to move forward with the plan? Was the decision maker willing to be vulnerable, giving the rest of team permission to have a real conversation?

Leaders say these things to assuage their conscience. When things go wrong, they can blame others for not speaking up despite the leaders encouragement to do so. But leadership is about making the lives of others easier, not blaming them. Leadership is about the hard work of taking responsibility for how our actions and words affect the lives of others.
— Leadership is Language, p25

So, why do leaders do this? Why is making important decisions together not the default?

Many team cultures simply don’t allow them to do bluework together. Doing bluework demands an open, trusting, creative energy and environment. If you don’t cultivate this as a leader, your team will be stuck. They will be incapable of really collaborating on bluework, and you’ll be stuck as well - back with the master plan and delegate model of leadership.

Marquet shares lots of great strategies here for creating an environment where people will not feel judged for voicing their honest opinions - some very tactical such as having the team vote anonymously on important topics using “probability cards” - and then openly discussing without calling out individuals directly - along with more strategic approaches around reducing power gradients and setting the right tone as a leader through the language you use.

Play 3: Commit, Not Comply

So, you trust your team. You work hard to create an open and collaborative environment where your team can really make important decisions together.

Now, let’s say it’s time to make a big decision.

When will we ship our next release?

Should we do project X for client Z, even though it’s not exactly in line with our core focus?

Should we hire that new project lead?

How should we compensate the sales team?

What should our focus be for the next quarter?

You’ve created a great open culture where people feel comfortable expressing dissenting opinions.

Now, what if they do? Like actually express dissenting opinions? Now what?

You feel in your bones that your organization must do X, and 3/5ths of your team agrees. But you have two hold outs - they just don’t see things the same way - what should you do?

NASA officials in the space shuttle Challenger disaster did the same thing, bluntly telling engineers they were wrong about the dangers of low temperature conditions during the launch. At one point a NASA official said, “take off your engineering hat and put on your management hat.”

When I hear a boss say things like “get everyone on board” or “build consensus,” that’s coercion. That’s trying to convince people “I am right, and you need to change your thinking.”

We don’t need anyone in the group to change their thinking. As long as the group supports whatever decision comes out of the meeting with their behavior, leaders are happy with individuals think differently from them. Otherwise they’re just in an echo chamber of their own ideas. There is power and resilience in diversity of ideas.

Do you believe that? I mean do you really believe that? If history is a guide, you think you’re special.
— Leadership is Language, p106

This passage really resonates with me. It’s not about changing people’s minds. And if you do try to directly change people’s minds, especially through coercion, you will be doing a great disservice to the culture and future creative potential of your team.

You don’t need consensus, you need commitment.

Individuals make commitments. Groups do not. Commitment is personal; it comes from within.
— Leadership is Language, p139

Play 4: Complete, Not Continue

But aren’t we back where we just started? How do we get the dissenters on our team to commit to a plan without forcing/coercing them to? Without just saying “tough shit, I’m the boss, the team has voted this way, deal with it”?

Well, first of all, we aren’t exactly back where we started. If you’ve really created an open environment, your team will feel more heard, especially your dissenters - and if you and the rest of the team are really listening - really interested in what they have to say and why they feel the way they do - then you have made progress - it will feel different.

And secondly, you, as a leader, will have dramatically better visibility into your teams thinking, and likely better visibility into the nature of reality.

But all that aside, it’s still tricky to move forward from a situation like this, where you’ve had an open conversation, and your team is split on how to proceed. This is a key area where I think Marquet’s Complete, Not Continue play is especially powerful.

The idea here is, whenever possible, take small bites, and then evaluate. Run experiments. When uncertainty is high and dissent is loud, run faster redwork cycles.

Instead of handing down the mandate, though, announce an experiment: “Hey, let’s do this for a month and then we’ll talk about what we’ve learned and how we like it. If it turns out to be unhelpful, we can reverse the policy in a month.”
— Leadership is Language, p 256

Instead of deciding once and continuing with redwork indefinitely, admit that no one in the room can predict the future, commit to take a small step and evaluate.

…the next period of red work is the doing part of the learning cycle (make a prediction, then test the prediction by observing what happens, and reflect upon [your] observations with respect to our prediction), then it would be easier…to make that transition out of rumination and planning into action.
— Leadership is Language p143

This approach will do two really valuable things to get buy-in from your dissenters:

  1. Acknowledge that your dissenters may be right, there’s real uncertainty here.

  2. Makes commitment much more palatable for your dissenters - it’s not forever.

Play 5: Control the Clock, Not Obey the Clock

So at this point you might be thinking something like - “Stephen, this all sounds great, but have you ever heard of this thing called…a deadline? When everything goes to shit and you just need the team to swing into you know, redwork or whatever, and get stuff done?”

So, yeah. I’m super guilty of this, and I do think that sometimes you just need to just act - deadlines and pressure can be really positive - there’s nothing like a lack of time to ruthlessly eliminate the unimportant.

The point here though is that like the other plays, there’s a layer to this dynamic that’s just left over from the Industrial Age, and no longer serves us or our teams.

An always ticking “Industrial age redwork production clock” applies pressure to keep marching forward, even if it’s on a path that makes less and less sense the further you go.

As part of my tool kit to minimize delays, I would give speeches and advise my team on how much we had to do, how much I was counting on them, and how much others were relying on us. In other words I was deliberately making it hard for people to call time out. I was pre-emptying a pause. By preempt here, I mean taking action to prevent something else from happening in the future. In this case I made comments with the aim of keeping the team and redwork and making the barrier to exiting redwork higher.
— Leadership is Language, p83

I’ve 100% done exactly this. Basically pretended that we had a “super open chill environment”, while applying deadline-induced pressure to the team through my energy and language.

Here’s some example language Marquet recommends for leaders in these situations that I found really humbling and compelling:

You may have heard that this is an important milestone. That is true, but if we can’t get it done safely, I’ll recommend a postponement and I’ll be responsible for it.
— Leadership is Language, p84

Play 6: Improve, Not Prove

Here’s the rule with power gradients: the censoring of information is directly proportionate to the power gradient. Have a steep power gradients and employees will carefully censor the communication to the boss. They will edit out bad news, drafts and reword emails, and stay silent when the boss has suggested an idea, whether they think it is a good one or not. They will invoke the prove self.
— Leadership is Language, p221

Ever does this?

Been writing an email, in a meeting, or on a call with your boss or someone more powerful than you - and felt that you had to prove yourself? Like really show that you knew what you were doing? Like you had everything figured out? Did you even maybe change your attitude and energy to be what you thought the more powerful person would want?

Marquet calls this the “prove self”. And again, I’m super guilty of this. Speaking directly from experience on both sides of the dynamic - it fucking sucks. For everyone involved.

Those with less power don’t bring their authentic selves to work and those with more power end up not knowing what’s actually going on. Think about how this impacts the organization as a whole - higher ups are blind and the rest of the team is disengaged.

These dynamics can become even more problematic as organizations shift to inviting more of the team to participate in bluework.

Improvement – which comes from egoless scrutiny of past actions, and deep reflection thinking about what could be better– is the core purpose of bluework, which is meant to improve redwork. Bluework in isolation is useless. It’s relevant only to the extent that it makes redwork better: more efficient, more relevant, more resilient, more responsive. The improve play requires open-minded inquisitiveness and curiosity from everyone on the team.
— Leadership is Language, p189

If your team is constantly in a prove mindset, it’s going to be really hard for them to objectively work through what could have been improved in the last redwork sprint. You can’t simultaneously prove to the boss that you’re “good” while sharing the 5 things that you and your collaborators did wrong over the last 2 weeks.

Again, Marquet points out that this really falls back on leadership. It’s up to those in power to create an environment where team members are comfortable to bring their full authentic selves, screw-ups and all - without crippling fear of judgment.

Research from Amy Edmondson of the Harvard business school shows how difficult it is to activate the”get better” self to learn and improve in organizations that do not have a supporting culture. In a 2002 report, she states,”To take action in such situations involves learning behavior, including asking questions, seeking help, experimenting with unproven actions, or seeking feedback. Although these activities are associated with such desired outcomes such as innovation and performance, engaging in them carries a risk for the individual of being seen as ignorant, incompetent, perhaps just disruptive.”
— Leadership is Language, p196

Check Out The Book

If you enjoyed this post, I highly recommend the book - Leadership is Language by L. David Marquet.

Stephen Welch

March 2021

Charlotte, NC

Coming up for Air

I didn’t notice the changes at first. I just thought I was busy.

But when I finally had some space to breathe, it hit me. I had lost sight of what was important.

Perspective can be really hard when you’re stuck in your house.

Now, in a time when so many have been impacted so deeply by loss of jobs, eviction, sickness, and even death - and as the coronavirus pandemic seems to have compounded inequality in a time when inequality was already on the rise - being stuck at home is probably not something to complain about.

And I before I go further, I must acknowledge that the world is hurting right now in some pretty profound ways, and if you’re lucky enough to still have a stable job and a healthy family, please take a little time to help those most impacted. Give some money, give some time - there’s countless highly impactful causes right now - such as food banks, which according to Feeding America have experienced a 55% increase in demand through the course of the pandemic.1

For me professionally, last year absolutely kicked my butt. My team was responsible for building and shipping a new production grade large scale distributed deep learning system for a new manufacturing customer. 2

We eventually were successful, and learned and grew a bunch along the way, but holy crap it was intense.

One of the more memorable moments of the project hit right after our phase one go-live. Late on a Friday afternoon, we realized we had a problem. 3

Our Edge Server was experiencing a memory leak (that had somehow escaped our testing), that caused the front end of our application to crash every 8-12 hours. With no fix in sight, 24/7 uptime requirements, and a project plan that was already slipping, we quickly made a rotation for the weekend, where one of us would manually restart the app every 6 hours.

Thanks to some real hustle from the team, we were able to ship a fix the following week, but the issues were far from over, and just reaching this go-live had already taken a toll. This made for 4 months of 60-80 hour weeks for me personally, and plenty of stress for the team as well.

Now, I don’t think there’s anything intrinsically wrong with putting in extra time toward a goal that you believe to be important - I’ve definitely found intense sprints both essential and rewarding throughout my career.

Where the pattern can become destructive is when we lose sight of why we’re doing things in the first place, when sprinting feels like the new normal, we spend too much time in reaction mode putting out fires with no end in sight, and not enough time making sure that we’re working as a team on the right thing.

And for me all of this was definitely compounded by being stuck at home during the pandemic. It was extra hard for me to get outside of my short term reactive way of thinking.

The analogy is so obvious is seems silly - but it’s really true - when your physical perspective is fixed inside the same four walls - this can really limit your mental perspective.

Travelling is a nice counter-example. More often than not, I return from travelling, especially vacation, with a renewed sense of energy and focus, and and whole set of new approaches for the problems that felt impossible or painfully slow moving when I left. I don’t know about you, but I didn’t do a lot of travelling in 2020.

So, how do we expand our mental perspective when we’re physically stuck on lock down?

Well, for me it really started with a purge - for the first time in a while I took the full week off between Christmas and New Years to rest and reflect. After catching up on some sleep, I poured over 2020 - I knew something was off, but what was it? General pandemic and quarantine malaise? Why did it feel like a layer of haze had descended on the year?

As nicely put by Ray Dalio: “Pain plus reflection equals progress”

This reflection period was really critical for me to see some of the negative patterns I had fallen into, and helped drive some changes I’m in the middle of making now.

There’s a type of creeping instability I feel in these periods when I’m not really sure what the core of me really wants or needs to do - when I’m just going through the motions. I feel it in conversations. I feel when I find myself trying to justify to others how I’ve been spending my time. Not knowing what you want, where you’ve been, or where you’re going sucks. And that’s where I was.

In taking a deep look at the year, it was also really interesting to see that I really had learned and grown is some significant ways - but hadn’t had the time to notice, appreciate, or think about these explicitly. I think this is really an important piece - recognizing how you’ve learned or how your thinking has changed will impact what you think is important and where you should focus next.

So. What is important then? Where is it worth spending time? What is the work that will connect our soul to our actions?

These answers are of course different for everyone, I think that’s part of the beauty here.

Here’s my list for 2021.


1. Empowering Non-Technical People with Deep Learning

This is probably favorite parts of my job right now, and I think a really critical area in deep learning. I sense the “AI glow” is starting to fade from deep learning, but that doesn’t mean there aren’t still plenty of interesting opportunities. One reason I like working in manufacturing is that the industry is generally underserved when it comes to machine learning powered solutions - deep learning can really make a big impact, and we’ve found that the size of that impact is often proportional to how much we can actually get data science “out of the way” of the domain experts. The more autonomy we can deliver through well-designed UIs on the front-end, and powerful automated tools on the back-end, the better.

I also really like this area because it intersects with another area I really love - education. I really don’t think anyone has nailed down the right abstraction layer between non data scientists and deep learning models - what are the right tools, education, and abstractions to empower the world with deep learning? How can we make deep learning just another (but more powerful) tool in the tool belt of quality, efficiency, or continuous improvement experts in manufacturing and other domains?


2. Teams, Really Collaborating, and Software Engineering

Something I thought a lot about in 2020 are teams. Microsoft Teams, that is. Just kidding, although I did spend way more time using it than I wanted to.

To date, a big portion of the work I’ve been most proud of has been individual contributor type stuff. This really changed for me over the last few years, and came even more into focus in 2020.

I’m still way at the bottom of the learning curve on this, here’s my thinking/learning today:

  1. No one succeeds alone. I’m sure this is obvious for a lot of people, but it hasn’t always been for me. Also, this doesn’t mean that everything important happens on a traditional team, or that individual effort and contribution have no place. It just means that whatever your idea of success is, especially if it’s big, you need to work with others to get there and to sustain it.
  2. A team is not just a group of individual contributors. For some types of problems, you can patch a bunch of individual contributors together through centralized planning - but this doesn’t work very well in software4 - so if you’re going to build something together, you have to really embrace open collaboration and team work the whole way through - this is of course a big part of Agile methodologies.
  3. Leadership and management is its own discipline, and definitely not one you learned in school.
  4. Teams don’t write novels. Individuals don’t write operating systems. It’s important to know when something should be tackled by an individual vs a team, and how these pieces fit together. Here’s what these different modes feel like to me today:
coming-up-for-air-figure-1-01.png

In each of these areas, I’m sure that someone much smarter than myself as already given these some deep thought, and I’m excited to learn more and expand my thinking and practice on teams and collaboration.

Finally, an interesting and incredibly comprehensive book I picked up last year, Software Engineering at Google, gives a really nice definition of software engineering that I think fits in nicely here:

We believe it is important to differentiate between the related-but-distinct terms “programming” and “software engineering.” Much of that difference stems from the management of code over time, the impact of time on scale, and decision making in the face of those ideas. Programming is the immediate act of producing code. Software engineering is the set of policies, practices, and tools that are necessary to make that code useful for as long as it needs to be used and allowing collaboration across a team.


3. Education

For the last three years I’ve taught a graduate-level computer vision course at the University of North Carolina Charlotte each fall.

In 2020 we did the course fully remote. And it sucked.

Ok, it did’t fully suck. And I need to say right away that we had some fantastic teaching assistants, great students, and the that UNCC administration was incredibly helpful and supportive.

But. It still kinda sucked.

Teaching in-person gives me energy, teaching remotely drains me. Students can feel this too. There’s something magical about being in the same room with other people that I took for granted pre-pandemic.

All of this got me thinking more about education and in general 2020, and especially how the internet has changed and will continue to change education.

On one hand the internet age has been incredible for education - the quality and quantity of online education resources has exploded in the last 10 years - I still remember having my mind blown by MIT OpenCourseWare as an undergraduate student at Georgia Tech, the Linear Algebra lectures were so much better than the ones I was in! 5 On the other hand, when we take the online thing further and run a whole class online, it can really cheapen the experience. Maybe this is just a technology gap - I hope that one day we look back at today’s video communication technology and laugh at how primitive it is - and I hope this happens soon.

In my course this year, we did our best to make lectures interactive - but gosh I struggled with the “bandwidth” of the communication. When you stand in front of a group of other humans, you have so many queues to draw on to make the experience better for everyone - and most of these queues just don’t make it across the internet.

I don’t have any answers right now, just lots of questions - but 2020 definitely got me thinking more about education and where it makes sense to invest time next. Here’s my big list today.

What is the future of education?

What is the future of technical education? This stuff changes so quickly, you can’t just learn it once in college.

Why is so much of what we learn in school not relevant on the job?

What is the future of the business of education?

Is the cost of universities sustainable?

Does it make sense to couple education with research as most technical universities do?

Where do universities fit in? What is the role of universities in the 21st century? Is it different than in the 20th century?

The quality and quantity of online education resources has exploded in the last 10 years - where is this going?

Will virtual instruction replace in-person one day?

Do students need interactive lectures, why not just watch videos? I think we know the answer is that videos/information delivery are just one piece, but what exactly is missing? Interaction with the material? Interaction with the instructor? Interaction with class mates? Some pressure to get students to put in work?

How can instructors like myself best serve our students?

How can we make education less artificial? Or does it need to be on some level?

A quick sidebar on this last question - for myself, over the years I’ve found a few patterns that work really well for myself for learning new things - one of the best patterns for me is something like:

  1. Go try something hard, fail (hopefully quickly)
  2. Buy every book on the subject that might help me not fail
  3. Read the parts of the books that will help me
  4. Reflect on what I’m doing wrong and make a new plan
  5. Try again
  6. Repeat as needed

Step 1 is really important for me - this ensures I have some “skin in the game” - failing at something first makes it real. As soon as I’m in a learning setting where things feel artificial, I’m just not motivated.6 This was a huge struggle for me in school - it mostly felt fake so I didn’t care about it.


4. Algorithms: Unsupervised and Semi-Supervised Learning

One of the biggest friction points in my work today is data labelling. Getting the right people to consistently create the right labels that both benefit the business application and are actually learnable by today’s models is rarely straightforward.

Clearly, other folks have these issues as well - just look at the myriad of labeling tools that have hit the market in the last 5 years to address this need.

I don’t think labeling is fully going away anytime soon, but I do think we can do a lot better. Part of this is certainly software & tools to maximize and streamline human efforts, but another piece has to be better algorithms that need less labeled data to perform well.

There are especially unique challenges in my current domain of manufacturing. In my previous role in autonomous driving, many of the ML challenges were kinda “global”. Everyone in the space needed to have a really good vehicle detection model, for example.

In manufacturing, every customer is a freaking snowflake. Even the same customer making the same product but a little later down the production line can present new challenges. The scale and variability of manufacturing is astounding - it demands tools that are quick and adaptable - we can’t spend a year making a perfect model for a certain type of failure mode.

Another unique challenge in manufacturing relative to some other domains (but not as bad as healthcare!) is the lack of quality open datasets. I know of exactly one today. We need more to push the industry forward, and provide the foundation for developing and proving out the next generation of unsupervised and semi-supervised algorithms.


5. Sales, Commercialization, Startups

In 2020, I participated in 100+ sales calls. These are sometimes really exciting, sometimes boring, sometimes frustrating. I’ve done my fair share of these before, but this year felt more visceral, more tangible, more real.

When I was building my first startup, Intuitive Pickups, one of my advisors recommended I read Steve Blank’s Four Steps to the Epiphany.

At the time I thought it was incredibly dry and mostly irrelevant.

In 2020, listening to potential customer after customer explain their problems, and doing our best to explain how our product would help, I found myself thinking through some of the ideas of Four Steps to the Epiphany again.

How do we know if we’re making the right thing? (product market fit)

How should engineering and sales work together? Should this change with scale?

How much of sales success or failure is about the product itself vs how it’s sold?

Are we talking to the right people in a given organization?

With these questions in mind I revisited Four Steps to the Epiphany, and holy crap was it a different experience. It’s like Steve Blank knew what was going to happen to us before I did. 7 Now don’t get my wrong, the book is still dry as hell - but happily, there’s a cheat sheet out now, that I wish I had the first time I read it!


6. Fundamentals of Computer Science

Relative to previous years, in 2020 I spent bunch more time worrying about and working on the full stack (much of my previous work was more focused on just the ML components). This gave me a much deeper appreciation for some of the more fundamental building blocks that I think can be easy to take for granted when you’re training models all day.

My biggest epiphany of the year went something like: “HOLY SHIT, DATABASES”.

The job of a modern, especially large scale and/or distributed database is pure insanity - and the fact that humans been able to engineer software that is so reliable and performant, even when the underlying hardware and networking components are intrinsically noisy and faulty, is incredible.

A part of the stack my team built and maintains involves shipping images and metadata around the internet. If an operator at a plant in Michigan realizes that one our models isn’t detecting a new type of manufacturing defect, she can correct our model right on the spot in our “In-Factory” app - this image and label then gets shipped to the right database to be pulled into our model retraining pipeline.

As we engineered this part of the system last year, I couldn’t stop thinking about how impressed I was that systems like Instagram and Netflix actually work, and are so freaking reliable. Anyone in the world with a phone can post an image on Instagram, and just assumes that magically all their friends will have the same image ready to view on their phones - almost instantaneously. Witchcraft.

Just thinking hard about the idea of concurrency alone last year was enough for me to have that moment on the learning curve where it’s like “holy crap, I don’t actually understand anything.” This is a fun place to be, and I’m excited to learn more about databases and other, more fundamental parts of computer science: computation, compilers, programming languages, and operating systems.


7. Open Source & Why it Matters

Maybe I’m just way behind on this, but a couple things happened in 2020 that got me thinking more deeply about open source software, why it’s important, where it’s going, and how it fits and doesn’t fit in with today’s commercial and legal systems.

For me, I think as a result of on when I came of age, it feels intuitively obvious to me that open source model had some significant advantages over a closed model. I still remember discovering Wikipedia in high school in 2004, and being just blown away - reading article after article, diving deeper and deeper into the web of human knowledge - it felt so incredible and alive in a way that closed system never could.

I think this and other experiences let me to just assume something along these lines to be true:

The most reliable and maintainable software in the world is created using open source models.

I never really challenged myself on that assumption until 2020.

Is this really true?

If so, why, and what should we do about it?

Should everything be built in the open? If not, when and why should we not build things in the open? How do we balance the very real commercial concerns of the business of software with these facts?

As part of digging into this a bit more I picked up The Cathedral and the Bazaar by Eric S. Raymond - this is a fantastic read, and I don’t think I’ve had the bandwidth to fully unpack it yet. One of the more popular ideas is what Raymond calls “Linus’s Law”, after Linux Torvalds:

“given enough eyeballs, all bugs are shallow”

I think this really captures a key part of why open source works so well.

What I also found really interesting in 2020 is that I believe there’s a type of “inverse corollary” to Linus’s Law.

I wasn’t explicitly aware of it until I watched a great introspective video by the incredible YouTuber CGP Grey. Grey talks about his process research and writing process, how it go wrong, and the anxiety knowing that what he produces will be judged by the internet.

This really resonates with me. I made a video about my process at Welch Labs back in 2017 where I share some of the same struggles.

Where I think this ties into Linus’s Law, is that since the approach to making videos taken by CGP Grey, and lots of other YouTubers including myself on Welch Labs, is to go out into the world, do a bunch of research, and create something as interesting and as accurate as you can - but, since the creation process is intrinsically an individual or small team effort - you can’t leverage the wisdom of the crowds - Linus’s law is working against you!

Here’s my Linus’s law inverse corollary:

”when you make something for enough eyeballs and care about being right, you will screw up eventually.

Now, there’s also so big advantages to crafting content and ideas this way - when something is written mostly by one person it gives the work it such a unique and beautiful personality and perspective that wikipedia articles will never have.

I wasn’t really aware of it at the time, but when I was actively working on Welch Labs content for YouTube, Linus’s Law really worked against me, especially when trying to start a new series - it’s easy to joke about the fear of being wrong on the internet - but it’s real. It’s really really real and if you don’t explicitly do something about it, it can cripple your creative process.

Like most topics here, I have no idea what to do about this, but I think it’s really interesting, and am curious and excited to learn more.


8. Social Justice

I don’t think you can watch what happened to George Floyd in the summer of 2020, and the subsequent global response, and not feel like you should do something about it. That something has to change. That we can’t continue as we have.

And I have to admit here that as painful as it was to watch this summer, did I really do anything? Did I really make any changes?

Aside from becoming more aware of these issues, and donating some small amounts to a couple non-profits in this area, I really haven’t done anything. And that can’t be how systems like this change. I’m part of this system, and I haven’t done anything.

This sucks, and is not something I’m proud of.

And this really hits home for me when I think about how the city I live in, Charlotte North Carolina, and how we were ranked dead last (50/50) for upward mobility amongst American Cities in 2017.

Each Fall I have around 60 students in my computer vision course at UNCC, and in three years, none of them have been a black or brown students from Charlotte. Not one.

Now, the course is very internationally diverse - but how is it that not one black or brown kid from Charlotte ends up in my course over three years? Maybe I’m being self-centered here, maybe this is a poor measure of the real issues out there, maybe students from Charlotte go elsewhere for school, and of course computer science is just one area - maybe I’m way oversimplifying here - but when I think about social mobility it’s hard to ignore the relatively high salaries that can follow a computer science degree - and this doesn’t feel like a coincidence to me.

So what exactly are the barriers between black and brown kids in Charlotte and my computer vision course? What can we do about them?

This is clearly another an area where I have more questions than answers - zooming out a bit I think that fastai founders Jeremey Howard and Rachel Thomas are doing some important work at the intersection of technology and ethics.


9. Information in Politics

Watching the political madness of 2020 and working in technology, I found myself wondering how the work my peers and I do impacts the political landscape.

The internet was supposed to make the world a more transparent place - but it seems to be doing exactly the opposite right now.

How do we know what’s really true?

How much freedom should people, organization, and elected officials have online?

To what extent and how should these systems be regulated?

Are there technical solutions here? Or are these the types of problems that are better solved through other means?


10. Climate Change

In the Fall of 2010 I headed off to graduate school to study environmental engineering at UC Berkeley, fired up to do something about climate change. Barack Obama was fresh in office, appointing Berkeley’s own Steven Chu as secretary of energy - and it seemed clear (to me at least) that climate change was widely recognized as a real and critical issue - and that the country was serious and staring to move forward.

In my first semester, searching for the right research fit, I spent some time learning about the the work happening at Berkeley - I was especially interested in the work of the Renewable & Appropriate Energy Laboratory (RAEL). I remember being surprised to learn how policy focused RAEL was. It seemed to me, at the time anyway, that idea that drove this focus was something like this:

The technology we need to curb climate change is already here - we know what to do - what we need now are the policies to make these things a reality.

This viewpoint well captured by the stabilization wedges paper, which I recall being pretty central in a couple of my courses. Not really seeing myself as the kind of person who could make in impact in politics/policy (I saw my strengths more in engineering), I ultimate decided to focus my research in an area outside of energy, and ended up working on a really interesting project using machine learning and sensor networks to study snowmelt in the Sierra Nevada mountains - a critical water supply for the state of California.

In 2020, listening to Greta Thunberg, I found myself reflecting on the 10 years since that fall, and how it really felt that we had taken one step forward and two steps backward on climate change, and wondering if my cursory take on what I could do to mitigate climate change back in 2010 was too swift.

Is addressing climate change mostly a public policy issue?

Are there new key technologies waiting to be discovered or invented?

Are there things aside from reducing my own carbon footprint I can do to make a difference?

~

Stephen Welch

February 2021

Charlotte, NC

  1. https://www.feedingamerica.org/take-action/coronavirus
  2. Super easy, right? :)
  3. This seems to be when all the really fun production bugs like to pop up.
  4. I think the reasons why are super interesting, and probably deserve at least a whole separate blog post.
  5. Shoutout to Gilbert Strang! Also, I emailed him once about some solutions to the exercises in one of his books, and we responded right away and was super nice.
  6. This reminds me of some really beautiful passages about education in Zen and Art of Motorcycle Maintenance.
  7. I think this is a great example of learning with “skin in the game” - there’s a time life, based on our experiences, when we’re ready to learn certain lessons, and this is really hard to recreate in formal education.

Leadership and Self Deception [Book Notes]

Have you ever worked with someone you found incompetent or difficult? And have you ever felt a little strange or empty or maybe even jealous when that person does something right or receives accolades?

If so, why do you think you felt this way?

Has it ever occurred to you that maybe some part of you needs this person to be a screw up?

That in some strange way, you need them to fail, to justify some part of yourself?

In the book Leadership and Self Deception , this is called “the box.”

When we’re “in the box”, we don’t see the world clearly. Instead we filter what we see though a lens of self-preservation and self-justification.

Now, at this point you might be thinking something like “Stephen, you don’t get it, some of the people I have to work with really are dum-dums, complete jerks or are just impossible, and this has nothing to do with me or my perceptions - this is just reality.”

So, you may be totally correct. There are plenty of people out there that are just not great at their jobs. And it’s fine to think as much - it would be dishonest not to.

Where the trouble comes in is as soon as you need them to be bad to justify your own shortcomings, this is where the perception shifts. It’s fine to think someone is bad at their job - you may be right, and maybe it’s high time for this person to find a better fit - but, I’ve found in these cases, especially if you find yourself spending extra cycles thinking or stressing about them - it’s usually worth taking some time to do some introspection.

The thing to look out for here is when we use our dislike for them to validate ourselves or hide our own shortcomings, which is especially tempting when we’re on the same team working towards the same goal.

Why isn’t my team succeeding? Why didn’t we finish that sprint on time? Why didn’t we close that sale? Why aren’t we hitting our numbers? Why does everything feel like a disorganized mess? Why is taking us so long to complete X?

Oh, must be that person I don’t like.

This is the trap. This is the box. And it gets especially dangerous when we know that on some level we deserve some of the blame for the team’s problems. As soon as the rationalization becomes something like “Yeah, maybe I didn’t do so great, but this other person is the real reason we’re not succeeding”, that’s when the lie we tell ourselves becomes self-sustaining.

Our fates are now linked.

For me to remain good and blameless in my own eyes, the other has to be bad, they must be the real problem.

We become entangled with those we say we want nothing to do with.

This is the resistance, this is the box.

For me, in these situations I’ve found my red flag is that I feel resistance in the mundane. I find some part of myself wanting this person to be wrong on stuff that really just doesn’t matter.

And if I’m honest with myself, I’ll find some rather unpleasant answers to some pretty basic questions.

Am I trying to lift the team up or bring this person down in my thoughts and actions?

Do I really want this other person to succeed?

Am I behaving and acting and feeling in a way that will empower them to succeed? Or, is some part of me holding back?

Is some part of me resisting? If so, why am I resisting this person?

And of course, if I am feeling and acting in this way, this behavior will not go unnoticed. This is the final piece of the puzzle that makes this pattern so destructive, and a common way the pattern can spread and compound across a team or organization.

Our perceptions of others matter. People, even the ones we may not like, are not stupid. Leadership and Self Deception puts this really nicely:

“Given a little time, we can tell when we're being coped with, manipulated, or outsmarted. We can detect hypocrisy. We can feel the blame concealed beneath the veneers of niceness. And we typically resent it. In the workplace, for example, it won't matter if the other person tries managing by walking around, sitting on the edge of the chair to practice active listening, inquiring about family members in order to show interest, or using other skills they may have learned in order to be more effective. What you will know and respond to you is how that person is regarding us when doing those things.”

This is the basis of an unhealthy co-dependency the book appropriately calls “Collusion”, where the two people on each side of the relationship each use each other’s faults to justify or hide their own shortcomings, creating a compounding a cycle of blame that can only dig deeper and deeper until someone breaks the pattern.

So. How do we do that? How do we break the pattern? In chapter 20, the book points out a few approaches that seem reasonable, but don’t work:

1. Trying to change others

2. Doing my best to cope with others

3. Leaving

I found this bit incredible convicting, I’ve literally gone through exactly these steps, in exactly this order in some cases!

So why don’t these steps work?

Remember that when I’m “in the box”, a part of me actually needs the other person to be the very thing I say I don’t want. So trying to change the person or cope with them generally doesn’t work because I can’t have it both ways - my being is divided.

Leaving can work for a while, but if blaming others is really a way to deal with my own shortcomings, I’m certain to fall short again, and will likely fall into the same pattern, just with a new person to blame.

So what does work? How do we get out of the box?

Well, there’s really two layers to it. The first layer is simple: awareness. Once you’re aware of the pattern and the role you’re playing in it, you now have the power to observe it and consciously decide what to do about it - as beautifully put by psychiatrist Carl Jung:

“Until you make the unconscious conscious, it will direct your life and you will call it fate.”

Now, of course developing this self-awareness is not easy - I’m certainly no expert here and there’s a lot to say about it! One book I have found really powerful in this area is “Reboot” by Jerry Cologna. Sometimes it’s easy to see the traps we’re falling into, but other times they can be really really difficult.

The last piece of the puzzle is to just…stop.

Stop resisting this person. I know it sounds scary, I know that it may feel like things will come crumbling down if they have their way.

But trust me, it’s not as bad as you think.

Just stop. Give the other the grace to be a human just like you.

Once do, you will see things differently.

You will be free from the box.

It’s not all sunshine and roses when you’re out, the other may still be a difficult idiot, but you will see them and how they fit into the rest of the organization more clearly.

And most importantly you won’t need them to fail to justify your existence.

Your fates will no longer be linked.

You are free.

~

Stephen Welch

Charlotte, NC

February 2021