Live data from Hacker News

“This project will only take 2 hours”

web.eecs.utk.edu

161–170 of 279 posts

Re: “This project will only take 2 hours”

#161

Earlier quoted context omitted.

> Anyone can write a rough command line tool that monitors the clipboard and prints to stdout. There's a good chance that this will solve 95% of all needs. Most of the features suggested in the article beyond the original premise are unnecessary.

>There's a good chance that this will solve 95% of all needs. Most of the features suggested in the article beyond the original premise are unnecessary. The teacher is the client. The client is the one who will better estimate what is necessary or not. If you own a company and someone wants to contract you for work, you start explaining how what the client says it needs is not necessary and how he can manage with les…

> If you own a company and someone wants to contract you for work, you start explaining how what the client says it needs is not necessary and how he can manage with less than he demands?

Yes, it happens all of the time actually. Most clients don't come to you with clearly thought out solutions, they come with poorly articulated problems, and your job is to explore the problems they want to solve until they are well understood, and then devise a solution with the lowest cost.

Of those rare, rare clients that do know exactly what they need, they still have multiple constraints beyond those needs. For instance, budget. The client wants X within firm budget Y, X cannot be done within budget Y, therefore you make the case that either the budget must expand or they can make do with X' which only does 90% of X and that will fall within budget Y.

Re: “This project will only take 2 hours”

#162

Earlier quoted context omitted.

One of my CS teachers actually said "The programming is always the easy part. Designing the features and the interface usually takes 95% of the time."

Your CS teacher never looked at a web browser from the inside, or at other actual big scale software.

I'm not convinced. If designing the features and interface weren't so challenging, why do the user interfaces and other development APIs to web browsers still change 30 years after they were first invented?

Re: “This project will only take 2 hours”

#163
post #79
post #66

Reminds me of how some companies give take-home assignments to job candidates. > Here's a task that takes a day to do sloppily and at least two days for you to show your best work. We want to be respectful of your time so please don't spend more than 2 hours on it.

I wonder if that's why I wasn't a good fit for a recent company I interviewed with using a take-home assignment... bear in mind it's been at least a decade since I last took a take-home, so things might have changed. I received the task on Friday evening, I spent the week-end thinking about the problem. Monday I had actual work and on Tuesday, I spent a day coming up with a shit implementation. Then, I started improv…

Same here. Quite a long time ago I got a take-home assignment. It's about setting up a router on a linux-based machine. I was going with a design that focused on maintenance and understanding, so I decided not to use iptables directly. After a few days I gave up, because there was an issue with the upstream distribution that I was not aware of. I actually had a very good setup after the _deadline_, but it's too late.

I would never do take-home assignment again =))

Re: “This project will only take 2 hours”

#164

Earlier quoted context omitted.

"Thank you for your time, we will keep you in mind. Next!" Point of programming assignment is to see if you can actually write code. No one is waiting for perfect implementation, just working code that fills the spec, documentation, and tests.

"here's a computer, please implement a function in $languageOnYouCV that receives two words and returns true if they are anagrams of each other, false otherwise, if time permits add some unit tests" seems to fulfill that need just as well, and should be quick enough that being in the room or not is more about what makes the candidate more comfortable and gives the most insight for the interviewer.

That is where we interviewed as an industry 10 years ago. Then people noticed a few holes (what, they don't know fundamental $x!?) and those were filled. List vs map, complexity, tests, trees and traversal, http api stuffs, unixy things, and then into networking fundamentals, distributed systems stuff, etc.

10 years ago, nearly no candidate pulled a distributed queue solution in a design interview and now it is a standard answer in their pocket.

Re: “This project will only take 2 hours”

#165

Earlier quoted context omitted.

"Thank you for your time, we will keep you in mind. Next!" Point of programming assignment is to see if you can actually write code. No one is waiting for perfect implementation, just working code that fills the spec, documentation, and tests.

"here's a computer, please implement a function in $languageOnYouCV that receives two words and returns true if they are anagrams of each other, false otherwise, if time permits add some unit tests" seems to fulfill that need just as well, and should be quick enough that being in the room or not is more about what makes the candidate more comfortable and gives the most insight for the interviewer.

That sort of problem is about the right level of complexity for a candidate to show they can think about a problem, provide an implementation, and discuss alternatives. Something they should be able to do without ever studying or grinding LeetCode.

However, there's always room for the interviewer to muck things up.

For the anagram problem, there are a range of solutions, including elegant & inefficient, clever & efficient, and robust & efficient. Do you dock someone depending on which they reach for first?

There's limited time, and a candidate may assume you're mostly interested in "how they think" and thus focus on the algorithm alone. After the interview, do you run the candidate's solution against test cases that you never mentioned, docking them for "missing" matters of casing or non-alphabetic characters? If the candidate themselves wrote unit tests, do you dock them for missing test cases you felt should have been included?

Do you dock them for not checking for invalid inputs, even though the candidate might normally work in a type checked variant of the language that wouldn't have permitted that anyway?

So many possible hidden assumptions. I know I've been rejected for similar unstated expectations in the past, and in retrospect, I know I've been guilty of doing the same to others.

Re: “This project will only take 2 hours”

#166

Earlier quoted context omitted.

One of my CS teachers actually said "The programming is always the easy part. Designing the features and the interface usually takes 95% of the time."

Your CS teacher never looked at a web browser from the inside, or at other actual big scale software.

A web browser might have a higher density of advanced algorithms (than most software, but only because it has unusually extensive, varied and complex requirements (e.g. a number of complex standards like HTML, JavaScript, CSS, WebGL) and unusually high quality standards (foolproof, high performance, standards compliant, secure...),

Re: “This project will only take 2 hours”

#168
I think the student’s first instinct was about right. For a program idea that sounds like it’s kind of a user whim ‘I think I’d like to have a log file of URLs I copy pasted’, it seems like it would be good to get a prototype into the professor’s hands to see if he actually finds it useful or if in fact it just winds up recording a bunch of URLs he never looks at before investing more than a couple of hours in making it super user friendly.

Instead, he just explained to the students why it’s much more complicated than that, probably discouraged them from trying to build anything at all, and as a result is no closer to having any kind of way to capture the URLs he copy pasted during the day. No value was created in this exchange.

My overall reaction to this is this feels very much like an academic approach untethered to what kind of practices actually work for creating products in industry, and instead is working to inculcate students in bad habits that will turn them into the kind of developer who, when asked to solve a problem, comes up with a long list of reasons why it’s too much effort to be worthwhile, rather than a list of ways to figure out how to solve the problem.

In particular, this pattern of listing ‘but have you thought about…’ questions is amateurish product owner BS and it does students a disservice to suggest this qualifies as any kind of requirement analysis model, let alone a first step in deciding how to go about building a piece of software. It is a great way to stop yourself from even starting.

Requirements gathering doesn’t consist of guessing what things a user might want, or even asking a user what they think they want. Yet the professor goes off positing a need for a pause mode, timestamps recording next to URLs, log encryption… all of which are maybe interesting but none of them seem like they make or break the viability of the product.

On the other hand, if it turns out you can’t actually make a program that has sufficient permissions to read arbitrary clipboard contents without triggering a malware detector or getting blocked from installation on a university computer, that would rather screw with the entire project, so maybe focus on verifying that you can at least do that first before you start wondering about what color the system tray icon is going to be.

And maybe your research will turn up some interesting affordances or edge cases in the clipboard API that you hadn’t thought of that take the project in a completely different direction?

The fact one of the students said something important that identified a key risk to the entire project concept: ‘I’ve never interacted with the clipboard api before’ - and then that got glossed over for discussion of all the shiny affordances that could be bolted on to the solution - was a real miss of a teachable moment.

Re: “This project will only take 2 hours”

#169
post #66

Reminds me of how some companies give take-home assignments to job candidates. > Here's a task that takes a day to do sloppily and at least two days for you to show your best work. We want to be respectful of your time so please don't spend more than 2 hours on it.

The take-home assignment seems to me a slightly broken system; it's easily gameable because there's zero supervision. Let's say there's two candidates for a position who are both asked to complete the take-home assignment, Candidate A and Candidate B. Candidate A is the superior candidate and spends only two hours on the task (as requested), and Candidate B spends 2 days. Candidate B submits the better assignment and…

We do a take-home assignment for junior devs where I work. The actual coding knowledge is pretty minimal. Few people fail based on the code alone. What we're actually looking for is if they can follow directions. A surprising number of people can't read a list of requirements and make sure they all get implemented.

For junior devs, we don't actually care if they do it in 2 hours, 2 days, or the whole 7 days we allow them. There's no bonus points for turning it in the next day, and I don't think anyone has ever actually done that.

But we're at the point that if they fail a single point in the requirements, we stop looking at them. This was a really hard decision, because there are candidates who are really nice and seem to otherwise do good work, but we've hired some of them and they inevitably continue to skip steps even in simple tickets. We end up letting them go after multiple warnings and months of wasted time, and having to do it all over again.

Of course, if you can't code you aren't going to get in either, but that actually seems to be a lower bar than following directions.

Re: “This project will only take 2 hours”

#170
post #55

Earlier quoted context omitted.

>There's a good chance that this will solve 95% of all needs. Most of the features suggested in the article beyond the original premise are unnecessary. The teacher is the client. The client is the one who will better estimate what is necessary or not. If you own a company and someone wants to contract you for work, you start explaining how what the client says it needs is not necessary and how he can manage with les…

> you start explaining how what the client says it needs is not necessary and how he can manage with less than he demands? Sometimes, yes, it is necessary to coach a client. It takes trust, but it isn't unheard of.

Especially if you're an in-house consultancy
Post reply on HN