What continuous learning looks like in OpenMarket Engineering
Published: 2021-09-07 14:24:34

by Scott Shipp – January 10, 2020

At OpenMarket, it’s important that we are always learning and here are some ways we make that happen.

One of OpenMarket engineering’s greatest strengths is its unique learning culture. Learning is a first-class citizen. Engineers at OpenMarket spend a lot of time just learning, and no one thinks that’s weird. I’ve worked in other companies with strong learning cultures, but I believe there are three ways that OpenMarket is unique:

At OpenMarket, learning is…

    …diverse
    …shared
    …preserved

Learning is diverse

At OpenMarket, engineers are continuous learners. Technological evolution never stops so neither do we. That said, not everyone is the same and not everyone learns the same. Everyone learns in a different way and so we try to provide as many resources as possible so that everyone has resources that match their learning style.

Some engineers might do hands-on learning at physical events. Tomasz Ptak recently shared his experience with AWS DeepRacer, which is one example. Other examples might be attending a conference or taking a class.

Other engineers like to learn asynchronously. Every engineer receives a subscription to O’Reilly (formerly known as Safari Books) which has books, videos, and online courses. Each team also receives a budget for training that can be spent on whatever is needed, and I’ve heard of people using a variety of online and in-person resources.

One of my favorite things we’ve done on my team is hold regular “lunch and learns.” We use the time to watch relevant video tutorials or conference talks and then discuss them. We’ve covered topics as diverse as the Karate test framework, squashing commits in git, and microservices anti-patterns.

OpenMarket has had various similar clubs that were article- and book-based, to allow for deeper dives into longer resources. For example, we had a book club that read Michael Feathers’ excellent book Working Effectively With Legacy Code. I remember hearing that engineers who wouldn’t normally read a book were motivated to read the relevant chapters before each meeting and found it to be a helpful supplement.
Learning is shared

In OpenMarket Engineering, we recognize that learning is important and that learning together with our coworkers has unique value. This means we provide learning opportunities during work hours. Furthermore, we spend time learning within and across our engineering teams.

One of the best ways to learn something well is to try to teach it. Albert Einstein once made the great observation that, “if you can’t explain it simply, you don’t understand it well.” OpenMarket engineers teach other engineers. This happens within our teams informally during pair-programming. It happens whenever we present the results of spike stories to our teams. And it happens at broader, semi-weekly Tech Chats where we take turns presenting to the entire engineering org about things we’re working on or simply find interesting.

Everyone is different, so having the opportunity to teach one-on-one during pair programming as well as the opportunity to teach a wider group such as a team or org makes space for both introverts and extraverts.

On top of that, one of my favorite things about OpenMarket is that I very often get recommendations thrown my way from the other engineers. “Have you checked out this link?” “Have you seen this talk?” “Did you read that tweet?” We have a Slack room just for tech talk like this, but there’s plenty of organic face-to-face conversation too. I find this everyday exchange of ideas pretty refreshing, and I can usually count on even a trip to the water cooler to be educational.
Learning is preserved

When we learn something new, we either tell someone, write it down, present it, or all three.

Every year engineers attend various conferences. Past conferences have included No Fluff, Just Stuff or AWS re:Invent. When OpenMarket sends engineers to conferences, we task them with documenting what they learned and then presenting it to other engineers at Tech Chat. Every Tech Chat is recorded and the video is hosted on an internal site for anyone who missed it or simply wants to go back and watch it again.

We also have a strong culture of writing blogs, README’s, wiki pages, site docs, and more.

Sometimes we use specific documentation for specific tasks. For example, we recognize that just because a language, framework, library, or other tool is new doesn’t mean it’s good. One of my favorite things that we do is maintain our own internal tech radar that helps our teams share what their experience has been with any particular tech. We modeled it on the Thoughtworks Technology Radar. Teams who have used a given technology will recommend that other teams assess, trial, adopt, or avoid it.
Learning “values”

I’d like to end by saying that I think what makes OpenMarket special as compared to the various other companies I’ve worked for is our core values. OpenMarket staff—who we like to call OMies—actually mention the values frequently, something I haven’t experienced anywhere else. The values seem to be at the root of all of this good learning. Values like value people, partly explained as:

    We recruit and develop individuals who contribute to our success.

Or values like take ownership, with the meaning of:

    We are curious and ask questions.

I’ve noticed there’s a certain humility at OpenMarket that allows that curiosity to thrive. No one expects anyone to know everything. We all expect that our learning is incomplete. In that context, learning new things is fun, and the fact that its happening all the time isn’t some indication that you are a failure at your job. In fact, quite the opposite. And there are many ways to teach and learn, so everyone is included. I would encourage any engineering team to adopt a similar mindset, and I wish you luck on your own learning journey. Or if this sounds good to you, come join us at OpenMarket, where we’re always building interesting things, and learning something new.