The Clifford Engine.
I havn’t mentioned it here yet, but i have just got a new job at the BBC. I’m moving to the frameworks team to stretch my enginnering skills and explore how other parts of the business operate. This post is not about that move though, it’s about the technical test they asked me to complete. The Clifford Engine.
As part of the interview process i was asked to solve a problem in a language of my choice. The problem is known as a clifford engine. In short, the task is too build an interpreter for a very basic stack language called “Clifford Code”.
I really enjoyed the test. I don’t often get to write algorithm based stuff so it was nice to have a problem outside of my normal domain. It was complex enough to be fun, but easy enough to build in one sitting.
I felt that the code might be useful to others, perhaps people who are exploring how to use prototypes, or jasmine tests and have put the code up on github.
I have also reused the problem to test my knowledge of rust and put an implementation of the clifford engine in rust on github too.
The clifford engine test was alot of fun and seems to be quite effective as a hiring tool. I feel the following characterstics make it good:
- Choice of languages – code it in anything, they want to see something “interesting and idiotmatic”.
- Talks about “proving” functionality. Does not “ask” for tests, presents the problem that testing helps to solve.
- Scary enough to make you think. I don’t have a Comp Sci background. On first reading the test i felt challenged. Once i had read it a few times the shock wore off.
- Complex enough to weed out serious applicants.
I enjoyed the clifford engine test. I think its a great example of a small but non trivial interview task.