{"id":364,"date":"2010-01-14T11:54:39","date_gmt":"2010-01-14T16:54:39","guid":{"rendered":"http:\/\/www.webadminblog.com\/?p=364"},"modified":"2010-02-01T18:53:41","modified_gmt":"2010-02-01T23:53:41","slug":"book-review-smart-gets-things-done-by-joel-spolsky","status":"publish","type":"post","link":"https:\/\/www.webadminblog.com\/index.php\/2010\/01\/14\/book-review-smart-gets-things-done-by-joel-spolsky\/","title":{"rendered":"Book Review: Smart &#038; Gets Things Done, by Joel Spolsky"},"content":{"rendered":"<p>Joel Spolsky is a bit of an internet cause c\u00e9l\u00e8bre, the founder of <a href=\"http:\/\/www.fogcreek.com\/\">Fog Creek Software<\/a> and writer of <a href=\"http:\/\/joelonsoftware.com\/\">joelonsoftware.com<\/a>, an influential programming Web site.<\/p>\n<p>The book is about technical recruiting and retention, and even though it\u2019s a small format under 200 page book, it covers a lot of different topics.\u00a0 His focus is on hiring programmers but I think a lot of the same principles apply to hiring for systems admin\/Web systems positions.\u00a0 Hiring has been one of the hardest parts of being a Web systems manager, so I got a lot out of the book and tried putting it into practice.\u00a0 Results detailed below!<\/p>\n<h2>The Book<\/h2>\n<p>The first chapter talks about the relative effectiveness of programmers.\u00a0 We often hire programmers and pay the good ones 10% more than the bad ones.\u00a0 But he has actual data, drawn from a Yale professor who repeatedly teaches the same CS class and assigns the same projects, which shows something that those of us who have been in the field for a long time know \u2013 which is that the gap in achievement between the best programmers and the worst ones is a <strong>factor of ten<\/strong>.\u00a0 That\u2019s right.\u00a0 In a highly controlled environment, the best programmers completed projects 3-4 times faster than the average and 10x faster than the slowest ones.\u00a0 (And this same relationship holds when adjusting for quality of results.)\u00a0 I\u2019ve been in IT for 15 years and I can guarantee this is true.\u00a0 You can give the same programming task to a bunch of different programmers and get results from \u201cHere, I did it last night\u201d to \u201cOh, that\u2019ll take three months.\u201d\u00a0 He goes on to note other ways in which you can get 10 mediocre programmers that cannot achieve the same \u201chigh notes\u201d as one good programmer.\u00a0 This goes to reinforce how important the programmer, as human capital, is to an organization.<\/p>\n<p>Next, he delves into how you find good developers.\u00a0 Unfortunately, the easy answers don\u2019t work.\u00a0 Posting on monster.com or craigslist gets lots of hits but few keeps.\u00a0 Employee referrals don\u2019t always get the best people either.\u00a0 How do you?\u00a0 He has three suggestions.<\/p>\n<ol>\n<li> Go to the mountain<\/li>\n<li>Internships<\/li>\n<li>Build your own community<\/li>\n<\/ol>\n<p>\u201cGo to the mountain\u201d means to figure out where the smart people are that you want to hire, and go hang out there.\u00a0 Conferences.\u00a0 Organizations.\u00a0 Web sites.\u00a0 General job sites are zoos, you need venues that are more specifically spot on.\u00a0 Want a security guy?\u00a0 Post on OWASP or ISSA forums, not monster.<\/p>\n<p>We do pretty well with internships, even enhancing that with company sponsored student sourcing\/class projects and a large campus recruiting program.\u00a0 He has some good sub-points however \u2013 like make your offers early.\u00a0 If you liked them as an intern, offer them a full-time job at that point for when they graduate, don&#8217;t wait.\u00a0 Waiting puts you into more of a competitive situation.\u00a0 And interns should be paid, given great work to do, and courted for the perm job during the internship.<\/p>\n<p>Building a community \u2013 he acknowledges that\u2019s hard.\u00a0 Our company has external communities but not really for IT.\u00a0 For a lot of positions we should be on our our forums like fricking scavengers trying to hire people that post there.<\/p>\n<p><!--more--><\/p>\n<p>Chapter 3 is interesting; it\u2019s a \u201cField Guide to Developers.\u201d\u00a0 It seems obvious, but to get the best developers working for you, you need to be showing that you\u2019re the kind of place they want to work.\u00a0 What does the wily developer like?<\/p>\n<p>First, there\u2019s the physical workspace.\u00a0 Does it look cool or awful?\u00a0 You have to turn around and take a look at yourself as an outsider would.\u00a0 A big monochrome cube farm, with crappy chairs and computers, and a lobby with wilting plants in it is a warning sign to developers to stay away.\u00a0\u00a0 Private offices with Aeron chairs and dual monitors say \u201cno really, we do consider our people more than interchangeable parts.\u201d\u00a0 You can consider these kinds of things luxuries, but good programmers can go a hundred other places that have them.\u00a0 We only bat about .500 on this, and that\u2019s mostly due to our beautiful campus.<\/p>\n<p>Side note &#8211; we had one guy interview here, who when asked what he found important about a job, replied &#8220;a comfy chair and nice monitor.&#8221;\u00a0 It&#8217;s OK for that to be important to you but when it&#8217;s first thing out in an interview, it makes you seem like you are an entitlement fan and don&#8217;t really care about your work &#8211; we passed on that guy.\u00a0 Right?\u00a0 Wrong?\u00a0 Chime in with a comment.<\/p>\n<p>Next, there\u2019s the interpersonal environment.\u00a0 Are programmers treated well in the organization, or are they typists given orders from on high?\u00a0 What are their colleagues like \u2013 when they meet people during the interviews, they are always asking themselves \u201cdo I want to work with this person?\u201d\u00a0 Grumpy, bedraggled, unprepared, or distracted says \u201cno.\u201d\u00a0 He notes at Fog Creek they started with the old Microsoft hiring maxim of \u201cSmart, and gets things done\u201d but soon learned that they (unlike Microsoft) needed to add a third clause, \u201cNot a jerk.\u201d\u00a0 Does it look like they\u2019ll be given responsibility and autonomy?\u00a0 Is the environment rife with politics?\u00a0 Will they be working with cool new technology, on something interesting?\u00a0\u00a0 Can they identify with the company or otherwise be attracted by its goals?\u00a0 Even \u201cside\u201d goals like a wellness program or recycling drive count here.\u00a0 For anyone who hasn\u2019t noticed, this is the \u201cme\u201d generation.\u00a0 Will <em>I<\/em> like working there, will it be happy and beneficial for me day in, day out?<\/p>\n<p>He also notes another truism that too many people don\u2019t believe, which is what programmers don\u2019t care about \u2013 money.\u00a0 (Within reason of course.)\u00a0 It\u2019s very low on the list and usually only comes up when the other factors are seen as undesirable.<\/p>\n<p>\u201cSorting Resumes\u201d is the topic of Chapter 4.\u00a0 He acknowledges how terrible a tool the average resume and cover letter are in terms of conveying anything you really want to know about a candidate.\u00a0 You can\u2019t hire from them, you can only screen out people you clearly don\u2019t want to hire from them.<\/p>\n<p>Joel\u2019s criteria for sorting resumes are:<\/p>\n<ul>\n<li>Passion \u2013 evidence that they love programming, based on a variety of factors \u2013 into computers from an early age, extracurricular computer activities (like working on open source projects), interest in new technologies.<\/li>\n<li>Pickiness \u2013 I call this \u201cfit\u201d &#8211; is the applicant looking to work for you?\u00a0 Did they bother to customize the cover letter?\u00a0 Remember it\u2019s not all about whether you like them; if you extend an offer you want to have a high probability that they\u2019ll accept.<\/li>\n<li>English \u2013 if your communication skills are so poor that you can\u2019t even get a resume right, when you have an infinite amount of time to craft it and get other people to proofread it, you\u2019re trouble.<\/li>\n<li>Brains \u2013 anything indicating they\u2019re just flat smart.<\/li>\n<li>Selectivity \u2013 if they went through a highly selective process in the past (getting into an Ivy League school, hired by Google) then someone else has pre-vetted them for you.<\/li>\n<li>Hard-core \u2013 certain technologies are harder than others.\u00a0 If someone\u2019s done C++ programming, they are in general going to have more chops than someone who\u2019s only programmed JavaScript, even if you\u2019re looking for a JavaScript programmer.<\/li>\n<li>Diversity \u2013 not gratuitous diversity, but you want to make sure and have different types of people on your teams.\u00a0 If your team is all old fogeys, hire someone right out of school so that you can benefit from a different viewpoint.<\/li>\n<\/ul>\n<p>He also talks about what <em>not<\/em> to do.\u00a0 He\u2019s all about making them show some programming chops during an interview, but putting an additional hoop of a technical test into the prequalification process just loses you people who think that\u2019s lame and they can get a good job without being your trained monkey.\u00a0 He also notes it\u2019s important not to look too much for experience with specific technologies.\u00a0 The \u201ckeyword matching\u201d school of programmer selection is awful.\u00a0 A good programmer that knows 3 languages can pick up whatever language number 4 you use without any problem, whereas some goon who only knows language 4 will, after about two weeks, be less productive than the other guy forever.\u00a0 Every once in a while you are specifically looking for an expert, in which case that\u2019s fine \u2013 if you want a Java architect for the department then you do want in depth expertise in it.<\/p>\n<p>Chapter 4 covers the phone screen.\u00a0 He recommends starting with a phone screen, because it actually allows you to do a first cut more \u201cfairly\u201d without seeing the candidate.\u00a0 And it\u2019s less expensive than an in-person.\u00a0 His phone interviews have three parts.\u00a0 The first is the \u201dtell me about yourself\u201d part.\u00a0 In this he listens for signs of passion and being a problem solver, and drills down into technology and politics.\u00a0 By technology, he means establishing exactly what role they played with the technologies on their resume and in their story, to find their real level of technical skill.\u00a0 And by politics, he really means drive and persistence \u2013 how they handle challenges and get things done.<\/p>\n<p>Next, he poses an open-ended technical question to get in tune with their thought processes.\u00a0 Not looking for pseudocode as an output, but for their ability to make tradeoffs, understand subtleties, etc.\u00a0 He gives examples like \u201cHow would you design a program that lets people play Monopoly with each other over the Internet?\u201d\u00a0\u00a0 Something they\u2019d be familiar with but not have implemented.\u00a0 The key premise here is that smart people can tell other smart people by having an in depth discussion with them over a problem at hand.\u00a0 Again, having the same problem posed to all candidates allows for quality compare\/contrast.<\/p>\n<p>The third and final part of his phone screens are letting the candidate interview him, to aggressively sell them on the position and also to see if they\u2019ve done any basic research into the company, which reveals how serious they are.\u00a0 Remember, it\u2019s all about closing the deal, so whether you want them is only half of the equation ; are they seriously looking as well and do they want you.<\/p>\n<p><strong>Ernest\u2019s Conclusion<\/strong>: This book is the God\u2019s honest truth and you would do well to read it and follow it.\u00a0 Sure, he has a couple specific hang-ups that can safely be ignored \u2013 how cool iPods are, how important private offices are, and that programmers should fly first class \u2013 but every core idea here is sound and proven over and over again in practice.<\/p>\n<h2>Let&#8217;s Use What We&#8217;ve Learned<\/h2>\n<p>So let\u2019s go through his process as a test case.\u00a0 I need a Web Systems engineer for my team.\u00a0 The spot\u2019s been open for a while and interviews from ni.com and monster have come up empty.\u00a0 I had to fill the last two open slots on my team by using a headhunter \u2013 expensive.\u00a0 So I went to Craigslist and posted this under \u201cjobs &#8211; internet engineering\u201d:<\/p>\n<p><a href=\"http:\/\/www.google.com\/notebook\/public\/14007941275957023548\/BDT3iIgoQ9ePQ_JAj?hl=en\">Web Systems Engineer Wanted For Night Out and Cuddling<\/a><\/p>\n<p>It linked to a &#8216;straight&#8217; job posting on our corporate site.\u00a0\u00a0 Too edgy you say?\u00a0 Well, it got picked up and blogged about and dugg immediately; people were actively forwarding it around to their friends and emailing me about how cool it was and how cool our company must be as a result.\u00a0 I could explain why this ad was good but <a href=\"http:\/\/pbarnhart.wordpress.com\/2008\/04\/02\/three-key-lessons-web-systems-engineer-wanted-for-night-out-and-cuddling\/\">this blogger dude explains it well<\/a>, so click away.<\/p>\n<p>I used craigslist because it was more expeditious than a full \u2018go to the mountain\u201d approach, but I started working on that too, figuring out for conferences Iw as attending if there was a good place to post help wanted where attendees could see them.\u00a0 I got ten applicants, eight of which were worthy of a phone screen, within two weeks off the craigslist ad.\u00a0 That\u2019s more phone screens than I\u2019ve ever gotten in a cycle \u2013 when I posted this same job in the fall, I got 17 Monster hits, none of which were screenable, and one screenable off a dozen submissions on our corporate site \u2013 my other 2 screens were personal referrals.\u00a0 None passed and one withdrew.\u00a0 That makes my ratio of resumes to phone screens to interviews to offers to accepts 30:3:0:0:0.\u00a0 Which sucks, in case you\u2019re not keeping score.<\/p>\n<p>Then I conducted phone screens, using the format Spolsky preferred, with one generic problem question that\u2019s not as vague as a brain teaser and not as specific as \u201ccode or command X.\u201d\u00a0 I thought for a while about the question and asked my team for ideas.\u00a0 Spolsky\u2019s ideas for questions were more programmer-focused and I wanted one that would tap the systems side more.\u00a0 My \u201cscript\u201d is as follows.<\/p>\n<ol>\n<li>\u201cTell me about yourself\u201d\n<ol>\n<li>Listen: Passion \u2013 ask about exciting trends<\/li>\n<li>Listen: Problem solver<\/li>\n<li>Delve: Technology \u2013 get deep about what they do hands on<\/li>\n<li>Delve: Drive \u2013 ask about stuff they personally spearheaded<\/li>\n<\/ol>\n<\/li>\n<li>Technical Question:\u00a0 How would you implement an infrastructure to support an iTunes-like media sales and download site?\n<ol>\n<li>Sub-question &#8211; &#8220;When someone calls and says &#8216;the site is down&#8217; where do you go from there?&#8221;<\/li>\n<li>Sub-question &#8211; What, given your experience, will probably be the top 3 problems that come up post go live?<\/li>\n<\/ol>\n<\/li>\n<li>Their Questions\n<ol>\n<li>Listen: Preparation<\/li>\n<li>Sell them!\u00a0 Company, Austin, the team.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>After each phone screen I felt that I had a really good idea of their expertise.\u00a0 The technical question helped \u2013 and it\u2019s not a \u201csit back and let them answer\u201d kind of thing, you conduct it as if the two of you were planning this system together (or more on point, that they\u2019re an employee of yours proposing this design for a system and you\u2019re making sure they know what\u2019s up).<\/p>\n<p>To make a long story short, we got some really good candidates and hires from that round of recruiting.\u00a0 We got one superstar who was moving back to the States from Germany, but sadly lost him to a competitive offer from a local startup.\u00a0 Alas.\u00a0 But on the whole, I think the advice in Joel&#8217;s book made our recruiting more successful.\u00a0 It was also helpful justification for the approach &#8211; when someone was like &#8220;Oh that job post is too freaky&#8221; or &#8220;You should ask them 100 lame multiple choice questions about what kind of a tree they would be instead of the iTunes thing&#8221; I could hand them the book and say &#8220;this isn&#8217;t just me being freaky, it&#8217;s a best practices tech hiring approach.\u00a0 Simmer down.&#8221;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Joel Spolsky is a bit of an internet cause c\u00e9l\u00e8bre, the founder of Fog Creek Software and writer of joelonsoftware.com, an influential programming Web site. The book is about technical recruiting and retention, and even though it\u2019s a small format under 200 page book, it covers a lot of different topics.\u00a0 His focus is on [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[16],"tags":[379,619,380],"class_list":["post-364","post","type-post","status-publish","format-standard","hentry","category-management","tag-hiring","tag-management","tag-recruiting"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pfI0c-5S","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.webadminblog.com\/index.php\/wp-json\/wp\/v2\/posts\/364","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webadminblog.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webadminblog.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webadminblog.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webadminblog.com\/index.php\/wp-json\/wp\/v2\/comments?post=364"}],"version-history":[{"count":2,"href":"https:\/\/www.webadminblog.com\/index.php\/wp-json\/wp\/v2\/posts\/364\/revisions"}],"predecessor-version":[{"id":373,"href":"https:\/\/www.webadminblog.com\/index.php\/wp-json\/wp\/v2\/posts\/364\/revisions\/373"}],"wp:attachment":[{"href":"https:\/\/www.webadminblog.com\/index.php\/wp-json\/wp\/v2\/media?parent=364"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webadminblog.com\/index.php\/wp-json\/wp\/v2\/categories?post=364"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webadminblog.com\/index.php\/wp-json\/wp\/v2\/tags?post=364"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}