“Smart and Gets Things Done” by Joel Spolsky
Summary
In Smart and Gets Things Done, Joel Spolsky argues that programmers are not interchangeable parts, but vary dramatically in ability. The best developers, he contends, are not just slightly better—they are orders of magnitude more productive, competent, and capable than the worst. As a result, it is far more effective to build a small team of truly exceptional engineers than a large team of average ones. Recruitment, therefore, becomes a mission-critical task. Spolsky’s key principle is uncompromising: it is better to forgo hiring a seemingly competent candidate than to risk bringing in someone who turns out to be subpar.
Key Insights
At the heart of Smart and Gets Things Done is a pragmatic philosophy: building a software company isn’t about chasing the next big idea—it’s about efficiently converting capital into working software. And the most effective way to do that, Spolsky argues, is to hire the best programmers, give them the best tools and environment, and get out of their way.
Spolsky makes a compelling case for why software is uniquely leveraged: since duplication is effectively free, the cost of quality doesn’t scale linearly. A small team of elite developers can outperform a much larger team of mediocre ones. The most skilled programmers not only produce better code, but they do it faster. Thus, it is more cost-effective and efficient to hire a few top-tier individuals than to build large teams of average talent.
The hiring process is rigorous by design. It begins with a mechanical phone screening using fixed questions administered by a non-technical interviewer. If successful, the candidate proceeds to a six-part interview process, consisting of five interviews with potential peers and a final one with Spolsky. Interviewers are instructed not to confer during the process to avoid bias, and if two or more say no, the candidate is rejected—regardless of Spolsky’s personal opinion.
In his interview, Spolsky insists that candidates write code, either on a whiteboard or a computer. The goal is to assess their problem-solving skills, not just technical knowledge. Spolsky prefers aptitude over current skill, believing that most skills will be obsolete in three years.
Decisiveness is also a key value: hiring decisions are made immediately after the interview. Delaying, he argues, leads to muddled thinking and second-guessing.
Beyond recruitment, Spolsky offers insights into company culture and motivation. He emphasises:
- The importance of autonomy and a sense of control.
- The value of private offices for deep work (drawing on Tom DeMarco).
- Intrinsic motivation—staff should identify with the company’s goals.
- The subtle power of eating together to build team cohesion.
- The danger of tolerating incompetence signals that excellence is optional.
Spolsky also introduces the famous Joel Test—a 12-point checklist for software team quality, including:
- Do you use version control?
- Can you build in one step?
- Do you fix bugs before writing new code?
- Do candidates write code in the interview?
He champions clear specifications, regular builds, and a zero-defect policy, echoing Microsoft’s approach: fix bugs before writing new features, because the longer a bug survives, the harder it is to fix.
Taken together, Spolsky’s philosophy is unapologetically high-standard: hire brilliant people, set them up for success, expect excellence, and never compromise on quality.
Strengths
One of the book’s greatest strengths is its focus on a much-neglected aspect of software engineering: recruitment. While countless books discuss coding practices, architecture, or agile workflows, Smart and Gets Things Done zeroes in on the foundational truth that great software begins with great people. Spolsky shines a light on the hiring process—not as a routine HR function, but as a core technical discipline worthy of rigour and strategic thought.
His central thesis—that hiring the best developers is not only worthwhile but essential—is both correct and surprisingly overlooked in many organisations. Too often, companies settle for competence or assume that mediocre developers can be made productive through process. Spolsky cuts through this wishful thinking with a compelling, experience-based argument: a small team of outstanding developers will consistently outperform larger teams of average ability, not just in speed, but in quality, innovation, and maintainability.
He also provides concrete, actionable methods—from interview structure to evaluation rules—that can be applied immediately. The book’s clarity, brevity, and unapologetic standards make it a compelling call to action for anyone involved in technical hiring.
Weaknesses
If there is a weakness in Spolsky’s approach, it lies in its uncompromising tone. He writes with the certainty of someone who has built and led high-performing teams—and while that lends the book much of its force, it can also come across as harsh or unforgiving. His principle that incompetence must never be tolerated is rooted in a sound insight: if poor performance is accepted, then excellence is devalued. However, his readiness to dismiss staff who fall short of his high standards may not sit well with every reader or every organisational culture.
Spolsky is, in a sense, raw in tooth and claw—deeply pragmatic, but with little room for nuance or grace. He offers few concessions to those who are developing, learning, or struggling. While this ruthlessness might be appropriate in a start-up or elite engineering team, not all environments can—or should—operate with such rigidity.
The book’s brevity also means that some complex issues, like diversity in hiring or the long-term development of junior staff, are left unaddressed. The focus is narrow and intense—which is part of its strength—but it may leave thoughtful readers wishing for more balance.
Reflections
There is a lot in Spolsky’s approach that resonates with me. His preference for small teams of experts over large teams of average performers is not just a hiring strategy—it’s a philosophy of software development that aligns with many hard-earned lessons in the field.
There are several clear advantages to this approach. First, small teams reduce “social loafing”, the psychological tendency for individuals to exert less effort when part of a group. This phenomenon is far more common in larger teams, where accountability can diffuse and motivation suffers.
Secondly, as Fred Brooks famously observed in The Mythical Man-Month, the complexity of communication grows with the number of people involved. More developers mean more overhead, more misunderstandings, and more meetings. With small expert teams, communication is often quicker, more precise, and more efficient.
Finally, there is an intangible but vital benefit: ownership. Members of small teams are far more likely to feel responsible for the outcome. They know that their contribution matters. This sense of personal investment often leads to better decisions, tighter code, and more robust systems.
While I might prefer a slightly more humane tone than Spolsky sometimes uses, I find myself agreeing with much of his argument. His emphasis on talent, autonomy, and quality rings true, and his book serves as a welcome reminder that excellence doesn’t emerge by accident—it is chosen, cultivated, and defended.
Conclusion
Spolsky comes across as a man determined to give his best—and he expects nothing less from those around him. His standards are exacting, and if you fail to meet them, you’re likely to get bruised. It’s a harsh philosophy, perhaps, but a fundamentally sound one. Smart and Gets Things Done is a bracing read: short, sharp, and unsentimental. But for anyone serious about building high-quality software teams, its message is hard to ignore—and harder still to refute.
Book Details
Title: Smart and Gets Things Done
Author: Joel Spolsky
Publication Year: 2007
Genre: Human Resources, Interviewing and Recruitment
🔗 Buy on Amazon