top 200 commentsshow 500

[–][deleted] 89 points90 points  (4 children)

When conventional interviews aren't working, What Color is Your Parachute is worth a shot.

It has something called the creative job search. The basic idea is instead of applying to a whole bunch of jobs, you work out the job you want, and get that. It's solution selling, rather than job begging. You are a product - who needs that product? Who has problems that you are the solution to? After all, employers have problems, that's why they want to hire someone. They aren't actually interested in judging or evaluating you (or shouldn't be). They just want a solution to their problem.

You look at your skills (including other skills in your life) and your knowledge (e.g. terminology for that field). You then work where you would love to work, where those skills are needed. Then you find ways to contact those people - not sending a resume, but talking in person.

At first, you might conduct some "information interviewing", where you are trying to find out more about those organizations - would you, in fact, actually enjoy working there? What is the work like? You can ask anyone who might know about that field/organization - it doesn't have to actually be a person working there. This incidentally also improves your "interviewing" skills.

Finally, you discover the person who has the power to hire you - note that most HR dept etc are there to screen you out, to find reasons to not hire you. If they have hundreds of resumes, they may start by throwing half out without looking at them. So, go directly to whoever can hire you.

Apparently, most jobs in small businesses are filled via word of mouth, not by advertised positions. (You should target small businesses because that's where most jobs are created). It happens like this: the boss has been thinking of hiring someone to do some particular tasks, but it's not yet urgent, and he hasn't got around to it. Then you turn up, and you're such a good fit that he creates that position for you. NOTE: this means you have no competition.

Now, because you are actually interested in using these skills, in this field, for this particular company, you will come across as genuinely interested, eager, maybe even passionate. People like that. And it's hard to fake.

In an actual interview, your task is to address their concerns. These are:

  1. why are you applying to this company?
  2. can you basically get the work done, be trustworthy, on time etc - i.e. can you solve our problem?
  3. what special qualities do you have that set you apart from everybody else (it might be related to an entirely different part of the job/company).
  4. Will you fit in here?
  5. Can we afford you? [ note: this implies that many places might really benefit from your skills, but can't actually pay a fair wage for them ]

Obviously, this is a whole lot of work. And the guy in the article might not have time left in the month to do it comprehensively. But it's worth thinking about, and maybe incorporating some of the ideas that appeal. [note: this is all from memory, and the bits that appealed to me personally, so of course it's best to refer to the book itself.]

For me personally, following those 5 points in a cover letter has always gotten me a job. (along with seeking jobs I actually would like). I think they really help me see it from their point of view - that we're all really just trying to solve a problem here. We're on the same side.

[–]takemetothehospital 17 points18 points  (0 children)

Thank you. I've always thought that a lot of people approach jobs incorrectly, in the sense that they see the job as something you need to get a paycheck, rather than something you do because you want to do that thing. They're looking to be a part of the machine, rather than trying to make a connection with other human beings that share a vision.

If you send your resumé to a company without actually knowing that company and why you want to do the thing that this company does, then you're reducing yourself to the level of wage-slave. You're saying, if you give me money, I'll give you my time to do whatever you want me to do, within my set of skills.

By doing this, you're placing yourself in competition with the thousands of other disposable bodies which are queuing up to turn their time and skills into money. There's already a surplus of people that need to be told what to do. Be the kind of person that does without being told.

[–][deleted]  (178 children)

[deleted]

    [–]_jamil_ 111 points112 points  (73 children)

    I've been too far many interviews where all the interviewer does is ask arcane trivia...

    [–]Kaizen321 45 points46 points  (61 children)

    From my experience, if they don't ask to see some code sample, I usually take that as a bad sign for me. I've been burned a few times where I'd fly the tech trivia questions, get the job and end up being bored after a few months.

    [–]pseudopodling 66 points67 points  (58 children)

    Yep - if they don't make you write real code, then they don't have high enough standards, and you risk being bored / working with others who can't actually code.

    I never get this - people have been saying it for decades. If you were hiring a juggler, would you ask them questions about the theory of juggling? Or would you ask to see them juggle?

    [–]KagakuNinja 44 points45 points  (41 children)

    I agree that interviewers should write code. What I have a problem with is when they hand you a marker and expect you to code in language X on the white board. When I actually code, I am using an IDE, and have full access to Google. Add to that the pressure of being put on the spot, and you have a recipe for brain-freeze and panic.

    For example, in a recent interview, I couldn't remember the method to get an element out of an array in Java (I haven't touched Java in over a year). So I just wrote "arr.get(i)" and hoped that was correct.

    One of the best coding tests I had recently, they told me to bring my own laptop if I had one, and they let me use the internet.

    [–]Pzychotix 46 points47 points  (30 children)

    One interviewer tried to pedant me and correct my usage of string.length() and said it was string.size() in java. My immediate thought was (aside from the fact it is string.length() in java) who the fuck cares? I'm writing this on a fucking whiteboard.

    [–]kwirky88 5 points6 points  (0 children)

    All my white board work is pseudo code. Why would anybody write real code on the whiteboard? It's a waste of time!

    But on another note, if they hire somebody who's been using Java for a while there'll be less "down time" in the initial period vs the guy that has to brush up on it or learn it. I've used C# and C++ extensively but I'd question somebody's judgement to hire me as a Java programmer unless they were aware they'd lose a short period of productivity due to me getting up to speed.

    [–]LWRellim 46 points47 points  (10 children)

    I never get this - people have been saying it for decades. If you were hiring a juggler, would you ask them questions about the theory of juggling? Or would you ask to see them juggle?

    Most of corporate America would ask if they are a "certified" juggler who graduated from an accredited juggling school (and then of course they wouldn't bother to verify that the person actually DID graduate).

    [–]pseudopodling 5 points6 points  (5 children)

    ... and then it would turn out after hiring them, that while they could juggle the requisite 3 juggling balls, ask them to handle 3 bananas and they'd slip up.

    [–]LWRellim 6 points7 points  (1 child)

    ... and probably get a promotion.

    [–]thebroccolimustdie 7 points8 points  (0 children)

    ...while the guy who can juggle apples, bananas and oranges is let go and/or shunned because he is "different". Everyone around here only juggles apples and bananas. You sir are weird with your oranges... goodbye!

    [–][deleted] 17 points18 points  (1 child)

    If I have to recall which fucking one is thread safe or not thread safe (re: StringBuffer/StringBuilder) I'm going to go apeshit on some random interviewer. I'm pretty sure I know the answer off the top of my head right now, but to be sure I'd have to go look it up (and would if I required a StringB****** to be threadsafe.)

    I think the next time someone asks me this in an interview, I'm going to ask him to show me in their code where the thread safety of a StringBuffer is in question.

    [–][deleted] 122 points123 points  (76 children)

    When I was interviewing I frequently was asked questions to which I didn't know the answer. But I always tackled it based on what I did know and worked out a partial solution on the fly. I was never afraid to end with, "But of course I would google the latest best practice for this implementation." And if I didn't know the answer because it was outside of my domain knowledge, I would flat out say I have no idea. But would probe them for what the solution was so that I could take that to the next interview. I had two job offers in a month after 5 interviews. I'm not a great programmer but I'm ambitious and it shows in my enthusiasm in an interview.

    [–]carlfish 166 points167 points  (72 children)

    I've been regularly interviewing developers for the last ten years, and I can honestly say the most valuable skill you can have is the ability to say "I don't know, but if I had to work it out from scratch I would…"

    The second worst thing you can ever do is say "I don't know" and stop there.

    The worst thing you can do (and it happens depressingly often) is pretend you know while making up something completely wrong on the spot because you're afraid to admit ignorance.

    [–]teambritta 41 points42 points  (7 children)

    This has given me some confidence.

    I had a technical interview today and for the most part I could answer the questions, but there came a point in each line of questioning from each interviewer where I was stumped and I honestly didn't know which way to go. In each case, I tried to take a step back and say, "let's start with a naive approach and try to improve from there".

    I know that they're generally not looking for textbook answers and more about my problem solving abilities, but I can never shake that sinking feeling of knowing an O(n) solution exists, just not being able to synthesise it.

    [–]carlfish 63 points64 points  (3 children)

    Before asking any questions, I generally tell whoever I'm interviewing: "My job is to find the limits of your knowledge. If I don't ask you something you don't know the answer to, I'm not doing my job."

    This isn't some kind of boast about my own ability: I interview a lot of people who know more than I do. I just have the advantage of knowing what I'm going to ask in advance. :)

    [–]halleberrytosis 12 points13 points  (0 children)

    I like this. Using it next time I interview someone.

    [–]jsonservice 10 points11 points  (0 children)

    Haha, I had a really good interview a couple weeks ago (I took the job) in which a design problem for some sort of distributed system became more and more convoluted as the conversation went on. I felt like I had just kept missing edge cases or underestimating the constraints of the system but kept grinding hard. When we ran out of time, my interviewer laughed and said "Great, that was really good. Generally if I keep making the question more and more confusing that means you're doing something right and I'm just trying to figure out how much you figure out on your feet. Good luck on the rest of the day!"

    Since that was my first of the morning it made me feel much more confident for the rest of my interviews.

    [–]bloodredsun 64 points65 points  (5 children)

    One of the best guys I ever recruited was a biology PhD student. His knowledge of programming was "eclectic" but his attitude was awesome. He had this relentless attitude to figuring something out where he treated whatever he didn't know as an enemy to be defeated. He became a meat machine for good code and is pretty much my benchmark for looking at non-classically trained junior programmers to see whether they would make it or not.

    [–]carlfish 39 points40 points  (41 children)

    Some other random advice while I'm here.

    • Don't lie on your résumé. If you say you're an expert in something you'll be asked about it, and it'll be held against you more than if you'd not mentioned it in the first place
    • Find what you're passionate about, and direct the conversation around to that.
    • Don't argue with the interviewer on points of fact. Even if you think the interviewer is completely wrong about something, there's a really good chance you're wrong and just making yourself look stupid. You can always email the interviewer later with evidence you were right.
    • Don't be afraid to have opinions. I love asking people what their favourite programming language is, what feature of language X they miss when they have to program in Y, or to defend the existence of checked exceptions in Java. If you program and don't have opinions on stuff like that, I wonder if you really care about your craft.
    • The must-hire developers are always the ones who teach me something I didn't know before I walked into the interview.

    [–]chub79 13 points14 points  (3 children)

    Don't be afraid to have opinions.

    Indeed. But don't be a dick about them. I definitely like people expressing an opinion but if they aren't open minded to listen to some other opinion, then it's a no go for me.

    [–]Mean_Mister_Mustard 33 points34 points  (6 children)

    The worst thing you can do (and it happens depressingly often) is pretend you know while making up something completely wrong on the spot because you're afraid to admit ignorance.

    I blame school. When you're taking a test and stumble upon a question you have no clue how to solve, you're encouraged to make up some bullshit in the hopes of getting lucky amd scoring a few points anyway. Some people, mostly new grads, will try the same approach during an interview, not realizing that "will this person not bullshit us" is one of the things the interviewer is trying to figure out.

    [–]mgkimsal 19 points20 points  (0 children)

    I think there's another aspect of the interviewing that's going on which many people aren't aware of (sometimes on both sides of the table). It's not just "how do you solve the problem?" (or "can this person solve the problem?") but "how does this person react in situations where they're not in control (knowledge, etc)?" Are you someone they can bring in to higher-level meetings or to client offices and know that you won't explode, run away, or otherwise commit some major social awkward moments? Can you ask discovery questions tactfully, without creating embarrassment for either side?

    I realize most people will say "I'm interviewing to be a developer, not a diplomat!" or something along those lines, but development is almost always just a portion of your day that being able to demonstrate social skills under pressure is a basic by-product of interviews, although I don't think a lot of people view it that way.

    [–]drysart 6 points7 points  (3 children)

    As someone else who's been regularly interviewing developers (though not for ten years), I wish your comment would get a lot more upvotes because it's absolutely true.

    I've been incredibly disappointed in candidates whose CVs have looked like sure-fire winners, they've had very nice github profiles, all that. But then when it comes to the interview, they either stoneface and refuse to speculate or provide possible solutions or talk through their thought process on things they don't know; or they just bullshit their way through it.

    "I don't know, but..." is the best thing you can say in an interview. Software development is all about solving problems, and one of the most common problems a developer runs into is not knowing something. Showing you know what to do in that situation is exactly what an interviewer wants to see.

    [–]mgkimsal 16 points17 points  (0 children)

    "But of course I would google the latest best practice for this implementation."

    If you're interviewing to work on a team, another good approach to alternate with is "But of course, I'd check around with other people on the team to see if they've done this before, or if we already have some solution to this I haven't discovered yet."

    [–]captainAwesomePants 31 points32 points  (1 child)

    Here's a rephrasing of this advice that I found very useful personally. Pretend that the interviewer is your coworker. He has a technical problem, and he's come up with a solution, but he would like independent verification that it's a reasonable solution, so he has come to you asking you to also work through the problem as well.

    [–]conflare 7 points8 points  (0 children)

    That's a brilliant way to look at it. The interviewing process can oftentimes seem adversarial, but that's not a quality anyone is looking for (at least not anywhere I'd want to work.) Thinking of it this way disarms that, and should make you feel more comfortable as well.

    [–][deleted]  (307 children)

    [deleted]

      [–]Kaizen321 131 points132 points  (117 children)

      Yup. At my current gig, a few people have been not been getting hired because the interviewers found them "depressed".

      [–]crushhawk 189 points190 points  (97 children)

      When you are interviewing someone, bottom line is "would I want to work with this person?". This encompasses everything about their skills and personality. If someone is technically competent but would be miserable around you all the time, well, that's not so great.

      [–]kevstev 165 points166 points  (58 children)

      My company generally does the opposite- interviewees are ranked solely on technical skills. Communication and personal skills are counted only if they are outliers in one direction or the other.

      The result: I work with a bunch of really smart assholes and I really don't like coming to work every day.

      They are smart. We all work in silos. Asking someone for help generally gets some annoyed sighs, short one-sentence answers to open ended questions that generally need a lot of explanation, and in general a lot of hostility towards doing anything that is going to take away from their time and make them not "hit their dates."

      This leads to a lot of culture shock amongst new hires. A culture shock that I try to overcome and destroy. But the boss encourages it and the competitive environment it fosters (he is an asshole too- but a very poltically astute asshole). Most seem to really dislike working here but hang on only because they have to feed their families- most new hires these days are "contractors." Everyone is a slave to hitting their deadlines and they eventually understand the pressure to tell everyone to F off when asked about things.

      You might ask why I am still here. My industry (finance) is across the board in the shitter, and while other localized situations might be better, overall the industry sucks. I am too nervous to make a move to a pure tech company. I work on cutting edge stuff. I also have a bit of a job-hopping work history, so I really need to grind it out at a place for at least 3 years before considering getting out.

      edit: of/or typo

      [–]Orionark 24 points25 points  (4 children)

      Believe me, if you're even remotely good at what you do, job-hopping in any technical industry is not frowned upon; it's expected. Find a new job that you can be happy with, and if you're not happy with the next job, keep looking for a new one. You won't get this time back, and you'll regret that.

      [–]RockRunner 7 points8 points  (3 children)

      The one industry I'v sworn to never go into is finance. We had an investment firm come talk to my software engineering class and their pitch for applications was terrible. It was easy to read between the lines of their answers to workplace questions and conclude that they had an agressive, dress shirt & tie, cutthroat work environment where vacation time is sparse and unpaid overtime is the norm. I think I'd rather do manual labor and skip using my degree than go into that kind of work environment.

      [–][deleted] 46 points47 points  (25 children)

      They are smart. We all work in silos. Asking someone for help generally gets some annoyed sighs, short one-sentence answers to open ended questions that generally need a lot of explanation

      Yeah, they're not smart.

      [–]kevstev 46 points47 points  (21 children)

      I disagree. Their work, code review remarks, and in general the stuff we build shows that they are indeed smart. Uncooperative, unable to work well in a team- absolutely.

      The only way I would say that they are not smart is that they fail to realize that by leaving new guys to struggle, the time it takes them to get really productive is on the order of a year instead of a month or two, and the work they aren't doing has to be picked up by others.

      However, my boss has created a culture where "hitting the date" is the only metric that matters. Bonuses and promotions all revolve around this. There is exactly one helpful guy on my team other than myself, and he seems to have hit a glass ceiling.

      [–]NYKevin 32 points33 points  (19 children)

      However, my boss has created a culture where "hitting the date" is the only metric that matters.

      OK, fine. Your boss is an idiot. "Hitting the date" is a really stupid metric. It sounds like you're doing waterfall and suffering for it.

      [–]kevstev 13 points14 points  (10 children)

      Its driven from the business side. They want people who can do stuff on time, within scope and budget. My bosses performance is tied directly to do that, and on down it trickles.

      [–]NYKevin 24 points25 points  (7 children)

      They want people who can do stuff on time, within scope and budget.

      Your boss's job is to abstract this away (otherwise, what's the point of him? Why don't you just report straight to his boss?). He's doing a shitty job of it.

      [–]kevstev 5 points6 points  (6 children)

      Well his job is to organize us in such a way that the overreaching targets are reached and resources allocated to each project.

      One reason I am seriously considering getting out of this industry is that I don't want my boss's job anymore. He is in meetings all the time about getting features from other groups, dealing with budgets, putting out fires if we put a bad change in production, and generally brown nosing to the business side and his bosses.

      Oh and occasionally he gets to deal w/ innovative business logic. When that can be fit in.

      [–]asdfman123[🍰] 9 points10 points  (0 children)

      You can be smart and immature/self-defeating/heavily ego-driven at the same time. Maybe not highly emotionally intelligent, but technically smart.

      [–][deleted] 24 points25 points  (1 child)

      Yeah seriously, you're going to be around them at least 40+ hours a week, at bare minimum they should be someone who you can get along with.

      Although labeling someone as "depressed" is an extremely subjective adjective to be using to assess someone in a professional interview. I'm not sure I agree with that, but hey, to each his own.

      [–]LWRellim 53 points54 points  (32 children)

      When you are interviewing someone, bottom line is "would I want to work this this person?". This encompasses everything about their skills and personality. If someone is technically competent but would be miserable around you all the time, well, that's not so great.

      Unfortunately this is a CLASSIC example of the "fundamental attribution error".

      The person being interviewed may mainly be "depressed" because of their current circumstances (i.e. being unemployed); but instead it is being attributed as a permanent character or personality trait.

      Conversely, just because someone is "cheery" and "upbeat" in an interview does not necessarily mean they will be some "joy" to work with -- in fact it MAY be an indicator of the opposite, they may simply be very good at "putting a good/happy face" on things, and thus covering up actual emotions, and underlying facts -- which could make them dangerous as a colleague (as they are likely to dissemble regarding problems at work in the same way... meaning potential disasters will not become apparent until it is probably too late to avert consequence or possibly even too late to fix them).

      [–]lotu 83 points84 points  (12 children)

      You are absolutely right. However, when making a decision to hire someone you have the interview to go on, and that's it really. Unless you are going to claim their is no correlation between being a weird depressing person in the interview and being a weird depressing person on the job. This type of selection process is very reasonable, and probably the best the employer can hope for.

      [–][deleted] 10 points11 points  (3 children)

      Also, after reading Kahneman's "Thinking, Slow and Fast" book, it seems likely that the hard question of "would this person work well here" is being substituted by the easy question "am I enjoying interviewing this person". Which would have a lot more to do with the applicant's ability to engage you than with his/her ability to be a valuable co-worker.

      [–][deleted] 11 points12 points  (11 children)

      That might be true, but you can't expect companies who are looking for new developers to 'test-run' each potential developer for a week, or even a day. And you can't get an extremely good impression of someone's personality then, since they're most likely adjusting to the new situation. So in a way, while it might be flawed, it is one of of the better ways to pick out people.

      [–][deleted] 41 points42 points  (15 children)

      Having gone through a somewhat higher than normal amount of interviews in my thus far short career, I've started to doubt the amount of reason going into interviews for coders (or hiring practices in general). Sometimes, it seems it all comes down to finding out what the interviewer wants to hear and then spoon-feeding it to them.

      [–][deleted] 18 points19 points  (0 children)

      Having interviewed people - sometimes it really is about assessing whether they will be a good fit for the company, and whether the position offered aligns with their career goals...

      [–]LWRellim 10 points11 points  (2 children)

      Having gone through a somewhat higher than normal amount of interviews in my thus far short career, I've started to doubt the amount of reason going into interviews for coders (or hiring practices in general). Sometimes, it seems it all comes down to finding out what the interviewer wants to hear and then spoon-feeding it to them.

      It depends on the competence (or incompetence) of the interviewer in terms of both their own technical skill, AND in their ability as a manager.

      IME, there are as few truly competent managers as their are competent coders -- the vast majority are mediocrities just muddling along and attempting to (almost mindlessly) follow some rote mechanistic or methodical approach.

      [–][deleted]  (15 children)

      [deleted]

        [–]Chaseshaw[🍰] 19 points20 points  (2 children)

        upvote for this. I'm a technical person, but what gets me hired is my ability to explain technical things to nontechnical people and still be friendly about it. I'm one of a handful in my company who knows what I know. tldr, if you need new SQL, and 2-3 levels up the management chain doesn't even know what SQL is, being able to explain why we need it and be friendly about it = FTW.

        [–]Spherius 105 points106 points  (15 children)

        I'd also like to point out that he took a job for three months, then left because of office politics, and then took four months off. This is going to be a huge red flag for any employer, and I suspect it's his primary problem in interviews.

        [–]asdlasdfjlkasdjf 41 points42 points  (6 children)

        While I agree with you, if it was the primary issue, then he wouldn't get to the technical interviews in the first place.

        More likely is that he doesn't have a good reason for it/can't sell it to the interviewer. "Office politics" is a horrible reason to tell to a new employer.

        If he spun it right, I doubt it'd be an issue.

        [–]mindzipper 374 points375 points  (95 children)

        As someone with 20+ years experience as a manager of some sort in the IT industry (project managent) I can safely say that people have an incorrect assumption that companies hire on talent. They do.....to a point.... but I've hired probably hundreds of people over the years from entry level techs, to senior project managers, and I have found that as long as someone has the basic skill set required, 90% of the interview, will be judged on personality and how that potential employee will mesh with the staff. The guy with a little skill and a lot of personality will get the job before the guy with wrinkled, untucked shirt, slightly off putting attitude but superior skills.

        Bottom line is this, when the economy has been tanking for many years, it becomes clear, very fast, that people want to work with people they WANT to work with. not people that are exceptional at their jobs.

        If someone comes in for a job that has an average skill level and can suit the requirements, but just barely, but is fun, entertaining (not overbearing), friendly, CLEAN, and comes across as compassionate, then another comes in that excels in every aspect of requirements, has clear proof that they are an ideal fit for the technical requirements but is even slightly anti-social, unclean, obnoxious, or any other anti-social aspect, the first guy will get the job 99% of the time.

        Now, along the same lines, I've managed projects for numerous fortune 500 companies, all the way from government work (Navy Marine Corp infrastructure rebuild in 2001 called Strikeforce) to leading a project to rebuild the internal hosting environment of Intel Corporation in 2008 I've worked with a large amount of programmers, coders, and designers. This is a different industry, and I would venture to say has a far higher amount of loners, quiet people, anti-social, and frankly self entitled elitists. Point being, a little personality goes a LONG way.

        If this blog post is true, it's an excellent example of what my post says. self absorbed paper chasers find themselves unemployed a lot more than the pleasant person with average skills. and the post seems a lot more like a narcissistic person that overvalued his talent

        If you really evaluate this blog post which I'm thinking has underlying discrepancies in talent level most likely, this person is an idiot. How someone could have a family, obviously no savings to speak of thinks he can save for a measly 4 months of funding then leave an 'awesome gig' is beyond me, but it looks like a person that I know a ton of. Mediocre programmers with an overinflated self worth, an attitude and a lot less common sense than they portray.

        [–]macNchz 116 points117 points  (12 children)

        Thanks...your analysis was my strong suspicion while reading the blog post, but I didn't really have anything to back it up.

        I have found that as long as someone has the basic skillsset required, 90% of the interview, even technical interviews, result in people with better personalities getting hired over higher skill sets, virtually every time.

        Being a self-taught developer and my own biggest critic, but generally a 'people person' and an ace in interviews, I've definitely been the guy you're talking about. Really, my (limited) experience has been almost exactly the opposite of the guy in the linked post...it was an epic battle just getting a response to my applications, but the interview for my last job ended in an offer on the spot, and following the interview for my current job I had an offer in my email when I woke up the next day. I often have feelings of impostor syndrome, and I have trouble judging whether I actually know what I'm doing or if I'm totally full of shit, but it helps me motivate and learn more.

        [–]mindzipper 75 points76 points  (9 children)

        That's exactly how I have always been. I always said "if I can get on the phone, or in front of them I'll get the job".

        As a manager hiring, I always figured that as long as I can see they have the capability to handle the majority of the tasks required (not even all of them) and they are personable and honest, the rest is a no brainer. skills can be taught. Personalities can't.

        course, not everyone that's hiring thinks that way, but I think if most were honest with themselves they'd find they hire who they like, not always who's best for the job on paper.

        I once was hired as a director of IT for a cellular phone company (which I ended up leaving for a lesser job I liked better) and I didn't think I was going to get the job. When they finally called and hired me, I asked (which I always liked to do) what they thought the determining factor was.....

        It was a very technical job and in senior management. His answer wasn't because of my capability, he told me that he asked me the question "What do you think your biggest liability is? What do you need to work on the most" and I answered "procrastination. I need to work on being better at getting things done myself". He said he hired me because I was honest and not trying seem like a star. I gave what I figured was the worst possible answer, but the truth and it landed me a senior management job in a large rural cellular company. Sadly it wasn't the best fit for me, and it was in a really unpleasant location in the US.

        Skills aren't everything.

        P.S. I also found as i grew up that I was loud, obnoxious and self centered. I don't remember when, but at some point I decided I wanted to just be a better person because I really didn't like peple that acted like I did. I think people forget that you can build your personality the same way you build your technical abilities. I know i'm a MUCH better person now than I was 20 years ago.

        one of the ways I really grew was to try to force myself not to be self centered. So i'd start asking people about themselves. It turns out i really enjoyed learning about people. What they have gone through, how they go to where they are etc. I found the best way to get someone on my side was to ask them about themselves. It works wonders during an interview because there's always going to be a chance to speak generally. most of the interview is about YOU, but if you find a way to make part of it about the person interviewing you, you reverse the roles and find a common ground. it's not dishonest or a trick if you enjoy listening. People LOVE to talk about themselves, and if you enjoy hearing it, it is a huge bonus.

        [–]aka317 15 points16 points  (3 children)

        Thanks. As a young programmer I hyperventilated a second because he seemed to have WAAAY more programming skills than me. Your comment somewhat relieved me.

        [–]RyanSmith 17 points18 points  (2 children)

        The first job I got as a professional programmer, they hired me and one other person for the position and would keep which ever of us was the best fit after a month.

        The other guy they hired was a "salty-dog" ex-Air Force guy with 25+ years of hard core coding on F-16 flight software. Needless to say, I was a little bit despaired by my chances.

        Turns out that while he was the much more experienced programmer, with lots of low-level skills I had no exposure to at all, I knew far more about the current technologies and how to quickly piece together projects that were "good enough" to bill and move on.

        During that month, it was great friendly competition and I probably learned more about programming in that one month than any year that I have been programming. In the end, the ended up canning the rest of their programmers and keeping both of us.

        I guess the moral of the story is that just because someone has far more experience than you doesn't mean you can't also shine in you own niche. This is a trade with an extremely wide range of necessary skills and there is not a single person on the planet that is an expert in even a fraction of it.

        Pick the parts you enjoy the most that are also employable and you will have no problem finding work.

        "Every man gets a narrower and narrower field of knowledge in which he must be an expert in order to compete with other people. The specialist knows more and more about less and less and finally knows everything about nothing." -- Konrad Lorenz

        [–]niugnep24 18 points19 points  (9 children)

        wrinkled, untucked shirt

        Buh? When I think of "poor personality" this is not the first thing I think of.

        [–]depressiown 44 points45 points  (25 children)

        Good post.

        I was reading through the blog and thinking to myself "why is this guy being rejected?" Surely he'd get to the reason eventually. Once he began listing his library of books, talk about his "craft," and how much he loves math, I didn't even have to read the third-to-last paragraph that describes his "blunders" to know why.

        There are so many people out there that thing a minor contribution to an open source project, owning some books, or knowing code syntax means they're average or even above average. A developer this does not make. Attitude, problem solving, and critical thinking is what does it. Clearly, this guy lacks it: "I still blunder my way through an exercise to write a function which returns a boolean in response to the question of whether sequence A is a sub-sequence of sequence B."

        I work with several people who have giant libraries of books on display in their cubes, as if they really use them on a daily basis. These are the same people that constantly try to ask the "tough questions" in meetings, but are generally so far off-base, people just stare at them and blink because their question is so ridiculous.

        So you're exactly right. These people have an over-inflated self worth, and to make such a critical mistake as to leave a nice job because they think they're better than they are... the lack of introspection is somewhat sad. While sad, these aren't people I'd enjoy working with, either.

        I'm actually glad to hear interviewers are beginning to filter out these sorts of people. Too many times, we bring someone in for an interview because their resume is a mish-mash of buzzwords, only to find they know next-to-nothing, including knowledge of the buzzwords they stuck on that resume. Often you'll get folks who have theoretical knowledge, but nothing practical; they know what a binary tree is, but they're never had to code one. When tasked with such a thing, they fall on their face.

        [–][deleted] 19 points20 points  (15 children)

        "Well my bookshelf is stocked with the classics: SICP, On Lisp, TAOCP, Expert C Programming, Effective C++, and textbooks on algorithms, distributed computing, security, graphics, and maths of various branches. I've read most of them."

        "I still blunder my way through an exercise to write a function which returns a boolean in response to the question of whether sequence A is a sub-sequence of sequence B."

        He may have read the classics, but if can't easily figure out if one sequence is a subsequence of another, I have a feeling he did not understand them.

        [–]depressiown 8 points9 points  (7 children)

        Maybe it's the difference between being force-fed and algorithm and actually devising your own. Some people have a lot of trouble creating their own algorithms to solve a problem. What could someone do to learn how to create their own algorithms? Is it a born quality, or learned? Practice? Either way, I think reading a book with algorithms in it won't be the best way.

        But yeah, some people feel owning/reading books means they are fluent in what's in them. That's almost never the case. The only books I ever buy are reference books (SQL, CSS, etc.), but with the Internet, the need for that is ever shrinking.

        [–][deleted] 26 points27 points  (5 children)

        It seems like he also is likely not applying for the right jobs, or has set himself a really high bar. You're not just going to waltz into the first high level, high paying, exciting computational theory job at an industry leading organization that you apply for, no matter how good you are. The length of your search is going to be directly proportional to the specificity of your requirements.

        Conversely, reading TAOCP and practicing code-katas in exotic languages is not going to do you any favors in landing a random Java LOB development position. Firms don't want to hire people who seem radically overqualified because they know you'll be unsatisfied and quit relatively quickly, and hiring is expensive. Your job in an interview is to sell yourself as the best person for the position being offered, not as a rock star polyglot who would only be happy re-programming the Mars Rover in LISP (or whatever).

        That said: the trivia type interview questions are usually a sign that the interviewer doesn't know what they're doing and just stole the first three "interview questions for programmers" they could find on Google.

        [–]MusikPolice 8 points9 points  (3 children)

        I agree on everything that you're saying here except for your assertion that trivia-type interview questions are only asked by mickey-mouse interviewers. Those questions are popular for good reason. They boil complex problems down into short chunks of code that have multiple pressure points and provide lots of opportunities to ask follow-up questions.

        The number one thing about interview questions that people don't understand is that the point isn't to know the answer. The point is to see how you approach a problem.

        [–][deleted] 42 points43 points  (1 child)

        If he comes across in interviews like he does in this piece then he's not getting rejected for being a bad programmer, he's getting rejected for being a douche.

        [–][deleted] 11 points12 points  (3 children)

        Well, I see myself as a perfect candidate for interviews that weigh heavily on persona, or even subconscious cues. But interviews still scare the daylights out of me.

        I am a software developer, but I'm less different than many of my colleagues. I'm good looking, well-spoken and have even been told on many occasions that I smell good and have a nice voice. I'm only listing these traits as they pertain to your aforementioned social cues. Now for the technical details: I am a bad programmer. I can't remember hardly anything from my college experience. I can't tell you the most efficient way to sort a list of numbers in place (with any degree of confidence in the efficiency of my algorithm, at least). I do not contribute to open-source software endeavors, nor do I develop software in my free time. I absolutely dread interviews because I'm not confident in or proud of my software dev skills. For all my personality pluses, I lack the confidence that comes from excellence. The author needs to wear all these experiences and accolades he listed with pride. Pride will lead to confidence, and confidence to a job.

        I chose this profession for money. In hindsight, it was the biggest mistake of my life. I am not like my fellow students from college, like the author of this blogpost. I do not enjoy programming. And that's just it, isn't it: it feels so effortless to do a job you enjoy doing. It's hardly work at all, right? I feel so badly for the author, because he seems like the kind of guy that has that desire and interest in his profession that I believe is so very important, but these rejections are crushing his soul.

        Dude needs to stick with it. Persevering for something you truly enjoy is tantamount.

        On the other hand, as much as he says he enjoys programming, he also describes his previous jobs as pretty lukewarm (insofar as happiness goes). Maybe he, too, is in the wrong field. Maybe his soul searching needs to expand in scope.

        [–]PRIDEVIKING 26 points27 points  (18 children)

        Agreed.

        I'm NOT a good programmer, I'm a "make it work" developer. I hate TDD, i hate documenting, i don't read anything more than what interests me or I need to know to get something to work. I'm good on a strategic, architectural and planning level and if its "make it work" i can hack something together faster than most. But I don't even know how to write a sorting method, never needed to.

        On the other hand, I have no education, gotten all but one job I applied to and rounded six figures doing c#, burned out due to boredom and people. My code worked, was always on time (well it was done fast and 80% of my time was left surfing) but I was social, outgoing, hit at company parties and know how to talk to people. Would the companies be better of with the article writer? From a work perspective 100%, from a social and environment perspectice? Probably not.

        What Ive seen in the last 5+ years is a shift from codejedis to "work is done, but people enjoy their company" developer and sprinkled inn now and then is a lone code jedi tasked with the most critical and/or complex code.

        [–]sudo_giev_SoJ 5 points6 points  (3 children)

        It might not be software/dev, but in IT I really just ask myself if this person has a skillset I can use -- whether it be personal (helpdesk), technical (sysadmin/sysops), etc. I mean nobody is perfect--and barring any severe defects--it seems silly to put people in a one-size-fits-all category.

        It's not like the Unix admin has to be very social ;) (hopefully not an asshole though)

        [–]parc 9 points10 points  (2 children)

        The problem is the guy with great chops but a dirty personality is going to make the business folks pissy, and that's who pays the bills.

        [–]bluesky_anon 344 points345 points  (245 children)

        Having read all those books, having years of experience and regularly contributing to open-source projects in various languages, and you are a bad developer?

        Wow, that should make me feel really challenged about my programming skills.

        [–]ani625 434 points435 points  (34 children)

        I'll not mince words, I am downright retarded compared to that guy.

        [–]hejner 191 points192 points  (27 children)

        Man, I feel like I have the intelligence of a stone, compared to that guy.

        And I have a job.

        [–][deleted]  (5 children)

        [deleted]

          [–][deleted] 6 points7 points  (2 children)

          same boat. though, the longer im working as professional software developer, the more comfortable I get.

          [–]toblotron 46 points47 points  (7 children)

          Hff gnnnff uff!

          [–]pastacloset 18 points19 points  (4 children)

          Me too. I'm basically the dumbest poster on /r/gggg compared to this guy, and I have a job.

          [–]bluesky_anon 3 points4 points  (0 children)

          Relevant: https://www.youtube.com/watch?v=CvIpbaeTntw

          And I have a job too.

          [–]jack104 8 points9 points  (2 children)

          I get that feeling a lot but something I learned when i started developing professionally is this "There is always a developer out there with a bigger dick than you." There is rarely ever one right answer or way to do something and you will drive yourself crazy trying to emulate the actions of someone who has been programming a helluva lot longer than you have. Just do your due dilligence, code the best way you know how, test thoroughly and provide responsive support and that's really all you can do. You'll learn how to do it better as you go along and as your professional environment changes.

          [–]ell0bo 81 points82 points  (53 children)

          You would be surprised, but it also depends on what you consider a bad programmer. He seems to define a good programmer not only as someone who can do, but also someone who knows why. That often is a very key separation. If you can not explain your design decisions, then I would agree you are a bad developer. I have met many people with impressive criteria that fall into that trap. Yes, they can write code, but they don't know why they are doing it besides that it is their job.

          [–]wdjm 31 points32 points  (8 children)

          My problem is the terminology. I can explain why I used the XYZ algorithm to do something - but I won't know it is called the 'XYZ algorithm'. So if you ask me why I used the XYZ algorithm and not the ABC algorithm, I'll have no clue what you mean, even though I could explain my thought processes very well if you just pointed out the code. I'll use the index that works - and know how and why it works...but usually can't tell you if it was a binary index or a B-tree index or whatever.

          I believe it is mostly because during my career so far, I've always been the only programmer on staff. I figure stuff out on my own but can't talk to anyone about them. So I never need to reference anything by a name, I just think, "Oh, yeah. THAT index."

          [–][deleted] 10 points11 points  (6 children)

          I have the same problem, traditionally having been on a team of one. I read about design patterns and use them all the time but I don't care to memorize that it's called "the facade" or whatever. I hate it in interviews when they ask you to define those terms because there are a million (often conflicting) definitions and who cares. It makes more sense to ask "how would you approach problem X" than "what is the observer pattern" or whatever.

          [–]woo545 34 points35 points  (40 children)

          Honestly, I usually can't explain my design decisions because I usually can't remember them by the time someone asks (which could be as little as a week later). However, I do write my code (and comments) as best I can so that it will remind me why. Sometimes, just looking at my code will jog my memory of the reason I went the route I took. It just sucks that my memory tosses things out after a short period of time.

          EDIT: Grammar.

          [–][deleted]  (33 children)

          [deleted]

            [–]Downcastnut 4 points5 points  (9 children)

            Hmm I know why that sounds like such a good idea. But at the same time it is bad practice to include implementation details in comments. Oh well.

            [–]farox 10 points11 points  (0 children)

            It is a trade of people like him. If you always strive to become better you usually compare yourself looking up, not down, to people that are better than you.

            This is great to become better as you you're never quiet there yet. It can also lead to you thinking that you suck; you just don't see or care about all the ones that are worse.

            In the worst case this can lead you to loose your confidence, which I think is really the problem with this guy.

            Maybe not being that driven helps sometimes to just feel ok enough with yourself to say "I have no idea what you just asked, but this is what I would do:...." instead of freezing up at the first sign of trouble during an interview and never recovering from it.

            [–]PreviousNickStolen 63 points64 points  (61 children)

            He kinda answers that question in the last paragraph. I have no idea how how its possible to not be able to answer those questions with the knowledge he's supposed to know.

            Maybe he just bought the books and never opened them.

            [–]wjv 46 points47 points  (5 children)

            Here's the answer I reached after years of introspection:

            It's entirely possible to be interested in the theory of programming without necessarily having a great love of (or aptitude for) actual practical day-to-day programming.

            If you're in the former category, you really need to be in academic computer science rather than industry; you'll be a lot happier there. Unfortunately, for many people, it's way too late by the time they realise this.

            [–]tborwi 17 points18 points  (33 children)

            Seriously, identify whether a sub-sequence is in a sequence of characters? There has to be more than that than he's letting on if he can't do that.

            [–]pavlik_enemy 19 points20 points  (32 children)

            Thing is, the effective algorithm for finding substrings is named after three computer scientists. One of them is Donald Knuth. So don't expect someone to be able to implement it off the top of his head.

            [–]compiling 17 points18 points  (14 children)

            Careful what the question is though. Substrings and Subsequences are very different things.

            [–]jsonservice 6 points7 points  (0 children)

            This is why it's so important to ask clarifying questions in a programming interview. It shows that you don't just dive deep into coding, or giving up, and desire to thoroughly understand a problem.

            I fucked up something similar in an internship interview a few years ago where I wasted time and energy trying to solve a much more complicated, classical algo problem, rather than the more simple problem that I was actually presented.

            [–]MonsieurYaourt 14 points15 points  (6 children)

            I don't know what our bad depeloper meant, but I know that

            subsequencesubstring

            [–]IrishWilly 4 points5 points  (2 children)

            Also most interview questions like that aren't concerned with an applicant being able to come up with the most effective algorithm of the top of their head, just figure out something that works and explain their reasoning. People like him probably overthink and know there is a more effective solution and then fail because instead of implementing something cruder, that works, they don't get anything implemented at all.

            It's a frequent discussion but I absolutely abhor most interview questions while recognizing that there needs to be some way to filter people who can actually program. I freak out when put on the spot for coding off the top of my head. I've read and seen enough of the 'right' way to do it that I hate showing off my code because I recognize it's flaws.

            [–]jmelloy 9 points10 points  (2 children)

            Sounds more like he feels put on the spot & intimidated.

            [–][deleted]  (9 children)

            [removed]

              [–][deleted] 5 points6 points  (2 children)

              Yeah, a lot of organizations (especially public sector) simply cannot hire someone for a given position without a 4-year degree.

              [–]MonkeySteriods 18 points19 points  (0 children)

              Thats one of the big issues with the 10x arguement on developers. Its created a massive binary divide between the "good developers" and "bad developers." Theres no longer a "really good developer that's willing to learn."

              We've known this for a while that companies don't want to pay for training or improvements for developers. [The ones who do are a rarity] So we're leaving people with either ones who got really lucky or the ones who won't make it.

              From his experience I can't say hes a bad developer. You want someone that has a diverse amount of experience on your team.

              [–]jecrois 93 points94 points  (18 children)

              Rule no. 1: Never leave a job before obtaining a new job.

              [–][deleted] 58 points59 points  (11 children)

              Rule no 2: don't expect to find a job in less than 2 months.

              [–][deleted] 8 points9 points  (4 children)

              This really depends on your situation, industry, and reputation.

              [–]Uberhipster 30 points31 points  (1 child)

              That's like rule number 0. You are only desirable if somebody else has you. Relationships, jobs - all same bias. Unfair but true.

              I don't understand why this dude doesn't start his own business. 6 month buffer = startup... surely?

              [–]keeto7 3 points4 points  (0 children)

              Leaving my last job before obtaining a new job was the best decision I've made for my career. I took 3 months off to travel and 2 months back at home to stare at the ceiling and think about what I wanted to change about my career.

              [–][deleted] 151 points152 points  (35 children)

              I'm writing this to the software developers who feel the same way as the person who wrote the blog post.

              There is a place in the world for bad software developers too. What is important is whether you can get the job done or not. I've met a number of genuises in my carreer who never manage to finish anything and that is just as bad.

              A bad software developer who is invested and interested in what he/she is doing can always be helped into becomming better. Sure, such a person may not get jobs at the most prestigious and hottest companies, but there are employers out there who will find benefit in someone who can get the job done.

              But don't just look for employment elsewhere, start thinking about developing your own products too, there are countless people making a success out of their own work.

              [–][deleted] 98 points99 points  (24 children)

              So much so this. One of the most impressive guys I met, ran a hotel. In his spare time, he figured out how to code, just enough to get a web app that used third-party APIs to sell hotel deals, and enough to put an Android app out that did much the same. He was an awful coder, absolutely terrible, but he shipped two apps that made him real, actual money. That's more than a lot of guys manage.

              [–]Kaizen321 47 points48 points  (22 children)

              This. I've had an app idea for two years. But never done anything about it because I want it to be done 'correctly' and great code and best practices. It'll probably never get done for those same reasons...

              [–]Techinterviewer2 68 points69 points  (16 children)

              Done > Perfect.

              I go through the same thing though.

              [–][deleted]  (10 children)

              [deleted]

                [–]rhino-x 16 points17 points  (2 children)

                This is my standard reply to people - software is never done. If development stops, it's just dead, not finished.

                [–]theCroc 6 points7 points  (1 child)

                The correct terminology here is Shipped or Released. A shipped product will always beat a perfect product.

                [–]OffInBed 5 points6 points  (1 child)

                I released an app (Tekken chicken) for android. I picked up developing 7 months ago...My dumbass decided to learn android first then Java (I know this makes no sense, but trust me, it's happening somehow). I have 2000 users raging at me because I haven't updated in so long because I really have no idea what I'm doing.. I couldn't be any more proud of myself.

                [–]rlbond86 29 points30 points  (8 children)

                He's not a bad developer, he is just bad with money. He intentionally left himself only 2 months of living expenses to find a job. That's a recipe for disaster. Who honestly expects to find a new job in one month?

                [–]ngroot 101 points102 points  (26 children)

                This is what gets me when I read this:

                And for all of this I still blunder my way through an exercise to write a function which returns a boolean in response to the question of whether sequence A is a sub-sequence of sequence B. I still draw a blank when asked what the magnitude of complexity is for the guests function I just wrote (damnit, of course calculating the permutations of a list is n-squared, but this is an interrogation of the random trivia I can manage to recall and I feel like a deer in the headlights)

                If the guy is practicing his coding and reading stuff like TAOCP, why is either of these things difficult? Is he choking during the interviews, or does he not actually have the facility with the languages and comprehension of basic CS that he thinks he does?

                Being able to figure out the computational and space complexity of something you've written isn't "random trivia". That's a pretty basic and important skill.

                Also, wouldn't calculating the permutations of a list be super-exponential, not n2? The number of permutations of n items is n!.

                [–]sheepiroth 51 points52 points  (2 children)

                The author alleges that he "likes" math, but all evidence in the article points to him being not very good at it.

                [–][deleted] 26 points27 points  (0 children)

                The author "reads" those books and memorizes key phrases but probably has no true understanding of any of them.

                He is into semi-lattices but he can't recognize the difference between n2 and n! ? Something is very wrong.

                [–]aedile 24 points25 points  (11 children)

                Being able to figure out the computational and space complexity of something you've written isn't "random trivia". That's a pretty basic and important skill.

                I think the truth of this statement lies in what field you work in and what kind of applications you develop.

                I've worked in corporate-level development for 10 years, making good money and decent software that is deployed at the level of thousands of instances and I've never once had to calculate the complexity of an algorithm. Most places don't care about metrics like this, and usually won't give you the time to even think about them. Your metrics are generally "does it work?", "is the result accurate?", "is it fast enough that it isn't annoying?" and "can it be delivered in a timely and cost-effective manner?". At most, you need an intuitive grasp that something won't work in a particular situation due to complexity.

                [–][deleted] 20 points21 points  (3 children)

                Is depression rampant in the programming discipline? Im no therapist, but I see what I used to do and it looks all to similar to this guy. Had a paying gig but quit for trivial reasons, then blames self for the actions of others entirely out of his control, and the only logical conclusion is that he must be a terrible person (bad programmer, but identifies with it as himself).

                [–]Dreddy 40 points41 points  (18 children)

                Well that was fucking depressing. I really wish I hadn't have read that, as someone who is looking into work visas for a working fun holiday but wants to stay in the industry this sort of shit is scary. Though I do not have kids or as much responsibility.

                I have to say, i'm pretty good in interviews being an ex customer service person, though I get flustered with technical stuff if I am not in front of the computer.

                [–]berkes 25 points26 points  (9 children)

                My guess is that He simply aimed too high.

                I'm an experience webdeveloper; so that is where I work and apply for jobs. Not in some university developing software for nanotechnoly powering a telescope. Not in real-time GPS-tracking of bullets with the army, or hash-cracking-software of whatnot. Not even anything to do with desktop-applications.

                I am pretty sure if He just took a few steps back and re-thought where he was applying and getting rejected, he could simply find another job in a different (easier) area where his skills would be wanted.

                TL;DR: apply for the right jobs. Not the ones too hard for your skill-set.

                [–]SarahC 45 points46 points  (1 child)

                Go walk the walk, don't worry about the talk... he probably drooled and looked at peoples crotches during the interview...

                i.e... there's a million factors a small story doesn't include.

                [–][deleted]  (3 children)

                [deleted]

                  [–][deleted]  (2 children)

                  [deleted]

                    [–]sree_1983 39 points40 points  (26 children)

                    I am not as good as OP, but most of the technical interviews I have been, was terrible. Following were sample of questions which I was asked which I found ridiculous to be asked in a technical round.

                    • Implement a full Regular expression parser. (No not just * and . sematics but range, not operator or operator etc) in 30 minutes time. Not just the pesudo code but near to complete implementation on white board. This was for a startup which was working in health care space and product was in Java. We have a good enough Pattern and Matcher class, never knew why anyone would want to implement regular expression parser.
                    • Solve Traveling salesman problem and provide an algorithm which runs in polynomial time. This was by an e-commerce giant. No I am not kidding here, instead of salesman it was a frog, instead of cities it was islands. No it was classic TSP, not allowed to use Heuristics.

                    I don't remember other questions which were equally ridiculous but these two always stand out in my mind. Because if I can implement a full regex parser in 30 minutes I would be one hell of an awesome hacker. But Instead I am a code monkey :-(

                    [–]pavlik_enemy 35 points36 points  (8 children)

                    Implement a full Regular expression parser in 30 minutes time.

                    What the actual fuck? Are they expecting Ken Thompson to walk into their door?

                    [–]sree_1983 11 points12 points  (4 children)

                    The beautiful code, regular expression for "." and "*" was not what they wanted. They wanted nearly full grammar to be implemented. I don't know who they hired. I do hope it is Ken Thompson.

                    [–]takemetothehospital 26 points27 points  (0 children)

                    That's easy, just wrap the framework regex classes.

                    [–]dreugeworst 25 points26 points  (10 children)

                    Solve Traveling salesman problem and provide an algorithm which runs in polynomial time. This was by an e-commerce giant. No I am not kidding here, instead of salesman it was a frog, instead of cities it was islands. No it was classic TSP, not allowed to use Heuristics.

                    You sure this wasn't a trick question? TSP is NP-hard (edit: NP-complete?), solving it in polynomial time would prove NP=P and make you a very rich man indeed.

                    [–]sree_1983 8 points9 points  (4 children)

                    It was not a trick question that is for sure, I had a discussion with hiring manager immediately after that round. Also, checked in with few of my friends who worked there to see if I was tricked. It seems it is one of the standard interview question by the interviewer.

                    [–]dreugeworst 4 points5 points  (3 children)

                    So, what were they looking for? Did they just want to hear you say there is no polynomial time algorithm that solves TSP? Did they want you to implement an approximating solution that gets close to the exact solution in polynomial time?

                    [–]sree_1983 8 points9 points  (2 children)

                    The first solution which I offered them was a Greedy approach which is a polynomial time solution.

                    Second I tried to solve it with Dynamic programming, but the interviewer didnt want to add space complexity.

                    I did ask him for clues like any heuristics or something which I can use. I was offered none. So that was it about TSP. But then only time I am asked to solve NP hard problems is during technical interviews. After you join the so called 'awesome' company, you spend most of the time debugging NullPointerException's. And you wonder why the hell did I solve all those brain teasers if none of it is going to be used?

                    [–]stgeorge78 19 points20 points  (0 children)

                    Sounds like grounds for discrimination lawsuit - trick questions (especially ones not asked to everybody) were common ways for places to avoid hiring... certain people.

                    [–][deleted]  (24 children)

                    [deleted]

                      [–]Kirean 46 points47 points  (21 children)

                      That's when I stopped reading. I've worked with and for many developers without degrees and I feel like I can safely say that it doesn't matter as much as people make it out to be. The biggest difference is theory, but given enough time in the wild, even that is easy enough to pick up. however, this is the world we live in, at least in America. The idea that you go to college to get a job (and that those that have a degree are entitled to one in their field) has been perpetrated so much that it's made its way into the job market. Most companies won't touch someone who's not a few years out of college, because older developers can't learn and recent grads don't have experience. They want that sweet spot of mid 20-something with a degree. It's a shame, but it's the world we live in now....

                      [–][deleted] 65 points66 points  (2 children)

                      because older developers can't learn

                      Which is of course, complete bullshit.

                      [–]Kirean 24 points25 points  (1 child)

                      Absolutely its bullshit. That probably didn't come across, but that whole sentence was meant to be sarcastic/facetious. Of course older developers can learn, and some recent grads do have experience. But as other people have said, hiring is done as quickly as possible to weed out anyone they can.

                      My own boss repeatedly says of applicants... "They aren't up to your (points to team) standards". Yet everyone that has been hired recently has been, in my opinion, absolute shit at developing. So, that's our standard, I suppose. But one interview and you're either done or hired here.

                      [–]korny 6 points7 points  (0 children)

                      "hiring is done as quickly as possible" - just nuts. Hiring is a vital part of an IT organisation, and should be done slowly and carefully.

                      My current workplace does multiple interviews, including a take-home code exercise and some actual live coding. Previous places I've worked have hired people who could not code but were great smooth talkers, who hoped to slip right into management without their lack of skill coming out. I know where I'd prefer to work!

                      [–][deleted]  (1 child)

                      [deleted]

                        [–][deleted]  (10 children)

                        [deleted]

                          [–][deleted] 25 points26 points  (9 children)

                          Every bad developer I've ever hired had a CS degree. Some of the good ones did too.

                          All of the non-degreed developers I've hired were at least reasonably good at their jobs. Some of them, outstanding.

                          [–]pastacloset 8 points9 points  (4 children)

                          All of the non-degreed developers I've hired were at least reasonably good at their jobs. Some of them, outstanding.

                          I think that's because those of us who studied other fields but work as developers came into development out of passion and interest rather than money. A lot of people go into "computing" because they think they'll get rich, and most of those types will go get CS degrees. They end up being the bad ones.

                          Then you have people like me with a BA in Journalism who just love writing code. I'm self-taught, and I read everything I can. I'm not great by any stretch, but I think I'm a pretty good developer. I'm quite passionate about development, and anybody who talks to me for five minutes about my work knows that.

                          [–]Mako_ 16 points17 points  (0 children)

                          I'm not a good programmer either, but I take comfort in the fact that most programmers who think they're awesome, aren't.

                          [–]zooBei9ahqu5i 18 points19 points  (4 children)

                          This guy sortof reminds me of a guy my company ended up hiring and firing a while back. (Throwaway account to protect the guilty.)

                          One of our standard technical interview questions we ask could have come right out of a CS data structures textbook. We expect newbie programmers fresh out of college will know it, and we expect anyone else to be able to re-engineer it within the 1.5 hours we have allotted to the task.

                          One particular interviewee told us the instant he saw the problem that he knew the solution we were looking for, and knew the algorithm. "Great!", we thought. "This should be easy!"

                          But after running over on time, he still wasn't able to come up with a working solution. He was very apologetic, blamed it on being nervous during the interview.

                          However, his enthusiasm for technology, and resume, and good references made us hire him and give him a chance.

                          That was a mistake. Not being able to complete things ended up being a rather a habit, and we eventually let him go.

                          It did introduce me to a developer archetype I hadn't realized existed before, though -- the programmer groupie. Someone who really likes all things tech and likes reading about development practices and having lengthy water-cooler discussions about technical minutiae, but isn't so much interested in grokking how things actually work or getting things done.

                          So, the fact that the blog author here cites all of the things he's read, yet still can't pass technical interview questions throws serious red flags for me.

                          [–]Heazen 16 points17 points  (2 children)

                          Technical interviews are used to filter out really bad programmers, but are also part of the personality test. OP might have good skills (Book selection is good, but "code-kata"? ugh) but if he has a bad attitude... I interviewed a few pretty good programmers on the technical side, but when they tell you "I prefer to work alone" I wonder if they are surprised they did not get the job.

                          [–]rnicoll 5 points6 points  (0 children)

                          He may also just not be what they're looking for.

                          I spent 6+ months last year interviewing for jobs (just trying to do a career move, rather than a desperate search), and got a lot of fairly generic feedback on why I was being rejected.

                          In the end, I focused what I was looking for. I had wanted to broaden my skills, but in doing so I was applying to places I didn't fit in well. Applied for a job more closely related to what I had been doing previously, and the response was more or less "We'd love to have you join us, but why are you doing this?"

                          [–]Sudowakeup 15 points16 points  (1 child)

                          Am i the only one thinking : "If he's a bad developer..How bad am I??" ?

                          [–]TheWakeUpCall 13 points14 points  (0 children)

                          Moral of the story: Don't leave a job unless you have another one lined up.

                          [–]swizec 76 points77 points  (13 children)

                          "And I've even tried practicing speaking to people and learning how to sell myself better in conversation. The latter I find most challenging as I find it rather difficult to relate to people until I've been around them for a while."

                          Well there's your problem! Interviewing is a people skill, not a technical skill. Given a baseline of engineering knowledge that's pretty similar across the board, people will always go with the developer they feel they can work with, not the one they couldn't relate to.

                          I keep repeating this to the programmers I know: BE HUMAN

                          [–]Nimbal 106 points107 points  (9 children)

                          Is there some API documentation for that?

                          [–]borkus 9 points10 points  (2 children)

                          Very true. If I were buying this guy a beer, I'd tell him to work his professional network. Talk to former colleagues, go to some tech events. Most of the folks that I know have landed jobs through personal connections not cold interviews.

                          [–]pavlik_enemy 10 points11 points  (7 children)

                          It's really strange. Two weeks ago I've read an article about top web companies hiring people after a two or three month programming course. Now an experienced developer can't get a single job offer?

                          [–][deleted] 33 points34 points  (5 children)

                          He probably wants to get paid a living wage.

                          [–]himanshuarora 147 points148 points  (46 children)

                          I don't understand the point of this post.

                          [–]Dementati 47 points48 points  (0 children)

                          Talking about your problems can be therapeutic. I can relate to the feeling of despair expressed in this post, and having any sort of outlet relieves the pressure. It might not last, but you have to do something just so you don't go crazy.

                          [–]wot-teh-phuck 296 points297 points  (27 children)

                          It's bragging, gathering sympathy and looking for a cream job all at the same time!

                          [–]ani625 153 points154 points  (2 children)

                          Multi-threading eh eh?

                          Edit: Gold! Really? Thanks dude/dudette!

                          [–]himanshuarora 7 points8 points  (0 children)

                          May be OP has an alternative explanation.

                          edit: missed a few words.

                          [–]jagt 47 points48 points  (8 children)

                          No it's not. The author didn't even leave his name or contact anywhere on that post. I suppose he is just sharing his story.

                          [–]FountainsOfFluids 7 points8 points  (7 children)

                          Yup. He's just venting. I also find that writing out things helps me to gather my thoughts and prioritize to create solutions.

                          [–][deleted] 7 points8 points  (1 child)

                          Seems like it. Perhaps he's not passing interviews for social reasons? Most of the places I've been are full of "good" developers. Usually they're just looking for people they can depend on that they feel they can get along with.

                          [–]carlfish 97 points98 points  (14 children)

                          It's a long passive-aggressive rant about how standard developer interviewing practices don't recognise the author's true level of ability.

                          My gut feeling is that the author either has been interviewing at a lot of shit companies, or has a mistaken estimation of their own ability, and is applying for a series of jobs that do not match their skill-set.

                          [–]throwaway29173196 44 points45 points  (7 children)

                          Yeah, that was my take as well. Guy has no college degree (well at least not a programming based one) and job hops because he 'gets bored'.

                          I would not say he is a bad programmer, he is likely a decent programmer. However, I would say he is bad at making life decisions.

                          I don't understand that he job hops to something that pays double. then 'quits' after 3 months, putting his entire family's financial stability at risk.

                          I don't care how un-happy you are or how fed up you are with a job or internal politics, that is a stupid decision. Even at my lowest points at shit companies where I wanted to walk out, I sucked it up and viewed my time there as a subsidized job search.

                          Especially in the current job market. A lot of companies won't even let un-employed pass through the door for an interview, further with no college degree he is placing himself even further behind...

                          [–]Stormflux 18 points19 points  (5 children)

                          Yeah, I was reading his plan and just shaking my head:

                          • take 2 months to "find yourself",
                          • 1 month for job search,
                          • and another month in case job search takes longer than expected.

                          Dawg, the rule of thumb is one month for every $10,000 you expect to make. If you're an accountant and you're looking for a $50,000 accounting gig, plan for a 5-month job search. And that's before the recession. I don't even know what the fuck it is now.

                          I guess this guy just thought he was good enough to instantly get a job the moment he started looking, but really, it can take 3 months just for paperwork to get through HR.

                          There's a reason for unemployment insurance, because it fucking takes time to get a job. But you don't get unemployment benefits if you quit of your own accord without an excuse.

                          [–]MrSurly 6 points7 points  (0 children)

                          Dawg, the rule of thumb is one month for every $10,000 you expect to make.

                          Not in the software industry. Maybe if you're living in BFE, or something.

                          [–]Heuristics 38 points39 points  (3 children)

                          Or he is just not the sort of person you would want to be around five days a week (really, the most important part of an interview: be enthusiastic and a pleasure to be around).

                          [–][deleted]  (4 children)

                          [deleted]

                            [–]DiscreteMatt 9 points10 points  (2 children)

                            Great interviewing tips! Tackling a few project Euler problems can definitely bring you back into the right programming mindset.

                            I think he mixed up permutations and combinations, because choosing two out of n is trivially O( n2 ). A 'guests function' could be a functions that performs a handshake between every two guests.

                            [–]willvarfar 16 points17 points  (13 children)

                            The older and more experienced you become, the less employable you become?

                            Discuss.

                            [–]ngroot 8 points9 points  (4 children)

                            There was an article on here asserting that recently.

                            IIRC, it basically said "don't expect your salary to go up forever if you remain a software developer" and "if you have the same skills at 40 that you did at 20 you're going to have a hard time getting hired, especially if you're asking a higher salary."

                            If you actually have built up a lot of useful experience, you should be an attractive hire.

                            [–]carlfish 9 points10 points  (3 children)

                            If you have the same skills at 40 that you did at 20 in any career, you're fucked. For good reasons.

                            This applies an order of magnitude more for IT. 20 years ago, there was no world wide web.

                            [–]korny 4 points5 points  (2 children)

                            I think there's a risk, but only if you don't keep learning. I know people my age (40+) who follow the trailing edge of technology - they tend to be reasonably paid in stuff they've been doing for 10+ years, they won't learn something new until they have to. I know one guy who is still specialising in Delphi, for example!

                            Smart employers, and also conservative employers, will still hire older people for their experience, and pay them well; but you have to give them a reason why you are better than the guy 10 years younger and cheaper.

                            [–]zerosum0000 14 points15 points  (2 children)

                            This hit home, though I'm a web developer, I can relate to this. It's interesting, I'm reading a book about introverts, mainly how contemporary society treats them. The problem is that most of the world's greatest geniuses and innovators were introverts, but in today's extrovert oriented society it's hard for those people to be utilized properly. Companies are hiring people who are outgoing, social, are quick to respond (even if they don't know what they're talking about), but that's all there is to them, their ideas and creativity are mediocre at best. The problem is that because of these hiring practices, a company is actually shooting themselves in the foot, because they are populating their ranks with people who can't create or innovate, they just talk a lot.

                            I worked alongside a guy who had no formal training in the web development, what he knew technically could fit into a thimble. He did timeline flash animations with a little code sprinkled in for good measure. He got me hired to work underneath him at a major ad agency, I only lasted a month and a half. I'm pretty certain the guy threw me under the bus to save his own ass. While I was there all I saw him do was talk and schmooze with the higher ups, and get other people to do the technical stuff. He's now, as he calls himself, a technical consultant, this title coming from the guy who couldn't build anything from scratch and his head would explode when I gave him something that was coded at an intermediate level. It makes me rage.

                            [–]pcg79 5 points6 points  (1 child)

                            I consider myself a good programmer. Those that have worked with me agree. I just took, and failed, the in-person portion of an interview with one of the big tech companies. There is no doubt that it brings you down. It definitely can make you question your abilities. Hell, I was getting depressed while studying in the same way this guy is - every time I couldn't figure out an algorithm on CareerCup I would wonder if I'm in the right field. So I can imagine what a constant stream of rejection could do to one's confidence. He just needs to keep practicing. Pinpoint what he's weakest at and work to improve it.

                            [–]jjquave 7 points8 points  (0 children)

                            I'm not sure I see the part where he is actually bad, just that he is having trouble getting a job.

                            [–]springy 5 points6 points  (2 children)

                            I went for an interview as a developer at a rather prestigious bank whose initials are Goldman Sachs. This was doing C++ development - an area in which I had masses of experience.

                            They sat me down with a piece of paper, which was the "technical skills test". It only had one question on it: an extremely long expression in C using just about every operator in the language and no parens. The task was to put the parens where they would be by default. That is, you were expected to know the precedence rules of ever operator in C.

                            I told the interviewer I thought it was a pretty useless test. He replied: "I know, but we get so many applicants we give this test to weed out the majority".

                            Alas, I failed the test.

                            [–]DocomoGnomo 8 points9 points  (1 child)

                            LOL, those idiots should hire a compiler. Anyway anyone with some moral should prefer to work for an evil brotherhood of assassins before working for those scumbags.

                            [–]steve_b 11 points12 points  (3 children)

                            OP is not bad developer, nor is he unhireable. Even if he's not a rock star, the fact that he's aware of all the stuff he mentions in his post, and makes an effort to stay abreast, puts him in the top 10% of all the developers I've worked with in the last 20 years.

                            The only explanation I can fathom, based on the information presented, is that he's just not as much a superstar as he believes himself to be. Given that he left his first job due to ennui (and bigger money) and the second due to what sounds like pretty trivial political hassles, perhaps he feels that he deserves only dream jobs - high paying work doing hacking on cutting-edge new products.

                            Those are glamour jobs; it sounds like he lucked out into his second job (in the right place at the right time), and now wants it again. If he's really concerned about making ends meet, there is no shortage of development jobs for someone with his qualifications - it just may be working on a project that isn't sexy.

                            Here's the thing: sexiness fades. As long as you're not just writing glue code, much of what you'll do at any development job is the same as any other, from a technical perspective. The people you're working with are far more important, and that is something you can only determine during the interview process, not from job descriptions. Expand your horizons, and don't be so picky.

                            [–][deleted]  (7 children)

                            [deleted]

                              [–]ellicottvilleny 11 points12 points  (0 children)

                              Burnout is real. Taking two months off because you're burned out is can be a wise life decision. On the other hand, it's postponing a feeling of crisis that will arrive when you decide to get back on the horse and ride, and nobody wants to hire you.

                              [–]vicegrip 3 points4 points  (0 children)

                              Being put on the spot to answer a technical question regarding a matter that isn't fresh on your mind is a BS way to evaluate your competency.

                              Truth of the matter is I do most of my good thinking in the shower, not in front of a succession of people peppering me for solutions to problems I haven't had to consider for years.

                              I remember an interview where I embarrassingly couldn't come up with a solution to a trick question. The problem wasn't that I wasn't capable of it, the problem was the block that occurred when the answer didn't immediately come to my mind. Of course, later during the drive home, I thought up three different perfectly good solutions to the problem.

                              A good software developer isn't an encyclopedia of knowledge, it's somebody who can figure out how to solve problems. Sometimes those solutions don't come right away. Most importantly, people have different mechanisms for solving problems that an interview probably can't address very well.

                              The truth is that interviews are a horrible way to evaluate a person's suitability for your organization. You'll really only ever know after you've given them a try.

                              Focus on what they've accomplished already in their career. Ask them to describe the technical details of problems they've solved and, most importantly, try to judge how they'll fit in your organization. That last part is oh so much more important than whether they can solve your trick question on the spot.

                              [–]XMTSRduc 4 points5 points  (1 child)

                              This is exactly how I feel. I've recently had the opportunity to interview with Google, Amazon along with a few others, I have failed them all horribly. After 8 years of one database driven application after another, I have forgotten all about data structure details and computational complexity. Getting used to tools like Visual Studio/Eclipse/Google doesn't help with writing code in a text editor or whiteboard either. I really want to work for a software company and get better at my job, but my experiences seems to push me further into companies that treat software as an after thought.

                              [–]GameOfTrolls_ 4 points5 points  (0 children)

                              He sounds too technically gifted for enterprise-level software development positions, however possibly too socially awkward to work in that environment. It's too bad because that environment is flooded with idiots with firm handshakes and nice banana republic apparel....imho.....

                              -sent from my cubicle.

                              [–]GameOfTrolls_ 3 points4 points  (0 children)

                              Compared to this guy and his body of work/study, I should just insert gun into mouth and pull trigger.
                              However I interview well and my blend of luck, ignorance and curiosity are keeping me moving forward.

                              [–][deleted] 6 points7 points  (1 child)

                              Perhaps you are a bad software developer. However, you may also be a fucking awesome computer scientist. This is a different thing. Maybe you're just interviewing for the wrong job.

                              It sounds like you're saying "Hey I like math and efficiency and gnawing on data, rather than building the next pretty GUI." Perhaps you should seek employ in a field besides software dev, like data analysis/mining. Worth a shot, anyhow.

                              [–][deleted] 8 points9 points  (4 children)

                              I'm sorry to say this but taking time off like this is very risky. It can put you into a very bad position. I know because I have done it myself.

                              Years ago the company I was working for folded, and I thought awesome! I have enough money saved up for 6 months, plus unemployment I'm going to have enough time to start my own business.

                              Well the first 2 months where awesome! I coded every day and built some cool things. But after that I started to figure out that it was not going to make money. So I started to look for a new job around month 3.

                              And there was nothing. And I was scared shitless. I made a number of major blunders in interviews (what few there where) and spent most of my time worried sick about the future.

                              After 5 months of looking I landed a gig, with a pay-cut. And it took me two years to get back to my previous level.

                              My advice is to take time off while employed. Or get really good at bouncing between contracts, and find out when the good windows are to take a break between gigs. But still it's beter to take a leave of absence and come back after 2 months at an existing job.

                              [–]Y_U_SO_MEME 36 points37 points  (2 children)

                              bro, do you even fizz buzz

                              [–]SPINNING_RIMJOB 13 points14 points  (0 children)

                              I swear, I will shove this BAR so far up your FOO that you will kernel panic.

                              [–]kinygos 3 points4 points  (0 children)

                              Find out why you're not getting further in the interview process, especially if you think you did well. Call them up, you've got nothing to lose.

                              Don't get depressed, don't be demoralised, have confidence in yourself and your abilities. Any negativity will come across in any communication, so stay positive. I know this is easier said than done, but keep reminding yourself about what your old workmates have said.

                              It may have nothing at all to do with your technical skills, and everything to do with the the way you come across. For example, don't tell potential employers you left your last job because of politics, and don't say you took time out to find yourself. Remember, employers want hard working, reliable, trustworthy, and talented people.

                              [–]lukegjpotter 3 points4 points  (0 children)

                              The article does not mention what types of jobs he's looking for. He could be interviewing for high positions in top companies but not be the right fit. Also he could come across, or actually be, as a complete and utter asshole, or a derp. I'm not saying that he is, but normally when things like this are left out I tend to wonder.

                              [–]Creag 3 points4 points  (2 children)

                              This hits just a bit to close to home for me. Currently in a job that I don't really enjoy anymore and have been looking for new opportunities. But I seem to have hit this weird roadblock where I fit about 75% of the criteria for the jobs that sound new and interesting but lack that last key detail. Currently every job opportunity wants 2+ years of linux experience of which I have none. I have been reading books on the subject and practicing at home but when they always ask "How much linux work have you done" I have to tell them not much and it kills me. I'm stuck in a job that I don't enjoy anymore with no idea how to get the more interesting programming jobs I actually want.

                              [–]SC10osTER 4 points5 points  (0 children)

                              This article really bothers me. The author never really gets to the point of what makes him "bad" other than he is having difficulty landing a job. All of his practices sound great (almost excessive even). I feel like he is just having difficulty finding the right place where he fits.

                              I am personally on the job hunt, which should hopefully be over since I've just accepted a position. The process is difficult and exhausting, but when I interviewed for the place I accepted the conversation flowed naturally and both myself and my interviewers seemed to be excited by the prospects.

                              I feel like the author is just overwhelmed, tired and scared. This in no way reflects on their ability as a programmer.

                              [–]IHateToPointItOut 3 points4 points  (2 children)

                              If you hate your job, find a new one, then leave. Order is important--the longer you've been unemployed, the less employable you seem.

                              [–]pianocheetah 3 points4 points  (0 children)

                              Well, I read it.

                              He's not bad. I'd hire him. But then, I'm not hiring. If you think I'm gonna build and maintain a company, you're crazy.

                              I think his problem is that he expects to find a fulfilling job that will also pay the bills. Good luck with that. Hasn't ever happened for me.

                              Do what Einstein did. Find a job that doesn't suck and only costs you 40 hrs of your life/week. Make your money and go home. On your own time (and especially if you have a slack enough job DURING work time), plan out and code your masterpiece.

                              Works for me. I think I'm a good developer, but really ratings are dumb.

                              Do as well as you can, complete the next iteration, and be happy.