Smart and Gets Things Done Summary

Smart and Gets Things Done

Joel Spolsky's Concise Guide to Finding the Best Technical Talent 1st (first) by Spolsky, Joel (2007) Hardcover
by Spolsky 2007 200 pages
4.01
1.1K ratings

Key Takeaways

1. Hire smart people who get things done

Smart, and Gets Things Done.

Talent is paramount. The success of a software company hinges on its ability to attract and retain top talent. Smart developers who can execute are worth 3-10 times more than average ones, while only costing 20-30% more. They possess the ability to tackle complex problems, innovate, and elevate the entire team's performance.

Avoid common pitfalls. Beware of hiring:

  • Smart people who don't get things done (theoretical but impractical)
  • People who get things done but aren't smart (create messes others must clean up)

Focus on finding candidates who demonstrate both intelligence and a track record of accomplishment. These rare individuals will drive your company's success and justify any extra effort required to recruit them.

2. Create an attractive work environment for top talent

There's more to the physical workspace than private offices.

Prioritize developer preferences. Top developers have choices about where to work, so create an environment they'll love:

  • Private offices with doors that close
  • Quiet, distraction-free workspace
  • Latest technology and equipment
  • Ergonomic furniture (e.g., Aeron chairs)
  • Attractive office location and amenities

Foster a positive culture. Beyond physical space, consider:

  • Treating developers with respect as skilled professionals
  • Providing autonomy and interesting projects
  • Minimizing bureaucracy and office politics
  • Offering opportunities for growth and learning
  • Creating a sense of purpose and shared mission

Remember that great developers often care more about the work environment and culture than raw salary. Investing in these areas can give you a competitive advantage in recruiting.

3. Implement effective recruiting strategies

Go to the mountain.

Be proactive in your search. Instead of relying solely on job postings, actively seek out top talent:

  • Attend industry conferences and events
  • Build relationships with university computer science departments
  • Implement a robust internship program
  • Cultivate an online community around your company
  • Encourage employee referrals (but be cautious of potential pitfalls)

Create a pipeline. Recognize that recruiting is an ongoing process:

  • Start building relationships with potential candidates early
  • Maintain contact with promising individuals, even if you can't hire immediately
  • Be prepared to move quickly when the right candidate becomes available

Focus on quality over quantity in your recruiting efforts. It's better to invest time and resources in finding and attracting a few exceptional candidates than to sift through hundreds of mediocre applications.

4. Screen resumes strategically

If you can't tell, that means No Hire.

Develop an objective system. Create a consistent method for evaluating resumes to identify promising candidates efficiently:

Key criteria to consider:

  • Passion for programming (side projects, early interest)
  • Evidence of intelligence (academic achievements, problem-solving ability)
  • Communication skills (well-written resume and cover letter)
  • Accomplishments and impact in previous roles
  • Experience with challenging technologies or projects

Avoid common mistakes. Don't:

  • Overemphasize specific technology experience
  • Rely too heavily on academic pedigree
  • Disqualify candidates based on non-essential criteria

Remember that resumes are an imperfect tool. Use them to screen out clearly unsuitable candidates and identify those worth interviewing, but don't make final hiring decisions based on resumes alone.

5. Conduct insightful phone interviews

Before moving on to a full-fledged in-person interview, we usually use a phone screen to make sure that we're not wasting time and money on someone who is just seriously not smart.

Structure the call effectively. A good phone screen typically includes:

  1. Brief candidate background discussion
  2. Open-ended questions about recent projects
  3. A technical problem-solving exercise
  4. Opportunity for the candidate to ask questions

Look for key indicators. During the call, assess:

  • Problem-solving ability and thought process
  • Communication skills and ability to explain complex ideas
  • Genuine interest in the role and company
  • Technical knowledge and experience relevance

Use the phone screen to eliminate candidates who are clearly not a good fit, saving time and resources for in-depth interviews with promising applicants. Be prepared to make a clear "yes" or "no" decision after each call.

6. Master the art of in-person interviews

The bottom line in my interviewing technique is that smart people can generally tell if they're talking to other smart people by having a conversation with them on a difficult or highly technical subject.

Create a comprehensive process. Effective in-person interviews typically involve:

  • Multiple interviewers (aim for at least 5-6)
  • A mix of technical and behavioral questions
  • Coding exercises or problem-solving scenarios
  • Discussions about past projects and experiences

Focus on key attributes. Throughout the interview, assess:

  • Problem-solving ability and analytical thinking
  • Coding skills and technical knowledge
  • Communication and teamwork capabilities
  • Cultural fit and alignment with company values
  • Passion for technology and continuous learning

Make decisive "hire" or "no hire" decisions after each interview. If you're on the fence, it's usually best to pass. Remember that it's far more costly to hire the wrong person than to miss out on a potentially good candidate.

7. Build and manage high-performing teams

To be an Identity Method manager, you have to summon all the social skills you have to make your employees identify with the goals of the organization, so that they are highly motivated, then you need to give them the information they need to steer in the right direction.

Foster team cohesion. Strategies to build a strong team identity:

  • Shared meals and social activities
  • Clear communication of company mission and values
  • Celebration of team and individual achievements
  • Transparent sharing of company information and goals

Implement effective management practices. Key principles:

  • Avoid micromanagement and "command and control" styles
  • Don't rely solely on financial incentives to motivate
  • Provide autonomy and trust in decision-making
  • Offer regular feedback and opportunities for growth
  • Address underperformance promptly and fairly

Continuously improve processes. Use tools like "The Joel Test" to assess and enhance your development practices:

  • Version control
  • Automated builds and testing
  • Bug tracking and prioritization
  • Proper planning and scheduling
  • Regular code reviews and quality checks

Remember that building a great team is an ongoing process. Regularly assess your practices, seek feedback from team members, and be willing to adapt as your organization grows and evolves.

Last updated:

Report Issue