App Development

How To Nail Your Test Project

After our resume review and an initial interview, WillowTree frequently sends out a test project as part of our recruiting process. For us, a good performance on the test project is key to understanding whether or not you’ll be a good fit here. In today’s post, we’ll offer some advice about the things you should do in your test project to grab our attention, and the things you shouldn’t do. While this advice is tailored to what we’re looking for at WillowTree, we feel following it during a test project (whether it’s for us or not) can help you stand out.

Do: Take Your Time Suddenly overwhelming week at school or work? If you feel like you need to qualify your submission with a story about how work, school, or some other relationship got in the way of you doing your best, let us know there might be a delay and take the time to do it right. Most of WillowTree’s test projects don’t time you on your submission, so if you’re not in a rush neither are we. For projects that do have a time limit, take all of that time to make sure you’re happy with the final product. Remember, you should show us something you’d be happy to ship. You will be judged more on the final quality of your app and your submitted code than the speed you took to complete it (within reason of course).

Don’t: Think the Problem is the Test This is probably our biggest piece of advice. If you’re coming out of college, you’re likely very used to being presented a problem in full with clear success criteria like, fill out this class skeleton, create this specific view, write this function that takes this input and returns this specific structure. The problem we give you to solve is easy. Given a simple information based API, write us an app that displays that information to the user. We’re less interested in whether you can solve the problem, but more in how you solve the problem, and your attention to detail in the final result. Not only should everything work straight out of the box, but it should look good and be usable. Handle error cases in a way that makes sense, and present that error to the user in a nice way. Show that you put some thought into how data should be presented to the user. We don’t need something that’s expertly designed, but even little touches, like an app icon, navigation niceties, and presenting the data to the user in a clear, easy to reach manner are all things we look for.

Do: Show us Good Software Architecture We want to see that you can write good, maintainable software. Take the time to make sure each class you’re writing has one responsibility. Create Model objects for data, and a service for retrieving or parsing data. Stay DRY (for those of you that have read the Pragmatic Programmer). Make sure your classes, variables and functions are well named, and that they do what they say they do. Don’t leave the default boilerplate names for files / classes (ViewController, Activity). Check for errors and edge cases, and present them clearly to the user. All of these principles lead to better code. When we see them, it makes us more confident in your abilities to integrate into a large team making complex software. When we don’t see them, all we have to go on is your ability to solve the single problem we presented which, as I already said, isn’t really the point of the test project.

Don’t: Keep What’s Not Needed It’s really that simple, get rid of what’s unnecessary.

Do: Clean up Your Final Deliverable There’s a level of polish we look for that can frequently be undermined by very simple mistakes. Things like leaving in boilerplate, unneeded, IDE generated code and assets. Remove stale, commented out code. If you’re sending us your code in a zip, remove the .git directory. Remember, at no point (at least in the WillowTree interview process) are we looking to trick you, and the test project is no different. For us, the point of the test project is to see that you can write good code and be creative, so show us what you’ve got!

Moving from Monolith to Microservices Architecture

When a client decides to move from a monolith platform to microservice architecture,...

Read the article