Live data from Hacker News

I Am a Bad Developer

eewz0z.pen.io

51–60 of 223 posts

Re: I Am a Bad Developer

#51
I could have written this piece. It hit that close to home. I'm 15 years into my IT career and I can honestly say it's not getting easier. I don't believe it's an ageism thing, but just a symtom of something I still cannot put my finger on.

I put myself on sabbatical after realizing that my needs were not being met on a regular basis by my job. While I'll allow short-term ROI to be negative, I will never allow my long-term ROI to be negative [3]. I took some time out of my life to spend it with my wife and young daughter, something which I'd never done in my life. It is a blessing.

However, in the first week of my sabbatical I get called up for an interview with Expedia for a senior Web dev position. I thought "hey, I've never worked in the USA before, this could be fun". My interviewer was a junior dev who, in the course of the interview, demonstrated that he had very little experience in interviewing (whereas I have conducted > 100 interviews). In the technical phone interview I was asked some esoteric questions about finding the intersection of two integer arrays, what the O-notation would be, and so forth. I came up with some half-assed answers, since it had been years since I thought of those things [1] and since I was tired (on sabbatical) and didn't care if I got the job I asked the interview plainly how often this type of problem comes up in his work routine. His answer: never. Not once. I mentioned to him that I don't understand asking these types of questions, and I have never asked something like that in an interview before. I thanked him for his time, and prompted removed my resume from the application process [2].

To wit, my phone interviewing tactics for a Web dev position contain the following questions:

    - when I type in a URL in my browser's address bar, press Enter, and then the page appears, tell me what happened technically in as low level as possible.
    - what are the main verbs used in the HTTP protocol.
    - something about CSS, JS, , HTML
    - something about how to handle a situation like breakfix, sensitive data leakage, etc.
Only after answering all of the questions in the phone interview properly, only then will I invite them in for an in-person interview. However, even an in-person interview doesn't contain stupid programming puzzles or tricks...merely practical examples of things that have happened on the job.

[1] In other words, I think of O-notation in the back of my head when I code (loops within loops, etc), but I don't lead with it.

[2] Oh my, they did not like this. Granted, I was working through their internal recruiting agency, but you'd think I just called their child ugly or something.

[3] That's my corporate-speak coming out. Basically, short-term negative ROI is akin to working really hard and losing a bit of sleep to see a project to completion. Long-term negative ROI is when the hard-work you are doing is not noticed by upper manager and you are passed over for awards, congratulations, and other extrinsic things.

Edit: clarity

Re: I Am a Bad Developer

#52
post #22

On Friday I had a remote interview where I was asked to search for the value closest to X in a sorted 2D array (columns and rows are both sorted in increasing order). I came up with a trivial solution to find a specific value, but got tripped up modifying it to find an unknown value that could be higher or lower than the target. I have not heard back from the company. On Saturday/Sunday, I went to AngelHack SF and di…

First, congratulations. Good luck wherever you choose to go. It may be counter-intuitive, but the more qualified you are, the longer you have to look for a job. A fresh-faced junior developer just out of college can be hired pretty quickly, because he/she isn't a big risk: the salary is lower, the responsibility is lower, and it's assumed there will be some adult supervision from an experienced developer. A senior de…

Also, it goes the other way: A senior engineer will be a lot more picky, and take more care to scope out good places with hard problems: The places that have higher bars for hiring.

Re: I Am a Bad Developer

#53
post #29

Earlier quoted context omitted.

Maybe you are applying to the wrong places? I work in Silicon Valley and without naming names I can say I know there are places that will settle for very mediocre technical talent because it is so hard to get people right now. Avoid the well known, "hot" companies, and the start ups. Look for big companies in hot job markets.

Could you give some examples?

Go on Dice, then search for any job listing requiring J2EE/struts/hibernate. The technical interview will consist of explaining what polymorphism is and a handful of OO design patterns like singletons and factories. Then give a poignant speech about the evils of multiple inheritance, why interfaces are better, why you love XML, why writing SQL statements in the code is wrong and the only way to talk to a DB is with ORM, and you are done.

Re: I Am a Bad Developer

#54
post #22

On Friday I had a remote interview where I was asked to search for the value closest to X in a sorted 2D array (columns and rows are both sorted in increasing order). I came up with a trivial solution to find a specific value, but got tripped up modifying it to find an unknown value that could be higher or lower than the target. I have not heard back from the company. On Saturday/Sunday, I went to AngelHack SF and di…

> Or is the hiring practice of reducing someone's technical competence to a handful of esoteric questions arbitrary and broken?

Certainly the hiring practices of Google et al, generally the worst perpetrators of cs bingo in my experience. Started a startup, you say? Rebuilt a non-trivial webapp? Won a hackathon? That's great, but we're going to need you to implement red-black trees and variations of fizzbuzz until your brain bleeds.

Re: I Am a Bad Developer

#55
post #38
post #33

Earlier quoted context omitted.

Not sure if that's really relevant. Unless you are applying for a job where time is money stock trading or some such I don't see how knowing a method you are writing is O(log N) rather then O(N2) is useful. Its something to keep in mind sure, but I would rather have the slower method integrated into the code base faster. Yes performance is a feature but realistically you can get away with some fairly awfully performi…

If you put an O(N^2) algorithm in production, you'll kill whatever relies on it. If that's our funnel, we're out of business. If its our DB, it'll go on fire. Not being able to reason about complexity is a no-hire for me.

That's only for cases of N over some value. An O(N^2) algorithm over a list of 10 is not going to break anything.

I didn't mention not being able to reason out the complexity, only saying its O(N^2) off the top of your head when presented with some method.

Re: I Am a Bad Developer

#56

Isn't the author just experiencing imposter syndrome? http://en.wikipedia.org/wiki/Impostor_syndrome Despite all his colleagues, friends, and coworkers telling him he is proficient, keeping current in the industry, coding for fun, contributing to open source, proactively bettering his coding style and knowledge, and knowing a lot of theory, his mediocre interviews are enough to convince him that he's a bad developer.…

Granted 10 is a bit much. But it depends on who to interview with. If you are good, there are consulting companies like ThoughtBot or PivotalLabs who hire good developers pretty easily. And their interview process is all about checking if you are good and get along with people rather than just if you know how to traverse obscure data structures.

Imposter syndrome does sound quite right. Or the guy is just depressed pretty hard.

Re: I Am a Bad Developer

#57
I wonder what would happen if programmers started questioning the types of interview questions that they received (especially when they don't relate to the job in any way)?

Would interviews start to change their questions? Would the programmers who questioned the validity of the questions asked get more or less respect from interviewers?

Shouldn't more companies be embracing the trial an employee for a week and have them try to solve some real problems?

Tech interviews seem very broken at most companies whereas the companies that have the most progressive interviewing process (like github) continue to see more qualified candidates than they can hire.

Re: I Am a Bad Developer

#58
Being a good programmer is not the same thing as being a good engineer or developer. Also, there are the true and corporate varieties of each.

True Developer: builds technical assets (apps, scripts) based on business needs, often by self-initiated awareness of what the company's needs are.

Corporate Developer: turns managerial ideas (with no audit of whether those are good ideas) into apps that sorta work, very quickly, with a smile on his face.

True Engineer: focuses on infrastructural concerns, performance, debugging and monitoring, and maintenance. Writes solid code with good tests and, usually, high-quality documentation.

Corporate Engineer: bike-sheds the hell out of technical choices (war of attrition, and managerial favor helps) so he controls the stack and becomes the "blazer" while the other N-1 spend most of their time keeping up with his changes and look like underperformers. Calls himself an "architect".

True Programmer: writes excellent code to solve problems. Enjoys writing code, perhaps a little bit too much. Constantly learning new languages and technologies. Cares more about the technical challenge than the macroscopics of the problem (unlike the developer, whose stance is the reverse).

Corporate Programmer: drags windows and highlights stuff on his IDE. Moves the mouse around in circles for 8 hours per day, then goes home at 5:01. Occasionally plays with the menus and something "magical" happens, like the auto-generation of 18 Perforce clients due to some bizarre interaction of IDE plugins.

OP sounds terrible at interviewing and is probably really bad at Corporate, too.

He could get good at interviewing with a month of practice. I could coach him on that. Being good at Corporate is not something I'd be qualified to teach, and I'm not sure if it's desirable in the long-term (although it is convenient in the short term).

Re: I Am a Bad Developer

#59
I can't believe no one commented on this gem:

>If you were to judge me just by my reading list you'd think I was university-trained but I'm not.

Would going to university make you a better developer as opposed to a 4 year version of the exercise you described? Probably not (though it wouldn't certainly drill function complexity into your head a little better). Will it make you easier to get a job? Yea, I think so. I don't know much about you, but I do know a lot of companies expect a BS. If they notice your resume doesn't list one, I would wager they spend even more time drilling on the theory side of things to validate their preconceptions that you don't know what you're doing.

Article after article says don't go to college. Sure, that's great if someone hands you $100k and you have no supervisor. But some people just want to feed their family doing what they enjoy.

Anyway, you sound like a great developer as is. And this is coming from someone who considers himself a bad developer; it says as much in my profile.

Re: I Am a Bad Developer

#60
post #33

Earlier quoted context omitted.

Not sure if that's really relevant. Unless you are applying for a job where time is money stock trading or some such I don't see how knowing a method you are writing is O(log N) rather then O(N2) is useful. Its something to keep in mind sure, but I would rather have the slower method integrated into the code base faster. Yes performance is a feature but realistically you can get away with some fairly awfully performi…

You should probably read up on why this is, in fact, important before your next interview. Just a free piece of advice. O(N^2) means that your operation gets n times slower each time n increases. 2000^2 is 4 million. (n log n = 6600) 200,000^2 is 40 billion. (n log n = 1 million)

I understand Big O.

My point is for a lot of cases it doesn't matter, and just because someone can't throw off the top of their head the O complexity of some algorithm they just wrote in a stressful interview does not mean they don't understand the concepts.

Besides a O(N log N) algorithm over 10 or 100 items is not going to cause any issues. In the case of your standard CRUD application that's what you are going to be dealing with.

Post reply on HN