Was I too harsh?

A place to discuss the implementation and style of computer programs.

Moderators: phlip, Moderators General, Prelates

User avatar
Pesto
Posts: 737
Joined: Wed Sep 05, 2007 5:33 pm UTC
Location: Berkeley, CA

Was I too harsh?

Postby Pesto » Sat May 19, 2012 12:26 am UTC

I just interviewed someone, and my boss objected to the severity of my evaluation. I'd like a sanity check from some other coders. This interview was for a back-end Java web development position, and the candidate had 5+ years of Java development experience on her resume.

First I quizzed her on SQL. She generally did okay with this, but she couldn't remember whether the less than or equal operator was "<=" or "=<". She was supposed to select all records where some value was between 20 and 30 inclusive, and at one point she wanted to use "in(20, 30)" but realized quickly why that wouldn't work.

Next, I asked her to implement a reverse() member function of a linked list class. She never actually completed this. She got very close at one point. her best attempt ended up with a reversed linked list, but instead of the last node pointing to null, it pointed back at the previous node. One line of code before her while loop would have solved the problem, but she decided that her approach was wrong. From here things only got worse, and she headed off into the weeds.

My assessment of her was, "She can't code." Is that too harsh?

To her credit, she took care of corner cases like an empty list up front. Most people I interview solve the general case, then I have to prompt them for special cases.

User avatar
Anubis
Posts: 222
Joined: Sun Mar 01, 2009 7:59 am UTC

Re: Was I too harsh?

Postby Anubis » Sat May 19, 2012 5:34 am UTC

My two cents? I think you were a little harsh... the only time a reasonable person would write a function to reverse a linked list in Java is in school, in an interview, or if they're working on a framework. Granted, a good programmer should still be able to do it, but she probably hadn't thought about it in years, and when you take into account how nervous many people are in an interview it's understandable that she would struggle. The fact that she moved in the right direction at all puts her (sadly) ahead of most programmers, although I guess that depends on the precise meaning of "headed off into the weeds". The SQL syntax thing is implementation-specific and is the kind of thing that requires memorization rather than understanding, so I don't think it's a very good indicator of general coding ability.

Ben-oni
Posts: 278
Joined: Mon Sep 26, 2011 4:56 am UTC

Re: Was I too harsh?

Postby Ben-oni » Sat May 19, 2012 5:57 am UTC

I agree with Pesto about the SQL: I can't remember the syntax at all, and I have loads of experience. (Grant me, however, 5+ years since I've worked with it...) A few minutes with google and a reference sheet, though, and I could get it to perform Riverdance for you.

As for implementing reverse, it's pretty fundamental. Yes, nobody ever does it except for practice, but there's a reason it's an interview question, isn't there? Every CS grad knows linked lists and how they're implemented. It shouldn't take more than a few seconds of thought for a competent programmer to work out a reverse. Even factoring in interview nerves, it's a really simple problem.

User avatar
Pesto
Posts: 737
Joined: Wed Sep 05, 2007 5:33 pm UTC
Location: Berkeley, CA

Re: Was I too harsh?

Postby Pesto » Sat May 19, 2012 6:07 am UTC

Anubis wrote:The SQL syntax thing is implementation-specific...


I don't know of any SQL implementation that uses "=<". In fact, I don't know of any language that uses that, period.

Ben-oni
Posts: 278
Joined: Mon Sep 26, 2011 4:56 am UTC

Re: Was I too harsh?

Postby Ben-oni » Sat May 19, 2012 6:53 am UTC


User avatar
WarDaft
Posts: 1583
Joined: Thu Jul 30, 2009 3:16 pm UTC

Re: Was I too harsh?

Postby WarDaft » Sat May 19, 2012 9:42 am UTC

Someone who claims to have 5 years of any kind of coding experience and can't reverse a list (in the language they specified, you can't learn a language in 5 minutes obviously) isn't someone who "can't code." It's someone who's "lying to get an interview."
All Shadow priest spells that deal Fire damage now appear green.
Big freaky cereal boxes of death.

Ben-oni
Posts: 278
Joined: Mon Sep 26, 2011 4:56 am UTC

Re: Was I too harsh?

Postby Ben-oni » Sat May 19, 2012 10:30 am UTC

Be kind: the five years was probably the time she spent getting her undergrad.

User avatar
Jplus
Posts: 1721
Joined: Wed Apr 21, 2010 12:29 pm UTC
Location: Netherlands

Re: Was I too harsh?

Postby Jplus » Sat May 19, 2012 6:48 pm UTC

I do think it was a bit too harsh. Feeling unsure and not being very familiar with data structures is enough to get such a result; if she was "very close" at any point I think that indicates she could probably do it in more relaxed conditions.

As for the "less than or equal", I think that's a little more surprising. Perhaps she's a little dyslexic or something like that? I must say, I'm used to <= but =< doesn't look too bad either.
"There are only two hard problems in computer science: cache coherence, naming things, and off-by-one errors." (Phil Karlton and Leon Bambrick)

coding and xkcd combined

(Julian/Julian's)

User avatar
Shivahn
Posts: 2200
Joined: Tue Jan 06, 2009 6:17 am UTC

Re: Was I too harsh?

Postby Shivahn » Sat May 19, 2012 7:17 pm UTC

Jplus wrote:I do think it was a bit too harsh. Feeling unsure and not being very familiar with data structures is enough to get such a result; if she was "very close" at any point I think that indicates she could probably do it in more relaxed conditions.

As for the "less than or equal", I think that's a little more surprising. Perhaps she's a little dyslexic or something like that? I must say, I'm used to <= but =< doesn't look too bad either.

=< looks terrible.

It is clearly very unhappy. Someone should hug it. => is much better.

User avatar
PM 2Ring
Posts: 3715
Joined: Mon Jan 26, 2009 3:19 pm UTC
Location: Sydney, Australia

Re: Was I too harsh?

Postby PM 2Ring » Sun May 20, 2012 1:37 am UTC

Shivahn wrote:=< looks terrible.

It is clearly very unhappy. Someone should hug it. => is much better.

+1

FWIW, I used to know a guy who could never remember if < was less than or greater than. Fortunately, he wasn't a coder. :)

User avatar
Thesh
Made to Fuck Dinosaurs
Posts: 6598
Joined: Tue Jan 12, 2010 1:55 am UTC
Location: Colorado

Re: Was I too harsh?

Postby Thesh » Sun May 20, 2012 3:06 am UTC

"<" is simultaneously less than and greater than.
Summum ius, summa iniuria.

User avatar
Arancaytar
Posts: 1642
Joined: Thu Mar 15, 2007 12:54 am UTC
Location: 52.44°N, 13.55°E
Contact:

Re: Was I too harsh?

Postby Arancaytar » Sun May 20, 2012 7:07 pm UTC

Ben-oni wrote:Be kind: the five years was probably the time she spent getting her undergrad.


As an aside, you wouldn't believe how many students get through three years of CompSci and have absolutely no idea how to implement any kind of linked-list algorithm.

However, from what the OP describes, the candidate was clearly able to solve this problem, but got stuck on a mistake and then cracked under pressure.

She got very close at one point. her best attempt ended up with a reversed linked list, but instead of the last node pointing to null, it pointed back at the previous node. One line of code before her while loop would have solved the problem, but she decided that her approach was wrong. From here things only got worse, and she headed off into the weeds.


That, and the syntax details in SQL, suggest that the candidate is not so much bad at programming as bad at interviews. Based only on the available information (without knowing how long this took), I'd lean towards "too harsh".
"You cannot dual-wield the sharks. One is enough." -Our DM.
Image

Goplat
Posts: 490
Joined: Sun Mar 04, 2007 11:41 pm UTC

Re: Was I too harsh?

Postby Goplat » Sun May 20, 2012 7:13 pm UTC

Ben-oni wrote:As for implementing reverse, it's pretty fundamental. Yes, nobody ever does it except for practice, but there's a reason it's an interview question, isn't there? Every CS grad knows linked lists and how they're implemented. It shouldn't take more than a few seconds of thought for a competent programmer to work out a reverse. Even factoring in interview nerves, it's a really simple problem.
Reversing a singly-linked list requires juggling three pointers around. (You want to do cur->next = prev; prev = cur; cur = cur->next... except that doesn't work due to overwriting cur->next before using it.) It's not complex, but I could imagine screwing it up at first if I was under pressure and had not done it before.

Pesto wrote:I don't know of any SQL implementation that uses "=<". In fact, I don't know of any language that uses that, period.
GW-BASIC allowed both <= and =< for less-than-or-equal, and both >= and => for greater-than-or-equal. (QBasic recognized =< and => but would automatically convert them to <= and >= respectively.)

Ben-oni
Posts: 278
Joined: Mon Sep 26, 2011 4:56 am UTC

Re: Was I too harsh?

Postby Ben-oni » Sun May 20, 2012 9:42 pm UTC

Goplat wrote:Reversing a singly-linked list requires juggling three pointers around. (You want to do cur->next = prev; prev = cur; cur = cur->next... except that doesn't work due to overwriting cur->next before using it.) It's not complex, but I could imagine screwing it up at first if I was under pressure and had not done it before.

Code: Select all

reverse = foldl (flip (:)) []

In Java, foldl op e list looks like

Code: Select all

node = list.front;
acc = e;
while (node != null) {
   acc = op(acc, node.contents);
   node = node.next;
}
The solution, therefore, looks like

Code: Select all

node = list.front;
acc = null;
while (node != null) {
   acc = new Node(node.contents, acc);
   node = node.next;
}
list.front = acc;

Optimally efficient? No. Covers boundary cases? Yes. Also, doesn't "juggle" pointers.

@Pesto: What would you have thought if someone presented this solution during an interview?

User avatar
WarDaft
Posts: 1583
Joined: Thu Jul 30, 2009 3:16 pm UTC

Re: Was I too harsh?

Postby WarDaft » Sun May 20, 2012 11:14 pm UTC

I haven't coded in C since I was 10, or any other language that uses pointers so explicitly, (though I am about to again very soon for a university course) and I could still probably write an in-place list reverse in roughly 5 minutes, including the time to look up how you actually denote pointers in C. Obviously I wouldn't be applying for a position where I would have to look up the language specs in the interview, unless that was specifically part of the interview.
All Shadow priest spells that deal Fire damage now appear green.
Big freaky cereal boxes of death.

User avatar
Steax
SecondTalon's Goon Squad
Posts: 3038
Joined: Sat Jan 12, 2008 12:18 pm UTC

Re: Was I too harsh?

Postby Steax » Sun May 20, 2012 11:51 pm UTC

My rule of thumb when it comes to interviews is that I'm looking for the *really* bad people. I want to filter those out first and foremost before dealing with anything else.

In general, if a problem could be fixed by looking up one search query on google, or running the code through a compiler a few times, it's perfectly fine. I'm sure everyone makes little mistakes or gets fuzzy on stuff, especially when we're nervous.

I'd have accepted that interviewee, at least to the next level. She knows the basics of what she needs to know, and has useful qualities such as catching edge cases early on. It's the kind of person you can eventually mold into a better programmer.
In Minecraft, I use the username Rirez.

Carnildo
Posts: 2023
Joined: Fri Jul 18, 2008 8:43 am UTC

Re: Was I too harsh?

Postby Carnildo » Mon May 21, 2012 5:25 am UTC

WarDaft wrote:Someone who claims to have 5 years of any kind of coding experience and can't reverse a list (in the language they specified, you can't learn a language in 5 minutes obviously) isn't someone who "can't code." It's someone who's "lying to get an interview."

I've got 25 years' experience with programming, and I can't guarantee I won't mess up the end case on the first try. Every time I've needed to reverse a list, the solution has been either to run it through a sort function or iterate backwards -- if I'm using a single-linked list, it's because I know that the only operations I'll be doing on it are "head insert", "head remove", and "forward iterate".

User avatar
Zamfir
I built a novelty castle, the irony was lost on some.
Posts: 7605
Joined: Wed Aug 27, 2008 2:43 pm UTC
Location: Nederland

Re: Was I too harsh?

Postby Zamfir » Mon May 21, 2012 6:17 am UTC

Just curious: is it normal for programmers to have this kind of miniature exams in a job interview? I'm an engineer, and as far as I can remember no one asked me anything like this in a job interview, ever. At most they ask something like "are you familiar with X? Can you give an example of what you did?"

Ben-oni
Posts: 278
Joined: Mon Sep 26, 2011 4:56 am UTC

Re: Was I too harsh?

Postby Ben-oni » Mon May 21, 2012 7:29 am UTC

Zamfir wrote:Just curious: is it normal for programmers to have this kind of miniature exams in a job interview? I'm an engineer, and as far as I can remember no one asked me anything like this in a job interview, ever. At most they ask something like "are you familiar with X? Can you give an example of what you did?"

You don't ask a college grad if they can read and write. Why ask an engineer if they can solve differential equations? It will be obvious as you talk with them whether they have the skills they claim. Yet, there is never a test performed to determine whether a programmer can program. It's absolutely shameful. How else are you to weed out the cargo cult programmers?

Carnildo wrote:I've got 25 years' experience with programming, and I can't guarantee I won't mess up the end case on the first try.

It doesn't really help her case to admit that you can't code, either.

User avatar
Zamfir
I built a novelty castle, the irony was lost on some.
Posts: 7605
Joined: Wed Aug 27, 2008 2:43 pm UTC
Location: Nederland

Re: Was I too harsh?

Postby Zamfir » Mon May 21, 2012 8:40 am UTC

Ben-oni, I am not sure what you mean. I thought datastructures like linked lists are somewhat similar to differential equations: you get drilled on them in school, but in most jobs they are required background knowledge, not daily practice.

User avatar
Steax
SecondTalon's Goon Squad
Posts: 3038
Joined: Sat Jan 12, 2008 12:18 pm UTC

Re: Was I too harsh?

Postby Steax » Mon May 21, 2012 11:15 am UTC

Zamfir wrote:Just curious: is it normal for programmers to have this kind of miniature exams in a job interview? I'm an engineer, and as far as I can remember no one asked me anything like this in a job interview, ever. At most they ask something like "are you familiar with X? Can you give an example of what you did?"


Yes. For some reason, the programming community is quite saturated by people who have marginally passable programming skills. Or none. I blame it on web courses, general trends of "be a programmer, get rich" and the fact that this science evolves extremely fast, leaving people with outdated books and teachers in the dark. It's also really easy to fish out the worst ones, even over the phone.

And since I can't type well on this horse, here, have a link: http://www.codinghorror.com/blog/2007/0 ... ogram.html

Edit:
Of course, this isn't the only reasoning for practical tests. But it's the crux of the issue. I do think many people do these things too harshly: it's not always fair to use these yardsticks for anything beyond a trivial question, IMO. Great programmers are those with the will to learn, experiment, make mistakes and think of solutions. Telling them to accomplish a set goal is often counterproductive to all this, turning them into a machine that writes code. There are better ways to figure out who's good. But simple practical exams are quite useful in weeding out a lot of less competent people, and they usually don't hurt. I personally use them to test problem-solving skills, like how they track down a bug in their code.

It's okay not to know something, as long as you know how and when to learn it.
In Minecraft, I use the username Rirez.

User avatar
b.i.o
Green is the loneliest number
Posts: 2519
Joined: Fri Jul 27, 2007 4:38 pm UTC
Location: Hong Kong

Re: Was I too harsh?

Postby b.i.o » Mon May 21, 2012 12:24 pm UTC

Pesto wrote:First I quizzed her on SQL. She generally did okay with this, but she couldn't remember whether the less than or equal operator was "<=" or "=<".

This is a ridiculous thing to care about if she was able to write otherwise-working SQL. It's a trivial detail that can be figured out in 30 seconds with a console or a web browser.

She was supposed to select all records where some value was between 20 and 30 inclusive, and at one point she wanted to use "in(20, 30)" but realized quickly why that wouldn't work.

She made a mistake and then fixed it. If she fixed it without prompting, this isn't something I'd count against her at all. If she needed some prompting, I might count it as slightly less positive.

Next, I asked her to implement a reverse() member function of a linked list class. She never actually completed this. She got very close at one point. her best attempt ended up with a reversed linked list, but instead of the last node pointing to null, it pointed back at the previous node. One line of code before her while loop would have solved the problem, but she decided that her approach was wrong. From here things only got worse, and she headed off into the weeds.

This suggests a couple of things to me, although since I wasn't in the interview, I can't say for sure. First, it seems likely she was nervous. Second, letting someone take a solution that's 95% of the way there and do something entirely different is not something I'd typically let happen in an interview. Even good candidates are going to fail at some things some of the time, and it's part of your job as an interviewer to guide them a bit.

My assessment of her was, "She can't code." Is that too harsh?

I'd say it is. It seems like she can mostly code, but made a couple of mistakes. I'd want to have another person (or two) interview her if at all possible. It doesn't seem like she did badly enough to fail, but also not like she did well enough to pass. Of course, that also depends on other factors (was she likable, easy to work with/talk to, etc), and also on what kind of position the interview was for.


Ben-oni, I am not sure what you mean. I thought datastructures like linked lists are somewhat similar to differential equations: you get drilled on them in school, but in most jobs they are required background knowledge, not daily practice.

Most programmers probably don't encounter linked lists on a daily basis, that's true. But they're still basically trivial to understand.

User avatar
Steax
SecondTalon's Goon Squad
Posts: 3038
Joined: Sat Jan 12, 2008 12:18 pm UTC

Re: Was I too harsh?

Postby Steax » Mon May 21, 2012 1:00 pm UTC

When it comes to things like linked lists, I think I'd pass anyone who could at least explain how they work and what they're for.

To give some background, though, this is my favorite interview question (as a web developer), and it's served me well:
"We need a script to parse raw user comments that come in through our comment form. We need to make links clickable, but with a way to prevent search engines from crawling them, and make it all secure."

I don't even wait for the full answer. I can tell pretty much from the first 15 seconds of murmuring. Anything remotely close to "well, run a regex on the text to find links, add in anchor tags with rel=nofollow, but make sure to do a htmlentities() call to prevent injection attacks..." satisfies me. Heck, I'd allow them to miss one of the three elements. I also accept intelligent answers. Off the top of my head, one of my favorite coworkers answered the first one with "search for strings that contain '://'", and another suggested using javascript instead of nofollow. Half of them forget if it was htmlentities or some other stupid php function name, another half forget the rel attribute that prevents crawling, and yet another half forget how to write the exact regex without looking it up. And to me, that's fine. As long as they know what they're looking for, it'd take a few seconds to find in a search engine or documentation. If the task were that critical, they'd know it by heart in a week anyway.
In Minecraft, I use the username Rirez.

User avatar
Xanthir
My HERO!!!
Posts: 5426
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex
Contact:

Re: Was I too harsh?

Postby Xanthir » Mon May 21, 2012 3:28 pm UTC

To pile on some of the others, yes, you were too harsh.

b.i.o got it right. From what you told us, she coded just fine, but had some silly errors that either resulted from no *recent* exposure to the language in question, or more likely just interview jitters.

Many people get *very* nervous during interviews. When I do one, I tell the candidate very firmly that exact syntax doesn't matter as long as they can communicate what they're trying to do, and not to worry overly much about off-by-one errors or the like either. If they start futzing about with these things, I repeat that it's not necessary (very kindly) and push them toward moving on. Someone's ability to quote syntax at me under pressure is completely irrelevant for their job. I'm looking for problem solving skill, basic logical thinking, and most importantly, evidence that they've been on the sharp side of a compiler sometime in the last few years. It's really easy to show the last one without producing error-free code.

It's your job as an interviewer to also prevent the candidate from going off into the weeds. If they've clearly tripped over themselves and are running off somewhere, stop them and gently pull them back into the direction you want them to go. Otherwise you're just wasting both of y'all's time.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))

Great Justice
Posts: 54
Joined: Sun Aug 15, 2010 5:28 am UTC

Re: Was I too harsh?

Postby Great Justice » Mon May 21, 2012 4:31 pm UTC

It depends on your candidate pool. If your profile is current, then I would imagine that in Berkeley shouldn't have to settle for someone who struggles in an interview the same way I did on a first semester exam after a fun weekend, unprepared.

We ask much harder problems be solved in an interview, and the pressure of being scrutinized as you do it is a great indicator of how a person behaves in crunch time or emergency situations (obviously, dependent on the project and position).

Anyway, "she can't code" may be just hyperbole, she can eventually get some code out, but "she can code" would be just as much of a lie, imo "coding" is not just syntax.
It usually isn't Congress or the State that tries to abridge free expression or free speech, [...] actually, in the present situation, the main threat to expression comes from public opinion.
~Christopher Hitchens

User avatar
Shivahn
Posts: 2200
Joined: Tue Jan 06, 2009 6:17 am UTC

Re: Was I too harsh?

Postby Shivahn » Mon May 21, 2012 5:30 pm UTC

Steax wrote:
Zamfir wrote:Just curious: is it normal for programmers to have this kind of miniature exams in a job interview? I'm an engineer, and as far as I can remember no one asked me anything like this in a job interview, ever. At most they ask something like "are you familiar with X? Can you give an example of what you did?"


Yes. For some reason, the programming community is quite saturated by people who have marginally passable programming skills. Or none. I blame it on web courses, general trends of "be a programmer, get rich" and the fact that this science evolves extremely fast, leaving people with outdated books and teachers in the dark. It's also really easy to fish out the worst ones, even over the phone.

I think part of it is that non-computer-educated people think programming is like building a car from a kit, rather than designing a car, then building it. So they go to learn C++ or whatever - they learn a language, mostly by documentation and tutorials designed by and for people who know that you should data hide things you're not going to want to access, you should abstract things, and so on. And if they can kludge together code that works, why bother learning better practices?

It's rarer that someone realizes "I don't know why other people are doing stuff differently, I don't know why they write the code like they do, but they're obviously smart, let me look at some computer science and see what I can learn."

User avatar
Steax
SecondTalon's Goon Squad
Posts: 3038
Joined: Sat Jan 12, 2008 12:18 pm UTC

Re: Was I too harsh?

Postby Steax » Mon May 21, 2012 5:35 pm UTC

Yes. I've seen a huge slew of people walk out of college thinking their textbook definitions of data structures are going to allow them to write programs. I've even personally been asked by a graduate, "okay, so how do I actually write a program with this stuff?" It appears a good number of otherwise respectable institutions still teach awkward and old practices, without even exposing to their students that new things exist. I've heard everything from "what do you mean, people don't use Flash nowadays?" to "there's a database that doesn't use SQL?" to "why shouldn't I use tree views on everything in my application?"
In Minecraft, I use the username Rirez.

Ben-oni
Posts: 278
Joined: Mon Sep 26, 2011 4:56 am UTC

Re: Was I too harsh?

Postby Ben-oni » Mon May 21, 2012 6:11 pm UTC

Zamfir wrote:Ben-oni, I am not sure what you mean. I thought datastructures like linked lists are somewhat similar to differential equations: you get drilled on them in school, but in most jobs they are required background knowledge, not daily practice.

Yes, they're both fundamental in the same sense, but it's my experience that uncivil engineers live and die by diffeqs. They might have a lot of tools and formulas to do the heavy lifting, but without that basic knowledge they can't actually "engineer" anything.

The difference is that an engineer who gets through a class on Differential Equations and forgets it will not pass the rest of his engineering courses. On the other hand, a programmer who gets through a Data Structures class can promptly forget everything and be just fine, until they have to actually go and code something. The way most CS programs are set up, they won't have to actually do this.

Even when CS students have to finally design and implement a working application from scratch, it's usually a group project. Those who can't program might end up sitting at the visual GUI editor while their teammates do all the real work. At least, that's how I remember it... A friend once described one of his teammates using "True" and "true" as strings arbitrarily and string equality in boolean expressions. Naturally, none of his code worked and the team had to rewrite it all.

User avatar
freakish777
Posts: 354
Joined: Wed Jul 13, 2011 2:14 pm UTC

Re: Was I too harsh?

Postby freakish777 » Mon May 21, 2012 7:30 pm UTC

Background info on the position your company is hiring for?

Is it a Senior Software Engineer position for Lochheed Martin where you're writing programs that UAVs rely on (ie, people die if the code is wrong)?

Quant Analysis on Wall Street (where your company loses lots and lots of money if the code is wrong)?

Electronic Medical Records (where people might die if the code is wrong)?


If there isn't some very compelling reason for the code to be 100% defect free in the X minutes you spent interviewing her, then yes, your assessment was too harsh. I do want to stress however that your concerns are valid. Just there's a more tactful way to say them:

"She Can't Code" -> "She's not the strongest programmer, I would feel more comfortable with a technically stronger candidate on my team"

Also, there's a big difference between Software Engineer I/II and a Senior position. If it was a Senior position then "She Can't Code" would still be a tactless way of saying what you want to say, but a completely valid concern.

User avatar
Zamfir
I built a novelty castle, the irony was lost on some.
Posts: 7605
Joined: Wed Aug 27, 2008 2:43 pm UTC
Location: Nederland

Re: Was I too harsh?

Postby Zamfir » Mon May 21, 2012 7:35 pm UTC

freakish777 wrote:Is it a Senior Software Engineer position for Lochheed Martin where you're writing programs that UAVs rely on (ie, people die if the code is wrong)?

The U really helps though, when it comes to safety

User avatar
Sc4Freak
Posts: 673
Joined: Thu Jul 12, 2007 4:50 am UTC
Location: Redmond, Washington

Re: Was I too harsh?

Postby Sc4Freak » Mon May 21, 2012 9:19 pm UTC

Zamfir wrote:
freakish777 wrote:Is it a Senior Software Engineer position for Lochheed Martin where you're writing programs that UAVs rely on (ie, people die if the code is wrong)?

The U really helps though, when it comes to safety

Not when you're dropping bombs from the things...

Token
Posts: 1481
Joined: Fri Dec 01, 2006 5:07 pm UTC
Location: London

Re: Was I too harsh?

Postby Token » Mon May 21, 2012 10:11 pm UTC

Sc4Freak wrote:
Zamfir wrote:
freakish777 wrote:Is it a Senior Software Engineer position for Lochheed Martin where you're writing programs that UAVs rely on (ie, people die if the code is wrong)?

The U really helps though, when it comes to safety

Not when you're dropping bombs from the things...

That would be a case of people dying if the code is *right*.
All posts are works in progress. If I posted something within the last hour, chances are I'm still editing it.

User avatar
Shivahn
Posts: 2200
Joined: Tue Jan 06, 2009 6:17 am UTC

Re: Was I too harsh?

Postby Shivahn » Mon May 21, 2012 11:20 pm UTC

Steax wrote:Yes. I've seen a huge slew of people walk out of college thinking their textbook definitions of data structures are going to allow them to write programs. I've even personally been asked by a graduate, "okay, so how do I actually write a program with this stuff?" It appears a good number of otherwise respectable institutions still teach awkward and old practices, without even exposing to their students that new things exist. I've heard everything from "what do you mean, people don't use Flash nowadays?" to "there's a database that doesn't use SQL?" to "why shouldn't I use tree views on everything in my application?"

I was actually talking more about people who pick up programming themselves, but try to learn a language instead of trying to learn coding, if that makes sense.

I don't know how often these types of people apply for jobs though, or what percentage of programmers don't have a BS in CS (any information on that would be appreciated, incidentally).

When I started out I didn't know what to do, so I bought a C++ book and studied that. I burned out, didn't get it, and the code I wrote was atrocious. I stopped. If I'd continued, I would probably be a terrible coder.

Since then I've started studying CS, rather than just C++. I've become much, much better. I'm still obviously terrible in some arenas (as my frequent questions will attest), but by forcing myself to learn everything, even the relatively unfun stuff, is helping me become a far better programmer than just trying to learn a language and not caring about the practices. For the most part, it's important to know why you're doing things, and I wonder if a reliance on knowing what to do rather than why to creates people who can program, but have terrible skills.

User avatar
Steax
SecondTalon's Goon Squad
Posts: 3038
Joined: Sat Jan 12, 2008 12:18 pm UTC

Re: Was I too harsh?

Postby Steax » Mon May 21, 2012 11:36 pm UTC

Shivahn wrote:
Steax wrote:Yes. I've seen a huge slew of people walk out of college thinking their textbook definitions of data structures are going to allow them to write programs. I've even personally been asked by a graduate, "okay, so how do I actually write a program with this stuff?" It appears a good number of otherwise respectable institutions still teach awkward and old practices, without even exposing to their students that new things exist. I've heard everything from "what do you mean, people don't use Flash nowadays?" to "there's a database that doesn't use SQL?" to "why shouldn't I use tree views on everything in my application?"

I was actually talking more about people who pick up programming themselves, but try to learn a language instead of trying to learn coding, if that makes sense.

I don't know how often these types of people apply for jobs though, or what percentage of programmers don't have a BS in CS (any information on that would be appreciated, incidentally).

When I started out I didn't know what to do, so I bought a C++ book and studied that. I burned out, didn't get it, and the code I wrote was atrocious. I stopped. If I'd continued, I would probably be a terrible coder.

Since then I've started studying CS, rather than just C++. I've become much, much better. I'm still obviously terrible in some arenas (as my frequent questions will attest), but by forcing myself to learn everything, even the relatively unfun stuff, is helping me become a far better programmer than just trying to learn a language and not caring about the practices. For the most part, it's important to know why you're doing things, and I wonder if a reliance on knowing what to do rather than why to creates people who can program, but have terrible skills.


I tend to group up the confined self-taught and the unimaginative formal-taught in that way, because they exhibit the same issues: single or few role models, less exposure to things they need to know about, lack of real project experience, etc. So it's kind of a blanket classification.

A great deal of projects do seem to be "make X", not "make a program that deals with problem Y." And this really, really bothers me, because it's this thinking that leads to crappy software and bad investments. We shouldn't be letting a board of directors (or their nephew) to make decisions, or someone's gut feeling, or the need to "re-energize our industry-leading brand's dynamic and revenue-centric business model".

Come to think of it, most good programmers I know (and myself) would probably shut down when told to do make a program that does exactly X (as in, a complex solution where mostly everything macro is detailed in a "spec"). In implementation, it'd be extremely annoying to deal with issues going on in our heads. "So do they really need a bulk input form, or will a tab-based one do?" "Will this software ever have to run on an old machine?" "Which columns on this data grid should I show by default?" "So why are we doing this again?"

Edit: Oh, and they do sign up for jobs. A lot. I think half of the people I reject claim to have mastered their language based on a couple books. They then fail when I ask for a basic code sample, because they always copy-paste from their book's template. It doesn't help that these people feel "entitled" because of all the hard work they did on their own, and their even bigger lack of peer criticism means they often don't actually realize how bad they are. So they keep coming back, pressing on, thinking they can get in if they try often enough.
In Minecraft, I use the username Rirez.

User avatar
Shivahn
Posts: 2200
Joined: Tue Jan 06, 2009 6:17 am UTC

Re: Was I too harsh?

Postby Shivahn » Mon May 21, 2012 11:43 pm UTC

Hmm. Interesting.

Peer criticism is something I lack. The closest thing I get is when I post snippets and ask why they don't work, and someone suggests I do a thing differently. I should remedy that.

HungryHobo
Posts: 1708
Joined: Wed Oct 20, 2010 9:01 am UTC

Re: Was I too harsh?

Postby HungryHobo » Tue May 22, 2012 9:33 am UTC

Just about every interview I've been to(not many though) there's been some kind of test.

from the informal where you can just describe in words how you'd solve a problem. "depth first search, through these nodes then.... etc"

to the more formal: write actual code.

it's just a test that you can think through a problem methodically. I actually like it rather than general questions.


in the latter I just say outright "I'm going to take longer on this than I normally would, just to be sure" then take my time, think carefully and don't worry about time. I've never met anyone yet who prefered fast to correct and I know how easy it is to screw up under pressure and if I know there's a function who's name I can't think of I just say "I know there's a function which does xyz, can't think of it's name".
Give a man a fish, he owes you one fish. Teach a man to fish, you give up your monopoly on fisheries.

User avatar
freakish777
Posts: 354
Joined: Wed Jul 13, 2011 2:14 pm UTC

Re: Was I too harsh?

Postby freakish777 » Tue May 22, 2012 1:38 pm UTC

Token wrote:
Sc4Freak wrote:
Zamfir wrote:
freakish777 wrote:Is it a Senior Software Engineer position for Lochheed Martin where you're writing programs that UAVs rely on (ie, people die if the code is wrong)?

The U really helps though, when it comes to safety

Not when you're dropping bombs from the things...

That would be a case of people dying if the code is *right*.



And it could also be a case of people dying if the code is wrong too!

"Whatdaya mean the UAV you're remote piloting just dropped it's payload on our own Aircraft Carrier????!!!!"




Some projects require literally zero defects. But the vast majority don't have that restriction.



Come to think of it, most good programmers I know (and myself) would probably shut down when told to do make a program that does exactly X (as in, a complex solution where mostly everything macro is detailed in a "spec"). In implementation, it'd be extremely annoying to deal with issues going on in our heads. "So do they really need a bulk input form, or will a tab-based one do?" "Will this software ever have to run on an old machine?" "Which columns on this data grid should I show by default?" "So why are we doing this again?"


Steax, this is where as a "good programmer" you're supposed to raise all these concerns to the project manager/whoever's in charge. "Hey the requirements document doesn't say anything about the following scenarios regarding Use Case Y." I think you and I may have different definitions of what it means to be a good programmer. Also, for me the "software running on an old machine" question is more like "what browsers are we supporting?"

User avatar
Steax
SecondTalon's Goon Squad
Posts: 3038
Joined: Sat Jan 12, 2008 12:18 pm UTC

Re: Was I too harsh?

Postby Steax » Tue May 22, 2012 2:13 pm UTC

freakish777 wrote:
Come to think of it, most good programmers I know (and myself) would probably shut down when told to do make a program that does exactly X (as in, a complex solution where mostly everything macro is detailed in a "spec"). In implementation, it'd be extremely annoying to deal with issues going on in our heads. "So do they really need a bulk input form, or will a tab-based one do?" "Will this software ever have to run on an old machine?" "Which columns on this data grid should I show by default?" "So why are we doing this again?"


Steax, this is where as a "good programmer" you're supposed to raise all these concerns to the project manager/whoever's in charge. "Hey the requirements document doesn't say anything about the following scenarios regarding Use Case Y." I think you and I may have different definitions of what it means to be a good programmer. Also, for me the "software running on an old machine" question is more like "what browsers are we supporting?"


I would consider "raising it to your higher-up" equivalent to "shutting down", as I said it (albeit shutting down temporarily). My point was that a good programmer would be very uneasy working with a set-in-stone project where every bit of functionality was just handed to them by some mysterious being. We're built to work in teams, understanding each others' points of views, and cooperating.
In Minecraft, I use the username Rirez.

User avatar
freakish777
Posts: 354
Joined: Wed Jul 13, 2011 2:14 pm UTC

Re: Was I too harsh?

Postby freakish777 » Tue May 22, 2012 2:34 pm UTC

Steax wrote:My point was that a good programmer would be very uneasy working with a set-in-stone project where every bit of functionality was just handed to them by some mysterious being. We're built to work in teams, understanding each others' points of views, and cooperating.


Eh, sorta. If said mysterious being is signing your paycheck each week, then they're the most important part of the team. Hence their point of view is the most important one to understand.

User avatar
Steax
SecondTalon's Goon Squad
Posts: 3038
Joined: Sat Jan 12, 2008 12:18 pm UTC

Re: Was I too harsh?

Postby Steax » Tue May 22, 2012 2:53 pm UTC

It's fine if their point of view is within our reach. The problem is when they're immutable blueprints made by someone we don't know, can't argue or discuss with, and can't communicate well with. Interviews that set in stone an exact task down to unnecessary details are planning for this sort of behavior, and I think it's not necessary. It's why I encourage interviewers to discuss and argue with their counterparts.
In Minecraft, I use the username Rirez.


Return to “Coding”

Who is online

Users browsing this forum: No registered users and 10 guests