Engineering Managers: It's Time to Write Better Job Descriptions

Part of what makes a poor manager is a lack of investment into the day-to-day activities of management and an over-emphasis on the day-to-day activities of a practitioner. One of these day-to-day management activities is understanding and describing the work that is being done, why it's being done, and how it's being done. Here's how to communicate the this in the form of a good job description.

Implementation Strategies for Integrating External Services Into Your Application

Modern software relies on external services to take responsibility for some aspect of the product's feature set. Learn how to integrate them in a manner that's appropriate for your context.

You deserve a porcini hunting guide

A friend recently learned how to forage for porcini mushrooms in the Sierras. Learning to spot the mushrooms is a lot like learning how to refactor code in a legacy context.

Passion isn't terrible

Many companies seek passion in their candidates. But this can be counterproductive to the company's goals if that passion isn't aligned with the company's interests. What does counterproductive passion look like?

Pair programming problems are not a smell

We wrote down a few dozen dysfunctional pairing behaviors and sorted them into categories. It looked a lot like a code smell recipe book. But then we learned that these really weren't smells. We'll share our discoveries of how to address these dysfunctions - and what they really are.

Giving Back

We've always known the hard-working nonprofits and community organizations that needed our refactoring workshop could rarely afford it. As a thank-you to all those orgs for all the work they do, we're slashing our workshop prices for NPOs for the month starting on Giving Tuesday.

Metrics, Async/Await, and Really Big Hammers

Async/await is a _really shiny_ hammer. But what happens when we run into the wrong kind of nail?

Designing a Directed Conversational Interview

This article shows how to take interviewing techniques from the field of user research and cognition and meld them into a directed conversation interview, suitable for evaluating candidates against a skill ladder. Learn how to design a directed conversational interview for the early stages of your hiring process.

Practical Empathy, or: How I Stopped Hating Pair Programming

Pairing works better for me nowadays because I realized that pairing is a programming skill. Just like for loops, code review, or domain modelling. And like any other skill, it can be taught and learned. People love or hate pair programming, and for good reason! It's a tough skill!

Introducing "Let's Pair!", A Zine Series on Effective Pair Programming Techniques

While some see “Privilege” as a four letter word, as a leader it's critical to understand how team members' backgrounds impact them. People love or hate pair programming, and for good reason! It's a tough skill!

GraphQL and Rails - A Brief Introduction

While the marketing will tell you the concepts behind GraphQL are simple, a full GraphQL implementation is quite complex. Here are a few tips to help you learn to use GraphQL and Rails effectively together.

Interviewer Skills Part 3/3: Timing your interview

The candidate has gone off on a wild tangent and you're not learning anything useful. What do you do? should you bring them back to the topic you want to cover? if so, how? This is Part 3 of a multi-part series covering some of the topics introduced in our RailsConf 2018 workshop, "Interviewer Skills".

Evolving process for evolving teams

Like many of you, we hold standups to sync up on what people are up to, surfacing and supporting through blockers, and getting in a little regular facetime. We’re currently on our third variation of the year for how we do our standups. And today we're sharing our recipe for learning if your team process should change, and how to change it.

Interviewer Skills Part 2/??: How to create interview questions

You know what attributes will make someone the right addition to your team, and have specific enough descriptions that there can be no room for ambiguity. How do you translate these into interview questions? This is Part 2 of a multi-part series covering some of the topics introduced in our RailsConf 2018 workshop, "Interviewer Skills".

Interviewer Skills Part 1/??: Why set specific goals

How do you know if someone will be the right addition to your team? What happens if you both agree it's important to hire "no jerks" or people who are "smart and learn fast", but have different ideas about exactly that might mean? This is Part 1 of a multi-part series covering some of the topics introduced in our RailsConf 2018 workshop, "Interviewer Skills".

Return from RailsConf + Interviewer Skills Part 0/??: Intro

You asked us for it in the halls of RailsConf and on Twitter. This article is the first in a multi-part series going over some of the topics introduced in our Interviewer Skills workshop. We have a list of WIP topics. What do you most hope to learn? Let us know.

Twenty minutes

Recently I was chatting with a friend who works as an engineer -- a real engineer, as in buildings and bridges and structures. I was curious what a technical, regulated industry's interview process might look like. What might I learn from her interview practice that could teach me about being a better interviewer in the software industry? Her entire interview process takes twenty minutes. For an industry where shoddy technical work could lead directly to human death. What's the secret?

Tell me about a time when...

When as an interviewer must you ask about specific experiences, and when can you ask what a candidate would do in a hypothetical situation? What can you ask yourself to know the right question to ask?

Embracing Uncomfortable Refactoring

Sometimes refactoring is fun. Sometimes refactoring feels therapeutic. Usually, those kinds of refactoring are the kinds we don't need.

How to interview your future manager

What you need out of your manager may be different than what your colleagues, your friends, or your peers need -- and that's ok! What can you do to discover if the candidate interviewing to become your manager is the right person for the job?

A primer on setting up your remote employee

Two developers, both alike in dignity. In a fair tech valley, where we lay our scene. know what iambic pentameter is hella hard. How about we jump straight to talking about what to do if you have a lonely remote developer who's not succeeding on your in-office team.

A brief adventure in ActionMailer debugging

Are you making changes involving ActionMailer and hitting `(object doesn't support #inspect)`? Remember what `ActionMailer::Base.mail` is expected to return.

Designing Your Apprenticeship Program for Outcomes

Are you trying to build an apprenticeship program? Building cross-organizational buy-in can bolster your program's success. Learn how to align your apprenticeship program with your organization's desired outcomes.

Understanding, Owning and Leveraging Your Privilege In Tech

While some see “Privilege” as a four letter word, as a leader it's critical to understand how team members' backgrounds impact them. Learn how to own, understand and leverage your privilege.

An Introduction to Software Apprenticeship

Software apprenticeships develop your existing talent and help you expand your teams more quickly and effectively. Learn the basics of designing an apprenticeship program.