Anaplan. As the engine behind back-office system connectivity, you might not recognize our name, but our customers rank among the who’s who in the Fortune 50. Coca-Cola, LinkedIn, Adobe, and Bayer are just a few of the 2,000+ companies that rely on our best-in-class platform and its native AI capabilities to see, plan, and lead their businesses. By dynamically connecting financial, strategic, and operational plans in real-time, companies trust Anaplan to give them the power to anticipate change, address complexity, deliver operational insights, increase profits, and stay ahead of their competition.
What unites Anaplanners across teams and geographies is our commitment to our customers’ success and our collective motivation to achieve ambitious goals. We champion diversity of thought and ideas, and we behave like leaders irrespective of title. When you work for us, you’ll be part of a winning culture that’s dedicated to creating opportunities for our customers, partners, and employees. We hope you’ll join us. Let’s create something incredible together!
At Anaplan we have an enormously powerful platform that enables users to collaboratively build models of their businesses. From budgeting and forecasting to supply planning and strategic policy management, the range of problems to which the Anaplan platform provides a connected planning solution is large and always growing. As you might expect, at the core of this platform is a complex, conceptual model. When we make changes to our software, we need to be sure that we understand the impact of those changes and be able to verify that the changes made to the code match the changes we conceived in our conceptual model.
In software engineering generally, this sort of understanding and verification is often achieved using automated tests, but the sheer range and complexity of potential models that can be built with the Anaplan platform mean that this form of testing is not sufficient. To enable us to go beyond the standard testing paradigm, we produce a mathematical description of our conceptual model and use techniques known as formal methods to rigorously validate our requirements and verify our code. This role will require you to be in our York office a minimum of 2 days a week.
Your Impact
You will join the team that is responsible for both creating this mathematical description, aka the specification, and creating the tools that leverage it to give the highest degree of confidence in the software we release. As such, you will have the opportunity to become involved in the deep analysis and mathematical modelling required to enhance the specification, and also the engineering work need to continue the development of our open-source frameworks.
1. Identify and exemplify a list of distinct, unambiguous behaviours that describe a feature.
2. Construct Acceptance Criteria scenarios to rigorously validate the behavioural requirements.
3. Model the behaviours mathematically using a formal specification language.
4. Guide and extend our frameworks to generate scenarios that mimic likely user behaviour.
5. Use these scenarios to verify that the implementation satisfies the specification.
6. Optimise balance between redundancy and coverage in scenarios.
7. Identify means to increase confidence in quality yet maintain costs.
More About You
This is not a standard engineering job; you need to fully understand the system you’re building and the system you’re verifying. It’s necessary to be able to intelligently use the specification to drive the verification process and the focus will be as much on designing the frameworks as coding them.
We’re looking for is someone with the enthusiasm and skills to imaginatively tackle the tasks described above. Some experience in any of the below will stand you in good stead....
8. JVM languages—Kotlin, Java, Groovy
9. Functional programming paradigms and principles
10. Set theory, predicate logic, and formal specification/verification
11. Property-based testing
12. Functional coverage analysis
13. Related engineering tools—GitHub, Gradle, Artifactory, etc.