How to Recruit and Build an Effective Team of Developers

Hiring great developers is one of the top challenges cited by many technology startups, if not THE top challenge. It doesn’t have to be that way. Here is a technique that will help you put together a high-performing, cost-efficient, and loyal team of technical engineers. I’m writing this from the standpoint of software engineers, though I have been told it could apply to hardware engineers as well.

The premise is to have the right mix of junior developers to veteran developers (perhaps a 80/20 mix), because:

  • New developers are relatively easier to find, especially from schools and development boot camps.
  • New developers can be easily trained and don’t come with a lot of baggage.
  • New developers can bring new ideas to the team that may challenge traditional ways of thinking.
  • Veteran developers can act as mentors and share best practices.

From a recruiting standpoint, it is easier and less expensive to find and hire novice developers than experienced ones. A lot of large corporations already know this. That is why you often see Google, Facebook, and Microsoft on college campuses. Startups need to do this too.

Changes to Recruiting and Team Building

This has repercussions in the recruiting process and team dynamic though.

Recruiting Senior Developers

  • Strong technical skills are of course required. System architecture and design skills may also important, though it depends on your needs.
  • Interpersonal skills are especially important in this model, specifically the ability to coach others and communicate abstract concepts clearly.
  • Including other developers on your recruiting team to help you attract senior developers will really help.
  • This person does not necessarily need to be a manager or team lead. There can be separate manager/lead and senior developer on the same team, where the manager/lead handles more of the interpersonal tasks and the senior developer handles more of the technical tasks. The key is to have someone experienced enough to coach and guide the junior developers. This is both good for career progression and recruiting ease, because good developers are attracted to teams from which they can learn.
  • A person that embodies the first two points well is not easy to find, though you will have an easier time having to find a few of them vs a whole team of them. If you find one, compensate that individual well. You can also train someone for this role with a combination of opportunities within your company and workshops outside of your company.

Recruiting Junior Developers

  • Interviews need to be more about assessing potential, innate talents, and the ability to learn, than gauging existing skills. These are traits that interviews would assess anyways, but most technical interviews aren’t set up that way. Most interviewers may find it difficult to assess such traits, but this is an interviewing skill that can be learned.
  • Include your senior developer on the recruiting team. Junior developer candidates will get to meet their potential mentors right away and both sides can ascertain if there is a good fit.
  • As a startup, you won’t have the same salary and perks a large corporation can use to attract candidates, so sell them on your mission, impact, team, and learning opportunities instead.
  • I should add that “junior” does not mean “young.” Age has little correlation here. Some of the best developers I know changed careers later in life and still share the same energy and ability to learn as recent college graduates.

Training Junior Developers

  • Both the manager/lead and the senior developer (or the same person, if one individual has both roles) hold a key role in training the junior developers. Work with them to set up training plans for each of the junior developers.
  • Establish an environment for constant learning and collaboration. This can include code reviews, paired programming sessions, informal brownbags, formal mentoring programs, etc. For informal brownbags, encourage the junior developers to host them and share something they learned, even if they aren’t considered the “expert” of that particular domain. Teaching a topic is a great way to learn that topic.
  • Such an environment also requires a company culture to match. The culture needs to be supportive, open-minded, and willing to take risks. Setting such a culture needs to start with the company’s founders and leadership team.
  • This also means giving junior developers opportunities to own aspects of the codebase while getting support on their system design and code. Don’t simply throw junior developers into new features all on their own. Have regular check-ins and code reviews to guide them along the way.
  • Training doesn’t need to only be technical. If a junior developer aspires to be a manager one day, offer leadership opportunities and training. And if not, make sure your organization has a technical career path.

With the right environment and guidance, these junior developers eventually became senior developers that can help mentor other new developers and continue the cycle as your organization grows.

Product Development Speed vs Product Development Velocity

Ever hear someone say they are concerned with the speed of their product development process? Every time I do, I can’t help but cringe a little.

I’m all for Build Fast & Iterate Quickly. Any technology company not moving at lightning speed will stagnant like a still shark. By all means, go fast.

Product development speed isn’t the right trait, however. It’s product development velocity. For the average person, there is a subtle difference between the two terms. But to an engineer, it is an important difference. Here’s a quick recap of the definitions:

  • Speed is a scalar quantity. It is the rate of change of an object’s position.
  • Velocity is a vector quantity. It is the rate of change of an object’s displacement.

(Confused? That’s okay. Watch the Khan Academy’s Introduction to motion for a quick refresher of high school physics. No one will know you did and you’ll feel all the smarter for it. hehe.)

Or, to put it into plain English: velocity is speed with a direction. If you take two steps forward at 2 mph, then two steps back at 2 mph, your speed is “2 mph.” But since you haven’t changed your location, your velocity is 0 mph. If you took four steps east at the same speed, your velocity would be “2 mph east.”

This is why product development velocity is more important. Your direction matters. You should be moving forward. Or at least away from where you currently are. If you’re moving quickly, but in circles, that’s not progress. That’s a waste of time.

It’s fine to move forward, to the left, or to the right. As a business, the goal is to move somewhere new. Every time you cover new ground, you have an opportunity to learn something you didn’t know before, to capture invaluable data. You need to uncover the Fog of War of your market and understand your landscape. You can only do that by moving in some new direction.

In other words, Build Fast, Iterate Quickly, and Move Forward.

Photo by: Mauropm

Business Scalability

Scales I’m obsessed with scaling.

Not in the technical, keep-the-Fail-Whale-away sense. In the business sense.

Every time I work on a particular business issue, I can’t help but think: “How can I scale this process?” What can I do to increase efficiency, to produce more with less effort?

This is, of course, rooted in laziness. As Carl Stoddard said: “If necessity is the mother of invention, then laziness must be its father.”

Have you thought about how you can be more lazy with your business? About how you can make your business operations more efficient?

Thinking About Scalability in a Service Business

To get you thinking about business scalability, here are some processes we’ve set into place for our web development agency, WebMocha. A service business like ours is different from a product business, so keep those differences in mind if your business is of the latter type.

Scaling Resources

Revenue potential in a service business is tied directly to your resource capacity. The more talent you have, the more client projects you can take.

However, resources are finite. So how can you scale your resources?

By increasing their productivity. This can be done through training & mentoring, providing them with efficient frameworks & methodologies, automating repetitive tasks, and removing roadblocks from their paths. Doing this well requires careful examination of their workflow, since a well-intentioned but unenlightened process addition can sometimes hurt more than help.

This is why service companies that have been around for years tend to be better than newer shops. Assuming they’ve been actively scaling their business, they’ve had more time to study and improve their methodologies. The result is more value for their company and their customers.

Scaling Clients

Another revenue driver of a service business is the number of client projects you can get. The more paid projects you have, the more revenue you are making.

However, finding customers is difficult. So how can you scale your clients?

By increasing the number of projects you get from existing clients. Since customer acquisition costs are high, if you can encourage current & previous customers to pay for your services again, you’ve skirted those acquisition costs. This requires providing high-quality work, personalized attention, thoughtful follow-up, going above & beyond, and an attitude of “we’re all on the same team” as opposed to “us vs them.”

Another way to scale your clients is to streamline the customer acquisition process. This requires exploring various channels and analyzing which offer the most efficient conversions. For some companies, it’s SEM. For others, SEO. Yet others, social media. For us, it’s the use of brand champions and word-of-mouth marketing. An analysis of our channels has taught us to focus on what works best. The other channels are de-emphasized: we do a little SEO and social media marketing, but no SEM at all.

What Can You Do?

Look at your business processes. Your resources, customer acquisition process, marketing tactics, inventory, distribution channels, etc. If you have the data, examine each one to see where you can be more efficient. If you don’t, instrument your processes to get some data. Or interview your employees to get some qualitative information.

Then you’ll need to think creatively. The answer isn’t always obvious. Talk to a mentor if you have one. Post a question on LinkedIn Answers or Bright Journey if you want outside help. Or even better, talk to your employees. The people doing the actual work will often have lots of good ideas. After all, this will be making their lives easier.

Then you can sit back and revel in your laziness.

Photo by: ~Brenda-Starr~

Creating Rock Stars

Circus at the Taste of Chicago You know what’s better than hiring rock stars? Creating your own.

This entry is the third entry of a three-part series on rock stars.

The Rock Star Series

Creating rock stars is definitely possible. And cheaper. Also, internally-grown rock stars tend to be more loyal than those from the outside, since they appreciate the investment you’ve made in their careers. Hiring outsiders can cause dissatisfaction amongst the current staff too. In short, it is much better to grow your own rock stars than to hire them.

Once you know how to do this, you can replicate the formula throughout your organization. So instead of giving you fish, now I’m going to teach you how to fish.

Hire individuals with potential
There are several elements hiring managers typically seek: current skills, relevant work experience, personality fit, and innate talents. When hiring individuals with the potential to become rock stars, emphasize innate talents & personality fit and deemphasize current skills & relevant work experience. A talent is an aptitude with which an individual is born. Look for a talent that is relevant to your role. The right personality fit includes not only a cultural team fit, but an eagerness & ability to learn, a comfortability with making mistakes, a passion for the work, a strong sense of integrity, and the inclination to be proactive and take initiative. Skills & experience can be gained later. Note that there’s a slight bias towards younger employees here, but I’ve always been a believer that you can teach an old dog new tricks.
Identify good teachers and mentors
Good teachers and mentors are hard to find, perhaps just as hard as finding rock stars. Also, rock stars don’t necessarily make good teachers, and vice versa. A good teacher is someone who can break down the fundamentals in a meaningful & digestible way, apply those concepts into actionable & real-world situations, and understand each student well enough to educate them in their particular learning styles. Teachers should also have enough subject competency that the students respect their knowledge. If such individuals don’t exist, ask for volunteers amongst your rock stars and send them to training on how to be effective mentors. Self-motivated individuals make the best mentors.
Offer lots of training opportunities
If you don’t have good teachers on staff, seek out group training opportunities outside of your organization. Not all workshops & seminars are created equal, so it will take some effort to find the good ones. The effort will be worth it though. Workshops & seminars aren’t the only options. In the software development world, paired programming, code reviews, and project post mortems can also be extremely helpful. One more tip: asking someone to hold a workshop can also be an effective training tool for that person. Sometimes, the best way to learn something is to teach it to someone else.
Set up a mentorship program
While you seek out group training opportunities, establish a mentorship program with your willing & able mentors. Personally, I think formal mentorship programs aren’t organic enough to grow rock stars. They do a fair job transferring skills, but don’t imbue apprentices with rock star habits and mental models. For that, you need something with deeper involvement. Proximity, exposure, and having someone officially in the role of the mentor is important. In the software development world, paired programming can do this, as can shadowing and being placed on the same projects. Mentors & apprentices should have some kind of regular dialogue, though I’m undecided about the effectiveness of structured lesson plans and goals. Feedback from both parties is essential, however, so the mentoring relationship can grow.
Cultivate a culture of learning
Your apprentices need time to learn the right chords and practice their arpeggios before they can become full-fledged rock stars. This requires an environment that encourages education, such as tolerating mistakes, celebrating achievements, sharing lessons learned, and solving problems collaboratively. Learning is and should be fun; if your fledglings are enjoying their apprenticeships, they’ll become masters very soon. Books like The Fifth Discipline can also offer more tips from an organizational standpoint.

How do you create rock stars in your organization?

The Rock Star Series

How to Manage Rock Stars

Musicians at Gordon & Mona's Wedding Now that you’ve hired a rock star, what do you do? After writing about the recruiting process for rock stars, I decided to expand to a three-part series. This is the second topic on my series about rock stars.

The Rock Star Series:

Contrary to popular belief, dealing with rock stars isn’t necessarily easier than poor performers, and certainly not easier than average performers. In order to keep your rock stars productive, on your team, and still jamming out hits, you’ve got to manage them differently.

A quick word about my management style. I use what I call a talent-driven management style, adopted from books like First, Break All the Rules & Now, Discover Your Strengths, the latest management research, and my own experiences as a people manager. My techniques are biased to my particular style and may not work in all situations, though they’ve worked well for me.

Rock stars need to be managed differently
Despite what you might think, you shouldn’t manage everyone on your team in the same way, just like you shouldn’t raise all of your kids in the same way. Every individual is unique, with different motivations, working styles, and temperaments. So really, this tip is good for everyone on your team, not just the rock stars.
Rock stars need effective work environments
Those who were rock stars at previous companies may have reached that status because of the environment there. Try to replicate as much of that environment as you reasonably can, while giving them opportunities to learn how to best work in your environment.
Rock stars need interesting & challenging work
A large reason why rock stars are rock stars is because they thrive on challenging work they care about. Align them with work that matches their personal passions. Make sure you give them a steady stream of such work to keep them motivated. Grunt work may be inevitable, but be aware that rock stars are more apt to leave if they become bored because there are so many opportunities for them elsewhere.
Rock stars need to be monitored closely
You don’t want to lose any of your employees, but you especially don’t want to lose your rock stars. Check on them every so often, both from a workload standpoint and a personal standpoint. See how they’re doing and how they’re feeling. It does mean more work from you, but if they are happy with their jobs, they’ll remain productive. However, be careful not to hover over or micromanage them.
Rock stars can be used to train others
With all that knowledge & skill in their heads, why not try to spread it around? If they are willing and able to, ask your rock stars to hold workshops and seminars for the rest of your team. Knowledge sharing can be very powerful, both in building relationships, providing recognition, and increasing the productivity of others.
Rock stars need to be recognized
Most people enjoy recognition as a reward, and rock stars are no different. Asking them to hold training sessions is one way to recognize their expertise. Giving them positions of authority is another, such as team lead, planner & architect, project evangelist, etc. Awards and monetary compensation are other good methods.
Rock stars need to be inspired
Since they have so many employment options, if they are not doing something that they are passionate about, don’t feel a genuine concern for their welfare, and are not being rewarded appropriately, they will leave. You need to give them a reason to be loyal and inspire them to stay. If you can do that, you’ll have a rock solid team.

How do you manage your rock stars?

The Rock Star Series:

Why Apple Will Not Always Build Great Products

When I look at an Apple (AAPL) product, I just want to say, “How you doin’? That’s because Apple makes some damn fine-looking products.

Last week, I stated my theory as to why this is: Apple prioritizes product design over all else. When compromises in features or manufacturing cost need to be made, they uphold the beauty of the design first and foremost.

However, I don’t think this will last.

Their paramount emphasis on design comes from having an influential and high-ranking design champion: Steve Jobs. If a product VP dares suggest a design alteration to lower the cost for consumers, Jobs would probably lash back. He’s already known to be a critical micro-manager, so I don’t think this is a stretch.

What this means is the DNA of Jobs is closely interwoven into Apple’s products. So close that building an Apple product without him might be impossible. When Jobs departs, I don’t think Apple will continue creating such elegant and visionary products anymore. And no, I don’t think any of his possible successors can do the job.

For better or worse, Jobs is a product visionary, not an organization builder. As Jim Collins concluded in his book Built to Last:

If you’re involved in building and managing a company… think less in terms of being a brilliant product visionary or seeking the personality characteristics of charismatic leadership, and to think more in terms of being an organizational visionary and building the characteristics of a visionary company.

I could be wrong, but I don’t think this has been Jobs’ focus. Apple’s product design process is intrinsically tied to Jobs. Without him relentlessly prioritizing design above all else, the company won’t be the same.

Why Apple’s Products Look So Good, and Why Others Don’t

I am the furthest thing from a Mac Fanboy, but even I gotta admit: Apple (AAPL) has some damn fine-looking products.

Why is that?

Could it be Apple’s product designers? Are they just that phenomenal? Could be, but other companies have great product designers too. I’ve known and worked with many. Apple doesn’t corner the market on phenomenal product designers.

My theory is that it lies in their design process.

Here’s what I imagine happens at Apple:

At the start of the design process, the product designers brainstorm and come up with various incarnations. They are shown to Jobs for approval. He selects one and the feedback is incorporated. Once it’s signed off, the chosen design more or less remains the same. If a feature or manufacturing cost threatens to change the design, the team compromises on the feature or cost (i.e. they remove the feature or make the product more expensive). The design is never compromised. This is why the end result is so beautiful.

Now here’s what I imagine happens at other companies:

Most of the steps are similar to Apple’s. They brainstorm, create, approve, select, incorporate, and sign off. The difference comes when compromises need to be made. If a feature or manufacturing cost threatens to change the design, sometimes the feature wins, sometimes the manufacturing cost wins, and sometimes the design wins. Every company differs slightly in the way they weigh their priorities. Those priorities are reflected in the end result, which is sometimes beautiful and sometimes a horrible mess.

That, in a nutshell, is why I think Apple’s products look so good and other companies’ products don’t. Apple prioritizes product design above all else.

Can this be replicated at other companies? Sure. Some companies already do, though perhaps not to the extent that Apple does. I’m guessing this is because of Jobs. His unrelenting push for elegant design is legendary, as is his vehement criticism of poor design. Without such a influential and high-ranking champion of design in the company, however, it might be difficult to replicate.

A Curious Similarity Between Google and Enron

What the Dog Saw I’ve been reading Malcolm Gladwell’s new book, “What the Dog Saw: And Other Adventures“. This book is a compilation of his best columns from the New Yorker.

One of those columns, “The Talent Myth“, tickled my noggin. It was this excerpt in particular:

[Former Enron president Jeffrey Skilling says]: “If lots of [employees] are flocking to a new business unit, that’s a good sign that the opportunity is a good one… If a business unit can’t attract people very easily, that’s a good sign that it’s a business Enron shouldn’t be in.”

In other words, star employees are valued above all else and get to work on whatever they want.

Now a quote from Google (GOOG) CEO Eric Scmidt:

We don’t really have a five-year plan… We really focus on what’s new, what’s exciting and how can you win quickly with your new idea.

It’s much easier to have an employee base in which case everybody is doing exactly what they want every day. They’re much easier to manage because they never have any problems. They’re always excited, they’re always working on whatever they care about.

In other words, star employees are valued above all else and get to work on whatever they want.

Gladwell’s article goes on to assert that smart, star employees don’t necessarily make an organization smart. Instead, it’s just the opposite – smart organizations and processes make the collective whole smarter and more successful.

This strikes me as sound advice. As an entrepreneur, I want to ultimately build an organization that will outlast me. Jim Collins’ book Built to Last goes into detail about this concept as well. It’s organizations with smart processes that last, not organizations with smart people and poor processes. You still need smart people, but smart processes are probably more important.

However, I don’t think this applies to small start-ups. If your organization has only a handful of people, than each and every one of them will have an exponential impact on your company. Therefore, it makes sense to hire rock stars. But as your organization grows, the focus should shift to building smart processes.

Back to Google and Enron. I just found this to be an interesting comparison. Doesn’t mean I think Google will go the way of Enron though. Take it for what it is.