Our Uncomfortable Refactoring workshop is usually offered remotely.
We have some limited availability to offer this on-site in the SF bay area July 10-12.
Email us at [email protected] or use the form below to learn more.
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.
- Interviewer Skills and Recruiting Process
- Uncomfortable Refactoring
- Effective Code Reviews
- Apprenticeship program design
- Better Coding Through Team Values
Looking for more targeted help? We do that too!
Interviewer Skills and Recruiting Process
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
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.
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.
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)