41

I am not sure I chose a suitable title for the question, so please feel free to edit as you see fit.

I've done several interviews with some major software companies around the world, in North America and in Europe. However, due to the fact that my degree is not in Computer Science or Software Engineering, I am often asked a question whose premise is that I am not qualified for the job.

For example: an interviewer once asked me: "Your level of knowledge is somewhere here" (puts hand around waist-line) "while a computer science graduate's level of knowledge is here" (lifts other hand high above his head). "How are you going to close this gap?".

I was taken aback by the question, given that it was the final round of interviews, and I explained that I disagree with the premise of the question, given that I've made it past the first few rounds, where other computer science graduates haven't. In any case, I didn't get the job.

Now, a few years (of experience) later at a different company, I'm in a similar situation, where the interviewer indicated that "Self taught programmers are not familiar with concepts such as recursion and Big-Oh", which is certainly understandable, but not true in my case. For that particular instance, I simply offered to explain those concepts, and did so successfully (as indicated by an offer for a second round).

Needless to say, this issue seems like it is going to follow me for the foreseeable future. So, my question is: what is the best way, during an interview, to tackle those questions? How do I reassure an interviewer who assumes that I am unqualified, due to having an apparently incompatible degree, that I am fit for the job? Is there anything I should indicate on or point out?

Clarification

I have a Masters degree in Engineering, just not Computer Science or Software Engineering

  • 3
    It sounds like these are technical interviews. From your question, I am beginning to have uncertainty around your resume. Does your resume truly reflect the work you've done and the skills you have developed, on your own, the best way it can? There are plenty of people in high places that don't have CS degrees, so I don't think it is not attainable for you, but perhaps you need to market yourself either better or differently. – Mark C. Jun 2 '15 at 18:55
  • 17
    I have a software engineering degree (bachelor only though) and the only time i ever used "big-o" was while studying for the tests of theoretical cs. never used it in any real life application design. just saying. i would flunk out immediately if i were asked to explain it, even though i do have the (allegedly required) degree – Florian Peschka Jun 3 '15 at 7:38
  • 5
    After coding for few months professionally, I don't see how people can not know about at least recursion... For big O, why not, we don't use it that often, but for recursion please, it can be used pretty often. – dyesdyes Jun 3 '15 at 9:25
  • 1
    More important than knowing what recursion is is knowing when to use it. And more important than that is knowing when not to use it. – nhgrif Jun 3 '15 at 13:14
  • 4
    Isn't it an interviewer's job to be skeptical about claims, and your job to convince him? Otherwise let's just believe what the applicant says in his letter and skip the interview... At least you know in advance you'll get questions like this. – RemcoGerlich Jun 3 '15 at 14:04
60

Don't argue with interviewers

You don't want to argue with an interviewer in nearly all cases - unless you no longer care about the job. Open hostility is not a way to make a good impression.

Consider the two responses:

  • "Your question is wrong, there is no gap!"
  • "Computer Science students often learn about more theoretical aspects, such as Big O notation, recursion, and algorithm design. Over the past years I have spent a lot of time researching and investigating these and am comfortable using and discussing them. When I learn areas which I am inexperienced, I generally investigate and learn about them - I have been doing this since I first started programming and expect to continue to do so!"

Which of those do you think will make an interviewer feel better about you as a candidate?

Address their concerns, not their premises. They are concerned you don't "get" it. Don't argue about minor details, help them see you do "get it."

Have a portfolio

Second, if you don't have a portfolio of something you have done, I would create or compile one. You can then refer to it when you talk about things (rather than previous project work). Perhaps put a bunch of examples together of different topics, too, so you could say, "I actually have some code about Big O notation on my github account!" or "I wrote a small application demonstrating recursion on my github to better understand it."

This helps with addressing their concerns, which are that you are not going to be able to program as well as someone with a computer science background.

Closing thoughts

You will always find bad interviewers who are going to judge you based on a "lack of a degree" or other irrelevant details.

You can either worry about the few that do this, or find others than evaluate you on your abilities.

  • 3
    +1 for this. If someone wants to ask questions like this in a rude way, I'd just walk out and find a place that was more respectful. – Seiyria Jun 2 '15 at 22:05
  • 26
    +1 just for calling a degree irrelevant. I've seen far too many people with a degree who couldn't program their way out of a paper bag. – jpmc26 Jun 2 '15 at 22:25
  • 2
    Having a portfolio is almost critical these days. A good way to do this is to open source some of your personal projects and publish them on github. A lot of coding shops these days expect candidates to give them a github account simply because a lot of candidates who apply for jobs put their github account in their resumes. – slebetman Jun 3 '15 at 3:18
  • I agree with the premise of the answer but that specific example of what you should say seems super-waffly. Especially the last part sounds like something you'd say if you were put on the spot with a question you can't answer, rather than something you'd say if the interviewer mentioned areas you know! – Ben Aaronson Jun 3 '15 at 11:24
  • I get the context here but don't assume arguing is hostile. – Tanath Jun 3 '15 at 19:56
22

I had to take a moment to stop laughing at the interviewer's "premise" that only CS students "Get" Big O.

Big O is a mathematical function, and I learned it in advanced mathematics in high school. It is used heavily in almost every engineering discipline that I'm aware of. Heck, we even had to use it in audio engineering to describe the effectiveness of reverberation dampening devices. (Well, we didn't HAVE to, but most of us did.)

You could explain that you learned that particular mathematical approach in your engineering studies.

However, it sounds like this (and other) interviewers are acting on their own personal biases. It has been my experience that studying any engineering discipline develops a specific set of critical thinking and deductive reasoning abilities that become extremely useful in software development. Software engineering is the process of reducing an abstract concept to a fairly large array of algorithms, mathematical formulas, and logic blocks.

The same techniques we use as software developers were used by electronics engineers with logic gates, and before them by mechanical engineers with vacuum lines.

Somehow you have to convey this idea to them. Some just won't accept it. Some people are convinced you need a neuroscience degree to properly apply a bandage. Sounds like you've run into this type a few times.

  • 4
    +1 for the point about how to relate the engineering qualification with the Software Industry. You are echoing a sentiment I've encountered quite frequently on this site: it seems to me that a key skill in interviewing is identifying potential perceived disadvantages, and somehow turning them in your favor – AwesomeSauce Jun 2 '15 at 21:59
  • 8
    "interviewers are acting on their own personal biases" -- even worse than their bias about degrees, they seem to labour under the misapprehension that university is the only place anyone can learn anything. Once someone has, say, 10 years professional experience, it seems rather daft to think you can figure out what they do or don't know based on the 3-4 years they spent at university over a decade ago. – Steve Jessop Jun 3 '15 at 7:49
6

As a self-taught programmer with over ten years experience, and one with only a semi-numerate original degree (Biology), I've encountered this a lot.

Here's the thing: while programming is a job function that requires a particular set of skills, it can be sub-divided into a lot of different types of programming which require sub-skills.

A significant minority of these types of programming are highly scientific and mathematical in nature. Some software needs to be ruthlessly optimised to the nth degree. Some software is safety critical and must be so perfect it can never fail. Some software deals with heavy theoretical and mathematical functions under the bonnet.

The hard truth I've learned is that self-taught programmers tend not to do well at these jobs. Sure, you can "catch up". Sure, the fact you've learned practical programming puts you ahead of computer science graduates in real-world scenarios. But the fact is that in these kinds of situations, you will have a big hill to climb.

The majority of programming jobs are not like this. The majority need better practical than theoretical skill. Some departments that are run by Computer Science graduates don't like to admit this.

So what I've learned from hearing questions like this in an interview is that I probably don't want the job. Either the software in question needs a foundation in those theoretical skills, or the interviewer is fooling themselves about the value of quality code over shippable code. Either way, you're best out of it: there are plenty of other jobs where your skills will be properly appreciated.

  • 1
    Agree with this answer, plus I see that most interviews are not what they are intended to be. In my experience , pretty much in advance, I can tell that if interviewer had the similar career path to mine and similar education, I will be accepted. And if not - the reason will be found to get rid of me, no matter how much I read/know about big O or anything else. So, important to realize that a lot of mediocre personalities use interviews to self-justification purpose in greater degree than for the purpose of actual position requirements. – Vladimir Nabokov Jan 21 '18 at 19:29
4

Why Interviewers Ask Probing Questions

When you're interviewing for a position, at every single level of that interview process, you have to prove that you've got the qualifications to do whatever job your interviewer is asking you to do. And it is their job, as an interviewer, to find and poke holes through anything you haven't got covered.

So while it may have been a little rude for your first interviewer to degrade your understanding that harshly, your response should not be to dismiss this question, but to justify it as a non-issue, backed up by your experience and understanding.

What You Can Do

Certification in the languages and core aspects of the job you're applying for can help, and are easier and cheaper to get than a full degree*, and if you have a full degree already, getting the required coursework in for an associates or bachelors level degree for your field could be easier than you think (ask an academic advisor - which I am not).

If you intend to get into this field without a degree and without certification, it is going to be much more difficult - you will have to back it up with something, either prior work experience or some quantified time spent learning the trade. "Hobbyist" programming probably isn't going to cut it - you can include it on your resume, but next to someone with professional or even academic experience, it will definitely seem inadequate unless you have a complete project or a work reference to back it up.**

In Short

he questions, while harsh, are valid and need to be addressed. If you can, get certifications and maybe consider pursuing a degree. If you can't, find some way to back it up with either a well-documented project of your own, or job experience outside of the regular workforce.

Footnotes

*My local community college got me certification for basic programming and Java, both of which helped me fill in the gap of having a Computer Science minor.

**I had some luck here by taking on a few private web-development freelance jobs, which I could then put on my resume as work experience in web development. Any private or freelance work or project you can quantify in hours/years/jobs worked, especially with references to back it up.

2

Very good question.

I my self am a self taught programmer as well who's been studying and researching computing fundamentals in my free time without achieving any formal qualifications from it.

As many of the other people have mentioned, never argue with the interviewer for being wrong. It's their job trying to discover what you do and do not lack, this includes your way of thinking and problem solving skills. Bare in mind that being a software developer does require you to tackle problems non stop 24/7 from all sorts of perspectives and I'm sure that you do know this.

This question was probably asked to see whether you qualify as a well taught developer who would be able to tackle and approach certain problems. The interviewer might of considered the fact that you DO in fact match a fully qualified Computer Scientist but wanted to see how you'd be able to approach that to him. Would you get over protective and argue with him for being wrong? or would you consider his statement and be able to tackle it in a interesting approach where you'd be able to prove the fact that you DO in fact match a graduate's knowledge set?

So what you'd really want here is to prove to him that even though many self taught developers don't tend to know about the fundamentals you usually obtain from a formal qualification that you do in fact still have the required knowledge set to tackle problems.

The way that I'd approach this question is by turning it into a psychological paradox where there's always going to be good and bad side to either ways and I'd also dig into the reason behind why most self taught developers don't tend to understand the computer science fundamentals and how it possibly doesn't apply to you.

For example:

  • This is true, most self taught developers usually don't tend to understand the basics behind recurrsion and the Big-Oh notation but this usually is because most self taught developers tend to stick to what they feel comfortable working with, they don't tend to explore and dig into the advanced levels of computer science fundementals. They feel comfortable with the results they get, the product the developed meets the criteria they expected and they're happy with the results, But... this isn't true with me. (Talk about how you approach things differently and how you managed to get the experience)

Now for the interesting paradox part.

Something I usually enjoy doing as well is flipping things upside down, telling them that while I may haven't got the knowledge that is expected of a Computer Science graduated I did however have the opportunity to learn from trial and error. From experience I managed to gain much more knowledge by breaking things and having the opportunity to research the problem down to a lower level of detail. You managed to encounter problems in a more productive environment where you developed that many products that you've managed to tackle common problems you'd expect to get in a full fetched product. You had the opportunity to experiment with more up to date libraries and framework and formal development tools which graduates usually don't.

You'd finish it off by saying, yes while most self taught developers may not have gotten around to researching design patterns they did however develop the experience by developing a product unlike most graduates. You know how to apply you knowledge to a production environment unlike most graduates.

This is how I would of tackled the problem btw, if there's anything bad or wrong about it then do please let me know as you never can be perfect however you can always have to opportunity to try and experiment with different solutions and learn from your mistakes to better your self! :D

Any feedback is appreciated!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.