Software Engineer - Platform at Earnest
San Francisco, CA, US
As a member of the Engineering team at Earnest:

The Platform Team is looking for Software Engineers with a passion for writing reusable libraries, frameworks and services that will be consumed by the Earnest engineering team. Quality is at the heart of everything we do. You will be a part of a high performing team that values continuous deployment, automated testing and lean software development. We are math nerds who enjoy category theory, functional programming and lawful code. Our job is to make the Earnest engineering team more productive and we do this by consulting with engineering teams and writing software that they need.

Cross functional You’ll be working very closely with both Operations and Engineers. We are a fluid team that prioritizes based on the needs of our stakeholders, of which there are many.

Autonomy: Our team decides how they work best which allows people to take greater ownership and approach problems creatively. We put moral weight on an individual's ability to govern themselves, independent of their position in the organizational structure.

Culture: We find value in code reviews, pair programming and paying down technical debt. We value diversity of perspective, backgrounds, and evaluate ideas based on merit. The more we focus on diversity as we continue to scale, the better we will be at providing our team with the means to create the most relevant tools/products by collectively pooling our talent and experience.

Stack: We value functional programing and this can be seen throughout our stack. Scala is our primary language and we tend to use libraries that are either part of typelevel or designed in a pure, typeful, and functional way. Examples are Cats, Finch and Doobie. Our primary data store is PostgresQL and we use it mostly in an append only fashion.

Sample Projects:

Immutable/append only data store for all Earnest client data
Authentication and authorization for both internal and external systems
Maintenance and development of shared libraries used by the wider engineering organization
Future Project: Help the wider organization move to append only databases
Future Project: Distributed tracing system to identify errors and track performance between services
Future Project: Evolve Earnest architecture by breaking out microservices from monolithic code base
Ideal backgrounds and expertise:

3+ years of functional programming experience (our core language is Scala)
You are a polyglot - you are comfortable in working in multiple languages
You love to prove the correctness of your software
You believe in declarative schemas, structured data, and API contracts
Experience with relational databases such as PostgreSQL, Oracle or SQL Server
Experience with microservices and container based deployments
Experience with monitoring systems like Splunk, DataDog, or Nagios