Skip to content

Commit

Permalink
update to learning blog post
Browse files Browse the repository at this point in the history
  • Loading branch information
Duncanma committed Sep 15, 2020
1 parent 88135bb commit c72ec73
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 3 deletions.
10 changes: 7 additions & 3 deletions content/Blog/a-learning-organization.md
Expand Up @@ -4,13 +4,17 @@ title: A Learning Organization
type: posts
tags:
- Team
description: Learning from our mistakes is what makes a team into a 'learning organization'
description: Learning from our mistakes is what makes a team into a 'learning organization'
featured: true
---
A while ago, someone commented to me that their group was a 'learning organization' and that was why they encouraged ongoing training, arranged bootcamps, lunch and learn's etc. I had a moment of cognitive dissonance, because while I am supportive of encouraging ongoing formal and informal training, that was completely not what I have always meant when I described our team as a learning organization.
A while ago, someone commented to me that their group was a 'learning organization' and that was why they encouraged ongoing training, arranged bootcamps, lunch and learns etc. I am very supportive of ongoing formal and informal training, but I realized that this was completely not what I have had in mind when I described **our team** as a learning organization.

The nature of software, and likely all forms of work, is that things go wrong. **All the time**. This can be small, like getting stuck on a bug for a few hours, or a minor issue being shipped to production, or it can be huge like deleting a ton of records in a production database and having to restore from a backup (that was me). In every case, my idea of a learning organization is **one that focuses on what we learned from the incident and the improvements that come from it**.

We formalize our learning in repair items when it is a big issue like an outage, but we should also be learning from our small mistakes. Maybe we needed better unit tests, or we need to build a system for integration testing, or maybe we just need to learn to slow down and review our own code. When I see something go wrong, I often ask why it happened, and sometimes that results in apologies and people 'taking the blame'. I don't mind that, an apology is a way of showing you understand the impact of your mistake, and taking the blame (when it is due) is **way** better than pointing at someone else or acting like it was unavoidable. It isn't what I'm after though. My goal in asking the question, is to understand what we learned, and ideally to get a list of what we're going to change in our process or system to avoid it happening again. For the most part, in our learning organization, everyone asks that question themselves. My job is to make space for the repair work, to make it clear that it is important, and to ensure that making things better after an issue is to be celebrated.
You can take this as obvious, we should learn from our mistakes, but it is very noticeable when it is happening or not happening at an organizational level. When something goes wrong, we should have two key priorities. First, we have to fix the issue if it is ongoing. Debating **why** something happened, or who is responsible, when something is actively occurring is not helpful. Second, and this is the absolute key quality of a learning engineering team, we need to figure out what we should do to prevent this type of issue happening again.

We formalize our learning in repair items when it is a big issue like an outage, but we should also be learning from our small mistakes. Maybe we needed better unit tests, or we need to build a system for integration testing, or maybe we just need to learn to slow down and review our own code. When I see something go wrong, I often ask why it happened, and sometimes that results in apologies and people 'taking the blame'. I don't mind that, an apology is a way of showing you understand the impact of your mistake, and taking the blame (when it is due) is **way** better than pointing at someone else or acting like it was unavoidable. It isn't what I'm after though.

My goal in asking the question, is to understand what we learned, and ideally to get a list of what we're going to change in our process or system to avoid it happening again. For the most part, in our team, everyone asks that question themselves. My job is to make space for the repair work, to make it clear that it is important, and to ensure that making things better after an issue is to be celebrated. If every issue leads to work to prevent future occurrences, our underlying system quality will be steadily increasing.

So, yes, it is awesome when a team takes time for training. Support for ongoing learning should be part of the culture, but the key to getting better day over day is to ensure that every mistake turns into improvement.
5 changes: 5 additions & 0 deletions debug.log
@@ -0,0 +1,5 @@
[0829/102918.730:ERROR:registration_protocol_win.cc(103)] CreateFile: The system cannot find the file specified. (0x2)
[0829/102918.765:ERROR:registration_protocol_win.cc(103)] CreateFile: The system cannot find the file specified. (0x2)
[0829/102918.791:ERROR:registration_protocol_win.cc(103)] CreateFile: The system cannot find the file specified. (0x2)
[0829/103842.976:ERROR:registration_protocol_win.cc(103)] CreateFile: The system cannot find the file specified. (0x2)
[0829/104130.460:ERROR:registration_protocol_win.cc(103)] CreateFile: The system cannot find the file specified. (0x2)
1 change: 1 addition & 0 deletions themes/blank
Submodule blank added at f4735d
1 change: 1 addition & 0 deletions themes/simple
Submodule simple added at 780c2d

0 comments on commit c72ec73

Please sign in to comment.