The Joel Test
Joel Spolsky wrote blog post entitled: “The Joel Test: 12 Steps to Better Code”. It’s composed of 12 technical questions which can be used to determine if a company is a good company to work for or to do business with them, if you are a company that’s looking for a good partner. Evaluate us by taking a look at our answers to Joel’s questions:
1. Do you use source control?
Yes, at KoloTree we prefer distributed source control management systems like Git, Hg, but we also have experience with centralized systems like TFS and SVN.
2. Can you make a build in one step?
Small code changes (pull requests) trigger build of feature branch in order to check if compilation or unit tests are broken. Every push to master is a pre-tested commit using pull request (PR) mechanism. After feature branch is merged, master build is triggered and output binaries are pushed to appropriate binaries repository.
3. Do you make daily builds?
Every night, at specified time, build is automatically triggered for master branch of all repositories.
4. Do you have a bug database?
We are familiar with Jira, Bugzilla and TFS, but not actively using any of them because we follow zero bug policy. Since number of bugs is small, we can track bugs very simply (e.g. in plain text file or excel sheet)
5. Do you fix bugs before writing new code?
Yes, we are following zero bug policy, meaning that we immediately stop with development if defect is found.
6. Do you have an up-to-date schedule?
Up-to-date schedule is a part of the Scrum and Kanban methodologies which we are using in development processes.
7. Do you have a spec?
Design specifications is written informally, prior to the sprint execution. No detailed documentation is written, since on any redesign, the documentation becomes out of sync. After the sprint is finished, the best documentation is code itself together with API docs and unit and integration tests.
8. Do programmers have quiet working conditions?
Since we have a team of highly dedicated and self aware developers, there is no need for explicit quiet time in the office. On the other hand, Scrum Master is responsible for protecting team from outside influences (like from client, management, etc.).
9. Do you use the best tools money can buy?
We use combination of open source and proprietary tools. If the tool is not free but improves developer’s productivity and quality of the code significantly, it is natural that we will have it in our toolbox. We are also included in open source projects development. This is our way to give back something to the community.
10. Do you have testers?
No, we are developing automated unit, integration and manual UI tests and also we don’t have distinction between testers and developers, cause we want to have cross functional team members.
11. Do new candidates write code during their interview?
During the job interview, new candidates have chance to show the way they are thinking through some simple code exercises. Our goal here is to determine how candidate is abstracting the domain of the problem and can he think out of the box. Besides that candidate also needs to have proper understanding of programming paradigms, algorithms theory and data structures.
12. Do you do hallway usability testing?
Product owner together with development team is doing usability testing in process of development. After each product increment, product owner and client should perform usability testing and give feedback to the development team based on which new user stories are created on product backlog. This will reduce need for detailed user manual, because application will be more intuitive.