I can relate to this, but I can also relate to the other side of the question. Sometimes it isn't me, its you. Take someone who gets things done and suddenly in your organization they aren't delivering. Could be them, but it could also be you.
I had this experience working at Google. I had a horrible time getting anything done there. Now I spent a bit of time evaluating that since it had never been the case in my career, up to that point, where I was unable to move the ball forward and I really wanted to understand that. The short answer was that Google had developed a number of people who spent much, if not all, of their time preventing change. It took me a while to figure out what motivated someone to be anti-change.
The fear was risk and safety. Folks moved around a lot and so you had people in charge of systems they didn't build, didn't understand all the moving parts of, and were apt to get a poor rating if they broke. When dealing with people in that situation one could either educate them and bring them along, or steam roll over them. Education takes time, and during that time the 'teacher' doesn't get anything done. This favors steamrolling evolutionarily :-)
So you can hire someone who gets stuff done, but if getting stuff done in your organization requires them to be an asshole, and they aren't up for that, well they aren't going to be nearly as successful as you would like them to be.
The other risk is of course the people who 'get a lot done' but don't need to. Which is to say they can rewrite your CRM system and push it out to the world in a week but only by writing it from scratch.
Word f'ing up. I was recently fired from a remarkably relatable situation where a hot ninja startup had no effective intake process, so for orientation I had one pair-programming episode regarding an intensely technical internal aspect of the application before being sent off to fend for myself in their repository. Couple this with an office and project management style predicated on "who can interrupt the loudest?", having multiples of these conversations occur simultaneously, and an absolutely open office plan.
But hey, the CEO had sold a previous company for good money so this means he knows what he's doing. I'm sure they'll be a huge success.
I'm not saying that I'm God's gift to college-dropout programmers, but I'd never had a problem succeeding in a job until this one. In reaction to this state of affairs I had considered that maybe I need to be at a huge company that has better processes, but your Google tale says maybe otherwise.
I feel you. I had an identical experience last year around this time. Wasn't a startup situation, just a very small shop run by a hot ninja who was trying to palm off a quarter of a million lines of undocumented byzantine code without bothering to mentor or even explain the business processes this thing was designed to satisfy. Bleh.
I was able to land a gig with a small shop doing work for some incredible clients filled with brilliant people that know their product back-to-front and management that polls the developers for input throughout the project life cycle. Needless to say I've never been happier.
Indeed. In my 10+ years of working at various companies I've found that company size doesn't really indicate how well they do process. The good thing about smaller companies though is they're a lot more agile, i.e. able to improve process, than the larger ones. Don't bet on huge companies either. My plan now is to formulate the most incisive interview questions I can if I go for other jobs, to try and get as good a feel as I can for somewhere's culture and process. It's not easy though as sometimes a company's interviewers are as full of BS as the recruiters selling you to them. :/
since there seem to already be quite a few employees when you started I think most of the problems there was a culture clash. coupled with the fact that they did not properly educate you on how they operated. I'm not judging different cultures but there are plenty of steps a company can take to make sure new hires fit.
If by "quite a few" you mean "less than 10," several of which had previous worked together, I'm not sure that it qualifies as anything more than process ignorance.
So you can hire someone who gets stuff done, but if getting stuff done in your organization requires them to be an asshole, and they aren't up for that, well they aren't going to be nearly as successful as you would like them to be.
You've sort of nailed it. Also what I see is, how much people are addicted to the NIH syndrome. They have a ways of working which they won't change, adapt or even agree debate for their own good.
The way I see, too much or too little process are both equally dangerous. The key is neither to over play nor under play the game. Too little management leads to wandering in the wild with no goals, plans, tracking and destination. Often overly delayed projects.
Too much management gets in the way of achieving what would have been even easily possible.
After all the analysis I can say, sure you may want to hire every smart guy on the market. But you must also know to manage them. Bunch them together, create a positive environment and enable them to be as much productive as they can be. Good people need to be taken care of, Senior developers/architects even though not managers need to have some people skills. Its simple, if interacting with people is a part of your job.. People skills become part of your job.
To be good alone is not sufficient, if you are good alone you can probably get a maximum of 9 hours worth of job done everyday. But if you can manage 10 such brilliant guys you can deliver 90 hours of such work every day. But that requires spotless planning, tracking, course correction and most important creating an environment where such people can be productive.
Nothing big in software these days can achieved without team work. If a person is not good with teams, may be its time for him to look somewhere else. Being a jerk, rude and arrogant with junior developers may help you give a false sense of superiority but that won't bring you success.
"Google had developed a number of people who spent much, if not all, of their time preventing change...The fear was risk and safety."
I think you nailed it here. But something to realize is that this is not unique to Google, this is true in any large corporation.
The issue is that as people develop careers within the corporation, they become interested in what is most politically expedient for said career. This means they become very averse to any situation where the individual might personally look bad.
This means that aggressive projects which could have a high level of reward and equivalent risk for the company get waylaid disproportionate to their overall risk/reward ratio.
I think your point about people not understanding the systems that they are working on compounds this idea, as it makes the risks of changing a system appear higher (because they do not know the system).
Even worse is when an entire company's strategy revolves around risk aversion. Risk management is one thing, but avoiding any possible loss in any area can make for a pretty soul crushing job experience for people who like innovation and change.
On the whole I really agree with the writers stance. But in the spirit of getting shit done, you gotta start somewhere. I personally have a tendency to do too much or start something that should never have been started on in the first place.
A start-up environment and Skynet are quite different with different objectives.
"So you can hire someone who gets stuff done, but if getting stuff done in your organization requires them to be an asshole, and they aren't up for that, well they aren't going to be nearly as successful as you would like them to be."
So very true. I'm in this situation at my current job: I was hired as a dev, was told to fix organisational things by senior management and am now meeting resistance and roadblocks for various reasons. I'm a dev, and I'm not an asshole, and I also have no authority to steamroll people. At first I felt empowered but lately I've just felt bogged down. It's a sucky feeling.
It pretty much depends on what are you looking for: a procedural executant or a project developer. A project developer can execute very well for the first couple of times, but expect from one to get bored with the same speed.
You have to find the right tasks for these "very smart people" instead of hiring them to do the wrong job. The alternative is to hire really dumb people, at least they'd never be able to do anything more or better than what they're told.
I 100% agree with this. Sometimes it is the wrong manager or the wrong environment which makes a productive person less so. In this case the person and their manager either need to work it out, or the person may need to leave the team, group, or company and find a home where their talents can really shine (or, if the manager does this to everyone who works for them, hopefully their manager realizes this and fixes it).
"As part of our hiring process at Mixer Labs, we would often give people a half day coding exercise. "
I (and many people who I've hired) don't have time to waste on your startup. I can tell within two minutes if someone can code or not. I've never understood the need to have someone write code (and then nitpickingly critique the code because it doesn't look like my code) when I can just ask them and know if they are lying or not.
And I've hired a LOT of super fantastic programmers.
Well, recently I interviewed at a place where they called me in 18 rounds of interviews over almost 3.5 full days.
The only reason I was putting up with them was because of friend inside who had referred me. The thing is they made me right endless code rounds after rounds and I did code pretty well. I solved close to 90% of the problems without the internet. But most of them were coding problems.
During the final rounds, I don't know what got into them. They started going into Core CS areas. And damn then they started the Algo pop quiz. Some how during the last 3-4 rounds they started giving out the perception that they were not happy with some one who did not know the algorithms from the book memorized by heart. And that even good coding skills can't compensate for that.
After that they called me back and told, that some other department from the same company would like to have an another round. I just politely denied and, cut the call.
I worked in a company that did that a couple of times, but not to that extent. Usually the job description wasn't well defined and the candidate didn't have any champions within the company. We would keep on bringing the candidate in over and over in the hope that some new perspective would make the choice obvious. (it never did)
Oddly enough, when you decline to continue interviewing they often immediately send you a job offer.
Frankly speaking if you can't decide about a candidate after 3.5 days of interviewing there's probably something really badly broken about your interviewing process. Or just that its so inefficient.
I wouldn't have accepted the offer from the company, from the very outlook it looked like bureaucratic jungle where no one is capable of taking a decision/risk until they run through some 20 meetings to decide what to do. And then toss it on to some one else.
For that if this is what you make candidate run through, you are sure to get CareerCup interview questions ebook masters but not good programmers.
Phone interviews or in person? I think after 3 such I would have decided these people just couldn't make decisions or were such a political organization they would have been toxic to work for. Did your contact give any insight into this inefficiency?
Hiring people who know how to program is actually not hard. I also can screen for this in an hour, no problem.
It's everything else that is the problem. Are they lazy? Do disappear for days at a time? Will they not fix bugs in someone else's code? Will they complain NIH at the drop of a hat. Will they care to write all the ugly code we need to ship with, and not just the first 80% of the project?
These are the things that are hard to assess. But just knowing if they can code -- that's pretty easy.
I've never had a problem hiring great programmers, and it's not difficult at all really. It's insanely difficult though for common companies when they are not a good or interesting place to work, or they don't want to pay competitively for the people they need, or they have incorrect ideas about what sort of talent they really need. There is no shortage of great developers out there. The shortage is in companies that have management with any clue. These companies obviously are unable to understand or correct this though.
It's kind of a two-way thing. If they're investing enough time into telling me about them, what projects they have and what's exciting about them, what the environment is like, what hardware they use, what they do after work, whether they have any employees using Dvorak †, then sure, if what I'm hearing sounds good, I can devote half a day to them. But on the other hand, I've had a company administer a test and then a coding exercise with contact via email from their secretary, and maybe I'm spoiled but I'm not doing a multi-hour task for you to earn the privilege of talking to a person involved in development.
One of the fastest ways is to ask about something they had to "fix" (use the word "fix") at their last job, or some problem in a pet project that they just figured out. This will sound like poetic license, but really good programmers have a light that flares when they start talking about that. They immediately are back in the trenches, telling about how they couldn't figure out some nasty recursion error or some server problem that was untraceable. Usually their hands start getting animated; they loosen up.
I couldn't care less about the problem OR the eventual solution. I couldn't care less if he used an open source module to write some new code last week or if he thinks CouchDB is super amazing.
What I really want to know is how they think.
When you have a programmer who lives in code, he (or she) swim through problems like they are physical objects. They find passion in killing bugs and making code more efficient. I can hire a hundred people who can recite what the Gang of Four is or write a bubble sort. I can't hire guys who care about whether their own code can be improved.
But this is just one way. There are lots of ways to tell.
I 100% completely agree. I think asking programming trivia questions in this day and age is ridiculous because everyone now has memorized every single CareerCup question out there.
When I interviewed for previous copmanies, this is actually one of the questions I would use. "What is the hardest bug you've ever worked on?" If you take this question, and keep pressing for more and more details, and expand on that question, you can get a surprising amount of information about someone's experience and understanding. If they can't adequately answer this question, it means they haven't really been deep in code, or don't have a lot of experience, so that sets your expectations relative to the position that you're hiring for. If they claim to have a lot of experience, but can't go into too much depth, it means they're not very excited about getting their hands dirty or they don't understand what really happened, which are both bad signs to me.
I don't care if they can write up a function that can spit out the Fibonacci sequence. I can that they are smart enough to figure out relatively complex issues and can communicate this intelligently.
There's no way to figure this out from a one on one interview with that person?
I mean, a half-day programming test feels excessive. Are you worried about loosing good candidates that just don't want to deal with the headaches?
I've heard people try to justify insane hiring processes by saying "we want to filter out the people that don't want to work here. We only want people that really want it." But the best programmers -- the ones you want to hire -- are going to be in high demand by companies that look at their github, have a three minute interview, and pull the trigger.
We would only do the half day test with a subset of the candidates. A lot of people actually welcomed it - we would explain it was a way for them to also get to know us, see what we were like to work with etc.
A lot of people about to make a long term commitment to a company also want to make sure the company is right for them. So this was a good way to get to know one another.
This stuff just seems easy to figure out from a resume and asking questions. If they can talk competently in detail about cool stuff on their resume, and you yourself are smart enough to spot BS, then you know they get stuff done.
As for culture fit, again, a socially competent interviewer can size these things up reasonably quickly.
There are real diminishing returns on technical interviews. If you've got well thought out, well structured questions that cover the key areas for your organisation, unless you're doing something massively complex or specific, you can work out whether someone has the level of competence you're looking for in a couple of hours.
I've only been interviewing for a few years so I don't have a large statistical sample, but I can tell you that within a few minutes I can usually only tell if they think like me or not. The rest of the interview determines if they can code regardless of my biases, and can actually get stuff done.
> within a few minutes I can usually only tell if they think like me or not. The rest of the interview determines if they can code regardless of my biases
If they don't ask for relevant details, etc, they won't be coming up with a solution no matter how they do it.
You can usually establish that someone can't code inside one minute, which happens surprisingly often. You ask: Explain virtual methods to me. If they have C or C++ on their resume you write a three line function that returns a pointer to a stack variable and ask them to explain what's wrong.
If you feel like you even have to ask these questions your candidate selection process is badly broken, but the same approach scales up to all levels.
I disagree. These days people just memorize the CareerCup e-book, and know the answers to almost every major question out there. I've had plenty of people who knew what a virtual function is, and not know how to code. People have gamed the interview system, it doesn't work anymore.
"Explain virtual methods to me" - thereby ignoring anyone who can code in Python or Ruby, or anyone from VB.NET and several other languages where Overridable/Overrides is the terminology used.
Two things:
a) I once heard a good quote and I think it's often true and helpful to think about if hiring: "Talent doesn't come in convenient packages".
b) The best traits of someone are very often some of their worst as well. Be mindful of that when trying to find the "perfect" candidate. Example: Someone who communicates well might also communicate (i.e. talk) a lot instead of working at their workstation for extended periods. The point is to not expect perfection from people. And by perfection, I mean excellence in several types of disparate skills.
With the exception of Lazy, I've seen almost all of these at our fund:
I find most of these are pretty easy to fix:
Lack of urgency.
This one is simple, give a deadline for every task assigned.
Good people will hit their targets or let you know well in advance if they won't.
Easily distracted.
Hmmm, I'd say something here but there's that old expression about the kettle calling the pot black:)
Starts but never finishes things.
I'm not sure how this is allowed anywhere, but for us we follow the Peter Thiel principle,
that you have one major task to do and that's what you'll be judged on.
This seems more of a management fail.
Argumentative.
This is where we fail the most.
We try to hire smart people and fortunately/unfortunately smart people have strong opinions on how things should be done.
We've settled on a hybrid of the Microsoft, you own your area for smaller decisions,
and the "disagree and commit" style of decision making for larger decisions.
Slow.
Unfortunately this is a deal breaker for us.
If you can't keep up then you don't make partner at your 3 month review.
Perfectionist.
This just follows from the "Lack of urgency" and the "slow" categories.
You can code your algos and systems as well as you want as long as they work and come in on time:)
Something about this mindset is depressing to me. Obviously we all want to get shit done, and every company wants to hire people that get shit done, but this definition of 'get shit done' seems very narrow and robotic. The author seems to want to evaluate a programmer's efficiency the same way we evaluate the efficiency of an assembly line or a sorting algorithm.
The problem is that the smartest, most creative, and overall most productive people often don't think this way at all. Instead of slogging away obediently at a problem for six hours, they might dilly-dally on twitter for two hours before having a lateral insight that lets them solve the problem in 15 minutes. They might go to Thailand for the first 3 weeks of a 4 week project then, in a semi-sleepless 100 hour binge, produce a technical masterpiece with a beautiful UI and additional business-savvy features no one else could have thought of thrown in on the fly. Would it be better for your company if this person just sat at his or her desk and focused perfectly and coded 10 hours a day like a good little robot? Does it matter? The same qualities that make some people brilliant will tend to make them unable or unwilling to work like this. You can gripe about irresponsibility or lack of discipline, but they are indeed getting shit done, just not the same way you do. You can pass on them because they don't fit your mold if you like--a more open-minded company will quickly be there to capitalize on the value they offer.
""As part of our hiring process at Mixer Labs, we would often give people a half day coding exercise. "
I'm just letting you know, I'm not working with you. Luckily, after years of experience I have been able to arrange lines of clients wanting me to get stuff done for them so I'm capable of screening companies like you on simple cues like this.
Have fun finding a slave who'll just do what you ask, no questions asked, no creativity involved.
Of course, I'm lazy but only about things that don't really matter. Only stupid people laboriously move huge tons of mass by dragging them; smart people invent a wheel and an internal combustion engine.
I don't fully agree with this, it depends on what type of project you are working on.
There is a certain type of cowboy programmer that depends on thinking quickly and having a good memory. This type of programmer can write code that works, really quickly -- provided the size of the project can fit entirely in their head. Because of this, they can do really well on small size projects but they never learnt proper code design and architecture skills, because they never needed them. This type of programmer ends up not being able to scale as the size of the project gets larger, because eventually they reach the limit on how much code they can remember at one time, and the lack of code design that lets you reduce the number of things you need to be aware about in order to write new code without breaking anything really starts to bite you.
Maybe I did not state things very well. This isn't just about short term projects. Some things will take many months of work to complete (e.g. v1 of some key scalable infrastructure).
It is not about doing short fast sprints - it is about being long term productive as a member of a team. Productivity includes good design and thinking through what is needed up front. But it is also about marrying thoughtfulness to efficiency.
Just so I understand: You're always willing to trade intelligence and experience for someone who produces more, for essential key components of your startup. So you would hire a less experienced person who writes more code over a very experienced slow developer, do I have that right?
All that does is trade the short term risk of not having as much developed with the long term risk of having a broken system. It means you're potentially betting your business on someone who isn't the best, just because they seem more productive.
In summary, you risk making a Friendster instead of a Facebook.
Let me know if I misunderstood your point.
I hire on both: smart people who get it done. And getting it done is relative. Unless you're in consulting, velocity is almost never the issue compared to correctness, so a smarter, slower person is sometimes the right choice. A member of my team took a long time to come up to speed, and is now kicking ass and making the right decisions to keep things on track.
No. What I am saying is intelligence and experience are crucial (intelligence more then experience in my book). Also crucial is the ability to get shit done and culture fit.
I want candidates with all these things.
If someone is very very bright but not very effective, or terrible for the culture of my startup, I would not hire them.
If someone was an amazing culture fit, but not very bright, I would not hire them.
"Coming up to speed" makes sense. It is all about the context in which the person is working, what they did before etc. Productivity takes time to scale, as does trust in one another, working as a team etc.
But there are some people that you give a lot of time and attention to that just don't get a lot done.
I call bullshit. In my experience it's very rare for people to fall into almost any of those adjectives naturally... especially developers. These are people who almost universally love to write code.
Most of the observations listed here I'd be more likely to line up with a lack of investment and clear alignment of goals and priorities. The tone of the article seems to further support to me the lack of an environment that's nurturing to the team members' motivation.
In my experience, the difference between a GSD engineer and an average engineer is the understanding that it is up to you to be motivated, focused, and effective.
And, I've worked with many GSD engineers, so they definitely exist.
I'd agree that it's up to them to identify and communicate things that are challenging their effectiveness, but not always to fix them... and early in someone's career even identifying them can be tough.
I'm just arguing that it's contextual way more often than it's fundamental, and the tone of the article left me with the impression that the author isn't interested in playing much of a role in people's motivations.
Apologies if my tone set up the wrong impression - I think the environment, manager, motivations etc. are all crucial, and some people are very productive in some settings but not others.
That said, I also think there are many people who just aren't that productive, and screening for people who are great at GSD is crucial for a startup.
Likewise, I apologize if I took too much from tone.. I think the bottom line is that we disagree here:
"... there are many people who just aren't that productive..."
I don't think that's the case. I think the steady-state for most people is working (hard). People who aren't productive are generally frustrated that they're not productive. I get it though, there are people who require very little from the outside world to move forward. They'll "GSD" as you put it without much outside influence. I've worked with people who score high on that metric, and I'm genuinely humbled by their ability to make forward progress even in less than optimal conditions.
That said, I think it's tempting to value them above resources that are more sensitive to their context but I'd warn against missing an opportunity. In my experience the developers your talking about will absolutely 'GSD'.. Even when all you ask them to do is 'S'.
I frankly like surrounding myself with people whose motivation falters when they don't feel connected to the problem we're solving for our users, or when we're calling too many bullshit meetings, or when they don't believe in what we're doing. Keeps us honest. Those employees are your canary in the mineshaft. I think where their interest goes, our market is likely to follow.
After all, if my team isn't excited to build it who the fuck do I expect to pay me for it?
"I don't care how smart someone is - if they are unable to work hard and crank out a large amount of high quality work, they will weigh down your startup."
Don't forget that you need to pay them like-wise.
It's acceptable to accept slower (but still high-quality) work in exchange for less pay, etc. And sometimes it's even acceptable to let the quality slack for the same reason.
Although you agree on this, a lot of people including ones from start up's aren't comfortable with paying people proportional to their productivity.
There are many reasons for that, most are happy with flat salary models where can they pay a donkey and a horse the same salary under the premise that they assume both a donkey and a horse can carry weight and run. Unfortunately that's how badly people think of when they pay. Or they are just afraid they may end up setting a trend productive people end up earning big all the time.
I think this is some of the best advice on hiring for a startup I have seen in a while. I just don't think the typical "reverse all the words of a sentence in place" is as helpful. With stuff like StackOverflow, it seems much more valuable that someone can figure something out and "get shit done", especially in a startup where there is so much to do.
Going forward, I will probably only hire someone after seeing them work on a small project, maybe even pairing with them in the process.
For every one true GSD person you'll find, there are ten who'd rather spend all day arguing about how their tools aren't perfect or they are waiting on X person/thing. In larger teams it becomes easier and easier to blame the 'X'.
A good rule of thumb to spot these people is how much yak shaving they require before they will start adding value. If they walk in and say "well I need new new system A from IT, and hours B approved by HR, and version control system C, and software stack D, and my last company had E, and, and, and etc..." The big red flag is when they ask for all of this serially and not in parallel. Then you know you've got somone looking to setup excuses for why they haven't delivered. A true GSD will carve through obstacles as much as possible.
A good analogy is the out of shape person who wants the platinum gym membership, new workout clothes/shoes, the trainer, and the diet plan, but always needs something else before they can start working out. Meanwhile the GSD person is going for a jog and doing pushups.
Expecting 1/2 day free labour will filter out experienced, non-desperate engineers. I've put up with that kind of stuff in my early 20s but certainly wouldn't any more, unless my personal situation was desperate.
I have to say that some combination of these negative traits can describe me at certain points in time. I'll set out to try to build the "perfect" thing, and then snap to reality and use the quick-and-dirty solution.
Procrastination, distraction, laziness, lack of follow-through, slowness, those all manifest themselves when I have no reason to be engaged in the work. The work might just be a really bad match (example: endless maintenance and toiling through bad legacy code, putting out fires, when I could be designing and building something half decent).
Good points. We all have moments where we exhibit some or all of these traits. This is not about an individual moment (or e.g. working for a terrible, demotivating manager, or on a crappy project).
But I do think there are some people who may be very smart or experienced, but who just are not very effective. Some of this could be contextual (in which case it is valuable for both you and them to find them a new home), but sometimes it is just a person's personality or approach to work.
Elad, really enjoyed your post. I am a notorious procrastinator, I start things I don't finish, I am very easily distracted, but I also run a small business. I didn't hire GSD types intentionally, but it happened through sheer luck and I would definitely favour those attributes in the future. My two current employees, usually without deadlines or any real structure, crank out work at a great pace.
I can relate to this post. Specially around Slow and Argumentative. These are cloaks in which faux-smart people hide under. I had experience with a developer who would not want to lift a finger until he absolutely knew that the feature he was about to build was assured unquestionable success. So we would gather some data to figure out users predisposition to use the feature, and still nothing. in the end he would not experiment and we fired him
Just about all of these problems can be solved with good agile practices like pairing and scrum.
People are way more productive, focused, and determined when pairing. It's simply much harder to waste time and produce low quality work when you're directly accountable to the person next to you.
Scrum solves the urgency, commitment, follow-through, and slow problems. Each iteration the team has to commit to a set of tasks to get done. If they don't make it they have to figure out why they didn't, and how to improve. This continuous reflection and optimization is how team's get good and fast.
Of course there will be people who can't be brought into the team, but they are few and far between. And you can't tell until you've created a team for them to be brought in to. So instead of focusing so much on the fantasy of hiring a great team, learn how to build a great team.
i've found scrum to be the worst possible "methodology" on the planet and can't stand pair programming. i've also been known to get things done on occasion.
nothing about making software is one size fits all. forcing scrum and pair programming sounds like a really good way to get an enthusiastic team, but guarantees little else.
This is a bit too one-sided. Hiring those who GSD is obvious, but it's not the only thing. Context is important -- what are you building? Do you need algorithmic expertise? What about scale? Platform experience?
Applying one aspect to hiring, especially at an early-stage startup, is a poor approach.
This is a fair point - you should definitely tailor your hiring approach to your needs. But for all the types of people you mention, I think you would want people who are very productive and able to GSD for their areas.
Do you think this is not the case? Or are these specific types of roles where you think having effective people are secondary?
Absolutely, productive people are very important. Especially in early-stage startups, where nearly every day feels like all-hands-on-deck.
However, productivity comes in multiple forms -- just depends on how you measure it. Because of the limited resources in early startups, people need to fire on all cylinders -- productivity and smarts.
I 100% agree with you :) I think the way I wrote the post may have stated the GSD side too strongly. I totally agree you need really sharp people who are a good culture fit who also GSD. Thanks for reading the post.
I can't tell you how much more I would value someone who takes 4 weeks to build something that works 100% of the time over someone who takes 1 week to build something that works 95% of the time. Something that works 95% of the time is worse than useless IMHO.
The replies to this topic are the most ridiculous programmer-equivalent of Internet-toughguy posturing.
Have you seen the people, money and time resources NASA put into the code which runs on space flight hardware? The reviews on reviews on reviews, the exactly specified every code path, the complete tracking and investigating of every bug in their codebase ever and checking all of them for wider applicability... and they don't get 100% success in years of applying their processes to a comparatively small and limited codebase.
Wasn't Zed telling us about how 37 signals restarts their Ruby in Rails processes every day due to instability and memory leaks? Guess that makes their lower-than-100% success rate multi-million dollar generating software "worse than useless", eh?
Sorry didn't see this at the time. Just for the record, I wasn't saying lower than 100% success rate is worse than useless. I was saying 95% success rate is worse than useless. I didn't set up this false equivalence, the OP did. I know that 100% is a tough or impossible goal, but you really do need to approach 100%. 95% is nowhere near close enough.
Show that you have a past record of Getting Shit Done. List things you have accomplished on your resume. Be able to say "I led the doing of X, and it improved the company". If you are fresh out of college, describe your ability to finish your schoolwork early and completely and have recommendations from the professors backing you up on that. If none of this applies to you, start a small open-source project _and complete it_. Also RTFA and see that you meet the author/interviewer's definition of a person who can Get Shit Done since he describes what he's looking for in a fair amount of detail. Having a college degree used to be evidence you could GSD but it's not good enough anymore.
> E.g. "I am average compared to other engineers". For an early stage startup, average is not enough.
If you bailed them on this, you're process is seriously flawed.
http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
As Kruger and Dunning conclude, "the miscalibration of the incompetent stems from an error about the self, whereas the miscalibration of the highly competent stems from an error about others"
Historical references
Although the Dunning–Kruger effect was put forward in 1999, David Dunning and Justin Kruger have quoted Charles Darwin ("Ignorance more frequently begets confidence than does knowledge") and Bertrand Russell ("One of the painful things about our time is that those who feel certainty are stupid, and those with any imagination and understanding are filled with doubt and indecision") as authors who have recognised the phenomenon.
Asking people what they think of themselves is just 1 input. It is not a binary decision. Rather, you need to get as many data points as possible on whether the person is very productive or not and then make a call on whether to hire them.
while there are definitely bad employees, the major problem is the fact that the US school system no longer trains people to be leaders. That's where friction comes in between hiring someone in the early days of the start up. You have a culture clash between a person who's trying to blaze trails and a person who just wants to be along for the ride. I think there's definitely a place for both, but in the beginning you definitely have to take extra time to look for like-minded individuals.
I had this experience working at Google. I had a horrible time getting anything done there. Now I spent a bit of time evaluating that since it had never been the case in my career, up to that point, where I was unable to move the ball forward and I really wanted to understand that. The short answer was that Google had developed a number of people who spent much, if not all, of their time preventing change. It took me a while to figure out what motivated someone to be anti-change.
The fear was risk and safety. Folks moved around a lot and so you had people in charge of systems they didn't build, didn't understand all the moving parts of, and were apt to get a poor rating if they broke. When dealing with people in that situation one could either educate them and bring them along, or steam roll over them. Education takes time, and during that time the 'teacher' doesn't get anything done. This favors steamrolling evolutionarily :-)
So you can hire someone who gets stuff done, but if getting stuff done in your organization requires them to be an asshole, and they aren't up for that, well they aren't going to be nearly as successful as you would like them to be.
The other risk is of course the people who 'get a lot done' but don't need to. Which is to say they can rewrite your CRM system and push it out to the world in a week but only by writing it from scratch.