Functional Software Engineer
New
O
Obsidian SystemsFinancial infrastructure
USA - East Coast; Secondary Locations: Miami, Canada - East CoastFull-TimeSenior
Salary not disclosed
Apply NowOpens the employer's application page
Job Details
- Experience
- 5+ years of professional experience developing and delivering production software.
- Required Skills
- AlgorithmsData StructuresSoftware EngineeringDistributed Systems
Requirements
- Have 5+ years of professional experience developing and delivering production software.
- Understand software engineering fundamentals, including data structures, algorithms, testing, and software design.
- Have professional or substantial project experience with functional programming.
- Reason about complex problems and translate requirements into well-structured software.
- Demonstrate strong debugging and problem-solving skills.
- Commit to code quality, correctness, and maintainability.
- Communicate effectively and collaborate with other engineers.
- Be willing to learn new technologies and work across different technical environments.
- Preferred: Experience with Haskell, Scala, OCaml, F#, Clojure, or another functional programming language.
- Preferred: Familiarity with type systems, algebraic data types, pattern matching, immutable data structures, and functional design patterns.
- Preferred: Exposure to distributed systems, concurrent programming, backend infrastructure, or property-based testing.
- Preferred: Experience with Nix or reproducible development environments, or an engineering consultancy and direct client collaboration.
Responsibilities
- Design, implement, test, and maintain reliable software using functional programming principles.
- Develop composable and maintainable solutions to complex engineering problems.
- Apply strong typing, domain modelling, and abstraction to improve software correctness and reliability.
- Collaborate with engineers, technical leads, and client stakeholders to understand requirements and deliver solutions.
- Contribute to system design and architecture, balancing correctness, simplicity, performance, and maintainability.
- Write automated tests and use appropriate techniques to validate system behaviour.
- Review code, share technical knowledge, and contribute to engineering standards.
- Investigate and resolve complex technical issues across existing systems.
- Communicate technical decisions and trade-offs to technical and non-technical stakeholders.
- Contribute to continuous improvement across engineering practices, tools, and delivery processes.
View Full Description & ApplyYou'll be redirected to the employer's site