Live data from Hacker News

If Carpenters Were Hired Like Programmers

dawood.in

131–140 of 164 posts

Re: If Carpenters Were Hired Like Programmers

#131
post #81

Earlier quoted context omitted.

The point of whiteboarding isn't to "build" correct/functional code - it's to get an idea of your thought process and how you go about solving a problem. It's not perfect (and there are both advantages and disadvantages to using a computer instead of a whiteboard) but when done correctly it gives a lot more useful insight than sitting there asking questions about their past the whole time.

Why is thought process relevant? Different people have different thought processes. I would estimate that recruiters would bias to hire candidates that have similar thought processes to themselves, even if that doesn't correlate well with actual work performance.

> Different people have different thought processes.

Nobody is saying otherwise. The point isn't to make sure your thought process is identical to the interviewers (good interviewers will be more impressed if it isn't), it's to make sure you have one.

That may sound silly but read Jeff Atwood's thoughts on FizzBuzz[1] to realize how many "programmers can't program." Coding exercises are used to make sure you know how to think through a problem and solve it.

> I would estimate that recruiters would bias to hire candidates...

I'm not sure if you used the wrong word or not, but technical interviews are usually done by engineers or engineering managers, not recruiters. But yes, if I were interviewing somewhere and I sufficiently solved a problem but they didn't like it just because my thought process was different I would consider that a red flag.

[1] http://blog.codinghorror.com/why-cant-programmers-program/

Re: If Carpenters Were Hired Like Programmers

#132
post #54

This is so true. I see a lot of job ads that seem to require very specific experience, but where anyone in that field could do the job. If you just make up eg 4 different types of technology, and put a few things in each bracket: [SVN, Git, Mercurial, CVS] [MySQL, PostgreSQL, Oracle, MSSQL] [AMQP, MQTT, STOMP, RabbitMQ] [Java, C#, C++, ObjC] Now if someone came along and said they'd solved a domain problem (eg tradin…

What's the default implementation of GetHash() in c#? I actually like this question (not that I've ever asked it before), because it teases out how well someone knows .net and C#. The specific implementation of GetHashCode isn't what's interesting. It's whether you know that .net implements reference vs value equality by default, whether you know you really do need to override GetHashCode if you override Equals, test…

Never heard of GetHash. I've got 5000+ Web pages of documentation mostly just on the .NET Framework, am betting my start up on .NET, ASP.NET, ADO.NET, and Visual Basic .NET, and have yet to encounter GetHash.

From the mnemonics of the naming, a guess is that GetHash has to do with hashing. Well, mostly I don't like hashing and prefer extendible hashing, AVL trees, red-black trees, B-trees, heaps, etc.

Typically, for a class in the .NET Framework, to use it for the first time have to find a dozen or so Web pages at MSDN and learn them: For me that means download, index, abstract, and read the pages, look at the sample code, and maybe write some minimal code to exercise the class.

Yes, being clear on call by reference versus call by value is important but also quite elementary. Basically, all aggregates are to be call by reference; simple numeric constancts are commonly call by value.

Re: If Carpenters Were Hired Like Programmers

#133
Last June I started work with a software engineering company that was using meteorjs heavily for their new product and php and java for their main product. Front end was standard jquery. At the time of joining, I had only ever used java, and that too in university for a project on multi threading/parallel processing. In about half a month I was acquainted with the basics of meteor and node js, and within a month I was completely up to speed with the intricacies of the development enivronment. (not all of them. By up to speed I mean, I had figured out where to look when I hit a gotcha). This included mongo db which I had never used till I joined.

I then shifted time to working both on the new product and the backend of their old product. I was using PHP and a framework (I can't remember which one) that I had never touched before. Took me about a week and a half to get up to speed before starting to work on the actual product.

This isn't some display of talent. I believe that any engineer who understands the fundamentals would do exactly what I did. (Provided they are willing to read documentation without skimming through it).

The point here is, I left that company in October. And they've just reopened the position I left vacant. Looking at the list of qualifications and experience required on that list, I couldn't help but think, I would have never thought myself adequate for the job if I had looked at the ad posted since I had never touched any of the stuff they required. Turned out, when it actually comes down to it, it really doesn't matter.

This analogy is actually spot on. Languages really do become another shade of paint at some point. And I never really believed in that till a couple of weeks ago when I saw that job posting. Pretty crazy that as an industry we still believe in this kind of hiring process.

Re: If Carpenters Were Hired Like Programmers

#134
post #86

Earlier quoted context omitted.

I would go so far as to say someone with that kind of encyclopedic understanding of a language is a negative indicator. People with an 'deep' understanding of a language like to use said knowledge to create 'Clever' code. 'Clever' code is generally more buggy, harder to maintain, and basically never needed. PS: And yes, I have been burned by this in the past often enough so I will now pass on a few marginal people th…

Here's my exact train of thought while reading that: GetHash? What the frack? Isn't that on object somewhere? Right, object handles all the common copy semantics and so forth. Use the hash to check for equality; things on the stack instead of the heap, yadda yadda.. Dang, here the guy is going into detail why this is so important. Ah yes, value versus reference semantics. Boxing and so forth. Tiny trivia around how t…

While in the general case I would agree with you and I try very hard to dump as much stuff offline as possible, I would argue that this is one of those things you cannot look up "if you need it", similar to the difference between 'class' and 'struct' in C# or the difference between 'class' and 'case class' in Scala (the C# one being a runtime implementation difference, the latter being a fairly large OO design difference). It's something you need to internalize to do well in the language and the environment.

C# (and similarly Java) are so tightly coupled to their runtime languages that, personally, I do feel like I need to understand stuff like this at an intuitive, not-even-thinking-about-it level to be able to write good, fast, clean code.

Re: If Carpenters Were Hired Like Programmers

#135
post #54

This is so true. I see a lot of job ads that seem to require very specific experience, but where anyone in that field could do the job. If you just make up eg 4 different types of technology, and put a few things in each bracket: [SVN, Git, Mercurial, CVS] [MySQL, PostgreSQL, Oracle, MSSQL] [AMQP, MQTT, STOMP, RabbitMQ] [Java, C#, C++, ObjC] Now if someone came along and said they'd solved a domain problem (eg tradin…

What's the default implementation of GetHash() in c#? I actually like this question (not that I've ever asked it before), because it teases out how well someone knows .net and C#. The specific implementation of GetHashCode isn't what's interesting. It's whether you know that .net implements reference vs value equality by default, whether you know you really do need to override GetHashCode if you override Equals, test…

I've been writing apps in C# for about 5 years, and not once have I needed to know how GetHashCode works.

I have looked at it at some point (don't remember why, I think it had to do with an entity's identity for NHibernate) but I would fail this question even though most people I've worked with would rate me as a very effective (and efficient) programmer.

This is why I feel I would do badly in these kinds of trivia-like interviews (once since I put linux administration on my resume, I was asked how to delimit lines in bash scripting).

My dream interview, one where I'd shine, is where I'm given a problem, and I have to go through designing solutions and discussing tradeoffs. I don't mind writing code either, but I would not know the answer to this kind of very specific question, I'd just know how to solve problems.

Re: If Carpenters Were Hired Like Programmers

#136

Earlier quoted context omitted.

The point of whiteboarding isn't to "build" correct/functional code - it's to get an idea of your thought process and how you go about solving a problem. It's not perfect (and there are both advantages and disadvantages to using a computer instead of a whiteboard) but when done correctly it gives a lot more useful insight than sitting there asking questions about their past the whole time.

Which would be perfectly valid if software developers spent their entire day solving problems on the whiteboard. But we don't.

In the jobs I've liked, I do. To be more precise, I solve the problem on a whiteboard, and then type out the solution at the computer. The more experience I have, the less often I encounter gotchas while typing that I missed at the whiteboard.

The distinction matters. Are you an engineer or a tech? An architect or a laborer? Often, software developers end up being both (just as carpenters often end up designing and building). In particular, if you want your developers to be both, then you should make sure they can.

Re: If Carpenters Were Hired Like Programmers

#137

Earlier quoted context omitted.

Yeah exactly, was once given pencil and paper and asked to write some code. That was early on in my career, so even though i knew it was ridiculous, i didnt have enough confidence to tell them they're being idiots. At this point in my career however, i'm far more jaded about stupid interview techniques like that and will refuse to do them unless provided with a computer.

Why wouldn't you just do it? I can understand if they're nit-picking syntax but I personally ask people to write out algorithms/code on the board all the time in interviews. I don't care about the code, I want to see them think through a problem. They can use any for syntax they want, even mix and match things like brackets and indentation or how control structures are defined (for i = 1 to 10 { .. } ), or use a func…

[deleted]

Re: If Carpenters Were Hired Like Programmers

#138

I came across this [1] job posting last week. Made me realize how ridiculous the knowledge and experience expected of a web developer has become. I particularly like bullet 6, "Team-oriented, flexible, and able to work in an ambiguous and/or changing work environment." Really? [1] http://jobs.hbispace.com/web/95148/job_2-15.html?cacheBuster...

That's a good example of outright incompetence; the author clearly has no idea what they're talking about.

Re: If Carpenters Were Hired Like Programmers

#139

I came across this [1] job posting last week. Made me realize how ridiculous the knowledge and experience expected of a web developer has become. I particularly like bullet 6, "Team-oriented, flexible, and able to work in an ambiguous and/or changing work environment." Really? [1] http://jobs.hbispace.com/web/95148/job_2-15.html?cacheBuster...

DHTML? I haven't heard that term used in a while. I think can translate that job posting as such: "In order to save costs, we've trimmed all developer positions except one. You will be the sole developer responsible for everything we do. You will always need to be on-call to work, even if it's formatting a Wordpress post for an editor on a Saturday night. You will work long hours but we'll only pay for 40/week, no overtime. Your salary will be peanuts and will not cover the cost of living in Washington, DC. Be a team player and join us."

Re: If Carpenters Were Hired Like Programmers

#140

Accurate, but missed the part where the carpenter is asked to build a cabinet by drawing it on the whiteboard.

A better analogy of what Whiteboarding can effectively used for: "On this job, you'll have to apply varnish in these certain places with very low ventilation, directly above a daycare, what techniques could you use to minimize fumes?"

(problem solving...)

Post reply on HN