fbpx logo-new mail facebook Dribble Social Icon Linkedin Social Icon Twitter Social Icon Github Social Icon Instagram Social Icon Arrow_element diagonal-decor rectangle-decor search arrow circle-flat
Culture
October 27, 2020

Tandem Roundtable: Teaching (and Learning) Relational Database Principles

Chris Alvarado Engineering Manager
Meo Leung Engineering
Dominic Bales Engineering

Tandem’s apprenticeship program is the best expression of one of our core values: continuous learning and improvement. Our apprentices spend the bulk of their time learning on the job as they pair with senior engineers and designers working on real client projects, but for deep-dive conversations to build a solid technical foundation, engineering apprentices also attend bi-monthly classes on technical topics.

As our most recent cohort of apprentices, Meo and Dominic participated in classes taught by many of their engineer colleagues. Their final class, on relational database principles, was taught by Chris. Meo, Dominic, and Chris recently got together to talk about their experiences with apprentice classes — read on for their thoughts.

What is it like to be an apprentice at Tandem?

Meo: This was my first apprenticeship experience so I have nothing to compare it to, but my experience has been very hands-on. On my second day of work, I was pairing with Shamyle — another software engineer at the company and my mentor at the time — to partner on a feature. It was straight diving into the code. Alongside that, we also have learning days where I could further dive into questions I had throughout the week or try out different tutorials and test out different tooling. We also had apprenticeship classes every Friday!

Dominic: My apprenticeship experience has been positive. The focus on pair programming is unique: we’re learning instantly from coworkers with more experience. We also have the opportunity to have days set aside for learning, and the support we get is great.

What are the apprentice classes like?

Meo: An apprenticeship class is about a one-hour long session where a Tandem developer takes the time to prepare documentation for the apprentices to learn about topics that we may or may not already know about.

Dominic: To me, the classes were very helpful: they introduced us to topics we might not know from self-learning. A lot of us are self-taught and this introduces us to things like Docker containers and data modeling that we wouldn’t have learned in a bootcamp. I really like the code-along style.

Meo: I felt pretty much the same as Dominic. You learn a lot more from someone in the company who is teaching [than you would from a guest speaker], because they are a lot closer [in the company] and you can always reach out to them afterwards for follow up.

I have taken the concepts from the classes to my personal projects. During one class, Kate and Mercedes had a debate about Git Commit best practices, and I started employing that in my own code where I could. Mercedes’ style is more clear and easy to see, but I definitely veer more towards the Kate mode of thought!

What I also like about these classes is that it’s not just us apprentices in the classes, the other developers are there too and they spark conversations that are awe-inspiring.

Chris: It’s great as someone who is presenting to see other team members there. It gives you that comradery. I learn things too, sitting in on the apprentice classes.

Before Chris’s class, what did you know about relational database principles?

Dominic: I knew simple relationships, like ‘one to many’. But that’s as far as my knowledge went.

Meo: Matt also did a presentation on databases, so there was some slight overlap. I had previously touched on join tables and database topics like that, but I had no idea what I was going to learn. I just knew I was going to learn a lot.

Dominic: I thought we’d be going over the relationships, and some queries.

Chris, when you were planning your class, what concepts did you want to be sure to cover?

Chris: It’s really important to understand some amount of database design principles. I started by just thinking about the specific topics that I thought were essential. There were a series of topics that had to be in there: basic queries, join concepts, then some advanced concepts because the topic of relational databases is so multidimensional. So we ended up going a little deeper down the relational database rabbit hole.

I wanted to tell a story and take a more real-world approach instead of theoretical one. Relational database theory is great, but it’s not always as relevant to what we do day-to-day as engineers.

I wanted to start at one end of the spectrum, and then take a journey to the other end. So I started with a poorly designed example of a relational database, and over the duration of the class iterated toward a better design, exploring various key concepts along the way.

I also wanted to make it non-generic. The everyday examples used in a lot of classes are boring; I wanted the class to be relatable. So I posted on Slack asking for the names and species of folks’ pets across the company, and it took on a life of its own — because when I asked people the type of animal, some people said ‘cat’ and some people said ‘precious angel’ or ‘muppet’ or other jokes. And that actually helped me demonstrate complex databases, because each pet could be multiple types: a cat, and a precious angel. Apparently Gwen’s dog is also a dragon. So it worked out really well and I hope it helped people engage more.

Dominic: I think it kept people’s attention, because when you talk about people’s pets they’re going to care!

What parts of the relational database principles class stood out to you?

Dominic: What I really enjoyed is how Chris explains his code as he’s walking through it; he gave the presentation like a Pokemon that evolves in that he started with a simple query but then expanded on it and improved it. He started here, explained along the way, and broke down what he was doing as he was doing it. I’m a very visual person so this helped me understand better.

Meo: Because I’ve done a lot of Rails previously, a lot of the class made me realize ‘oh, this is why I did that!” Rails is kind of magical because a lot of the database stuff is done for you. So this highlighted best practices with code, which was cool.

Dominic: It cleared up a lot for me. When I was learning programming, I used a different type of database so I didn’t have to worry about the relationships. So the class helped me understand more as an engineering professional. I especially appreciate learning about the different joins in general — because I knew about them, but I had never dove into the differences between them.

Meo: I definitely learned a lot from Chris’ class: the types of databases, graph databases, databases that I’ve never even heard of. That was mind-blowing. And even in a two-part class, Chris had a whole list of topics that we didn’t even cover!

Chris: I had a slide about “here’s what we could have covered that we didn’t. Folks can continue the journey on their own!”

Chris, what did you learn from this experience?

Chris: I know in the medical profession, their mantra is “see one, do one, teach one” for procedures. Only through that process can you truly grasp a concept.

For me as a manager at Tandem, focusing on so many different things, I don’t get frequent opportunities to engage at the technical level as much as I used to and would like to continue to do that whenever possible. Teaching helps me stay sharper with conceptual things, and sheds light on where I may have some cobwebs to shake off.

Also I learned that I have some growth to do as a presenter. I need to work on being a little more metered — I tend to speak very quickly when I’m teaching and presenting, especially when it’s a topic I’m passionate about and interested in.

What advice do you have for the incoming cohort of Tandem apprentices?

Dominic: Don’t be hard on yourself, especially not knowing some of these concepts.

Meo: Take notes and don’t be afraid to ask questions.

Dominic: Try to structure your own personal learning time around the topics of the classes. It’s easy to go through a class and write notes and end up forgetting — so setting up extra time to practice what you learned will help you retain that knowledge much longer.

Chris: Take advantage of all the learning opportunities: there are a bunch of classes, there is a learning budget to buy books or take courses, it’s a great time to embrace the learning mindset because as an apprentice, your project involvement has lower stakes. There’s more time focused on professional development so take advantage of all of it. There are a wealth of tools at your disposal!


Learn more about Tandem’s Apprenticeship Program

Related Blog Posts
Let’s do something great together

We do our best work in close collaboration with our clients. Let’s find some time for you to chat with a member of our team.

Say Hi