Software Engineer (haskell, Javascript, Scala, Or Rust)

Remote, GB, United Kingdom

Job Description

###

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).

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.


Related Jobs

Job Detail

  • Job Id
    JD3311452
  • Industry
    Not mentioned
  • Total Positions
    1
  • Job Type:
    Full Time
  • Salary:
    Not mentioned
  • Employment Status
    Permanent
  • Job Location
    Remote, GB, United Kingdom
  • Education
    Not mentioned