Symphonic Solutions Ltd - Software Engineer
Symphonic Solutions Ltd (www.sphonic.com) is a disruptive technology company that leverages functional paradigms to enable engineered innovation.
In real terms, we build high performance, low latency platforms that integrate to a plethora of third party API’s and apply intelligent manipulation and analysis to the data via a DSL. We help turn ‘Big Data’ into ‘Useful Information’. We also don’t use Hadoop - which is nice.
We’re looking for software engineers who understand the functional domain extremely well. Ideally you will be a polyglot software engineer with skills and at least twelve months (commercial) experience in Scala (with with Akka) || Clojure || Haskell || NodeJS. We run all of these in production so it’s important you understand the difference between experimentation and production quality code. You should also be able to at least read one of either Python, Bash or C. We don’t allow Ruby anywhere on our platform so you should be comfortable about that. We’re looking for people who want to live the functional dream, not people who think it’s a ‘nice to have’ on their C.V please.
You should understand the sympathetic orchestration of human, software, operating system and hardware. You should also be able to translate complex functional requirements into simple, well composed programs which work in concert to produce the desired result. Experience in working within a micro-services architecture will be looked on very favourably.
We are flexible on working locations, including home working, with a London office based near Edgware Road station. During the early phases of engineering design some time in the office will be a necessity however and you should be comfortable about that. You should be able to work independently and within a wider team as well as manage your time such that your responsibilities in each sprint are delivered to a high quality and in a timely manner. You’ll be expected and empowered to make software design choices specific to your responsibilities in concert with the platform engineering team.
You should be happy to work within an agile project management framework which supports Kanban. You should be familiar with working with JIRA, Confluence and Git. You will be expected to produce documentation around your sprint responsibilities which deliver a high level of knowledge retention and transfer.
Your programs will be run on SmartOS platforms and so you should be able to build technology agnostic programs. In simple terms you should be happy not to rely on any operating system specific functionality in order to write your programs. You will be trained in technologies such as DTrace to better aid your diagnostic efforts. You will be provided with local build environments based off Vagrant which you should be happy to manage yourself though training and support from engineering will be available at all times.
If this interests you, in the first instance, please answer the following questions : Question 1 Explain the relationship between the human and the machine. Describe the relationship in as much detail as you feel comfortable with. Question 2 Explain tail recursion to a 5 year old. Question 3 Explain how you would manage state in a functional manner to a 5 year old. We expect that you have public GitHub/Bitbucket repo’s sharing your work and/or research with functional languages and programs so please also send your GitHub/Bitbucket handle with your answers.
Please send your answers and whatever you have of a C.V. to email@example.com.
This job was posted April 7, 2014.