Building a good team takes effort and time
Building a good team takes time and effort. It’s a long-term commitment that involves knowing what you want from a skills perspective, but, more importantly, from a cultural and shared-values perspective as well. Professional life, just like the rest of it, should be enjoyable, and that means it’s important that the people we work with care, are professional, and are nice.
Here are some of the things we’ve learned since 1995 regarding team building...
It takes general and specific skills, in each person
If you know software, you know that it takes a long time to really, truly master a technology, even more so to master the full technology stack. Analogies include learning a foreign language, an instrument, or a sport. In a symphony, no one is expected to know all the instruments; rather, each person is expected to be exceptional in playing a single instrument. We hire good people and good software developers, people who are exceptional in what they know, as well as aware, if not also deeply skilled, in the related technologies surrounding their areas of interest. In addition, most are generalists who can quickly learn and apply other technologies much like a skilled athlete can pick up another sport quickly. However, they are experts in only a few areas, so that their focus and, as a result, their skills are not diluted.
Lifelong education is a privilege and essential for continued growth
Every day, we are teaching each other in a hands-on manner through peer code and architecture reviews, interactions, and the deep experience that comes from being in the details day in and day out, building out solutions for our clients and learning from them while we do so. Outside of that, we attend conferences, lectures, and IT community events, in addition to reading and watching instructional content. People who are passionate about what they do cannot stop learning.
It takes leadership that's committed to the team
Our team members have full support of the leadership and management teams to learn, try new things, and help others improve. Whether it's a conference, books, a new tool, or some time, we provide it. Our leaders coach people throughout the organization, and constantly ask for feedback so they can improve. We promote those who act according to our C4TM principles (Communication, Commitment, Care, and Consistency). If there's a bad apple in the company, which happens in just about every company we've encountered, the bad apple gets removed; we don't punish everyone else because of the problems of a single person. Finally and importantly, everyone is expected to lead and manage, even if it’s "only" themselves as people and professional programmers and technologists.
It takes good hiring practices
We have a lot of tools in our interview kit, including: multiple interviews with people throughout the company, code reviews, code exams, logic puzzles, assessment of live work, and more. Our goal is to find people who are passionate about what they do, take ownership of commitments, communicate exceptionally well, care at the personal level about outcomes, and care about you, their work, and their peers. Though the attraction is there sometimes to hire superstars, we don't if they fail to communicate well or have confused the difference between arrogance and confidence. People won’t be happy and won’t last unless we have shared values, meaning that it’s important that we hire like-minded people since it enables the work experience to be more enjoyable for everyone, both for ourselves and for our customers.