Software Engineer
London, United Kingdom
Agile
APIs
Haskell
JavaScript
Scala
More jobs from this company
views: 0
Software Engineer
About the Role
Our client is looking for a Software Engineer to join their team. You'll be responsible for writing high-quality code for our products. You'll tackle the exciting challenge of working with cutting-edge research and technology, always with a focus on market needs. You'll collaborate professionally and effectively with software architects, product managers, project managers, formal methods specialists, and QA test engineers.
Responsibilities
  • Follow agile software development practices.
  • Work independently on software development tasks with minimal supervision.
  • Review specifications produced by architects and formal methods specialists.
  • Contribute to the design of algorithms.
  • Write clean, straightforward, efficient code that satisfies agreed acceptance criteria and specifications.
  • Commit often and submit small pull requests frequently.
  • Cover your code with unit, property, and integration tests when applicable.
  • Review the pull requests of your teammates.
  • Fix bugs in your own code and in legacy code.
  • Be available for emergency fixing of severity 1 issues on deployed products.
  • Integrate software components and third-party libraries.
  • Verify and deploy programs and systems.
  • Troubleshoot, debug, and upgrade existing software.
  • Write documentation for the code.
  • Write technical user manuals.
  • Be knowledgeable of distributed and concurrent computation.
  • Be knowledgeable of the basics of cryptography.
  • Work with teams across multiple time zones.

Requirements
Key Competencies
  • Write idiomatic code that satisfies acceptance criteria.
  • Write efficient and sufficient tests (unit tests, property tests).
  • Document code and APIs concisely and unambiguously.
  • Break down tasks into sub-tasks that are completable in a short amount of time.
  • Pragmatically adhere to software engineering principles (modularity, incremental development, no premature optimization, etc.).

Required Experience & Skills
  • A minimum of 2-3 years of development experience (professional or otherwise) in one of the following languages: Haskell, Javascript, Scala, or Rust.
  • Experience working with Git and Git workflow.
  • Practical experience with Agile software development methods.
  • Knowledge of functional and object-oriented programming paradigms.

Specialist Skills (Dependent on Role - Indicate Your Area of Expertise)
Candidates should possess strong skills in at least one of the following specializations:
Haskell Engineer
  • Good understanding of Quickcheck/Hedgehog and property testing.
  • Good understanding of concurrent programming / concurrency.
  • Good understanding of call-by-need, memoization, and lazy evaluation.
  • Experience in similar languages: PureScript, Elm, Idris, Agda, Ocaml, F#.
  • Experience with / contributions to GHC (Glasgow Haskell Compiler).
  • Familiarity with frameworks/libraries such as conduit, cryptonite, distributed-process, lens, optparse-applicative, persistent, pipes, servant, stm, template-haskell.
  • Proficiency with advanced FP techniques such as: Advanced functional data structures, Dependent types, Extensible effects, Generic programming, Streaming, Type-level programming.
Scala Engineer
  • Advanced knowledge of the Scala type system.
  • Familiarity with frameworks such as ScalaPB, Scalacheck, Scalatest, Scala.js, doobie, testcontainers, sttp.
Network Engineer
  • Familiarity with Poldercast, Dandelion, Kademlia, Tor, P2P architectures and topologies.
  • Practical experience with issues related to latency and throughput.
  • Knowledge of distributed computing libraries.
Cryptography Engineer
  • Familiarity with cryptographic signing systems, Zero Knowledge protocols, Multi Party Computation (MPC).
  • Familiarity with blockchain cryptography and constructions.
  • Practical experience with implementation of cryptographic primitives.
  • Security sensibility related to cryptographic implementation.
  • Good theoretical cryptography and mathematical knowledge.
  • Ability to read cryptographic papers.
Tools Engineer
  • Experience writing or working with (cross) compilers, object formats, linkers, build systems, IDEs and IDE integrations.
  • Experience and enthusiasm for working with large legacy code bases, across multiple languages.
  • Ability to reach agreements with upstream developers.
Functional Compiler Engineer
  • Expertise in programming language design & implementations including frontends, type systems, program transformations, optimisations, and code generation.
  • Familiarity with Human-Computer Interface (HCI) aspects of programming languages and DSLs, programmer tools and analysis (a bonus).
Front End & Full Stack Engineer
  • Proficiency in HTML/CSS/LESS/SASS.
  • Experience with CSS Preprocessing.
  • Proficiency in Javascript/ES6.
  • Experience with NPM, Webpack, Gulp.
  • Familiarity with React/Angular/Backbone/Vue/Knockout/MobX/REST API.
  • Experience with Electron, Cordova, React Storybook.
  • Knowledge of GraphQL.
  • Understanding of MVC/MVVM patterns.
  • Strong grasp of UX/Design Principles.
  • Basic knowledge of image and design editing tools (e.g., Sketch, Photoshop, Zeplin etc).
  • Experience with NodeJS and Docker.
Rust Engineer
  • Solid System Programming experience (ideally in Rust, but also relevant experience in C/C++ will be considered).
  • Experience with distributed system and network development.
  • Proficiency in software development methods such as agile programming and test-driven development.
  • HTTP API understanding as well as accessibility and security compliance.
  • Experience in developing cryptography protocols (a bonus).
  • Blockchain experience (a bonus).
  • A track record of delivering software projects from start to finish.
  • Proficiency in software development best practices, including design, implementation, testing, and debugging.
  • Familiarity with continuous integration and deployment pipelines.
  • Experience with cloud platforms such as AWS or GCP.
  • Web3 experience (a bonus).
Software Engineer
London, United Kingdom
Agile
APIs
Haskell
JavaScript
Scala
More jobs from this company
views: 0

Be the first to know about
new jobs every week

Get 8 new jobs with salaries, once per week! Sign up here so you don't miss a single newsletter.