Live data from Hacker News

Fizzbuzz, Interviews, And Overthinking

dave.fayr.am

101–110 of 115 posts

Re: Fizzbuzz, Interviews, And Overthinking

#101
post #95
post #52

Earlier quoted context omitted.

You have so little time in an interview to learn so much you can't afford to lose the time to both learn whether they can do FizzBuzz (or whatever other problem) and whether they can manipulate some language of interest, when you could be learning both The purpose of an interview isn't to be abstractly "fair", it's to find the best candidates for the job. You choose what "best" is (which is to say, please don't put w…

I thought it was pretty clear based on the second sentence that the comment was intended as a joke. Do I really need to start adding /jk to the end of my comments?

Sorry. I've heard the idea seriously proposed elsewhere.

Re: Fizzbuzz, Interviews, And Overthinking

#102

Earlier quoted context omitted.

Breaks the spec: 'Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”.' Actually, this spec is ambiguous, too. For multiples of five, do we print the number AND "Buzz" or just "Buzz" ? Similarly for multiples of 15. I thought the OP was a…

> I thought the OP was a joke, BTW. Well balls to you too, I guess? Or not. We're all just trying to have a good time here. And from the look of this thread, people are having fun. I think golfing fizzbuzz into an unreadable mess sorta misses the point, but most people here are software engineers because they love to code and build stuff. So let's enjoy the moment. > why on earth would one want to hire somebody who l…

I don't know what balls to me too means.

Yes, if we're all trying to have a good time, we'd shoot heroin and be done with it. ;-) IMHO, we are group sharing to learn better ways to build startups, small businesses, and to better ourselves, co-workers, and companies with best practices - and to do it with fun and a twinkle in our eyes.

I did look at that wordmark comic -- I believe I ask a credible question: If complexity buys you nothing, then why make something complex? And, believe me, if you are thinking "Visitor" or "AbstractFactory" then I have already lost you. ;-)

Thank you for your comment about my C version. I wanted to make sure it was extensible and quite obvious -- because I write code to be read by humans as my 2nd goal (my first is that it works & meets the spec!). Knuth's Literate Programming taught me that. The other thing about that C solution is that it's simple and many people can understand it. One does not need to know the difference between a monad and a gonad to "get it".

My overall comment: Complexity: when required; otherwise, choose simple. Believe me, I have learned this lesson over and over again during my 45 years of programming.

Re: Fizzbuzz, Interviews, And Overthinking

#103

Earlier quoted context omitted.

> I thought the OP was a joke, BTW. Well balls to you too, I guess? Or not. We're all just trying to have a good time here. And from the look of this thread, people are having fun. I think golfing fizzbuzz into an unreadable mess sorta misses the point, but most people here are software engineers because they love to code and build stuff. So let's enjoy the moment. > why on earth would one want to hire somebody who l…

I don't know what balls to me too means. Yes, if we're all trying to have a good time, we'd shoot heroin and be done with it. ;-) IMHO, we are group sharing to learn better ways to build startups, small businesses, and to better ourselves, co-workers, and companies with best practices - and to do it with fun and a twinkle in our eyes. I did look at that wordmark comic -- I believe I ask a credible question: If comple…

> If complexity buys you nothing, then why make something complex? And, believe me, if you are thinking "Visitor" or "AbstractFactory" then I have already lost you. ;-)

I think maybe the disconnect here is that I work on products with a much larger scale than you may be accustomed to. My idea of complexity begins to blossom at scales past many boxes. For me, 25 interconnected machines is barely enough to register as a "big system". So perhaps I am just desensitized?

Abstraction is generally trying to find ways to mitigate complexity, not embrace it. At some point we need to have sympathy for the machines we run on to have efficient code, but at the same time you and I need to find good perspectives to write code at.

A more concrete example of this is my advice that people building distributed systems take a cue from Boundary and have systems rendezvous in Zookeeper rather than just using something like hardwired ports and /etc/hosts. You may think that "sounds complex" but it's actually a very simple solutin from our perspective as users of Zookeeper. It ends up being pretty nice the next time a giant storm takes out half of us-east-1 and you're frantically re-provisioning boxes to keep your service up.

Monoids are that kind of choice at the programming level.

> Complexity: when required; otherwise, choose simple. Believe me, I have learned this lesson over and over again during my 45 years of programming.

I think c_wraith's monoid example made the program simpler, cleaner, and less bug prone. If you think monoids are a "complex" idea, then my blog post has failed profoundly and I apologize for wasting your time.

Re: Fizzbuzz, Interviews, And Overthinking

#104
post #94

Earlier quoted context omitted.

"Why would you test if someone can reverse a string if you're hiring someone to maintain and build on some shitty web app?" If that question can't be answered then your opinion on someones skill level is irrelevant. Also, if you've got time, answer the questions in my first post: "How old are you? Have you hired developers before? Truthfully, have you ever had to reverse a string under pressure at your current job."

String reversal, and all the other common interview questions are simply a microcosm of what a developer does day to day. Programming is about comprehending abstractions and composing them into a greater whole that solves a specified business problem. Reversing a string is exercising those same mental faculties. There is literally no difference between working out the steps to reversing a string and working out the s…

Bullshit. The only reason why people ask these things is because big software houses do so, and for some reason they think that their shitty web app needs a Google quality "rockstar developer".

The difference between reversing a string and pulling data from a database are, literally, completely different tasks. The killer is that the latter is something that a candidate will do in a job.

You're more than welcome to ask those questions, and you're probably likely to weed out the lowest common denominator types. In my experience, they're a waste of time and the best possible interview you can give to a developer is a frank face-to-face discussion about programming, and then getting them to work on a test project for two hours from your own code base. If they can do that much they can program.

Re: Fizzbuzz, Interviews, And Overthinking

#105
post #94

Earlier quoted context omitted.

"Why would you test if someone can reverse a string if you're hiring someone to maintain and build on some shitty web app?" If that question can't be answered then your opinion on someones skill level is irrelevant. Also, if you've got time, answer the questions in my first post: "How old are you? Have you hired developers before? Truthfully, have you ever had to reverse a string under pressure at your current job."

Because anyone who can't do this almost certainly doesn't have the ability to program any software system well, some shitty web app or otherwise. You're not trying to fill out a remedial CS course in community college, you're trying to get someone to program real things real people use. The only way this question wouldn't be useful is if you had a good filter such that almost everyone who gets to that point would ans…

"Because anyone who can't do this almost certainly doesn't have the ability to program any software system well, some shitty web app or otherwise. You're not trying to fill out a remedial CS course in community college, you're trying to get someone to program real things real people use."

So...I'm hiring someone that can reverse a string because this demonstrates that they can program real things that real people use?

"And yes I've hired people and all of them have had to answer much more complex algorithmic questions to get the job and all of them turned out to be competent."

Out of interest, what did this job entail? I assume that you quizzed them on their knowledge of basic algorithms because they are required to write them, right?

Re: Fizzbuzz, Interviews, And Overthinking

#106

Earlier quoted context omitted.

String reversal, and all the other common interview questions are simply a microcosm of what a developer does day to day. Programming is about comprehending abstractions and composing them into a greater whole that solves a specified business problem. Reversing a string is exercising those same mental faculties. There is literally no difference between working out the steps to reversing a string and working out the s…

Bullshit. The only reason why people ask these things is because big software houses do so, and for some reason they think that their shitty web app needs a Google quality "rockstar developer". The difference between reversing a string and pulling data from a database are, literally, completely different tasks. The killer is that the latter is something that a candidate will do in a job. You're more than welcome to a…

> The difference between reversing a string and pulling data from a database are, literally, completely different tasks. The killer is that the latter is something that a candidate will do in a job.

Why can't you do both? Seriously? Pulling data from a database is orders of magnitude harder to get right than reversing a string.

Re: Fizzbuzz, Interviews, And Overthinking

#107

Earlier quoted context omitted.

Because I tend to get really nervous in interviews and consequently don't interview all that well most of the time, I try to be sensitive to people like me. I prefer to start very simple and sort of gradually increase the pressure until I can find a backing off point.

I haven't observed any correlation between being nervous and underperforming in answering technical questions. How do people get through math exams in college? If anything, I'd expect answers to non-technical questions to be far more influenced by the artificiality and unfamiliarity of the interview situation, being judged by a stranger, high-stakes, and everything.

I actually got a lower GPA in college than I could have because of test anxiety issues in college, and I've since learned that it is hardly a rare condition.

Re: Fizzbuzz, Interviews, And Overthinking

#108

Earlier quoted context omitted.

I don't know what balls to me too means. Yes, if we're all trying to have a good time, we'd shoot heroin and be done with it. ;-) IMHO, we are group sharing to learn better ways to build startups, small businesses, and to better ourselves, co-workers, and companies with best practices - and to do it with fun and a twinkle in our eyes. I did look at that wordmark comic -- I believe I ask a credible question: If comple…

> If complexity buys you nothing, then why make something complex? And, believe me, if you are thinking "Visitor" or "AbstractFactory" then I have already lost you. ;-) I think maybe the disconnect here is that I work on products with a much larger scale than you may be accustomed to. My idea of complexity begins to blossom at scales past many boxes. For me, 25 interconnected machines is barely enough to register as…

I believe that efforts using trivial examples to show how complexity can be managed via certain abstractions are doomed to fail.

And that's a pity, because it makes abstractions harder to explain in a proper context.

You need an example where the complexity at least rears its ugly head before the abstraction starts to shine.

For many people, especially those not familiar with it at the time of the reading, the simple example using a manage huge complexity abstraction reeks of "complexity for its own sake" or "killing flies with a cannon" or "premature optimization" and it's natural because the example is not showing the strengths of the abstraction, rather its weaknesses.

Re: Fizzbuzz, Interviews, And Overthinking

#109

Earlier quoted context omitted.

String reversal, and all the other common interview questions are simply a microcosm of what a developer does day to day. Programming is about comprehending abstractions and composing them into a greater whole that solves a specified business problem. Reversing a string is exercising those same mental faculties. There is literally no difference between working out the steps to reversing a string and working out the s…

Bullshit. The only reason why people ask these things is because big software houses do so, and for some reason they think that their shitty web app needs a Google quality "rockstar developer". The difference between reversing a string and pulling data from a database are, literally, completely different tasks. The killer is that the latter is something that a candidate will do in a job. You're more than welcome to a…

>The difference between reversing a string and pulling data from a database are, literally, completely different tasks. The killer is that the latter is something that a candidate will do in a job.

And this is where you misunderstand the purpose of these types of questions. Programming is a very dynamic field where you're likely be required to solve novel problems daily (not novel in the grand scheme of programming, but novel to you). You need the mental flexibility and fluidity to solve problems you haven't entirely encountered before. Testing specifically what you do at the job is the wrong approach. You need to test the required mental faculties to solve novel problems. Programming is not pulling data from a database, writing glue code, and shoving it to the screen. It's solving new problems every day.

Re: Fizzbuzz, Interviews, And Overthinking

#110
post #108

Earlier quoted context omitted.

> If complexity buys you nothing, then why make something complex? And, believe me, if you are thinking "Visitor" or "AbstractFactory" then I have already lost you. ;-) I think maybe the disconnect here is that I work on products with a much larger scale than you may be accustomed to. My idea of complexity begins to blossom at scales past many boxes. For me, 25 interconnected machines is barely enough to register as…

I believe that efforts using trivial examples to show how complexity can be managed via certain abstractions are doomed to fail. And that's a pity, because it makes abstractions harder to explain in a proper context. You need an example where the complexity at least rears its ugly head before the abstraction starts to shine. For many people, especially those not familiar with it at the time of the reading, the simple…

> I believe that efforts using trivial examples to show how complexity can be managed via certain abstractions are doomed to fail.

I've received 5 emails and about 10 tweets from people saying, "I think I understand monoids better because your tutorial sat at the right level of abstraction and overhead for me to get."

So, I think I succeeded for 15 people. Which I am pretty damn happy about. Because whenever I write one of these I pretty much assume everyone will misread, misunderstand, or ignore 3/4 of my post. It's just my experience.

People who call the monoid abstraction "confusing" and "complexity for its own sake"... I just have to assume these people can't handle the discomfort of learning new concepts anymore and write them off as unreachable. It's not like I owe them anything. Because I'm pretty sure it's actually not confusing at all, it's just a different perspective.

The real irony is that for awhile I was deep in the OO and Ruby culture and said a lot of these same things. You can find them online if you know where to look. So I understand where these people are coming from and know that without their cooperation, I cannot explain anything at all.

Post reply on HN