I recently got knocked back for a job that pretty much looked like my dream job. It was a startup with a team of four - two senior devs, a junior and a lead/architect.
My interview was with the lead/architect, there was a simple code test that I did in about 2 mins and passed with flying colours. The rest of the interview we just talk about code, some things I'd done that I was happy with and a few questions about design patterns that I felt pretty comfortable answering. It went well, they liked me and asked me to do a second stage code test.
I submitted my pull request and a few days later got a 'reluctant no' that they had agonised over but decided that I wasn't senior enough (at least with NodeJS) to justify the salary. Fair enough, but disheartening.
I pressed the recruiter for more feedback. He got back to me with the list of the sorts of things they were looking for and which I hadn't shown enough of:
- Does candidate show an understanding of SOLID principles?
- separation of concern
- open close
- inversion of control
- dependency injection
- Are there any noticeable design patterns?
- Were there any tests written?
- bbd (functional) test
- What notable architecture style was used
- Was there a package manager used for the client side and server side?
- Was there a build process?
- how well was it used
- Code style
- Was the code self documenting and easy to follow
- Was there a code sniffer/linter used
The task specifically said "please do not spend more that 2-3 hours on this task. If it takes you much longer than that, there is something fundamentally wrong with your approach."
So I dropped TDD which I'm pretty sure is what cost me the job. If it had been Python or PHP the first thing I would have done would be to set up my tests.
I wanted the job because I knew it was an amazing opportunity to learn a lot from a really talented and experienced lead in a small team.
I've been employed as a Senior Developer for years now and as such, haven't had any mentors. I know I'm a good developer but I know I can be a much better one and still have lots to learn. It's what I love about coding, one should always be learning.
I learn by doing. I need to have an opportunity to implement an idea for it to really sink in. I'm reading blogs and watching videos all the time. If the blog or video is 'this is how to get setup with ReactJS' or some such then I'll absorb it all easily. The concepts are familiar enough and I can see solid enough examples that I get a lot out of them.
But when I read an article or book on a design pattern or other high level concept, while I'll often understand it intellectually, I find it hard to put that knowledge to good use. Which is what I was hoping for out of this job. Someone to mentor me with lots of experience in things like design patterns to be able to say 'hey, nice code, but why don't you try using a decorator there instead.' Which is why I wanted this job.
I'll keep reading though, and let you know here if I have any 'ah huh' moments.
And don't worry too much about me, I got accepted for another job the following day.