Live data from Hacker News

“This project will only take 2 hours”

web.eecs.utk.edu

181–190 of 279 posts

Re: “This project will only take 2 hours”

#181
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…

You have to lie about take-home assignments. That is the accepted way.

I had a take home test that was to last 2 hours, and so I promised myself I would spend no longer on it. I provided a complete log of what I did minute by minute for a take home test for the last test I did as a defensive measure...

There was no break, no pondering, this was flat out knowing exactly what needed to be done and just typing constantly....

0:00 - started cloning

2:37 - finished cloning

3:11 - npm install

3:53 - localhost working

7:24 - removed timeout (intentional bug left in)

10:41 - Got images returned from the server (npm run serve)

13:27 - CSS started - thinking about design

22:26 - Grid for desktop

36:16 - Included user info

49:56 - responsive

56:37 - Added performance section

1:07 - Name form

1:21 - Email validation

1:35 - Most fields done. Need DOB

1:42 - DOB done

1:53 - form styling

1:57 - tidying up

2:01 - Saved this file

I didn't end up getting the job including feedback such as...

- Did not upload job search indicating repo to GitHub

- Didn't use `specific css attribute`

- Grid is rudimentary (the 11 minute one I made)

- HTML could be more semantic

- Form validation for name allows numbers (actually a programming falacy that names can technically be anything)

- Complaints about having multiple classes in one file.

I'm wondering exactly where I could have fit these in?

The week before I spent 4 hours on a task and delivered it within 12 hours of the assignment. I got an email with a single paragraph. `Unfortunately, after reviewing, the team has decided that they won't be moving forward to the next stage of the process with you`

These tests all have unrealistic expectations. I used to enjoy doing them for the learning experience, but now, it's just a solid graft with zero downtime coding the same app time after time.

So whenever I chat to a recruiter about the recruitment process I always drill down into the take home test, and the process of doing that let's them know that I won't be doing any take home tests. You have to simply question it sometimes and you can get it upgraded to a pair programming assignment which if you are honest, and have experience works in your favour.

Re: “This project will only take 2 hours”

#183
You can do feature creep for a long time. If you just want a basic working version (that will probably drain your battery), that can be done really quickly.

This took me ~10 minutes:

    #!/bin/sh
    set -e
    while true; do
        URLS="$(xsel | grep -Eo "(http|https)://[a-zA-Z0-9./?=_%:-]*")" &&
        if [[ ! "${URLS}" = "${OLD_URLS}" ]]; then
            echo "${URLS}" >> urls.txt
            OLD_URLS="${URLS}"
        fi
        sleep 1
    done;

Re: “This project will only take 2 hours”

#184

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.

Is the candidate allowed to use google?

Just asking since it's a very easy task but I'd wanna doublecheck how to reverse a string in that language.

Re: “This project will only take 2 hours”

#185
post #27

Earlier quoted context omitted.

I really wish this weren't so true....

Why? This is true in most processes that involve building things. It doesn’t take very long to finish the foundation and frame of a house either, but making it liveable takes quite a while. When we build a new city hall (under time and budget by the way), the actual building was finished after a year. It took another two years to make it useable as a city hall. Why would software engineering be any different? The onl…

It's predictable that the walls/ceiling of a building will take X time, and the wiring/furnishings Y time. Software development is different because even after you have allotted time for every issue you can imagine, unexpected further issues end up appearing which delay you beyond the projected deadline.

Re: “This project will only take 2 hours”

#186

Earlier quoted context omitted.

So? In any decent programming environment, checking if a string is a URL is a one liner

Not without false-positives. E.g., is "foo.bar" a URL? Maybe. But it could also be a filename. How do you know if it's a "real" URL or not?

Strictly speaking, a URL begins with a scheme followed by a colon.

Schemes can be registered with IANA (or not), and everyone knows the most common half-dozen or so. People often forget "mailto:" and "tel:".

The project brief asks for one thing, but the practical implementation probably requires something else.

This is a good lesson to learn, and this is how two hours becomes two days, becomes two weeks.

Re: “This project will only take 2 hours”

#187

I've gone down this rabbitole before, and yes, there are things that take two hours, and there are things that take a lot more. The problem is the scope - ie. are you trying to do what you said you'll do (miniature software to log urls), or are you adding 100s of requirements to the scope (gui, filters, privacy,...). We had a bunch of .xml files containing some data, and someone wanted a .csv file... sure, an hour ma…

Yes, scope creep can significantly change the time requirements or even the entire, shall we say "scope". But I think it's just as important for us as developers to be aware of that on the initial request, in order to suss out the actual requirements.

What does the process look like when we ask back, "are you going to need to have a total and rolling sum? should we think about making a gui so other people can use it too?" Engaging the requests early on not only helps our planning, it helps the "client" figure that out sooner than later.

I think I've been successful in my career because I've been able to listen to a client's request and then help them figure out what they are actually asking for instead of taking it at face value. That can be easier said than done on an internal team, but it changes the quality of the product and dynamic of the team significantly.

Re: “This project will only take 2 hours”

#189

I’d point out this isn’t a problem with estimation per se but with requirement gathering. The students didn’t press him for more specific requirements before offering an estimate. The real challenge though comes when the customer doesn’t know their requirements. They legitimately think they “just want a simple app to record urls”, but actually want all the other things listed. The thing that sets good developers apar…

Fair but this is the thing we all do wrong with estimates. I've come to the following system that I think works well and captures the uncertainty.

Estimates are given as the following choices: hours, days, weeks, months, quarters. You never give a number tp the units. These all mean some "small number of X" where X is the list above. Then if Product has a question like, "Why would Z take weeks?" then you can have a discussion about the complexities and the task can be further refined and/or split into multiple things and those can be estimated as above, rinse and repeat.

Re: “This project will only take 2 hours”

#190
post #85

When someone says this should be easy... I would like to show them the flow chart for how slack notification works. https://imgur.com/gallery/0p5bV Just "notify the user"... imagine the amount of code and the number of APIs this needs to touch. Software is way complex and devil is in the details.

That crazy looking chart (except maybe the push timing loop at the bottom) can be implemented with 100 lines of branching if statements. The 20 or so questions it asks probably can be answered by querying ~3 simple APIs (user preferences, channel preferences, thread preferences). The only complicated thing is the push timing loop.
Post reply on HN