We all know that good software developers are hard to find. Once you’ve assembled a group of strong talent, you begin the process of turning this set of misfits into a lean, mean, coding machine.
A group of individual software development ninjas is great, but if you want to keep your processes sharp, you need to find a way to turn those individuals into a team that can perform well together, producing and supporting the best software products that your customers hope for, right on time.
Albert Einstein once said that “The greatest scientists are artists as well.” Taking a step back, we can see how great developers can be compared to other kinds of artists who join together to bring their visions to life.
Talented musicians, in particular, share many of the traits that we look for in good coders. Good musicians are detail oriented and notorious perfectionists to a fault. They’re at their best when they’re analytical, logical, and methodical. Sound familiar? That’s probably because those are the same traits that our best developers have. As Alex Jacobs said in his Medium blog post, “Ultimately, a software package can be compared to a musical composition.”
Developers have said that making music and creating software are similar endeavors in that they require both collaboration and independent work. So how do you make sure that your creative and independent programmers work together to create the best collaborative products while making sure each one’s magic touch still shines bright?
If programmers are like musicians, one way to make sure that they give their best performance is by following the same principles that let a rock band fill a stadium.
A good band can own the stage, delivering a stellar performance without any outside help. Asking for advice is one thing, and of course, every good group needs the sound tech and lighting crews to make them shine, but whether it’s time to write your song or take center stage and deliver, a good band should be self-sufficient and know how to stand its ground.
Sure, your development team is supported by other teams in the organization, but when it comes to creating innovative software, they have to be able to rely on themselves to deliver, without having to depend on outside help.
Once the entire team understands the processes, policies, goals, and vision of their organization, it’s time for each member to branch out to their own domain. Each individual on the team can and should hone their own unique skill set, which will be made great when their efforts are combined.
A good team should be able to leverage each member’s secret ingredient to deliver an excellent product, complete with their trademark special sauce. Deep Purple were awesome because Ian Paice killed it on drums, John Lord worked his magic on the Hammond. If the entire band is great at playing the bass, then who’s going to make sweet music on vocals and guitar?
One of the most important things a good band member can do is know when to end the song. When it comes to good music, less is more, and filling a song with endlessly complicated riffs doesn’t necessarily mean you’ve delivered a good one.
The same goes for writing code. We’ve all met (and some of us have been) that young and eager developer that’s proud of getting 100 lines of his code into the project. Developers with experience under their belt are even prouder when they delete 100 lines of code and know that they cleaned up the code, and created an awesome project that runs smoothly.
This may be the most important principle to follow — and possibly the hardest.
Once every member learns how to keep their tracks clean, they need to pay close attention to what’s going on around them. If each band member plays whatever they want, whenever they want, and without being aware of what the rest of the band is doing, then you’re not going to get much of a performance, It will just be a cacophony.
Listening is what allows cooperation. Every developer on the team has to know what the plan is, how it’s going to be executed, and how every member of the team fits into it. That way, the software team as a whole, and each individual developer that’s part of it can deliver the best performance.
One of the biggest mistakes musicians can make is to improvise without knowing the basics. Good improvisation is based on structure. Once a strong and solid foundation has been built, and every member of the band owns their role — that’s when we can really start jamming.
A strong software development team also needs to work with an established set of standards and solid architecture, ensuring that every last member of the team knows their role inside and out. That’s the starting point that allows real creativity to flourish into innovative software.
Tour dates are set. That’s how it works. As much as they practice, eventually the band has to take its place on stage. That fated date will always precede perfection.
Software development isn’t much different. Done is better than perfect. Developers might keep fidgeting with every bit and byte, but at the end of every sprint there is a deadline, and a new version must be released. Then, you and your team can get back to improving your software, iron out the kinks and adding more showstoppers until the next deadline comes along.
Make sure you schedule some fun in between sprints. We always conduct our retrospectives with a drink in hand. It’s a great way to celebrate the end of a sprint and helps the team members decompress, break out of their shells, and (re)connect with each other.
When people feel connected they communicate well, and good communication makes for great teamwork.
Musicians and coders are a creative and dedicated bunch, that march by the beat of their own drum. Creating awesome music, or software, is a mysterious process that most can’t explain, including those of us sweating over the process.
That said, the success rates of these tried and true principles speak for themselves and are worth sticking to. So whether you’re in a recording studio, on stage, or cranking out the next great software project, happy holidays from all of us at Mend, and rock on.