Managing Ignorance & JIT Learning
“Real knowledge is to know the extent of one’s ignorance” — Confucius
Accepting Ignorance
I’ve been coding on and off for 40 years now (professionally for over 20 years) and the more I learn about programming, the more I realize that I still don’t know. This is true on both the profound level — that you can always bring deeper insight to any practice over time, and the pragmatic level, because there are so many more elements in a non-trivial web application than there were even just a decade ago, that the percentage of them that I’ve mastered continues to dwindle.
As a manager of technologists, ignorance is not a temporary state, it’s permanent. The question then is how to handle decision making in the context of not having sufficient knowledge to consistently make well informed decisions?
Educational Courses?
I’m a huge fan of education — I’ve taught at Columbia Business School and presented at a variety of tech conferences around the world. The CTO Summits that I organize are a way for engineering leaders to learn from their peers, and my day job is at Flatiron School where I’m currently launching a new online data science bootcamp. Education is great. But as managers, we face such a wide range of challenges that it’s just not practical to “take a course” on all of them — even if all of the necessary courses existed.
In a given day you might need to deal with a visa issue for an Australian developer in your Singapore office, figure out how to keep a top developer engaged even though they didn’t get to work on the project they wanted to, figure out how to better support your direct reports in “giving up their legos”, decide on a container and associated orchestration system and deal with the fallout from garbage collection pauses breaking SLAs for response time on one of your APIs!
Any given engineering leader may only be dealing with a subset of those problems, and hopefully you have a team both within your org and across your company that can help, but I still find myself regularly running into issues that I don’t have an immediate answer to or an internal source of wisdom that I can turn to for a thoughtful response.
Tapping the Network?
For the longest time, my answer (above and beyond googling — which works for a worthwhile subset of issues) was to build and cultivate a network of peers. I helped to found the NY CTO School and am a member of various in-person and online communities of engineering leaders. They are all great in their own ways. Each one selects a position across the dimensions of inclusive/exclusive and focused/broad and through the dynamics that drive community engagement ends up providing some combination of utility and confidentiality — after all, there are some problems we deal with as managers where posting them on stack overflow would not be an appropriate choice!
However, there are a number of reasons why these ad-hoc communities don’t appear to be a complete solution to the problem.
Firstly, there’s generally a fundamental trade off between reach and trust — it’s very hard to create a high trust network that contains really large numbers of users. Because of this, if you have a question that can only be disclosed in a high trust network, the quantity and quality of answers will be necessarily limited.
Secondly, short of a keyword search of the mailing list archives, there isn’t a useful structure and taxonomy for identifying existing knowledge that blends foundational material, commonly asked questions and historic Q&A around the topic. Finally, there’s no easy mechanism for efficiently identifying experts in a given domain to reduce the signal to noise ratio for other participants who may be less able or willing to help.
Finally, as you need to join/connect with new communities, there’s no formal way to transfer your reputation between them, leading to a minimum contribution cost for each new community, limiting the number of communities that an active professional can realistically join and engage with. I remember the switching costs as I moved from being known in the ColdFusion community to the Groovy and then later the ruby community. There are a maximum number of communities that it’s practical to be active in.
JIT Learning
The problem that needs to be solved is Just In Time learning. A combination of educational resources and community for “filling in the gaps”, allowing engineering leaders to quickly come up with trusted answers to questions they need to deal with.
I’ve been playing around with a number of different ideas and formats and will be sharing some of the more promising ones over the next few months. Luckily this isn’t a novel domain. The fields of knowledge management, community creation and even expert systems give some insights into how to solve this class of problem, but I still haven’t come across a comprehensive solution that seems to be both manageable and scalable. Looking forward to sharing and experimenting, and if anyone has ideas they’d like to propose or would be interested in collaborating, please feel free to drop me a line!