If you’ve ever found yourself in a code oriented meeting in which people are going over issues and you find yourself dozed off in the corner – you’ve got an empathy problem. It isn’t explicitly because you’re a jackass (which, you very well may be), but because you cannot relate to the issues. Maybe you’ve never coded a REST interface before, handled the scaling issues of a database, or written the markup for a responsive website. You don’t know what pitfalls exist, what complexities often arise, or what technical challenges are present — it’s all unfamiliar and unknown. To remedy this, a colleague — Willie Miller — and I engaged in what we call “dev swap.”
Willie is an academically trained programmer and has traditionally handled the back end while I do the front end for a lot of the projects we work on together (e.g., Boss Blueprint). In an effort to gain a better appreciation for each other’s work, we started a project in which we swap roles;I would write the back end and he would write the front.
“The rabbit hole for front end development is way deeper than I expected. It was as if I walked to the edge of a pit, dropped a rock, and never heard it hit the bottom.”
– Willie Miller
I, too, felt overwhelmed. I took my first dive into the Ruby language, started learning about web frameworks such as Sinatra and Rails, and discovered the seemingly endless array of libraries available. It was all so different, obviously because I hadn’t written the language before, but also because the types of problems you face are entirely different. As a front end developer, usually the worst thing that happens is a button doesn’t get a gradient, or something may be misaligned. However, oversights in coding the back end could prevent people from accessing the content at all or, even worse still, completely jeopardizing the integrity of the server itself. The issues seemed to have much larger consequences.
After a few weeks of crawling through the project and helping each other out, we found that this exercise had allowed us to become more effective communicators in all of our web-based projects. If I was in a standup, I felt more engaged when listening to the back end developers explain their achievements and their pain points. I was able to ask intelligent questions and offer a different perspective to problems. Before the dev swap I was simply thinking about lunch or what I was going to do after work. After the swap I realized that I had not only garnered some rudimentary understanding of Ruby, but I also gained a more holistic view of the solutions that we as a team were trying to create and implement.
Obviously there are organizational complexities to having developers swap roles. While it would not be wise to do this in the middle of a critical project, there are no doubt times when you and your team are working on a series of lower priority tasks; these are fantastic opportunities for to engage each other in different roles. You may not only gain a more cross-disciplinary team, but also that needed empathy and perspective to help your project’s goals be achieved with efficiency and elegance.
Have you ever done a dev swap? Have you implemented this practice into your team? Tell me about it!