Hacker News new | ask | show | jobs
by vinaysshenoy 2185 days ago
The exercise itself is a simple note-taking app with a couple of screens. We don't impose a time limit on candidates interviewing to complete this stage.

> For a new project there aren't any well defined states of the code that make sense to be persisted. This means the commits will be arbitrary and their messeages not very meaningful.

I didn't understand this? The problem is well scoped and defined. Regardless of whether it's a new project or old, we expect candidates to be able to split their work as atomically as possible.

1 comments

There are two ways of working in programming.

One is to make disciplined incremental progress: write a test, make the test pass, do minimal cleanup, commit, see a refactoring opportunity, do it, commit, write another test, see a related bug, write the bug down but don't fix it, make the test pass, clean up, commit, tackle the bug, commit, etc.

The other is to flail about wildly until you have something which more or less works, and then commit it. Then make a few follow-up commits fixing bugs.

People who have only experienced the latter will find the idea of making numerous commits during the day absurd.

Sure, but I'm not sure how much progress you're going to make in the 2-3 hours one would spend on a speculative take-home task (they've stated there is no guaranteed interview).

You're going to be judged on how well the end product works, so if we start with the following tasks, and you have 180 minutes.

1. 20 minutes: their stack's boilerplate/tooling

2. 10 minutes: unit testing boilerplate

3. 20 minutes: integrated testing boilerplate (browser automation is a fickle beast)

4. 20 minutes: basic database entity + database setup

5. 20 minutes: basic UI page + frontend setup

6. 20 minutes: replace default styling (their guide talks about UI "polish")

That's 110 minutes and nothing more than a pretty display from the database.

The task will almost certainly ask for more than one user action. I might be able to write an action in 20 minutes, but there is no way I can write good tests, seed test data for integrated testing, and keep each commit atomic and green.

So, do you choose to have a tidy commit history and complete test coverage, or do you choose to complete the task?

"It should only take you 2 or 3 hours".

Estimates are almost always under.

As you point out the most basic project setup takes time. And I am working on a home laptop, not my work machine, so I don't have everything installed in the same way as I do for a work setup (that's usually at least a days work in itself on a new work machine).

Also it is not uncommon to find some strange issue that will take a couple of hours to fix if you are unfamiliar with it. Last technical test I had involved using Django's chache framework. I have used Django a lot, but not really used the cache in depth. I got everything working in the end and they failed me for the most trivial reasons.