If you're running a toothpaste factory, you don't need vision. You just need competent execution. You need people to show up and follow the plan without complaint. This kind of work can actually be managed. If you can cut costs without compromising on quality, you do it. It's not about vision. That's already solved. Vision was relevant long ago when someone figured out how to make toothpaste. Your job is just to keep abreast of competitors and seek rent.
VC-istan is a postmodern startup factory. It's technically not a company, but as a tight social network, it functions as one. VCs, rather than properly competing, talk to each other and agree on who they like and who they don't. VC-istan's "serial entrepreneurs" are just glorified PMs whose egos make them unemployable. The real bosses are the VCs. They want quick exits, as they should, because that's how the incentive systems that govern them are set up. The "tech press" are a sort of HR organization. Entrepreneurs are PMs, often mediocre ones, and engineers are chumps paid in lottery tickets. This is just a big company that has managed to dress itself up as a thousand small ones that happen to be all controlled by the same people.
Now you have an ecosystem of commodity entrepreneurs hiring commodity engineers to implement commodity ideas. Ok, nothing to see here. Mobiles skwrking, mobiles chirping, take the money and run, take the money and run, take the money...
Is it any wonder that this isn't producing innovation? It shouldn't be. Yet VC-istan is doing a lot better than most large companies do. It seems inevitable in large organizations (including economies) that the resources gravitate toward players who don't have much in the way of vision. Innovation is the exception. It adds variance. Given that we're social animals who judge one another based on reliability (low variance/minimal performance) rather than capability (expected return) it is socially dangerous.
How many people have the talent and the resources? I'm sitting on +4 sigma talent but have no money. The people with boatloads of money seem (with a few exceptions) to be lacking in vision (which means I can't tell if they have talent, but I have doubts). I can't say that I blame them. Why take risks if you have no need to do so?
What we have now is a generation that's used to technical progress and wants to take part. We have people who have been working their asses off since age 4, are now in their 20s and 30s, and want to take part in technical innovation. Most of them can't, because there's so little of it actually going on, and because most work activity is bullshit oriented toward keeping one warlord boss's status high at the expense of another's, rather than being invested in true progress. That's depressing. It creates a malaise. A deep sense of ennui. Yawn, another fart app. We now have an unprecedented number of ridiculously talented, over-educated people saying, "Dude, where's my machine learning job?"
I think that 2013 will see the beginning of a Flight to Substance, and if I'm right, that will put that talent to better use than fart apps and toilet check-in services. I don't know how it will play out. I have no clue who will fund it. One sign of this is the increasing clamor for Valve-style open allocation. By the mid-2010s, you won't be considered a real tech company if you're running closed allocation (take heed, Google). If I'm right, that will help. That will help our generation work its way toward excellence. At least, some of us will go in that direction. Others will go off into the weeds of fart apps. May the market reward both crowds justly.
Here's how we fix tech.
* Open allocation. As long as the work is relevant to the company's needs, let people work on whatever they want. This enables native growth of technical talent. You don't have to poach qualified people with ridiculous signing bonuses. They quickly find a project that fits their skills and interests, and they actually improve while they work for you. Imagine that.
* Stop fetishizing either extreme of company size. Not all large companies are bad, not all startups are good. Nor vice versa. If your 50-person startup is running closed allocation with typical HR policies, then it's just a big company that failed to get big and it should be considered a massive joke. I've heard of people getting turned down for transfers in 20-person companies because of "headcount" limitations. If you want to work at a startup, then drop that shit and work for a real fucking startup.
* Demand work on hard problems. Don't build someone's fart app for 5% equity. If you're in the press, don't reward stupidity either. Instead of cheering on idiots who get acquired for outrageous sums, ridicule them.
Intellectually, I know there's a huge difference between a programmer who has 99th percentile programming skills and one who has 90th percentile programming skills. Being a non-programmer, I don't have the tools to easily tell the difference.
This means my base instincts will tell me to work with the person who is a good programmer and speaks confidently and clearly, vs. the exceptional programmer who's shy and mumbles. That's because as far as my brain can tell, they both have the same degree of programming ability.
I work very hard to solve this bias. I make sure to focus on people's strengths and ignore weaknesses that aren't obvious dealbreakers. I try to maintain wide social circles and ask my most successful friends what standards I can use to judge skill in different areas. I pay a lot of attention to how other people in their industry judge them, vs. people in general.
What I've found is that there are two kinds of people who are really diamonds in the rough. One is people who are generally smart and have shown the ability to excel in a lot of fields, but haven't had a lot of experience in the field you're talking about. Think about a recent graduate who has an exceptional understanding of History and Psychology and is an excellent tennis player. This kind of person will usually learn very quickly and excel at jobs that demand a high ratio of problem-solving ability to knowledge.
Another kind of diamond-in-the-rough is someone who is admired by people in their field but somewhat disparaged by others. A good example would be a Salesman who always exceeds his quota but struggles with basic math. People who find math easy will typically think of this fellow as stupid, even if he's a genius at what he does.
Pay attention to people like these. It's all too easy to make a mistake like "If someone can't do math/can't speak coherently/failed high school/doesn't understand technology/uses Internet Explorer, then they must be stupid." In my experience this is almost never true-having a weakness doesn't mean that someone doesn't have a certain strength. Focus on the strengths and you'll end up working with (and hanging around) much more interesting, much more diversified people.
Is this a major business problem for you? Are you trying to solve it using actual money and process or just winging it really hard every time? There are known programmers who are really good (USA Computing Olympiad) and some of them will be articulate and you could find someone who's a good fit and hire them as a consultant to help tell the difference... though that's only off the top of my head.
Every time I hear somebody describe a "big problem" they've been "trying very hard to solve" I wonder whether they've focused on it enough to (a) step back and think about possible tools to make the job easier (b) resort to professional specialization (c) make it the job responsibility of a particular person or (d) spend actual money.
So, maybe this will come as a shock, but "computing olympiad" success doesn't correlate with success as a professional programmer. There's so much more than raw intellectual horsepower to being a good team engineer that it can't be captured with any one test.
Which is to say, the parent is right. Identifying good programmers is a hard problem. Harder than identifying people who do well at coding contests.
IOI and similar programming competitions do not select for good programmers. They select for people who can solve small algorithmic problems efficiently in a short time period with throwaway code. There is some overlap, but also a lot of perverse incentives. In professional programming, the tortoise usually beats the hare.
(I have competed at a national level and won a national college-level programming competition myself, and don't really take it all that seriously.)
I'm not just trying to find talented programmers. I'm trying to address the more general problem of figuring out whether somebody is good at X. You're right that the easiest way to judge on a case-by-case basis is to ask known experts. But since this is/was a cognitive bias of mine, I'm trying to overcome it myself.
I have spent a lot of time, done plenty of reading, and spent my own money on this problem. Like you said, I actually have paid experts to give me advice on how to identify talented people their field. More frequently though, I'll network and ask in an informal setting. And as a result, I have managed to severely correct several biases I had, such as thinking that anyone who couldn't do basic Math must be not be very bright.
One thing that's relatively easy (i.e., only took me a few months of effort) is learning how to identify generally smart people who learn fast. (I would actually divide this into learning social systems quickly vs. learning technical systems quickly.) If two people are entering a field or starting a job at the same time, I can generally predict which one of them will learn faster after a 30 minute conversation. The biggest surprise was that very smart people can be catastrophically bad at things "normal people" would consider basic-like eating spaghetti or not offending their interviewer (or even realizing they'd offended someone.) Before I tended to assume that fast learners would be good at most things and exceptional at a few things.
A more challenging problem: say I meet a lawyer, or doctor, or anyone with a lot of experience in an area I don't know much about. How can I tell if they're genuinely good at what they do? So far, general intelligence + percentile-based accomplishments ("I boosted revenues by X which is better than 95% of marketers...") + asking them to walk through a real life situation has been my best predictor. I'll validate this by asking known experts afterwards or looking up the person's career track.
Even so, it's not a particularly good predictor, and asking a real expert works much better. But by looking at actual data, even if it's relatively weak and anecdotal, my ability to accurately judge competence has become much stronger over the last few years. I think this is something that most businesses could benefit from, but the more common response seems to be throwing up their hands and complaining about the lack of qualified people.
Edit: when I said "how we judge talent is actually one of the biggest problems", I should have specified "we as a society." It clearly came across as "we as a company", sorry about that.
People want a programmer who can only juggle 3 items, but does it so well they are juggling chainsaws. That's easier to identify - it's their production (portfolio = chainsaws) and the quality of their production (referrals = not missing any arms). If you can verify that people coded what they claim they coded, it should be fairly easy to tell who the good programmers are.
If you're having trouble telling who the good ones are, you haven't found any yet.
To extend the analogy, there are plenty of jugglers who are capable of juggling 3 chainsaws, but find that they can only get paid to juggle 2 plastic balls over and over again. Variation in their craft is punished, not rewarded. If you only look at whether they've juggled chainsaws before, you'll miss out on a lot of great talent.
I've seen many, many people who are much better than their portfolio or past accomplishments indicated-especially people in their 20s who've just happened to work at crappy companies and end up on bad projects.
Someone who's never juggled before may not be capable of juggling three chainsaws at first, but you can look at their athletic record in other areas, examine their flexibility, coordination, and willingness to practice, and use these to predict whether that person will be able to learn how to juggle chainsaws. How do you figure out which of these areas matters? By asking existing expert jugglers.
This hits too close to home. I am trying to figure out what to do about it.
In my case it came down to the realization that the standards people use to judge your skills are very arbitrary. Once I went out and got a few certificates I started getting job offers. Nobody cared about the fact that I was smart enough to learn SAS in two weeks or make my previous employers large sums of money, they only cared about the fact that I had the certificate. C'est la vie.
In every industry there's some sort of bar past which people start treating you like a real person. Getting past this bar often has little to do with merit-think having a degree from a "prestigious" college or having exceedingly specific previous experience. Try to figure out what that bar is in the field you want to work in and how you can show that you've cleared it. Programming is a diverse field but a few bars I've seen people use (not saying I agree with these) are "has experience in Ruby/Python/Functional Programming/my favorite language", "has contributed significantly to open source", "recommended by someone I know who is competent", and so on.
The last one is IMO the most valuable bar to clear. The more you can get out and know people, and show them that you're competent, the easier it is to get better jobs and better projects in the long run.
Hired to be a programmer. Showed up and they decided I was going to be a business analyst. I've got significant experience in .Net, Scala and NLP but I can't even get companies to reply to my applications. I despise my job but I can't quit yet and I can't find another job. I'm working on side projects to build up my portfolio but I right now I just really hate waking up and going to work each day.
My advice: keep learning cool stuff, go to networking events (e.g. meetups, especially related to NLP, machine learning, and Scala) get some job leads there. Cold-emailing your resume rarely gets you anything, especially when you're in a career sand trap. But you have a skillset that, if you're strong in what you've cited, is desirable.
You will eventually get a feel for how much investment you need to put into your day job to keep it, and you can use the remainder of your time (which may be 20-35 hours of your work week) to keep current with the skills you want. If you're writing code on company time, be careful and make sure not to use it for any closed-source purpose, because you don't want your employer asserting ownership.
You can get out of the sandtrap but you'll have to break the rules to do it. Stealing an education from a boss feels dirty when you're young and naive, but it's a necessary survival skill and, in a world where bait-and-switch hiring is common as dirt, not at all unethical.
I do extremely little for my job, so little I honestly started to wonder if I was missing something. Then I slowly realized my coworkers are morons. A few weeks ago, I was asked to create a directory structure for a bunch of incoming data files, a few hundred directories all told. Another person was tasked to do the same on a different server.
I spent about ten minutes on it because I wrote a shell script. He did it by hand and spent all day. Which, of course, is what I told my boss it took me as well. I just happened to use the rest of my time to read Akka in Action.
I can't promise equity in a company, because this idea was looking more towards being a lifestyle business. Revenue/profits of operation would thus be the thing at stake.
But I agree with your basic point. If you can get good at spotting talent that has "flaws" that would disqualify them from the more typical elitist hiring mills, then you have a huge advantage.
What it comes down to is that the engineers are better suited to evaluate engineers. Obviously, you've got to have final say as leader of the company, but the engineers are your best asset here. This is why good VC's always have a luminarie in their back pocket to send out to evaluate tech before an investment. Even technically competent VC's would rather send an experienced database developer to look over a new DB company rather than rely on their now 15 year-old experience.
Depends what you're building. If you need cutting-edge programming expertise or knowledge of computing's deep magic, then yeah.
If you're building a CRUD database or a local-mobile-social app, you don't need the expertise that much.
This I disagree with. Causes of success and failure are hard to tease out, but people know when software sucks. Also, if people can't use it, then all the cleverness in the world (in optimizations, for example, or in feature set) doesn't matter. It still sucks.
But the broad middle is a muddle. People with talent that has been squandered by circumstance, people without talent who have succeeded due to accident and luck, etc.
That's very true.
This is part of why I think Valve's self-organizing open allocation is superior. Management rarely knows who the best programmers are. The group of programmers, if they're good, usually can figure out an appropriate leader on a per-project basis. This doesn't generate the permanent, entitled leadership that management wants to see, but it gets the job done.
You also need to create room to fail. If the software project can't be saved, let it die so people can allocate their talents and energy to something that has better odds. Give the architects respect for trying and ask them to write up the challenges they encountered, so as to keep the knowledge in house. If you fire people for failing projects, then you lose that knowledge and will probably fail in the same way again.
You talk about software that sucks. However, one of the quirks of software is that sometimes even when it sucks it can succeed and even when it doesn't suck it can fail. For example, technologically google wave didn't suck, but in terms of actually providing useful features for people that justified its use, it didn't have a leg to stand on. Then look at wordpress, which started out sucking but because it was open and because it had developed a strong community around it ended up getting better and better to where it was finally sort of decent. Or look at PHP. As a language it definitely sucked at the start, and there's a strong argument to be made that it still sucks. But it is perhaps the most popular language for web development in history.
Most software is even more difficult to determine success or failure with because even though a software project might not be a success immediately it could be a success down the road. Another case in point would be the Mozilla Project. At the outset it sucked, but eventually it became pretty awesome. How much of the awesome of today's firefox is rooted in the code from the early days of mozilla and how much is due to subsequent dev. work? How do you tell the difference between software that sucks because it is rotten through to the core and software that sucks because it has a layer of crap on top of awesome internals?
And then how do you track everyone's contribution to software? Sure you can keep track of commits, but that doesn't track inspiration and ideas. Sometimes the fundamental design or mechanism for a given piece of software will mostly be due to a different dev. than the one who implemented it in code, and often there is no paper trail whatsoever that that's the case.
Ultimately there's no objective way to measure either talent or success except in the extremes. Some people's subjective estimates can still be reasonably accurate though, but usually it takes a talented and experienced dev. to be able to judge another dev.
So, if people have an unfailing sense of good and bad software, which they might not, it would be eventually consistent at best.
You're also right that individual talent is, for the most part, impossible to measure.
Valve's ideology is "We hired you, we trust you." That doesn't mean that they give new hires all the keys, but the going assumption is that anyone who gets in is a competent adult who doesn't need to be restrained with typical, military-style subordination. If you're going to hire someone, then trust that person with his or her own time. If you can't, then don't hire.
Most companies grow too fast and end up hiring before they trust. This causes a loss of focus, because they need to generate busywork projects for the new hires, but it also creates a dynamic where there are Real Fooblers (for a company named Foobar) and everyone else, and the company has no problem generating a bunch of shit work for the "everyone else" category so the Real Fooblers can work on the fun stuff.
Talents of leadership and architecture can be assessed later on, but everyone worth hiring should start out with the basic right to direct her career and, when the time comes, prove herself.
When I say that it's not legitimated, I'm not saying that it's illegitimate philosophically (although I think it is) but that such managers do a poor job of convincing other people that their power is legitimate.
In the military, most people buy in to the rank system. A major component of the abuse inflicted in basic training is to tear someone's ego down and build the person back up again as someone who can take orders. The result is that a lot of them come out of the process genuinely believing that the commanding officer's power is legitimate. In most companies, nothing happens to convince the grunts that the managerial power is legitimate, since most managers are puppet leaders rather than the leaders that the group would pick.
Don't they convince their shareholders? These companies keep making it big even with tremendous overhead of useless management and they seem to do it by pitching investors and locking down markets.
Then you shouldn't. Period.
EDIT: It is unfortunate that the types of people (quick learner, genius at a subject) are not considered for engineering jobs usually because the interviewers don't know how to interview. They ask stupid technical questions instead of having a technical conversation and what code on a whiteboard.
Why not do calculus with an abacus?
Not to mention the problem of people who make hiring decisions having no idea of what the problem they need to solve is and hire unqualified people under false pretenses. The old bait and switch.
I am planning on putting up a 'Proposition HN' in a week, with this exact thing in mind. I want to pay talented HNers to work on their dream/vision/side-project in exchange for participation/equity.
Watch this space.
trumanshow.. I just created a throw-away gmail account:
drop a line there and I'll email a link to the HN post once its fleshed out and posted.
+4 sigma for certain things, not overall. It's not even possible to measure "+4 sigma overall intelligence" and if it were, I doubt I'd be the one who has it. But there are certain subdisciplines where I'm in that range.
I say "+4 sigma" because for the vast majority of companies I've observed, I could run them better, and they seem to at least think they have 2-3 sigma talent.
If we accept that the people who actually are in charge are +2 to +3 sigma minds, then I'm easily +5 based on the difference between me and them. If we assume they're idiots, then it'd be generous to give me +3. The reality is probably between the two.
~ = snark, allow me one snark ! :)
This would have been great when I had time off to work on my compiler back in the summer. Oh well, the algorithm still had/has bugs in then anyway.
I'm actually reasonably happy with where I am, because I have a career strategy that I think will work. Startups aren't the only path and, if you have no connections and are going to be "just a programmer", they're not always even a good path.
Most successful entrepreneurs started in finance because, for better or worse, that's a way to build credibility. Remember that VCs are also financiers and will be biased in favor of that experience, even if it's not relevant to what most startups need.
Attempting to see if I can create that niche (data science) in a large company, first for myself. If so, then things will go really well. If not, then I'll probably be getting back into "regular tech" mid-2013.
The resulting problem is that most of these companies do not really care about pushing technology forward or contributing relevance to the technological sphere - just figuring out the right arrangement of features to make the things not completely fall apart. Just as an anecdote during my career Ive worked with 4 Phds (Stanford, MITx2, Brown)... in each one of those cases they were essentially very educated software implementers - management would dole out tasks to myself and them that were just typical... we need an ad unit here, an app for this, analytics system for this, landing page for this. I don't criticize the Phds I worked with in that Im sure they were trying to pay their bills like everyone else but it was disheartening that our current system/environment had allowed such great minds to be puppets of management who were the least qualified in the room to be working with technology.
Notable quote that I agree with somewhat.
If we start with a Beta(2, 2) prior on the percentage of CEOs who are insufferable, egotistical fucks, we get a Beta(4, 2) posterior. So the 95% confidence interval on the percentage who are insufferable, egotistical fucks is [28.4%, 94.7%].
We started a foundation that builds web and mobile services, on open source software, which are used to fix poverty. This area was essentially not considered a market when we started, so the threshold to get started and recognised for doing something useful was relatively low. As a non-profit foundation we could also take investments from those that wouldn't invest in your ordinary tech startup.
We aren't doing this work to get rich, but there are a lot of other benefits. We have very patient investors and we have a lot of freedom in implementing our vision as we see fit. It is also pretty amazing to be working on software and services which actually make a real difference for those that have it the worst.
One of our core services, a mobile phone field survey application, have been used recently to do baseline surveys for all public water points (wells etc) in both Sierra Leone and Liberia. Providing data that just didn't exist before. 30 people go out on motorbikes for 3 months to collect data and come back with tens of thousands of surveys. This data is then used to drive national policy on rural infrastructure improvement. This stuff makes a real difference. And we have agreements in the works which will make this type of data collection possible all across sub-Saharan Africa, with our tools that are used by governments, NGOs and multi-lateral organisations such as UNICEF.
It feels like working on stuff that matters. It is both technically interesting and there is a lot of work to be done. I am sure that in education, healthcare, government, public infrastructure and other areas there is a lot that you could think of that could be improved, which you could get unconventional funding for to do.
Basically the point of the article is, let developers choose their projects and don't force them on them, they will choose it better and make it much more likely to succeed.