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).
Benefits
How to Apply:
Please apply if you think you would be suitable for this role. We look forward to your application and the opportunity to welcome you to our team.
Due to the high volume of applications we anticipate, we regret that we are unable to provide individual feedback to all candidates. If you do not hear back from us within 4 weeks of your application, please assume that you have not been successful on this occasion. We genuinely appreciate your interest and wish you the best in your job search.
Commitment to Equality and Accessibility:
At MLabs, we are committed to offer equal opportunities to all candidates. We ensure no discrimination, accessible job adverts, and providing information in accessible formats. Our goal is to foster a diverse, inclusive workplace with equal opportunities for all. If you need any reasonable adjustments during any part of the hiring process or you would like to see the job-advert in an accessible format please let us know at the earliest opportunity by emailing human-resources@mlabs.city.
MLabs Ltd collects and processes the personal information you provide such as your contact details, work history, resume, and other relevant data for recruitment purposes only. This information is managed securely in accordance with MLabs Ltd's Privacy Policy and Information Security Policy, and in compliance with applicable data protection laws. Your data may be shared only with clients and trusted partners where necessary for recruitment purposes. You may request the deletion of your data or withdraw your consent at any time by contacting legal@mlabs.city.
Beware of fraud agents! do not pay money to get a job
MNCJobs.co.uk will not be responsible for any payment made to a third-party. All Terms of Use are applicable.