Job Description
The key objective of the Algorithms Engineer is to think in terms of algorithms which will advance the company's ability to deliver an exceptional client experience at scale. To communicate your ideas and intentions, with a professional approach to constructive criticism. Then to effectively and elegantly implement those algorithms in code yourself and achieve integration with larger systems or disciplines as necessary.
The Algorithms Engineer is expected to have mature competence as a "coder"/ "procedure builder" in at least one domain, and then to expand on that with a demonstrated ability to synthesise what is already known with the rapid acquisition of new knowledge, in order to solve previously unseen problems with previously unfamiliar technologies.
Secondly to apply a broad understanding of larger system interactions and consequences, in the domains of system cost, performance, complexity and maintainability.
Finally, to be comfortable engaging with end-users and clients, in order to merge their viewpoint and requirements with the underlying technical frameworks and constraints.
Summary list of responsibilities and expectations:
Build solutions in a software technology domain using code or similar specialist syntax.
Effectively apply all your experience and knowledge to date to create solutions, and to enable your colleagues to create better solutions themselves.
Recognise where your experience and knowledge are insufficient, and pro-actively and rapidly acquire new knowledge and understanding.
Continue to solve previously unseen problems with previously unfamiliar technologies, on the back of pro-active learning and discovery.
Excellent communication: of your ideas, of your progress, of your plans, of your findings and recommendations.
Deliverables and a personal engagement that illustrates your attention to:
Formal and informal conventions, as they must exist for teams to cooperate and work together.
Deadlines and the bigger picture business priorities
Costs associated with your time, other's time, 3rd party licensing, and infrastructure.
Well documented best practices and norms in the applicable domain of code / syntax.
Engineering details inherent in system loading, read/write locking, sequential timing, determinism, race-conditions and alternate flows.
Security and authentication, and the chain of trust that must exist between different systems.
Perform as a team player, with pro-active effort put into mitigating "key-man risk" and continuous up-skilling and cross-skilling of your teammates and yourself.