As a recent graduate of coding bootcamp I'm starting my job search, applying to graduate and junior developer positions. I've seen people's opinions on take-home coding challenges and having just submitted my first, thought I'd add 2 pence to the piggy bank from my own perspective.
Several reddit threads and blog posts suggest some developers are not a fan of the take-home challenge, for reasons that are many and varied according to circumstances. Some bemoan the task itself as little more than unpaid work that takes far too long to complete, others feel there are better ways to judge someone's suitability for a position - pair programming for instance. As a mid-level or senior developer with a large portfolio and proven track record, would I be inclined to share some of those viewpoints? Ask me again in a few years....
As a junior looking for my first dev role, however, I can see the validity of this type of task for someone in my position. I have a limited set of projects that I can show a prospective employer, not all of them crafted over time and given the love and attention I really think they deserve. Much of what I have built so far (particularly at bootcamp) was done in a week at most, after only learning the subject for maybe twice that time. In and of themselves they provide a useful snapshot of how quickly I managed to pick up each new concept, but could all use a hefty dose of refactoring.
- I really like it, and I really want to get good at it!
- In bootcamp I only used it functionally but I know it's important to understand the fundamentals of OO programming - no time like the present!
TDD was another thing I knew was important and wanted to get into but hadn't made time for yet. My whole program was driven by the tests I wrote, which took a bit longer but the finished product had evolved into something I was proud of - admittedly I didn't appreciate what the value of TDD actually was until the tests were showing me that certain class attributes were no longer necessary, or that I really needed an extra method to break up one that was doing too much. Now I'm finding in my code practise I regularly solve problems using TDD, which feels great!
I'm grateful that this code challenge pushed me out of my comfort zone because it's accelerated my learning in two major areas of development. I've submitted it and am excited to get some feedback and find out what the developers who review my code think of it. For a first attempt I believe I did a good job: I read the task A LOT of times, planned and tested the code thoroughly, it fulfils the brief and I have lots of ideas for what else it could do, all of which I documented in a carefully thought-out readme. It may have been my first take-home challenge but I'm sure it won't be my last. Watch this space....