Monday, January 28, 2013

I challenge all recruiters' claim that programmers are scarce

Since we announced our funding at Radius on Wednesday, just about every recruiter and recruiting website in the Bay Area has spammed me because we're hiring engineers (yes, we are hiring).

When negotiating terms with them, I'm being fairly aggressive though. I'm only offering about half of what they're getting from other firms. Why is that? Because I challenge this notion that programmers are a scarce resource that they somehow know to tap into, or that their website has cornered the market on.

Exhibit A: the Windows 8 App store.


There are DOZENS of password managers and anti-virus programs in here. Dozens. And every one of those required one or more programmers. This is for an app store that no one cares about on Windows 8. Now consider the hundreds of thousands of shovel-ware apps on iOS and Android as well. Or crappy websites. We're talking millions of people who can write serviceable crap-ware out there in the world.

The reality is, there's no scarcity of people who can bang out computer programs. Not even remotely. The "scarcity" problem I think businesses face is two-fold.

1) Public relations.

It's not that programmers are hard to find. It's that it's hard to find ones that will work for you. Or even know about your company.

Google, Dropbox or Twitter have no problem with this. All are huge brand names, great places to work, pay well and have compelling problems to work on. They're viewed as technology companies.

In contrast, it was hard to get decent programmers to work with us at Groupon after we went public for several reasons. One was, of course, candidates believed the IPO took away most big upside on future stock grants (turns out, that was true). But the main ones were that Groupon "wasn't a technology company". The company had a lot of bad press, bad merchant experiences. The founders took a lot of money off the table in a late round. Things like that.

All of that is PR and marketing, not recruiting. There's no secret sauce that some recruiting firm is going to be able to put out there to change these things. Either people know about you and want to work for you, or they don't. I'm confident that we're establishing a brand at my current company that will sell us as an awesome tech company more than the recruiter will. I'm paying them to feed me resumes, that's all.

2) Core competencies

Note that until now, I've been using the term "programmers". You could use this interchangeably with "hackers", "script kiddies", "coders", "developers" or whatever your choice for someone who is competent enough to open Xcode and write shovelware for the iPhone, or bang out pages with N+1 select statements in Rails.

Another term I have for this is "Goo-coders": people who can write code only because Google exists and they can search for the answers on Stack Overflow or whatever.

There is a higher level than this, and the name I apply to it is "software engineer". I understand that people debate this term vs. "software developer" or "software craftsman" (I'm sorry, but barf). Whatever you want to call it, here is what I mean by it: someone who has a deeper understanding of how computers work, can have a conversation about code, doesn't have an agenda for certain tools ("I must use Clojure at my next job"), can figure out best practices where there are none, and can implement a robust, well-designed, scalable software solution based on requirements without hand-holding.

Those are the core competencies I want. Yours may be different, but those are mine.

I have to look through a lot of resumes to find these people and recruiters aren't that good at filtering them. A lot of times, someone looks good on paper but after 10 seconds of talking to them, you know they don't fit into the above. So I end up spending more time than the recruiter on all of this for any given person. In addition to filtering through the resumes I get, I spend the time to phone screen, to set up interviews, negotiate the offer, blah blah blah.

All of this adds up to: most recruiters are sourcing me solicited resumes, nothing more. In fact, I know one recruiter (that we've since fired) was simply doing Craigslist arbitrage. They took our job description and posted it to craigslist, then they did almost no filtering on the results before forwarding. I know this because I ask candidates where they heard about the job. If you're using a recruiter, you should do that too. This work was not even remotely worth the amount we were paying this company and I refuse to do it again. You should too. Even if you know nothing about software engineering, you should instead find someone to help you filter results when you post to craiglist yourself first.

So my recommendation, when you're looking for people, is to:

a) Hire a PR company instead of paying recruiters a ridiculous percentage.
b) Sign up for something like Jobscore, which allows you to figure out which online job posting funnels are working best for you.
c) If you truly know nothing about engineering, go make a friend at a local hackathon that can help you do phone interviews for you.

Tuesday, January 01, 2013

On Windows 8

Oh crikey, now @kunikos as asked me to explain what's wrong with Windows 8. No way would that fit into 140 characters so here goes...

I've given this a lot of thought, and have already outlined how to profit off of the Windows 8 disaster. After all of this thought, I've come up with one word to describe Windows 8:

Pointless.

Pointless for users. Pointless for OEMs. Pointless for ISVs.

The only company it's not pointless for is Microsoft. Microsoft is desperate to try to find a way to get people to develop for their fledgling mobile platform and heretofore non-existent tablet platform. By merging the aforementioned fledgling platforms into the mainstream platform, they hope they can get developers for the former.

I mean, I get it. I get what they're trying to do. The goal is admirable, just not the execution. It's also about 8 years too late. They had their chance with Windows Mobile for a decade before this. They had .NET running on it and everything. And they failed to make it work.

So now they're sacrificing their existing userbase in order to make it work. I have not heard a single story of a business user upgrading to Windows 8. Not one, even on the internet. And who would? Any IT department worth their salt is going to recognize immediately that it's just not worth it. Why bother with all of the additional help desk calls when the non-computer literate can't find Solitaire anymore, or WebEx doesn't work, or whatever? It's a whole new set of headaches for an OS upgrade that, if you look at the features, actually has nothing on the back of the box that's interesting for enterprise. The features listed are nearly all self-referential.

And not only that, Microsoft threw OEMs under the bus with Surface. They've thrown ISVs under the bus by making RT incompatible with all existing software. And not to mention that no one -- not even Microsoft -- sees any way to build additional value out of anything Windows 8 offers. Microsoft is charging less for this upgrade than any other upgrade, including Vista! Can OEMs charge more for their Windows 8 devices? No. Can ISVs charge more for their Metro-ized apps? Hell no. If anything, these sandboxed app stores drive the prices down.

But let's go into more detail about Windows 8 philosophically and what went wrong.

Windows 8's core premise is that the desktop OS UI is in decline. That the keyboard and mouse are outmoded and the touchscreen is the ideal. This is not what I believe, this is what Microsoft believes, as evidenced by Windows 8. Why do I say that? Because they have taken 18 years of perfecting the Windows 95 workflow, selling it to billions of people, then thrown it all out. Windows 8 is Frankenstein. New UI motifs gobbed onto existing ones as an act of corporate desperation, with no way to turn it off.

The fundamental view is a full screen Metro view yet all existing apps are desktop apps. This makes usage pattern on Windows 8 is so bizarre and jarring for desktop users it's intolerable. Hit the Windows key and suddenly everything gets replaced by a monstrous full screen Metro panel. And then the funniest part is that visual discoverability is worse in Metro than it is in Windows 7. Need to find a way to add a printer? You need to know to swipe over to the right hand side of the screen, get the charms bar, hit Search and then type for "printer" AND THEN click "Control Panels" to search. There is no way to click around the screen until you find it like in W95->Win7.

But here's the kicker: no-way, no-how can Metro supplant Windows desktop apps as they exist today. You can only see two Metro apps at a time. Even if you have a 30" monitor, as I do, you get only two. No longer do you have the cool snapping of Windows 7 -- a massive boon to usability that Win7 introduced -- but now you can only have predetermined division sizes you can use. It's as if no one at Microsoft envisioned what it might be like to develop actual productivity applications for Metro before converting the whole operating system to it. Need to see five spreadsheets at a time to cut and paste between them? Tough shit.

The most telling part? The truly shocking thing? The "Metroized" Office that ships with Surface is a desktop app. It pops you out of the full screen Metro experience to operate. It has widgets that are flattened out like Metro, but even Microsoft realizes that nobody can use this full screen WinRT experience for anything serious.

So there you have it. There's my 2c on why Windows 8 is an unmitigated disaster. WinRT is not in itself a bad idea. Metro is not a bad idea. The problem is that Microsoft tried to approach the problem of convergence by smashing the two onto desktop Windows instead of finding a reasonable middle-ground. Not even Apple has been brazen enough to think this is a good idea.

Microsoft should undo the damage and revert away all of this Metro crap. Maybe people will pay for this upgrade. Then for their future strategy, simply fork Android and build Office, plus their C#, C++, .NET tooling for it. Give up on the OS market--they're screwed either way--and start working towards a stronger services market.

FWIW, I didn't bother downgrading to Win 7 as mentioned in my tweet. I instead loaded on Mint 14. It works better on this PC (note: there is no ethernet driver support for Win 8 on a 1 year old XPS 8300!!). It has a windowing UI that works well and I can just boot into Windows 8 when I want to play games.