You’ve put together a software team. How might you invest in it?

We offer both public and in-house workshops that will improve your team’s performance as both individuals and as a group.

A small selection is below; please contact us at [email protected] to talk about your team development.

Looking for more targeted help? We do that too!

Interviewer Skills and Recruiting Process

“I joined a rapidly growing startup as engineer #3, and by the time we hit 20, we devs still wanted to be involved in the hiring process - but we all had different ideas of what made for a qualifying candidate. Jennifer stepped in to improve our hiring process. She enabled us to discover what we were collectively looking for in a candidate. Through her workshop, we were able to synchronize and zero in on the qualities that we were looking for. This enabled us to conduct more productive interviews.” ~ Frank Shaw, software developer

This two-part workshop targets your team as a whole, and helps them work towards a shared goal together.

You know you need to hire more software developers. Maybe you even know exactly what kind of developers you need to hire. But when a candidate is sitting in front of you, how will you know whether they would be a good hire, or a bad hire?

In the first workshop, we’ll go through a series of exercises for everyone on your team involved in the recruiting process to know what you’re looking for and how you’ll identify it. After identifying both what you need and how you’ll know it when it’s in front of you, each member of your hiring team can be confident that any future interview will definitively answer the question “Should we hire this candidate?”.

After the workshop, participants will have identified and agreed on

  • What is important to the team when considering a candidate
  • Metrics for evaluating hiring values
  • What the recruiting process looks like for the team

In the second workshop, we’ll focus on the interviewer skills needed in the recruiting process. After the second workshop, participants will have learned

  • Why and how to put candidates at ease
  • Tactics for guiding candidates towards higher-signal answers
  • Redirecting conversations and keeping candidates on track
  • How to persuade candidates that your company is the place for them

Uncomfortable refactoring

“After learning about one-line refactoring in the refactoring workshop, I tried it at work where we’re going through a massive scary refactoring. This technique helped my team have more confidence and go through faster than we would have otherwise.” ~ Jeffrey Baird, software developer

Sometimes, when refactoring, we need to make decisions that are deeply uncomfortable and lead us to question our life choices. This workshop will not fix that. Instead, it’ll make it okay.

In “Uncomfortable Refactoring,” attendees learn a simple framework that will let them safely embrace the scary, messy parts of refactoring work. We start with a realistic Rails codebase – the kind that looks okay on the surface. The kind that clearly was written by well-intentioned people trying their best. The kind that, in spite of those good intentions and that effort, doesn’t effectively support new feature development.

Through a series of mobbing exercises, attendees will practice solutions to common problems like hidden coupling, unhelpful tests, and prematurely DRYed code. After the workshop, they’ll be more able to make safe, incremental, and product-driven improvements to intractable legacy systems.

JavaScript patterns

Many software problems have been generalized as patterns. Some of these are named and documented, some are treated as well-known common practice, and some are shared organically from one person to another. Familiarity with a language or framework’s patterns allows a software developer to apply well known solutions to problems, which means they’re able to bring more value to the customer sooner.

This half-day workshop introduces attendees to a handful of software patterns particularly effective in JavaScript environments. Attendees will learn how to identify when a pattern may already exist, how to find those patterns, and how to apply them.

The set of JavaScript patterns this workshop covers can be tailored to the needs of a given team. Common topics include: encapsulating asynchronous code, front-end state management and routing, API design to reduce client/server code duplication, effective use of prototypal inheritance and function binding, functional programming in JavaScript.

Effective Code Reviews

Code reviews can improve your codebase and improve all participants’ technical skills. But sometimes it feels like neither of those is happening. There are a few common code review traps that developers can find themselves in. Sometimes reviews get rushed through to production, and while no major bugs ensue, longterm architectural constraints are unintentionally introduced. Sometimes reviews become a battleground between stylistic preferences while a team wrestles with what they value as individuals and as a group. And sometimes reviews are blocked for reasons that aren’t as important as delivering value to the customer sooner.

Is your code review process helping you, or holding you back? Are features not shipping because of churn in your process? Are bugs or maintenance costs slipping in that could have been caught in code review?

In this workshop, we work with your team to identify and understand what most holds them back, and coach the team to make code review into a process that helps rather than hinders. After this workshop, your team will have learned

  • How much and what kind of feedback is important to give
  • How to deliver actionable, specific, and kind comments
  • How to identify differences when individuals hold different values
  • How to resolve differences in individuals’ values
  • When it would be valuable to block a PR from being merged

Apprenticeship program design

For many technical leaders, teaching, mentoring, and guiding a newer developer was one of the first steps on the path to where they are today. Are you considering starting an apprenticeship or intern program? This is one of our favorite projects to help develop. We can help you navigate this process, whether you’re at designing the program, recruiting program candidates, mentoring the mentors, or transitioning program alums to full time employees.

Better Coding Through Team Values

How much time does your team spend on technical disagreements?
How long do change requests get bogged down for when something not covered by the existing styleguide is causing the team to delay the merge while they figure out how to achieve consensus so they can update the styleguide?
How much productivity gets lost when one teammate tries to accommodate another, only to learn later that what’s good for one person isn’t best for the other?

What if there were some values your team could agree on, and use as a standard to resolve all these differences? What if when new differences arise, they could create new values that would resolve related differences in the future?

This workshop helps your team explore who they are as individuals, and how that builds into who they are as a team, and ultimately how that colors the technical decisions they make. At the end of the workshop, your developers will be better equipped to work more smoothly as a group. So the next time someone wants to introduce a little Haskell into the codebase, your team will have the answer for what they want to do about it and why.

Drop us a line to learn how we can help your company: [email protected] (or use this form)