That’s from 2007 but nowadays I would never ever even consider someone if I cannot at least go through some of their solo projects (on some git repo) and ask about one of them directly and technically.
What’s important is how they perform at their average and not if they can build X on paper in front of you while terrified.
I have been doing programming for more than 15 years and I still am not 100% certain that I wouldn’t not mess up a simple given task during an interview. And that’s because, as most seasoned developers should know, there are SO many different ways to do things:
the “elegant” (or for some ugly) one liner
the readable (or for some too verbose) one
the one handling all crazy edge cases, which might overcomplicate a seemingly simple task, coming from stupid production bugs you encountered
the fast and easy to implement one
And on top of that, gotta figure out which one the interviewer wants you to write and gotta not forget that in language X comparing data is with “a == b” and not “a is b” or whatever, since paper still doesn’t have a syntax checker.
That’s from 2007 but nowadays I would never ever even consider someone if I cannot at least go through some of their solo projects (on some git repo) and ask about one of them directly and technically.
I’m sure you might avoid bad programmers that way, but that also cuts out a lot of people who legitimately could do the job.
Anecdotal evidence because my search foo is not good enough to find a study again, though I recall seeing them before:
I see a lot of debate about how skill should be assessed. It seems fairly a controversial balancing act of wasting the applicants time and wasting the companies time. I agree that its really helpful to see someones projects on a git host but I see others complain that that means working on even more programming while they are not working which is not expected in other industries.
Another method is online tests which seem to be hugely hated because they waste the applicants time when the company sends it to you before even reading your resume and then after you pass the test they look at your resume and reject you.
And then there are in interview tests which are an even mix of wasting both parties time but reflect poorly on the persons actual skills.
I don’t know but if you don’t enjoy either messing around with new technologies, working on passion projects or just share some code you made during your studies then I’m ok not hiring you.
It would be like a painter wanting to work for someone but have nothing they have done earlier (as a study or previous job) to show: they are probably not gonna get the job (and they won’t be asked to sketch something right there during the interview).
I don’t know but if you don’t enjoy either messing around with new technologies, working on passion projects or just share some code you made during your studies then I’m ok not hiring you.
With all due respect, this is patent nonsense. This perpetuates the notion that programmers should be spending all of their time programming. It’s also an underhanded way to goad people into working too much: “It’s not a 60 hour work week, it’s fulfilling your passion!”
None of my jobs have allowed me to build a portfolio of code that I can show, except for perhaps my current one to a limited degree (and even then anything I change is in the context of a much larger, long-existing project). I have worked very hard at my jobs (often too hard, something I kind of regret) and that has left me with little to no time for side projects, coding or otherwise.
Furthermore, what (coding) side projects I do have I have not shared because, quite frankly, I see no need. They aren’t very good and they aren’t useful. They are me tinkering for a personal interest and wouldn’t do well in any code review process. I’d even say my view is nearly the opposite: I’d be reluctant to hire someone who decides to publish practically eveything they do, simply for the sake of sharing.
Passion projects are not an indicator of programmer ability. There are simply too many examples of this not being the case to give the assertion any credibility. If I can look at some code, fine. Even still, I’ll probably get a better idea of whether I want to work with someone by talking to them for an hour. I probably speak for more than a few people: I recommend you reconsider your stance.
Particularly when hiring more junior people, 80% of what I care about these days is soft skills like communication, willingness / ability to listen, thoughtfulness, and so on. Know what a function is? Know how to write a for-loop in the language of your choice? Know how arrays work? Great. Now let’s see about those soft skills. Technical skills are easily learned on the job. Soft skills are harder, and in some cases nearly impossible, to learn.
I think there is an argument to be made that helping somebody grow their tech skills is both easier and more fulfilling than helping them grow their soft skills.
Technical competence is at least as hard to measure, and I don’t entirely ignore it, I just don’t try to measure it very precisely. Remember, I’m mostly talking about hiring for junior positions here. If someone comes out of a reputable CS program (or whatever), and can demonstrate some basic general competence, I’m satisfied. And if someone is a smooth talker, at least they can communicate, right? :-)
Even if you can’t/don’t share the majority of your paid work, how many people have really never had an opportunity to fix a bug they’ve run into on an open source project or make some other citable contribution? Or done a side project or just a code sample for some use case that might be useful to others and polished it up enough to share? Or even just filed some well written bug reports against a tool they use? I would never expect or demand to see a fully polished 1000 star open source project from every applicant, but I would be curious how and why someone had never once had the opportunity or willingness to do any of those things. I wouldn’t necessarily rule someone out because of it, but I would expect them to tell me, or I would ask, why they don’t.
While I get that some other crafts may make it easier to build up a portfolio “on the clock,” I don’t think that justifies totally dismissing the value of a portfolio as an assessment just because much paid work in software isn’t publicly shareable. Even if you’ve never once had an opportunity to do paid work that is public, is it really unreasonable to expect someone to invest a weekend or so every year or two to build something small that they can share to demonstrate the skills and experience they claim? That seems like a pretty tiny investment in professional development to expect of someone.
Too, I don’t care why someone wants to program; I only care if they can. Any other decision procedure introduces the possibility of unacceptable bias. If you’re working with a jobsworth who still gets their work done, and you have a problem with that — that’s on you, not on them.
I understand your point about not necessarily wanting to share everything publicly (I see it more of a sharable backup than anything else) but you can’t convince me about a programmer who never ever does little personal projects for the sake of it.
It’s really not about some “startup culture” but really about whether they are excited about the stuff and try them out to see. And if all you ever did was because of other people’s requests then you should be aware of it and can let me know.
My suggestion was to help instead of wasting the candidate’s time for nothing.
It would be like a painter wanting to work for someone but have nothing they have done earlier (as a study or previous job) to show
Works of arts are generally published, and not under strict NDAs. I don’t think the analogy holds.
Of course it’s possible that the piece is stashed away in an art gallery with a strict no photos policy. If they got that far, it’s pretty likely they have something else to show.
What I mean is that a working artist is almost guaranteed to generate works they can show off. Either they keep the copyright, or it’s at least photographed and/or published somewhere you can see it.
A working programmer can work for two decades producing code they have no rights to show off, and the code isn’t published anywhere.
And if you comb through organizations with more than a handful of coders, you’re definitely going to find perfectly adequate professionals without a portfolio on github. I would suspect the majority of them don’t have a portfolio, but I don’t have numbers to back it up so I’ll just let you think about it. Does everyone in your company have a github portfolio? If the answer is yes.. are you all twenty three or so?
FYI, I worked with people who open sourced their work in the 90s and are now around 40yo and kept doing it, here and there.
It’s really not only about github, that was an example, and I do understand that a certain subset of people don’t have anything that they can show because of the type of work they did but I’m sure they would be experienced enough to inform me of that.
I’m not trying to paint a black and white picture: keep X, drop Y. I’m trying to say that I checking someone’s github is way more valuable and less time consuming than making them doing useless work for free for you under unnatural stress. Then also do listen to them, you shouldn’t be a robot with a flowchart.
So really what you’re saying is that you’re OK rejecting a very large swath of qualified applicants in order to have an indicator which has fewer false positives?
I don’t know but if you don’t enjoy either messing around with new technologies, working on passion projects
I assure you it is possible to enjoy these things without having a solo doodle on github.
or just share some code you made during your studies
Yeah, I’ve seen people with their coursework and exercises from the 90s hosted on github. It’s quite embarrassing, and doesn’t paint a good picture of the skills they’ve obtained in the twenty years since. If I were them, I’d leave them out. Maybe hiring managers have a lower bar?
I’m ok not hiring you.
Sure. What frustrates people is all these arbitrary rules of this game. Like the little rules that can get you disqualified on a whiteboard puzzle. You think whiteboard puzzles are bad, so you play a different game. Great minds think alike – a bazillion other people have also decided to play a different game. I wish I had written it down every time I saw someone on HN (or here) say something like (I wouldn’t hire you | you can’t possibly be a good engineer) (unless you (know | do | have | are)) (insert thing here). It’d be one massive list. And for every single item on the list, I could find a working professional who wouldn’t qualify.
It’s a crapshoot, and good people get turned down all the time because they didn’t know the rules everyone keeps making up. That’s what gets people frustrated, and that’s why these threads about hiring practices pop up all the time.
That’s harsh. If someone has exercises from the 90s, I’d thank them for preserving history :)
But I agree about the rules. Screw that. Why can’t everyone have a more free-form thing where you can just tell your story, show something you made if you ever made something that’s not under ten NDAs (and no problem if you can’t show) etc.
That’s from 2007 but nowadays I would never ever even consider someone if I cannot at least go through some of their solo projects (on some git repo) and ask about one of them directly and technically.
I’ve been writing software for about as long as you have (around 15 years) and I don’t have much of a portfolio because there are just other things I want to be doing with my free time. Would you mind linking your github profile or whatever? I’m curious to see what your bar is.
But for me programming languages are just tools to achieve goals, I can’t care less to hire the LanguageX guru.
I would find more useful someone who has worked with 10+ languages and knows how to use each of them to solve a specific problem.
I would be more confident having the latter focus and excel with a specific language/framework than the former, as they might want always want to use the language they love the most.
Yeah I tend to agree. The difference between those constructs is something you should just get right. You shouldn’t get it wrong then have some IDE fix it for you. You should just get it right the first time.
That’s from 2007 but nowadays I would never ever even consider someone if I cannot at least go through some of their solo projects (on some git repo) and ask about one of them directly and technically.
A few things to keep in mind:
People with a lot of side projects almost certainly care about those projects more than they care about your project.
Most people’s Github projects don’t have any external management, coworker, customer, or deadline pressure.
Some people may resent being judged by their personal projects in a professional context.
You’re limiting your talent pool to people with a specific hobby, which is a sure fire recipe for mono-culture.
The reason this was true back then (and it was true, to an extent) is because the dotcom 1.0 bubble created a lot of people chasing the tech boom, rep’ed themselves as programmers to get jobs, but then would try to run and hide in the IT crevices of an organization while collecting a paycheck.
Now, from a 2018 vantage point, we have a new tech boom, but the desirable jobs aren’t in IT departments of non-technical Fortune 1000 companies, but instead at tech companies themselves, many of which are now Fortune 1000 companies. These tech companies have a history of hiring good programmers, so the bar has been raised, and online learning materials for coding have gotten really good, so the excuses for imposters no longer exist. Arguably, programming itself has also become “cooler” and easier to learn, so there are now many more self-taught programmers in the pipeline.
I think we will likely still see a lot of people chasing programming merely for the money, and perhaps lots of these folks won’t have the inclination or mindset to ever write working programs. The ultimate irony is that many of these folks will be able to call themselves “PMs”, avoid coding altogether, and demand higher salaries still. 😀
I think we will likely still see a lot of people chasing programming merely for the money, and perhaps lots of these folks won’t have the inclination or mindset to ever write working programs.
Counterpoint, I know some very dedicated and excelling software developers with the kind of passion that they don’t do it for the money. I also know some excellent 9 to 5 devs. I also know intrinsically motivated programmers whose contributions are net negative. I think we should move past these cliches as a field.
I think I agree with you. But perhaps we should also tease apart “9 to 5 devs” (I personally believe we should all be 9-to-5 – overwork isn’t helpful) from “paycheck collectors” (people who sneak into companies, lay low, and don’t do useful work, either due to incompetence or demotivation). I also agree with you that there are plenty of intrinsically motivated devs who are net negative, and IMO, those are the ones who desperately need coaching because if you are intrinsically motivated to be a coder but can’t make net positive contributions, it’s likely because you just haven’t been shown how.
That’s from 2007 but nowadays I would never ever even consider someone if I cannot at least go through some of their solo projects (on some git repo) and ask about one of them directly and technically.
What’s important is how they perform at their average and not if they can build X on paper in front of you while terrified.
I have been doing programming for more than 15 years and I still am not 100% certain that I wouldn’t not mess up a simple given task during an interview. And that’s because, as most seasoned developers should know, there are SO many different ways to do things:
And on top of that, gotta figure out which one the interviewer wants you to write and gotta not forget that in language X comparing data is with “a == b” and not “a is b” or whatever, since paper still doesn’t have a syntax checker.
I’m sure you might avoid bad programmers that way, but that also cuts out a lot of people who legitimately could do the job.
Anecdotal evidence because my search foo is not good enough to find a study again, though I recall seeing them before:
https://dev.to/kaydacode/comment/1b1m
I see a lot of debate about how skill should be assessed. It seems fairly a controversial balancing act of wasting the applicants time and wasting the companies time. I agree that its really helpful to see someones projects on a git host but I see others complain that that means working on even more programming while they are not working which is not expected in other industries.
Another method is online tests which seem to be hugely hated because they waste the applicants time when the company sends it to you before even reading your resume and then after you pass the test they look at your resume and reject you.
And then there are in interview tests which are an even mix of wasting both parties time but reflect poorly on the persons actual skills.
I don’t know but if you don’t enjoy either messing around with new technologies, working on passion projects or just share some code you made during your studies then I’m ok not hiring you.
It would be like a painter wanting to work for someone but have nothing they have done earlier (as a study or previous job) to show: they are probably not gonna get the job (and they won’t be asked to sketch something right there during the interview).
With all due respect, this is patent nonsense. This perpetuates the notion that programmers should be spending all of their time programming. It’s also an underhanded way to goad people into working too much: “It’s not a 60 hour work week, it’s fulfilling your passion!”
None of my jobs have allowed me to build a portfolio of code that I can show, except for perhaps my current one to a limited degree (and even then anything I change is in the context of a much larger, long-existing project). I have worked very hard at my jobs (often too hard, something I kind of regret) and that has left me with little to no time for side projects, coding or otherwise.
Furthermore, what (coding) side projects I do have I have not shared because, quite frankly, I see no need. They aren’t very good and they aren’t useful. They are me tinkering for a personal interest and wouldn’t do well in any code review process. I’d even say my view is nearly the opposite: I’d be reluctant to hire someone who decides to publish practically eveything they do, simply for the sake of sharing.
Passion projects are not an indicator of programmer ability. There are simply too many examples of this not being the case to give the assertion any credibility. If I can look at some code, fine. Even still, I’ll probably get a better idea of whether I want to work with someone by talking to them for an hour. I probably speak for more than a few people: I recommend you reconsider your stance.
Particularly when hiring more junior people, 80% of what I care about these days is soft skills like communication, willingness / ability to listen, thoughtfulness, and so on. Know what a function is? Know how to write a for-loop in the language of your choice? Know how arrays work? Great. Now let’s see about those soft skills. Technical skills are easily learned on the job. Soft skills are harder, and in some cases nearly impossible, to learn.
So you forgo technical competence for poorly measurable personality traits? How is that an improvement?
There’s certainly a lot more smooth talkers than half-decent programmers around.
I think there is an argument to be made that helping somebody grow their tech skills is both easier and more fulfilling than helping them grow their soft skills.
Someone has to deliver those milestones while we help grow each other tho.
Technical competence is at least as hard to measure, and I don’t entirely ignore it, I just don’t try to measure it very precisely. Remember, I’m mostly talking about hiring for junior positions here. If someone comes out of a reputable CS program (or whatever), and can demonstrate some basic general competence, I’m satisfied. And if someone is a smooth talker, at least they can communicate, right? :-)
Even if you can’t/don’t share the majority of your paid work, how many people have really never had an opportunity to fix a bug they’ve run into on an open source project or make some other citable contribution? Or done a side project or just a code sample for some use case that might be useful to others and polished it up enough to share? Or even just filed some well written bug reports against a tool they use? I would never expect or demand to see a fully polished 1000 star open source project from every applicant, but I would be curious how and why someone had never once had the opportunity or willingness to do any of those things. I wouldn’t necessarily rule someone out because of it, but I would expect them to tell me, or I would ask, why they don’t.
While I get that some other crafts may make it easier to build up a portfolio “on the clock,” I don’t think that justifies totally dismissing the value of a portfolio as an assessment just because much paid work in software isn’t publicly shareable. Even if you’ve never once had an opportunity to do paid work that is public, is it really unreasonable to expect someone to invest a weekend or so every year or two to build something small that they can share to demonstrate the skills and experience they claim? That seems like a pretty tiny investment in professional development to expect of someone.
Too, I don’t care why someone wants to program; I only care if they can. Any other decision procedure introduces the possibility of unacceptable bias. If you’re working with a jobsworth who still gets their work done, and you have a problem with that — that’s on you, not on them.
I understand your point about not necessarily wanting to share everything publicly (I see it more of a sharable backup than anything else) but you can’t convince me about a programmer who never ever does little personal projects for the sake of it.
It’s really not about some “startup culture” but really about whether they are excited about the stuff and try them out to see. And if all you ever did was because of other people’s requests then you should be aware of it and can let me know.
My suggestion was to help instead of wasting the candidate’s time for nothing.
Works of arts are generally published, and not under strict NDAs. I don’t think the analogy holds.
Of course it’s possible that the piece is stashed away in an art gallery with a strict no photos policy. If they got that far, it’s pretty likely they have something else to show.
What I meant was some previous pieces to use as a portfolio.
What I mean is that a working artist is almost guaranteed to generate works they can show off. Either they keep the copyright, or it’s at least photographed and/or published somewhere you can see it.
A working programmer can work for two decades producing code they have no rights to show off, and the code isn’t published anywhere.
And if you comb through organizations with more than a handful of coders, you’re definitely going to find perfectly adequate professionals without a portfolio on github. I would suspect the majority of them don’t have a portfolio, but I don’t have numbers to back it up so I’ll just let you think about it. Does everyone in your company have a github portfolio? If the answer is yes.. are you all twenty three or so?
FYI, I worked with people who open sourced their work in the 90s and are now around 40yo and kept doing it, here and there.
It’s really not only about github, that was an example, and I do understand that a certain subset of people don’t have anything that they can show because of the type of work they did but I’m sure they would be experienced enough to inform me of that.
I’m not trying to paint a black and white picture: keep X, drop Y. I’m trying to say that I checking someone’s github is way more valuable and less time consuming than making them doing useless work for free for you under unnatural stress. Then also do listen to them, you shouldn’t be a robot with a flowchart.
So really what you’re saying is that you’re OK rejecting a very large swath of qualified applicants in order to have an indicator which has fewer false positives?
I assure you it is possible to enjoy these things without having a solo doodle on github.
Yeah, I’ve seen people with their coursework and exercises from the 90s hosted on github. It’s quite embarrassing, and doesn’t paint a good picture of the skills they’ve obtained in the twenty years since. If I were them, I’d leave them out. Maybe hiring managers have a lower bar?
Sure. What frustrates people is all these arbitrary rules of this game. Like the little rules that can get you disqualified on a whiteboard puzzle. You think whiteboard puzzles are bad, so you play a different game. Great minds think alike – a bazillion other people have also decided to play a different game. I wish I had written it down every time I saw someone on HN (or here) say something like (I wouldn’t hire you | you can’t possibly be a good engineer) (unless you (know | do | have | are)) (insert thing here). It’d be one massive list. And for every single item on the list, I could find a working professional who wouldn’t qualify.
It’s a crapshoot, and good people get turned down all the time because they didn’t know the rules everyone keeps making up. That’s what gets people frustrated, and that’s why these threads about hiring practices pop up all the time.
That’s harsh. If someone has exercises from the 90s, I’d thank them for preserving history :)
But I agree about the rules. Screw that. Why can’t everyone have a more free-form thing where you can just tell your story, show something you made if you ever made something that’s not under ten NDAs (and no problem if you can’t show) etc.
[Comment removed by author]
I’ve been writing software for about as long as you have (around 15 years) and I don’t have much of a portfolio because there are just other things I want to be doing with my free time. Would you mind linking your github profile or whatever? I’m curious to see what your bar is.
Sure: https://github.com/Nesh108
I have to disagree with you on this point. Where I work, we do phone screens with live coding as well as white-board coding during the onsite.
We let the candidate choose their preferred language. For the sake of example, let’s say they choose Python.
If I see someone coding in Python, and they make the exact mistake you pointed out, it raises a flag for me: They don’t have enough coding experience.
It may be that they are just nervous and made a mistake, but that always comes paired with other similar problems in their code.
If that works for you, keep it up!
But for me programming languages are just tools to achieve goals, I can’t care less to hire the LanguageX guru. I would find more useful someone who has worked with 10+ languages and knows how to use each of them to solve a specific problem.
I would be more confident having the latter focus and excel with a specific language/framework than the former, as they might want always want to use the language they love the most.
That’s just me though.
Being comfortable and familiar with a language is not the same as being a guru.
Yeah I tend to agree. The difference between those constructs is something you should just get right. You shouldn’t get it wrong then have some IDE fix it for you. You should just get it right the first time.
A few things to keep in mind:
The reason this was true back then (and it was true, to an extent) is because the dotcom 1.0 bubble created a lot of people chasing the tech boom, rep’ed themselves as programmers to get jobs, but then would try to run and hide in the IT crevices of an organization while collecting a paycheck.
Now, from a 2018 vantage point, we have a new tech boom, but the desirable jobs aren’t in IT departments of non-technical Fortune 1000 companies, but instead at tech companies themselves, many of which are now Fortune 1000 companies. These tech companies have a history of hiring good programmers, so the bar has been raised, and online learning materials for coding have gotten really good, so the excuses for imposters no longer exist. Arguably, programming itself has also become “cooler” and easier to learn, so there are now many more self-taught programmers in the pipeline.
I think we will likely still see a lot of people chasing programming merely for the money, and perhaps lots of these folks won’t have the inclination or mindset to ever write working programs. The ultimate irony is that many of these folks will be able to call themselves “PMs”, avoid coding altogether, and demand higher salaries still. 😀
Counterpoint, I know some very dedicated and excelling software developers with the kind of passion that they don’t do it for the money. I also know some excellent 9 to 5 devs. I also know intrinsically motivated programmers whose contributions are net negative. I think we should move past these cliches as a field.
I think I agree with you. But perhaps we should also tease apart “9 to 5 devs” (I personally believe we should all be 9-to-5 – overwork isn’t helpful) from “paycheck collectors” (people who sneak into companies, lay low, and don’t do useful work, either due to incompetence or demotivation). I also agree with you that there are plenty of intrinsically motivated devs who are net negative, and IMO, those are the ones who desperately need coaching because if you are intrinsically motivated to be a coder but can’t make net positive contributions, it’s likely because you just haven’t been shown how.