Why Developers Should Cross-Train
MC
Developer Training
I’m not a big follower of sports in general, but they can serve as a good metaphor for development.
Software engineering is sometimes mistakenly thought of as one big sport; i.e., if you’re good at PHP, you must be good at Python – since they’re basically the same thing, right?
Well, no. Not at all, really. If you’re a great developer who’s worked with many languages, you’ll pick new ones up way faster, sure. Since he was a basketball legend, Michael Jordan picked up baseball faster than…say, me (a very non-professional athlete), but that didn’t mean he was automatically a baseball god, or even great at it compared to those whose profession was baseball.
Experience with a sport will help you get good at another sport. But they’re not automatically interchangeable.
Software engineering is similar. It’s not one big sport; it’s a collection of sports, each which focuses on different skillets. Client-side languages are very different than server-side languages. Mobile development has many of its own traits. Front-end and back-end development share some qualities, but are in many ways very different worlds.
That said, I’m a big proponent of having developers have one area of specialization (front-end, backend or mobile for example). But they should definitely dabble in the others.
Benefits of developer cross-training
Here are some of the benefits of having developers spend time outside their specialties:
- Empathy. Different types of devs have to work together on any given product; trying on each others shoes can make them understand each others’ challenges better and therefore increase team cohesion.
- Communication. If a dev has experimented with other specialties, she can speak the lingo better and understand concepts that devs in other areas approach them with.
- Improving the core skill set. A front-end dev will get even better at front-end when she’s tried out some back-end coding and/or mobile. The javascript code he writes needs to make ajax calls to the backend, or may have to run within a an iOS web view; each of those situations will have its own unique challenges. So experimenting with the technologies that interact with his code will ultimately improve the front-end code that he writes.
- Possible specialization changes. Someone may be a Django developer and not realize that they have a true love for mobile until they try it out.
- Improving the brain. This may seem outside of the discussion of technology, but it shouldn’t be. The more diversity in the types of things we learn, the more we increase our capacity for learning, reduce our risk of things like alzheimer’s disease and general cognitive decline. A healthy brain long-term means quality development work long-term.
How to cross-train developers
Getting cross-training in can take a number of forms. Two that come to mind are:
- Group show and tell sessions. Devs can take turns demoing features they’ve written and explaining how they work.
- Study time & peer review. Devs of different skillets pair up. Each dev takes on a small project involving the other dev’s skill set. After they both write something functional, they review each other’s work and make corrections.