Senior Full-Stack Software Engineer at SnapStrat Inc
Oakland, CA, US

Are you ready to help build ground-breaking analytics products that our enterprise customers leverage to make >$100M decisions? SnapStrat is a venture-backed, seed stage startup in Oakland, California. Our product digitizes strategic decision-making and brings ML to enterprise executives. We are growing quickly – and eager to bring in more firepower to help us scale.

Here are the skills we are looking for:

o Data architecture/NoSQL DB design - Standard DB design techniques as a basis for understanding of NoSQL design. We are currently using DynamoDB which has its unique set of design considerations. 
o Data transformation/ETL - Data cleansing, manipulation & transformation. Currently Apache NiFi is used, but we might consider other technologies as our needs evolve. 
o GraphQL/AWS Appsync- GraphQL using the AWS AppSync (built on Apollo) implementation. 
o Javascript - Expert knowledge of ES6+ JS for the client and server. Understanding using JS in a functional/recursive way. Good understanding of the usual libraries required for productivity. We are a JS-only shop, but use it in advanced ways. We are open to people who don't know JS, but have a deep CS understanding so they can quickly pick up how to use it effectively. 
o React JS - Used for our front-end development. 
o Metadata systems - Familiarity with metadata systems in order to build customer applications on top of a generalized platform. 
o Event-based systems - Understanding of the interaction patterns of asynchronous systems driven by events; development and use of techniques to troubleshoot and debug systems. 
o Error detection and handling- Constant consideration of error cases; insurance that when errors occur they are logged so that diagnosis is facilitated 
o Object-based system design - Use of reuse technologies to allow code to be shared, including classic OO technologies and Javascript-based reuse.

How SnapStrat’s engineering team works:

o Collaboration - Must have a strong ability to work well with other members of the team, participate in “design by discussion” sessions, set aside ego in service of the best output, and work well with other parts of the organization to help refine requirements and incrementally deliver high-quality work. 
o Vision/context - Understanding how what you are working on fits into the bigger picture for the company; make sure it’s properly aligned with SnapStrat’s overall goals; make sure your work is usable by our customers at all times. 
o Incremental development- Take requirements and work with stakeholders to refine and clarify them; incrementally formulate the design in collaboration with others, while incrementally developing. Provide good test coverage and documentation. Expose work on a very frequent basis. 
o Continuous integration/deployment - Maintain high-quality code at all times through test coverage and use of a CI system. Work in a concurrent manner by means of branch CI builds, and always keep work synced with the work of others. 
o Code hygiene - Keep code and other artifacts clear, minimal, and structured. 
o Test-driven programming - Develop by writing test cases first; ensure tests are written for all defects so that a regression test suite is built. 
o Code reviews - Use the pull request mechanism effectively to get code reviewed, and be an active and open participant in your own and others’ code reviews. 
o IDE/browser development tools - Excellent knowledge of IDE/Browser debug capabilities; ability to maximize productivity by using all available tools. 
o Discarding work - Be willing to discard design, code, or ideas in favor of something better.