Hacker News new | ask | show | jobs
by bsvalley 3427 days ago
Are you gonna tell your product manager that it will take you 5 days to write a linear solution for your feature? O(n). Are you gonna fix a critical bug in production by using a depth first search instead of a breadth first search?

What does it even mean? When are we gonna stop lying to ourselves?

The only way to evaluate someone for a software engineer position is to assign a mini coding project. The result should be a working product, packaged and ready to be shipped. It will tell you how fast someone can deliver a solution, how someone would design a solution, code quality, performance, etc. It doesn't have to be a gigantic app or website, just a basic working product and not a basic CS coding question that no one cares about. If you're applying for a backend position then it should be about building a backend. If you're applying for a mobile dev then it should be about building a mobile app, etc.

The whole hiring process is a joke, companies like google are focusing too much on college stuff and not enough on reality. Plus look, It's clearly written "Masters Degree in CS" on my Resume, that alone should tell you I already got evaluated on basic CS crap. So, let's talk about what I can really do to help your team and the company. What can I bring on the table besides a Masters Degree?

2 comments

The only way to evaluate someone for a software engineer position is to assign a mini coding project. The result should be a working product, packaged and ready to be shipped. It will tell you how fast someone can deliver a solution

This works if your goal is to hire only the currently-unemployed. You will never hire anyone who is currently employed like this. You will probably not even get students who have other options jumping through your hoops.

And think about it, no other industry works like this. You don't give a lawyer a case to win or a doctor a patient to cure to assess hiring them...

Like I said - we need to stop lying to ourselves about software engineering. Reality is the complete opposite of what you're talking about. The hiring process in our field is perfectly designed for people fresh out of college. It is not relevant for experienced engineers.

It would take an experienced Software Engineer a while to get up and running on CS exercises before applying for a new job. If I were to apply for a job tomorrow, I'd have to re-learn all the CS crap I did in college 10 years ago. Why? Because for the last 10 years I built products.

They recommend (companies, blogs, etc.) to study CS and practice for at least one month, 3 hours a day, before applying to jobs. This is designed for someone who doesn't have a job or someone fresh out of college.

If you're a Web engineer and if I ask you to write a little app that would pull out data from our test API (in a few hours), it would utilize your current skills. Meaning, you wouldn't have to put extra time in studying CS. Again, if you went to college and ended up with a degree in CS, there is no reason why I'd want to test you on this stuff. What I'd love to know is if you've learned something since college!

Does it make sense?

> You don't give a lawyer a case to win or a doctor a patient to cure to assess hiring them

Both of those industries have accreditation standards and post graduate education requirements. Doctors have on the job requirements. Comparing software development, which is miles less sophisticated in its approach to those doesn't seem like a way to argue for any type of developer interview process.

Doctors' and lawyers' experiences are not gained purely in school. Realistically, a comp sci major gains immediately usable skills during a degree as compared to either of those professions.

In fact, all your argument points to, logically, is that there is a far stronger case for "more sophisticated professions" to have more gruelling interviewing standards than software developers.

Employed candidates have no problem taking a day off (or two when they live far) for a full round of on-site interviews.

Personally I'd much rather work on a 4~5 hours long assignment in my own time. Sadly in my experience, companies that use this approach use it as a way to eliminate phone screenings rather than to make the in person interviews more relevant.

"Employed candidates have no problem taking a day off (or two when they live far) for a full round of on-site interviews."

Oh. I thought I was an employed candidate who had a problem taking a day or two off for an interview. I must have imagined it.

He meant, it is a common phenomenon in our industry to have full or multi-day interviews and people don't say "you'll only be able to hire unemployed people for that".

Programming assignments are usually more flexible for employed people than interview days.

But they aren't a panacea. They are hard to design and if you haven't switched to an objective rubric for measuring them, they can be just as subjective as interviews.

That said, I whole heartily agree with using programing projects instead of interviews.

While I agree that interviews have high variance and a lot of times the interviews don't test what's required for the job, mini projects are a huge time sink for candidates too. Most candidates aren't going to spend a couple of days working on a project just to apply to a company. Unless all companies decide to just switch to using project-based interviewing, interviewing is here to stay (despite its quirks).
The hiring process in 2017 is:

1. First CS exercise - phone screen (1h)

2. Second CS exercise - phone screen (1h, optional)

3. Onsite (full day of CS exercises on a white board or on a computer)

4. Sometimes you get an extra coding assignment when they still can't make up their mind

What I'm saying is that all we need is step 4 + culture fit, which could be done in one single day. So we could get rid of all the other useless steps.