-2

I'm a graduated computer sience student (with a gpa of 95/100) and maintain some open source projects. I love to code and this is my daily job in a company that almost declined me in the interview proccess because of the same reason (I feel very appreciated in this job and my last one).

When seeking for new one, I constantly get the impression that I over complicate my answer. It's hard for me to change that because I don't understand what that means.


I find out that there are some repeating patterns when I find solution to interview-problems.

I seek an advice on how can I do things different because I clearly do something wrong.

Example (This week)

The intreviewer really impressed by me on the phone so he gave me a small task to do offline.

The task description wasn't so good so I had alot of questions. I could only ask him by sending SMSs, so I felt limitted in the amount of questions I can ask and also, the level of details of them.

As a result, I emailed him the solution which included the solution he wanted but also included some extra code related to some quesitons I had but didn't ask.

Today, I received an answer: "We reviewed your code and, while we really appreciated the effort (never has someone race 2 promises as a timout mechanism!) we still found it overly engineered/complex and too hard to read."

That what the end of the interview proccess.


I feel that if I wouldn't give the extra work, he could have emailed me back: "Why didn't you cover in your answer the case where....". And my respond would be: "There where 5 different cases that I didn't cover so the answer would still be simple to read. why is the case you present to me is more important than the others?"

It leads me to the conclusion that he had only a single solution to this problem and any other valid solution will not be accepted.

  • 4
    I feel that if I wouldn't give the extra work, he could have emailed me back:... I would say try it next time instead of giving assumptions. If it is multiple different potential employers mentioning same problem about your code (props to them for supplying an actual reason instead of some general rejection tbh), it is very likely that the problem is true and you should face it with a positive manner instead of negligence. – tweray Sep 6 '19 at 12:29
  • 9
    During my professional life I have met many "good" developers who wrote code that was very difficult for others to read, even if it was "correct". – yms Sep 6 '19 at 12:32
  • 3
    This is going to be really hard for us to answer, since we can't see your code. I would recommend going to a friend or colleague you trust, show them your code and the feedback you got, and see if they can better explain. – David K Sep 6 '19 at 12:33
  • 7
    @lalalala It leads me to the conclusion that he had only a single solution to this problem and any other valid solution will not be accepted. Revoke this kind of thinking and positively face the comment/reviews provided might be a good first step. – tweray Sep 6 '19 at 12:41
  • 4
    we still found it overly engineered/complex is most likely not the (biggest) problem, but too hard to read is what you should be focusing on correcting. – Mike Harris Sep 6 '19 at 12:46
17

Without wanting to be too harsh here, if the attitude you present in your professional life is that same as you present here - which is very much "I'm smarter than you and I know better than you" - I wouldn't want to hire you either.

Two little bits:

a gpa of 95/100

The task description wasn't so good

but most of all

he had only a single solution to this problem and any other valid solution will not be accepted.

I hope you're aware how much bad faith you're showing in that comment - you're effectively calling the interviewer incompetent and small-minded. You may think that this attitude doesn't show through elsewhere, but I'd be pretty sure it does - it's certainly coming through in how you're responding to the comments on the question as well when those people are trying to help you.

  • I didn't think about that. Thanks. Could you please teach me how would you tackel problems like the ones I encountered? Or I'm still missing your point? – lala lala Sep 6 '19 at 12:51
  • I just wanted to point out that you are right. I do feel smarter than others until they prove me that I'm wrong (Maybe it's because of my university which composed of dump students who fail and don't learn). But the real problem is that now I think that I'm better. What should I do to fix that? – lala lala Sep 6 '19 at 13:11
  • 3
    @lalalala - "better" is entirely subjective though. You didn't get the job == somebody was better for it. One idea that floats around coding is that you write code for humans to read, not the computer. If your style is overly complex and confrontational, the company may have decided that even if it was technically correct, it wouldn't be worth the other developer's time to train you to conform to their working agreement. They may think it easier to train no habits / null attitude into somebody than bad habits / attitude out – NKCampbell Sep 6 '19 at 14:01
  • 1
    @lalalala - I've been writing software for 40 years this December. I promise you, if you were EVER, even ONCE, to put me in a situation where I had to justify my subjective opinion that your overly-engineered solution was "worse", I'd take square aim at your status as an employee. – Julie in Austin Sep 6 '19 at 18:34
5

My advice summarizes to: Keep it simple and be aware of your audience.

Many times you might get interviewed by recruiters who are not necessarily experts on your field, he/she only has a sheet of questions with answers, and you will need to "guess" what is the most common answer to the question being asked.

Example:

  • Interviewer: What is the best algorithm for sorting a list of elements?
  • You (option one): It depends, if the elements are bla bla => FAIL
  • You (option two): In such general terms, I would say quick-sort. But we can talk about other options for different situations if needed. => success

For the particular case of coding exercises, I would just write one solution, and clearly state my assumptions. Make sure to comment your code properly. When the interviewer is an expert on your field, they will usually be a lot more flexible.

  • 1
    This is excellent! Thanks! +1 for the super useful example. :) – lala lala Sep 6 '19 at 12:54
  • 1
    I still feel the need to focus on the "make your code easier to read" part. I have been many times on both sides of such interviews, when the interviewer is a programmer, they are rarely about the final answer to a question, they are a lot more about going through your thought process, understanding how you got to your answer. Interviews are not an exam. – yms Sep 6 '19 at 13:01
  • 1
    I had that as an interview question: How do you sort a single linked list? A good interview question, since you won't find it in any text book. – gnasher729 Sep 6 '19 at 13:19
4

It's hard to give you specific advice without seeing your code1, but I can try to interpret some of the feedback you've been getting.

My interview answers are “overly engineered/complex and too hard to read”

"Hard to read" is pretty clear to me. Do you comment all of your code? Is there plenty of whitespace and proper indentation? Are your variables easy to understand (eg. use fizzCounter, not just fc, but also not thisIsTheCounterForFizzBuzz)? Things like this, while not crucial to the actual code, will make it much easier to understand.

Over-engineering your code can also contribute to readability. If you are choosing to do something in a very obtuse and convoluted manner, it isn't going to be easy to understand. You are probably taking what is intended to be a simple problem and adding more complexity than is needed. You say,

The task description wasn't so good so I had alot of questions.

It's fine to ask questions to clarify the important parts of a problem, but if you are asked to create a Fizz Buzz program, you wouldn't need to know whether you are in base 10 or base 12, or if you should be able to handle complex numbers. For a coding interview, if something isn't explicitly stated, you can almost always assume the simplest parameters. Usually as long you specify up front that your code operates under these assumptions, you should be fine.

So if you find yourself asking a lot of questions or doing something "novel" in your code, take a step back and ask yourself whether you are making things more complicated then they need to be.


1. The Workplace isn't the place to look at code snippets, but you might be able to get some help at Code Review SE.

  • These are great tips. I will follow them all. Thank you!! – lala lala Sep 6 '19 at 13:09
  • 1
    You should probably not post an actual example, but construct a problem similar to the ones that have given you trouble, write your typical solution, and post it for review as suggested in the footnote. – Patricia Shanahan Sep 6 '19 at 16:27

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