The secret to a great software engineering team...

Some people will tell you it is Aeron chairs, private offices, free soda and maybe even a foosball table.  Sure, those things are nice but they have nothing to do with greatness.  Firstly we need a definition for "great software engineering team" so that we are all on the same page.  The things that I value most in a software engineering team are:

  • Smart - handle any technical hurdles
  • Autonomous - requires little oversight
  • Productive - gets things done
  • Plays nicely together - teamwork trumps heroics any day

How do you achieve these things?

Smart - This initially comes through hiring procedures.  Make the person do the job in the interview.  Yes, that means writing real code (not pseudo code on a whiteboard).  Then ask lots of questions in context.  You will learn how they think and if they are really smart or not.  Hint: Their resume doesn't matter much.

Autonomous - This tends to be a team structure thing.  Do team members have autonomy in their day to day tasks?  Have you eliminated micro-management?  Do they have a feedback loop to improve processes?  Is the team empowered to make a difference?

Productive - What have you done to eliminate barriers to productivity?  Our developers have less than 1 meeting per week on average.  Developers should be designing, building and reviewing great code, not sitting in meetings.  Make sure they have fast equipment and access to the best tools.  We also use Pair Programming to make developers accountable to someone else which eliminates procrastination and improves focus (along with knowledge sharing, higher code quality and better team comradery).

Plays nicely together - Many companies translate this to the "no a$$holes rule" when hiring.  The essence of the idea is do you tolerate someone who is very productive but upsets their coworkers.  We deliberately hire for team players and have baked this into our company's core values.  The result is that people collaborate, learn from each other and enjoy coming to work.

The other secret ingredient that I haven't mentioned yet is learning.  Developers yearn to learn.  If you can create an environment where they are really learning then you have it.  The best developers want to improve every day and achieve mastery.  This can be achieved through interesting projects, unusual challenges, personal career development, being mentored, mentoring others, giving presentations and more.

By the way, we are hiring - if you want to join one of the best software engineering teams on the East Coast, then check out Thycotic.

3 Comments

  • Great post! Definitively a must read.

  • Great vision and excellent company culture!

  • About smart: I've never found interview coding to be that definitive. I would rather talk to someone about the processes, technologies, architectural pattern, etc. that we use. It's pretty obvious after about 2 minutes if the person is smart or not. Plus, it takes a good deal less of my time than setting up a test scenario then reviewing it with them.

    I have a collection of technical topics I love to talk to interviewees about. If they are talented and smart, those conversations go great. I've only missed on 1 in 10 using this approach.

    As for the rest, I agree completely. This combination makes great teams. Thanks.

Comments have been disabled for this content.