Can Hitcents pass the Joel Test?
For those of you who have not heard of it, the Joel Test is a quick checklist that will help assess the practices of your software development team. The test was originally explained by the blog: "Joel on Software," which is a fairly popular blog by Joel Spolsky, a software developer and CEO of Fog Creek Software. You can see the original article here: http://www.joelonsoftware.com/articles/fog0000000043.html So I thought I’d go over the “Joel Test” to see how Hitcents fairs against it. • Do you use source control? Yes - Hitcents has recently started a company-wide switchover to using SVN and TortoiseSVN for source control. This is probably the most important question, in my opinion. Source control keeps the code safe (as far as losing your work), and gives you the benefit of seeing which developer made which change, while adding the ability to revert code if something is broken accidentally. • Can you make a build in one step? Yes – For compiled languages, developers at Hitcents have migrated builds over to a continuous integration (CI) server using a software package called Hudson. Hudson is great and can compile many different languages, run tests, and either archive or upload the resulting binaries. • Do you make daily builds? Sometimes – We have projects that do, and some that don’t. The objective here is to quickly detect when the build has been broken by a particular piece of code checked in by a developer. More importantly, is having nightly build that will checkout the source, compile it, and run hundreds of tests that can detect bugs before they can get into production. On larger projects, like Omniprise ERP, a nightly build process is essential. • Do you have a bug database? Yes – We have trouble ticketing features in Omniprise ERP, and are in the process of transitioning to use it for internal bug management at Hitcents. This goes side by side with source control as well, since we require developers to leave extensive comments of their changes when committing new code. • Do you fix bugs before writing new code? Yes – This is fairly important, since the new code could easily be broken by existing bugs. Fixing a bug that is troubling a user in production is even more of a priority, and we try to fix those type of issues as quickly as possible. • Do you have an up-to-date schedule? Yes - Schedules are maintained well at Hitcents. The scope of most projects are a moving target, so we try to make changes to deadlines according to changes in a project’s requirements as well. • Do you have a spec? Yes – The management staff at Hitcents does a good job of outlining a project before it is even started. Combination's of multiple outlines, flow charts, and even documentation when the project is complete are essential pieces to any software project. • Do programmers have quiet working conditions? Yes – The office is actually very quiet. (With the exception of some temporary construction of our office) • Do you use the best tools money can buy? Yes, when they exist – For .Net languages, Hitcents employees use the latest Microsoft tools. But open source languages like Java or Perl have free tools that come along with them. Luckily, free tools like the Eclipse IDE seem to be of close quality to what Microsoft offers in Visual Studio. • Do you have testers? Sometimes – Hitcents does not really have employees with the title of “Tester”, but more positions that test as well as write documentation for our products. Hitcents has developers that write tests as well as follow test driven development (TDD) for larger scale project, and this is definitely something Hitcents can improve on. Depending on the project, testing gets more and more important as the project gets larger, so we have already started adding tests to our development cycle for larger products such as Omniprise ERP. • Do new candidates write code during their interview? Yes – New developers at Hitcents complete a programming test in their preferred language to assess their skills before hire. The tests take place during one business day, and are designed to be nearly impossible to complete in that time. They are an excellent tool for weeding out candidates that aren’t really qualified or have difficulty managing their time. • Do you do hallway usability testing? Yes – This basically means you grab someone in the hallway and have them try out the UI for a project to see how useable it is. Well, Hitcents doesn’t exactly have hallways, but usually Beta tests software with the entire office—especially in the case for Omniprise. So what can we add to the Joel Test? I think there are a couple other points we can touch on that are missing: • Do you have a review (or testing) process before updates go to production? Yes - For large scale projects, a set of tests should pass 100% before an update can be performed for customers. As for Omniprise ERP, before every update: we update a development server where tests are ran, then update the Omniprise server for Hitcents, and then all of our Omniprise customers. This greatly reduces the likelihood that a bug will make it to production. • Do your developers have a private development environment where they can safely run their code? Yes - For websites, our developers have an internal web server at Hitcents to develop with, and for larger projects like Omniprise ERP, each developer has their own dedicated Omniprise server in the cloud. This way developers don't work with "live" code and also don't get into each other's way while developing. Hitcents scored 12 out of 14, which is not too shabby for a software company based out of Bowling Green, KY. These are also questions any person needs to ask a software company when debating on hiring them for a new project. Huge software companies out there like Microsoft and Google would score a 14 on every project, while many novice (or poor) software companies will score a 3 or 4 on this test. But such companies could still sway a non-technical person to hire them for a project. Only quality software teams can deliver quality software, so that is what we strive to be as developers at Hitcents.