I’ve been a musician most of my life. I was in bands when I was in junior high up until I joined the Army at 19. I started writing software a few years after getting out of the military and kinda put music to the side. Recently, I’ve started to play in bands again, and something struck me about the dynamics of playing with other musicians and how that prepared me for writing software on a team. I’ve been writing software professionally now for over twenty years. There are many parallels, so I thought I would share some of those lessons hoping that it might help other programmers work more effectively in a team. Writing software, after all, is a team sport.
Practice Your Craft
As a musician, you should practice your parts for the songs you’re playing with the band and also practice getting better on your instrument in general. The better you play your part, the better the team will be, but never forget that your part is just one part of a larger whole. This means practicing and perfecting your part before you get to rehearsals. The more prepared you are when you get to rehearsal, the better the band will sound at rehearsal.
In software, this means continuing to learn about the languages and platforms that you program for. Take time to read that blog post, or watch that tutorial, or read that programming book. You don’t want to let it consume your whole life (work-life balance is extremely important), but you can just carve out one evening a week where you spend time improving your skills for an hour or two without becoming a workaholic.
Let Go of Mistakes
When you mess up, learn what you can from the mistake: was it just a typo? Or a more serious deficit in your knowledge? Then, let it go. It’s easy to dwell on mistakes, but that will only force you to make more of them. You don’t want to ignore a mistake completely, but learn what you can and move on. I’ve always thought that the best musicians in the world are the ones who can make a mistake instantly learn, and then forget it. Just keep playing.
This goes for coworkers as well. Your band/teammates will make mistakes as well. Believe me, they know they messed up. Fix it, and move on. They probably already feel bad enough, and you might be surprised at just how far a “That’s okay, you got this” will go to creating a really strong team bond.
Celebrate Bandmates Successes
It’s important to celebrate your bandmates’ victories, accomplishments, and those times when they just kill it during a performance. Not only does this form a stronger team bond, but they will undoubtedly return the favor. It may seem like a small thing, but it can really make someone’s day. Everyone wants to feel like that “rock star” from time to time, and band members will remember that feeling of killing it and want to do it all the time. This will also make you want to have more of those moments too. Everyone’s performance will improve, and the band will sound fantastic. There is nothing like being on a team of high-performing players, whether you’re playing a local dive bar or building a large software system.
Stay On Good Terms
If you must part ways with a member, do your best to part on good terms. Bad feelings are too heavy to carry around, and that weight affects your performance (on and off stage). Plus, whether you live in LA or Springfield, IL, you’ll likely see those same players around your local scene, and you don’t want anyone running around with bad feelings about you. You might find yourself in a band with them later, and you don’t want things to be awkward or to not even get the gig because of one person.
On the flip side, welcome new members with excitement. Do your best to include them in band activities and make them feel like they’ve ALWAYS been part of this group. Being a new member of the team is stressful and can be isolating. You’ve probably been the new guy before too. The band will sound better and playing music will be more fun.
Everyone has a solo once in a while. It won’t always be you. It’s important that all of the members of the band get a chance to show off their talents. When it’s your turn, let ‘er rip! When it’s not your turn, do whatever you can to make sure that you’re playing in a way that helps to highlight just how badass your teammate is. They will do the same for you when it’s your turn to shine. This, again, creates a tighter team bond and makes playing with your team that much more enjoyable. You’re going to be spending a lot of time with these people, do your best to make it a joy to work with them.
Nobody likes a know-it-all anyway. If you’ve ever been on a team where one of the members believes they’re above the team, it can be quite demoralizing to the team and really affect the team’s performance. Don’t be that person. If you really feel like your skills are way above the team you are on (it happens), find another team. Sometimes that is a great signal that it’s time to move on. You might also find other ways to serve the team, like helping them in areas where they are deficient. This can be a little tricky since you don’t want to seem like a know-it-all, but if you see them struggling, you might just say, “Hey! Want some help?” You might even find you have a knack for teaching and find yourself a new career direction!
Not Every Song Will Be Your Favorite
I’ve played in a lot of cover bands, some originals bands as well. Not all of the songs we played were fun for me. Maybe my part was boring; maybe I just didn’t like that particular song. It’s fine. It is important to remember that you are doing this for someone else. When you’re putting together a setlist, you try to play songs that the audience will enjoy. Sometimes those are songs you don’t really like.
The same goes for software. Sometimes you might get tasked with the “grunt work.” Maybe it’s a task you don’t really like doing. It’s important in those times to remember the team’s goals. What are we trying to accomplish here? Understanding how an unenjoyable task helps the team make better software can be the key to making those tasks more bearable.
Over the years, I’ve met a LOT of developers. There seem to be a lot of you who are musicians. So what did I miss? Any tips along the way you’ve found that made you a better team member or made your work more enjoyable? Please share your tips below in the comments.
If you’d like to learn more about programming with Okta, check out these other blog posts:
- Reactive Java Microservices with Spring Boot and JHipster
- Build a Secure GraphQL API with MicroProfile
- Easily Consume a GraphQL API from React with Apollo