We frequently use the term “driving” at Atomic to describe one of the developer roles while pair programming. It’s the driver’s job to navigate the codebase and write the code for the pair. In turn, the passenger checks for blind spots and watches what the driver is doing.
When I first started working full time, I reflected that driving while pair programming seemed similar to driving without a license. It felt like I was fresh out of driver’s ed with only a learner’s permit and an experienced passenger to guide me. That, and a frequent thought running through my head: “Who in their right mind let me steer this thing?”
Much like when I first started driving, it seemed like a lot of the information from my formal education was only a stepping stone. I found that the most helpful learning for driving well while on the job came when I was at the wheel. There are several parallels between learning to navigate your first full-time job and learning to drive straight out of driver’s ed.
The following are a few things that I’ve learned that may be helpful if you, too, are new to driving in your field.
Learn as you drive.
The first time you step into a car, you’ve spent a few weeks learning about the fundamentals of driving. However, you likely didn’t learn all of the inner workings of a car, because you didn’t need to. To drive, you only need to know the essentials, and to drive well, you need quite a bit of practice.
The same is true when you start your first job, but I convinced myself of the opposite. I believed that to be good at my job, I needed to learn and understand the deep inner workings of the technology we were using. I also underestimated the value of being behind the wheel.
As a result, I initially pored over information, trying to absorb as much as I could. I should have focused solely on how to turn the car on and navigate well. Instead, I also tried to learn how to turn all the gizmos on, what was going on under the hood, etc. It was information overload and the approach was unsustainable.
The reality was that I didn’t need it to be a decent member of my team. I could be good at my job without knowing a lot of the details related to the languages and frameworks I was using. What proved most valuable came from the experience of driving or watching other drivers cruise through a treacherous feature.
Sure, it might help to know the inner workings of a car when it makes a strange noise. But, you don’t really need to know about what’s under the hood the first time you drive. Plus, you can pick up the extra information that you do need to know gradually.
Focus on what’s immediately important.
With so much to learn, part of my problem was that I didn’t have a clear strategy for narrowing my focus. One of the first developers I paired with offered me advice I’ve frequently returned to in the past year: consider your level of understanding the details and how that correlates to what you’re working on.
When a pair handed me the wheel, I knew more about the details of the motor than I did about how we were going to get to our destination. I took it as an indication that I should learn more about our tech stack. In reality, I learned it was more valuable to anticipate where we were going and use that to inform what I focused on.
If I anticipated that we’d be coming across a storm, then I should probably learn how to turn on my wipers. But, if it wasn’t going to be raining, then I’d save learning that detail for another day. If you don’t understand a detail of what you’re working on that’s relevant to where you’re going, then ask questions and learn. However, if you try learning about a detail that won’t help you get where you’re going in the immediate future, you’re going to forget it.
Adjust your seat.
If you’ve ever tried to drive a car after someone else has driven, then you know that it can be quite uncomfortable if you don’t adjust your seat. My mom has long legs; my brother has short legs. I can always tell who was the last person to drive the car. But what’s effective and comfortable for them, isn’t for me. I need to adjust the seat to be a better driver.
If there’s anything I’ve learned from consulting, it’s that every approach has tradeoffs. From what I’ve experienced, driving and how you approach your job is not a one-size-fits-all situation. If you treat it as such, you will be a very uncomfortable driver.
One of the major benefits of driving and pair programming is learning from another person. It’s helpful to see different strategies for driving when building your own approach. However, trying to replicate exactly how someone else drives will likely cause you discomfort. As a result, I’ve experimented with a couple of different approaches and techniques that I’ve seen in order to form my own style.
Don’t forget your mirrors.
I rarely forget to adjust my seat, but I always forget my mirrors until I try to look in my blind spots. Then I realize my perspective is misaligned with where I’m sitting. Initially, there were times when I was approaching a problem or situation differently than my coworker(s) or team. Being new, I assumed that the way my teammates saw things from where they sat must be the best.
It’s tempting to presume that one perspective or approach is right or wrong. However, what I have found far more helpful is seeking clarity on why my view is different. I can then either adjust my mirrors appropriately or use my unique perspective as an asset. Don’t immediately assume that your different whatever-it-may-be is negative. Rather, use the opportunity to either learn or to add another valuable voice.
Learn from your backseat drivers.
When you first get a permit, you have to drive with another experienced driver at all times. When they’re not clinging to the dashboard for dear life, take the opportunity to learn all you can from them. I’ve seen numerous times how invaluable it is to have a passenger by your side. They can help you catch your blind spots, and they usually see things that you don’t.
Your coworkers have likely been driving through far more work experience than you, even if they’ve only been at their career a year longer than you have. Use those years of learning to your advantage by leaning on their wisdom and expertise; you’ll be a much better driver for it.
Keep your eyes on your lane.
After finishing the driving class, you’re required to drive in a car that has an obnoxious warning on all sides that reads “STUDENT DRIVER.” Nobody puts a student driver in a brand-new Corvette and expects them to zip in and out of traffic like a Nascar driver.
Yet, when I first started, I found it difficult not to compare myself to senior drivers while pairing with them all day. I’d wonder if and when I’d get there, or worse, if I should already be there. I wanted to speed down the road of a feature we were developing quickly and safely like the more experienced drivers.
Since your gaze determines your direction, you’re not going to be a good driver when you’re staring at the car in the next lane. Comparing yourself to more experienced colleagues will create dissatisfaction. Your coworkers may seem to be navigating work situations with grace and ease, but be sure to remind yourself that they too started where you were.
As a senior Atom advised me, avoid putting unrealistic expectations on yourself when nobody else is requiring the same of you. Instead of becoming discouraged by comparison, I realized it was powerful to use it as a tool for improvement. Rather than wishing that I could drive like someone else, I started asking myself, “What is it about their style of communication, pairing, client engagement, etc. that I appreciate? How can I incorporate that into what I do?”
Much of what you may run into while driving is far outside of your control — construction, visibility, and, if you’re in Michigan, a plethora of potholes. You can, however, control how you drive in response to those circumstances.
There’s a tendency to overestimate what we can control. However, our circle of control is frequently far more limited than we care to admit. Particularly in the field of consulting, constraints change in unpredictable and uncontrollable ways. These changes require flexibility and adaptability.
If you strive to be the ideal driver, you’ll drive yourself crazy because your driving conditions are infrequently ideal. Giving your best, under those unpredictable circumstances, will look differently than your best under optimal conditions.
What I’ve found helpful when trying to release control is discerning what I can and can not control. I’ve also found it helpful to own what I could have controlled, move on from what I couldn’t, and do the best with whatever remains.
Above all, try to enjoy the ride. That’s much easier said than done when you’re accidentally running over squirrels or driving on a tank of fumes. But, there’s plenty of fun and learning to be found in between. Hopefully, you’ve found some of these tips useful. If there’s anything that you found helpful your first year, please drop a comment below!