Social Contracts in Learning

Recently, I’ve been thinking about how I approach my learning of new topics in software engineering and a big theme has been the use of social contracts. When I say social contract, I don’t mean the philosophical theory or model but rather the idea of an agreement for mutual benefit between an individual or group and the community as a whole.

In the most basic sense, the forms of social contract I’m talking about is when I put myself in situations in which I teach others something I’ve learned like a tech talk, presentation, or article. By making a commitment to put together material and talking points to help others learn something, I in turn force myself to learn the topic at a deeper level and explain it in simple words.

The power of this approach is two fold: for one it requires a more rigorous attempt to understand a topic, and second it puts me on a timeline. I think the first point is obvious in its benefit, but the second one is of particular interest to me. I’ve always made earnest attempts to study new tools, topics, or practice my programming skills, but have found that life has a number of ways to distract me or pull my time away. However, when I have a hard deadline and responsibility to deliver to others I find that I’m able to be more disciplined in my learning and focused with my time.

This is the reason that I so often agree to give tech talks to Launch School, the online software engineering school that I studied at. It’s also why I have this blog that I’m attempting to write articles for on a consistent basis. Putting a contract in place between myself and others to deliver material has forced me to learn at a deeper level and not let life pull my studies by the wayside.

Another form of social contract that I’ve started doing is taking online classes at the Bradfield School of CS. Based in San Francisco, Bradfield is a school for professional software developers who want to learn CS fundamentals from a mastery based approach. I’ve had my eye on the classes for several years, but since they have all been in-person only and I live in New York City I’ve mainly been hoping for a future sabbatical from work to take them.

However, at the end of 2019 they started offering online classes and I’ve since started taking their Computer Networking class. I’ve also registered to take their Computer Architecture class in 2020 and plan to take more of their classes as they come online. The reason for this is that while there are many free resources available online to learn the topics these classes offer, I still face the same issues mentioned before.

But by putting money down for these classes, having a directed curriculum to learn from on a set schedule, and having fellow students to engage with in a flipped classroom style each week, I’ve essentially created a social contract between myself and the school. This has forced me to place my learning before other distractions in my life and ensured that I put the time aside to understand the material.

I highly recommend that readers of this blog consider what social contracts they can engage in to accelerate their learning. It can be intimidating to put yourself in such a situation, but I think you’ll find yourself growing more rapidly than expected if you try it out and put your best effort into it.


Now read this

Improving Your Iteration Speed

I’ve been reading The Effective Engineer by Edmond Lau and finished a chapter which I found very interesting. The chapter is titled Invest in Iteration Speed and the crux of the content is that effective engineers take the time to... Continue →