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:
- Brief candidate background discussion
- Open-ended questions about recent projects
- A technical problem-solving exercise
- 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:
Review Summary
Smart and Gets Things Done receives mixed reviews, with praise for its practical hiring advice and criticism of its outdated content and perceived elitist approach. Readers appreciate Spolsky's straightforward writing style and insights into developer motivation. However, some find the book's focus on hiring only top-tier talent unrealistic for many companies. Despite its age, many still consider it a valuable resource for tech hiring managers, offering useful tips on attracting and retaining skilled programmers. The book's emphasis on creating a positive work environment and understanding developer priorities is consistently highlighted as beneficial.
Download PDF
Download EPUB
.epub
digital book format is ideal for reading ebooks on phones, tablets, and e-readers.