Senior Functional Programmer Excited Data Streams
Reaction Commerce via Remote OK
Jul 28th 2018
Reaction Commerce is seeking a Senior Software Engineer to join our new platform engineering team. As a pioneering member of the core services team at Reaction Commerce your primary focus will be advancement of the Reaction platform where data streams are the source of truth. This is a hands on role. You will write functional code to build microservices and establish patterns that will be used by the rest of the team.
Here is a list of the type of work that you'll be spending the majority of your time on:
- Produce clean well documented idiomatic code.
- Be creative and experiment with new solutions while being pragmatic and committed to code optimization, maintainability, and quality.
- Design and develop highly scalable, observable, functional microservices from prototype to production.
- Create intelligent monitors for key metrics to understand service and overall system health.
- Learn and teach your fellow engineers new technologies and architectures.
- Be a storyteller and clearly document designs, tradeoffs, and lessons learned from prototyping and your Hammock Time.
- Improve productivity of the team through code abstractions and custom tooling, like custom libraries and project templates.
Here is a list of our hard requirements, which we've worked to keep short. We believe you'll excel in this role if you possess the following:
- Experience working in a functional programming language, with a preference for declarative implementations and immutability.
- Strong experience designing web-based APIs in REST or GraphQL.
- Understanding of systems design, algorithms, and data structures.
- Demonstrable knowledge of queues, distributed logs, and streaming systems of various types.
- Experience mentoring high quality teams, and instilling a mindset of engineering excellence (e.g. TDD, pairing, code reviews, design documentation)
- Experience and knowledge of the JVM and the Java ecosystem in addition to compile to JVM languages.
- Ability to write clear, effective documentation.
We value your knowledge and skills more than an arbitrary amount of experience using any specific technology or a university degree in a specific field. As a Senior Software Engineer, we expect that you'll have the skills and knowledge that are typically gained working on production applications for many years and studying in a university Computer Science program, but we don't care how you've acquired those skills or how long it took you.
The ideal candidate will have deep experience in a few of these topics
- A polyglot background with languages that present varied programming paradigms and perspectives.
- Experience writing libraries or abstractions with declarative interfaces.
- Prior work using CQRS & event-sourcing.
- Experience using Kafka, Kafka Streams, Docker, Docker Compose, and GraphQL.
- Familiarity with relational, document, and key-value store databases and knowledge of common data modeling patterns used in each.
- Enough devops experience to get your projects deployed to AWS.
- Interest in programming in Clojure.
As a distributed team building open source software, we understand that being a great software engineer is much more than having a deep technical skillset. Our culture is one of communication, character, cooperation, and competence. We believe that people who have these foundational characteristics will be able to hit the ground running.
- Motivated, self-starter who can work in a distributed team environment
- Open-minded mentality
- Goal oriented personality
- Empathy for customers, community, and co-workers
- Tendency to teach others what you know and excitement for sharing knowledge
- Growth oriented mindset and a desire to be better today than yesterday
- Desire to deliver an exceptional customer experience
- Critical thinker who will work to solve the right problem
- Cooperative attitude and an ability to pair program effectively with other engineers
- Ability to think holistically for a given project or problem
- Position: Full Time
- Compensation: Salary commensurate with experience, stock options, medical and dental benefits
- Location: Americas Time zone
- ~40-50 hours/week
- You'll be expected to make team meetings and work at least 5 hours/day that overlap with 9AM-5PM Pacific