If there is one thing that I have learned in my life, it is that you never learn anything by surrounding yourself with people who agree with you. Putting yourself in a giant echo chamber only serves to amplify and reinforce all the the ideas and beliefs that you hold. And at the same time, it amplifies and reinforces all of your prejudices, stereotypes, and superstitions that you hold.
The same holds true for your career as a developer, you’ll never learn anything new if all you do is surround yourself with other developers who are using the exact same tools and patterns as you. Unfortunately, it is really hard to not do that. How do you surround yourself with developers that don’t use the same tools and patterns as you? I don’t know about you, but most of the teams that I have worked on mostly use all of the same tools and patterns. They solve problems in the same way, and they rarely stray from the tools and patterns that they are most familiar with. And there is a reason for that! A high performing team will leverage the tools and patterns that they know work well, while bringing in additional tools as patterns only as they need them. This allows them to reliably and predictably deliver quality software. This is often an ideal case though, many teams rarely, if ever, bring in new tools and patterns for fear that they will introduce too many unknowns.
Continue reading →