The difference between a programmer & a hacker
hackerjobs.co.uk
hackerjobs.co.uk
As someone who is a programmer for 41 years, leads multiple open source projects, posts to github on a daily basis, and writes code every day I find this trend disturbing. I have interviewed for a job where I helped implement the compiler they use and I'm "not qualified for the job".
People ask me why I'm not in management. I've turned down several "promotions" in companies because I live to program. Why would I move from the top of my skill set to the bottom of a career I know nothing about?
So your advice is interesting but seems to have a target audience of recent graduates, not seasoned professionals. Look over your hiring record. I'm willing to bet that you have not hired anyone over 40, regardless of their github status.
Sadly, this means that we will continue to repeat the same mistakes "for the first time". Knuth's literate programming, Alan Kay's Meta insights, Chandy and Misra's parallel work, and other fundamental quality gains will have to wait for another generation, assuming that generation ever gets its chance.
What I see are languages without standards "evolving". That is, they are making all old inventions but badly (e.g. Python has "closures" but only 1 liners. What a joke.) They "abstract away" complexity but badly (e.g. Ruby has gems but you have no idea what the ruby stack is really doing.). This is much different from Alan Kay's abstraction. To quote Stroustrop "C++11 is a whole new language!" And MapReduce as an "invention". Oh, please. The list goes on.
The worst part is the stupid hiring games meme. Solve our puzzle! Take our quiz! Show us your blog! How many angels can dance on the head of a pin? Make sliding colored blocks on web pages!
Experience is a valuable asset in most professions but is looked down upon in programming. Unless, of course, your experience is "exact"... "oh, we need an Oracle 10.3 database guru with stored procedure experience".
If you want to know what companies to avoid... look for the ones that emphasize "culture'.
Either something's wrong with me, or something's wrong with this profession.
You would lose that bet I'm afraid! To be fair, I've only ever hired one person over 40 and that was purely down to the fact that 95% of applicants I've received to any of my jobs to date are under 35.
You are right on one point, this advice is mainly geared towards younger professionals purely because someone with your breadth of experience I would expect to have plenty of worthwhile experience to surpass any 'popular' github repo.
Honestly though, this gives a decent three step template for how to get yourself on the top of the pile in about ~1-5h worth of work:
1. Register a GitHub account, fork some projects that look cool
2. Register a domain, set up a yourname.github.com page for hosting, and add your contact info and link to github, whatever. Set up a mail redirector.
3. Upload your own project. If you don't have one, probably a good idea is to replicate some basic utility. How about pretty printing JSON using python from the command line?
Bam! Passion, done. For extra credit, create a blog and write two-three posts on why Java is verbose, something on getting started with node.js on your machine and a benchmark of your json utility and another one.
In all sincerity, when I look at candidates I also look hard for passion, and a blog, github, stackoverflow, etc puts them at the top of the pile.
As a counter anecdote, I've worked with tons of really, really good developers who went home at five, and came in at nine, and brought it every day. For most of them, life happened and with two kids it's harder to be prolific or show resume-friendly passion.
On the other hand, I doubt any of them will ever need to send in a resume anyway.
Fake or not, sounds hirable.
Sounds pretty standard graduate fare, but can they solve an actual coding problem with me? I don't mind what language they use, and they can have any IDE from a pencil and paper to a modern autocompleting behemoth.
The biggest giveaway is that there are no projects which are just for fun.
Incidentally, I've observed that the "just for fun" projects is a good trick for identifying a serious economist as well. A real economist Tyler Cowen obsesses over the economics of finding good restaurants and whatever else tickles his fancy, whereas a pretender like Krugman is all serious policy issues (both examples of economists who's policy I tend to disagree with).
[edit: just noticed someone downmodded you. WTF, how does your valuable correction to my comment deserve a downvote?!?]
Well bravo you. The problem with recruitment in our industry is not the candidates with no GitHub account, its the egomaniacal interviewers who waste no opportunity to turn any interview, in this case any application, into a passive-aggressive pissing contest.
Perhaps its acceptable for an interview to be adversarial, but I don't think any other industry matches the tech industry for the utter hostility of the interview process.
My disregard of people who don't commit to their own projects is entirely a personal choice and I didn't intend on that point to be a direction.
That said, I work for a company that does not allow its code to be open-sourced. The job is demanding and after I put in 60+ hours a week, I simply feel worn out. On top of that, I have an 8 month old son which means that my sleep is fragmented at the best of times.
If you're unwilling to take the time to have a conversation with me to see my passion (and this is something I firmly believe comes across in any interview) then I am unwilling to waste my precious time with my son to have an inane dialog about my lack of a public portfolio.
On a different note, 60+ hours a week sounds too much, not sure when you started working on this job, but if you keep continuing that. You. Will. Burnout.
And to answer the next question: it's a bank. Every time I've contemplated leaving, there was some major life-changing event that prevented me from doing so (i.e. getting married, wife losing her job, buying a house, moving abroad, having a kid...). Likely I'm making some excuses here, but my point remains: I know a lot of hard-working hackers that simply don't have the time to build a decent GitHub profile.
Those hackers - whom I work with - all read HN extensively to stay abreast of trends, and toy around with side-projects. But all that "side coding" happens whilst at work. And therein lies the problem. If you have ever worked as a programmer on Wall St. you won't need me to spell it out for you, but for those who haven't: your firm owns your intellectual property. Even if it's not related to the firm's business, if you do that work on the firm's premises, it is theirs, and you are not entitled to export it. If you try it is generally considered as grounds for termination.
If you are working at a company that doesn't value open source now, and you don't contribute to open source, it will be hard to transition to a job that does value open source contributions.
You mention your current job is in banking. If you were to apply to another banking job, you'd probably have a better chance of getting the position than someone who has a rich open source portfolio, but no experience in the industry.
Having a GitHub account with x projects is just the new has x years of experience in Java.
Lots of startups disdain open source, for good reason. Been working at startups for 20 years, and none of them used open source for more than incidental reasons.
You get thousands of resumes, and you can't possibly call every one of them. So you try to find ways to build a funnel, hoping that your heuristics are weeding out the majority of those who are unsuitable for the position and keeping the majority of those who are suitable.
It's not that the company is being a dick, or that they don't value the candidate's time; it's simply that they can't possibly find each and every needle in the haystack, or find any at all unless they start filtering on SOMETHING.
So unless you have something compelling on your resume and cover letter that makes you stand out (not saying it has to be source code; just saying it has to be compelling), you're a lot more likely to be filtered out of the first funnel and never make it to the phone screen to have a dialog.
It's hard to grok how difficult and complex hiring good people is until you find yourself on the hiring side of the equation. The leaked Valve manual does offer some insight, but even that's barely scratching the surface.
1) I'm not that surprised. For example, I know that half the recruiters who call me are asking about positions for which I'm blatantly unqualified and which simply don't appeal to me. When I've carried through to an interview, this often becomes abundantly clear to both sides.
2) If you're only even interviewing such a tiny fraction of the many, many applicants you hear from, you simply don't get to claim there's an engineer shortage. There's a shortage of engineers you like.
If you only hire the top 1% of applicants, you will never hire more than 1% of the applicant pool... no matter how large it is. You'll just get the vast majority of the engineering population pissed-off at your hiring practices because you reject 99 resumes for every 1 you offer to while complaining of a shortage.
When I've interviewed people in the past, I've had them do some coding or domain modelling / OO design exercise as a phone screen. On the other side, companies I've interviewed with have used coding exercises (live or on paper).
I don't agree with the "if you're truly passionate" argument; challenge me in an interview and you'll find out how passionate I can be :) That doesn't extend to wasting my time with the latest recruiter fad. If I want your job, and if you want to see code, ask me to write you something. Pick a language, I'm not choosy; I'll tell you if it's one I know or if I'll need some extra time to learn it, and if I'm not interested in a job using $SCRIPTING_LANGUAGE_OF_THE_WEEK$ we can stop there.
If you are passionate about football, do you play football? or atleast watch others play football? That's definitely not your work. Why do you do it then?
I have some sympathy with them; recruiting is hard, vital to get "right", and susceptible to gaming by unscrupulous individuals. It's also hard to get rid of people once they're in (at least in the UK). However, this is WHY you have to spend a lot of time on it. There are no shortcuts. Adding another checkbox "Has GitHub account with code in it" to the process is futile. You know, it won't surprise me to see "faked" accounts with lots of (scripted) commits showing up. Easy to do. Or better, I'll sell you a convincing looking repository with some code and a cheat-sheet of what to say when asked about it at interview. Hey, cool new startup idea!
I've also been responsible for hiring developers over the last five years and if I saw something like that, and there was anything useful to see on those links, the person would be at the top of the shortlist. The only time I ever came close to it - I offered the guy a job within the first hour of meeting him. I've also worked with that guy again since then.
Any hiring manager will have at least a dozen CV's in his inbox. Nano CV's take seconds to read and you are instantly made aware of the candidates ability plus it also gives an excellent indication of confidence in said ability which is a crucial factor in finding good people.
//edit: Actually, now I remember I was that guy many years ago. I was applying for a programmer at the tech dept of a publisher. Sent a very short cv with some basic data and a link to portfolio. The head of IT (actually a clueless older dude on sweatshop wage) came with a print, took a look at it very disappointed and said "that's the shortest cv I've received". And there wasn't even a laptop around to check my portfolio while speaking. From what I saw there I didn't want to work for them anyway, but it still proves my point.
A good startup is absolutely swamped by resumes. The less I have to hunt around for info about you, the better (remember: I don't know you from crappy-developer-x. Make it easy for me to differentiate!). I want to know what skills you consider relevant to the job, and how proficient you are in them. I want to know where you've worked before, what you did, and for how long. I don't want a bunch of URLS I have to click through, then navigate a bunch of sites, only to discover that you're a web developer with no Objective-C experience applying for an iOS position.
Once I have the essential info to decide that you at least have the basic skills for the job, THEN I want to see blogs, github accounts, etc.
Now it's become obvious my work has a serious visibility problem. Still pulling less-than-average wages, I asked my employer for a performance review which resulted in above average praise. Naturally I'm curious about the difference between my work and a Real Developer. They explained that a a web developer is dedicated with more experience on real projects etc, but reading between the lines it seemed like a perception that I've yet to pay my dues with long hours spent in frustration testing on overdue deliverables. So I understand that resentment, who do I think I am to walk in and demand wages consummate with my output? This is a communication problem. My abilities might mirror my peers, but reputation is effecting my career directly. At this point I realize most of my work is invisible, patching broken websites and refactoring old code, deploying small changes etc.
I need more visibility, I need to show off my skills and process more. I'm out of time and energy, my private projects at home are my own and I'd like to keep them private (for now). Now I'm working with my marketing person to setup a company development blog, hopefully that will give me more control over my image with this company.
You're the one producing the output. Duh.
Keep in mind, a useful GitHub repo doesn't need to contain anything groundbreaking. Honestly, even a simple fizzbuzz application is enough to prove you can code.
However, you are trying to take your version of passion and project it onto everyone else, and I think that is harmful. If gwat is working 9-8 and in love with their job, they are passionate and don't need a github to prove it.
It's your phrase "truly passionate" that rubs me the wrong way, as did the content of the OP. Your definition of a True Hacker(tm) definitely does not match mine. Your post reminds me of a checklist for a recruiting fantasist's wet dream resume more than an explication of what makes hackers different, and I found it distasteful.
As always, YMMV. I can only speak to how the post struck me.
I guess it depends on your situation. I was fortunate enough to spend most of that on the train and typically able to get a seat so usually able to code, and always at the very least read, so I managed to make use of this time.
Other than that, I've put plenty of weekends into my projects too.
As Steve said, if you're passionate enough about it you'll find a way.
As far as I know, after signing my hiring contract, all of my work is owned by the company. Even work done at home; owned by the company. I do not believe this is unusual, every company I have worked for has had me sign a similar contract. If I make the perfect sandwich, the recipe is company property. I am not allowed to distribute company owned assets without the company's permission; and I am not going to ask the company for permission to share code they haven't seen on github.
Even if I wasn't contractually restricted, I would not contribute to a github account. My spare time is spent working on research projects for my corporation's benefit. Many of these become real products. A few I've had patented. These make us real money; github does not.
I hope I am not, in the future, disregarded for a job because I am missing a link to a github account in my resume.
The problem is visibility.
The resume is very poor at showcasing your talents. All the common resume advice makes yours hard to differentiate from everybody else's. While having a website, Github, Bitbucket, or something else will help your case, you are already hobbled by the very generic-ness of the resume format. You can play with the fonts and format, but I've found that it's a fine balance between the "Pop" factor and annoying the reader.
The other major problem with the resume is they are very low cost in terms of those applying. A unscrupulous candidate can send out hundreds of resumes to shotgun his chances at landing a job. The time it takes to vet out these is many times higher for the hiring party, and it is multiplied by the number of resumes to vet. Companies must then increase the cost of applying, either through coding tests or puzzles, but this paradoxically turns away candidates who might be qualified and don't have the time. This is especially true for small startups who have problems with visibility of their own.
To me, the question isn't Github use or having a website, but how can I increase my visibility? Being physically present in front of people who are hiring is so ridiculously powerful, that most hires are made that way. Thus, obviously, meetups/networking/hackathons are a giant step in the right direction, but not everybody is in the correct neighborhood and can't casually attend. For those of us that aren't local, how can we disrupt the email->resume->round-file process that effectively dehumanizes most applicants?
I am warming up to short video submissions because of their ability to show the personality and creativity of the individual behind all the credentials. It allows for both a quick introduction, as well as introducing a subtle time cost, on behalf of the applicant and it doesn't add significant (as far as I know) time to the hiring manager.
On the other hand, maybe the hiring process is an NP-Hard problem.
Yours, A Bitbucket User
Though I certainly agree with you, people don't seem to notice any other hosting repositories.
do late-night and weekend commits to a Github Firewall account count?
A pretty polarised view, here: we are all either 'career' 501 programmers, or disenchanted hackers?
What of the guys who choose companies they're passionate about and which inspire them to find spare coding time after hours and during weekends? You know, the kind of role you don't need an opining recruiter to source on your behalf.
They must exist. How do you avoid missing them?