Received a connection on LinkedIn from one of the folks at the Nerdery asking me if I’m interested in a position. That followed by a 30 min phone interview asking me about my experience and resume. Once that ended, I was sent the requirements for their NAT. This is a coding assignment for which you need to write a JAVA application from scratch. My particular assignment was to write a web app that managed game inventory—add new games, vote for them and such. The requirement states the work will take 10hrs, but it also states that your competency will be judged on your work—so you can make it as complex as you like—and thus spend more time (UNPAID). A code review by employees is to follow. The requirements are well written. Also, they expect you to send them a URL to your code running on your server.
I completed my assignment. I don’t have a public server so I sent in the code in a .JAR that contained both classes and source code with detailed instructions on how to run it. My code used the Spring framework, included a bootstrap servlet that created tables, initialized data on startup and cleaned up data on shutdown. Log4J style logging was used for all caught exceptions and debug events. I picked up an embeddable H2 DB that the code used for persistence. The DB was imbedded as a .JAR with the code and the code was just able to use it with no extra config. The DB interactions used “transactions” with rollbacks on errors and commits on success. The UI used JavaScript as well as JSTL to render data. The app also manipulated browser cookies. All worked with no errors. After not getting a reply for a week, I checked in on my status and got the following review of my submission:
“This submission was developed with Spring MVC, which is our preferred Java framework and is definitely a positive. Additionally, it breaks functionality down using Object Oriented patterns. However, there are a number of problems that prevent this from being a passing submission.
First, deployment was more complicated than necessary. The best way to deliver a Java web application is with a web archive (.war) file, not project source code. Further, the instructions don’t specify which IDE should be used, although it appears from previous comments that it should be some version of Eclipse.
Secondly, there were a number of practices that are problematic:
1. The DAO layer generates SQL with string concatenation, which could cause SQL injection issues.
2. Classes are in packages that don’t follow the Java naming convention (e.g. main.java.com.controllers).
3. The main controller (XBoxGameInventoryController) uses an error handling mechanism (catch (Exception e), then present a generic message to the user) that will mask bugs and make maintenance difficult.”