Role
The software engineering team is responsible for continuously implementing, improving, maintaining and operating all non-physical elements of our groundbreaking drug discovery and development platform. As a Senior Software Engineer (Front-End), you will draw on your experience and the most modern front-end technologies to create our innovative scientist-facing products and interfaces. You'll work as part of a cross-functional team drawn from product managers, designers, architects, backend software engineers, hardware engineers, AI scientists, and biologists to rapidly deliver and evolve our production systems. You will
- Develop the rich interfaces to high-end scientific tools that enable scientists to design, monitor, and analyze experiments on lab-grown human organs
- Contribute to significant front-end components of our platform through all phases of the system development life cycle
- Play a leading role in the selection of key technologies, frameworks, and third-party products to build world-class, robust, and reliable front-end systems
- Help establish relevant practices for ensuring the quality of front-end systems including owning and maintaining appropriate tests at different levels (components, browsers, etc.)
- Clearly communicate and document decisions and designs
- Work collaboratively and proactively with other senior members of the organization, ensuring the creation of front-end services that satisfy the needs of all stakeholders
- Implement the security posture for front-end systems to safely handle sensitive information
- Collaborate with product and back-end engineers to create reusable design systems to facilitate the building of consistent experiences.
- Build out reusable UI components to allow new interfaces and experiences to be mocked up quickly
- Use data visualization techniques to make complex information understandable and actionable
- Identify and resolve performance and scalability issues
- Lead other engineers by your example of excellent engineering discipline and productivity, serving as a technical mentor for your more junior engineering colleagues.
- Help coordinate the efforts of other builders working together across a given team
The role demands technical excellence, strong organizational and communications skills, attention to detail, a keen sense of ownership, scrappiness, drive, and a track record of delivering in the face of wide decision-making freedom and evolving priorities.
Requirements and Expectations
Design . You work as part of a team to invent, design and build software that is stable and performant. You bring perspective and provide context for current technology choices and guide future technology choices. You understand that not all problems are new (or require new software). You are proficient in a broad range of design approaches and know when it is appropriate to use them and when it is not. Your solutions are pragmatic while taking the long-term view. You limit the use of short-term workarounds. You consider where each system is in its lifecycle and where appropriate, proactively fix architectural deficiencies. You make existing systems simpler (e.g., by consolidating redundant systems, deleting unnecessary code, or removing/updating out of date documentation). You do things with the proper level of complexity the first time (or at least minimize complexity). You create flexible software without over-engineering. You make appropriate trade-offs, re-use where possible, and are judicious about introducing dependencies. You understand the business impact of your systems and show good judgment when making technical trade-offs between your team’s short-term business or operational needs and long-term technology needs. You are efficient with resource usage (e.g., hardware, database, memory, computing power, etc.) and cost.
Coding . You are a significant and autonomous contributor and considered a technical leader on your team. You work efficiently and routinely deliver the right things with limited guidance. You solve difficult problems, applying appropriate technologies and best practices. Your work is consistently of high quality.You consider the legacy of the code you produce and write code that a software engineer, unfamiliar with the system, can understand.Your code is organized and easy to extend. Your code submissions and approach to work are exemplary with solutions that are inventive, secure, easily maintainable, appropriately scalable, and extensible. You deliver high-quality artifacts (research, schematics, analysis, specifications, prototypes, test plans, etc). Your documentation practices are data-driven, accurate, clear, and complete.
Continuous Improvement. You focus on operational excellence, constructively identifying problems and proposing solutions. You take on projects and make software enhancements that improve software and processes. You work to resolve the root cause of complex problems, leaving software better and easier to maintain than when you found it. You drive engineering best practices (e.g., operational excellence, security, quality) and set standards. You work to resolve the root cause of endemic problems including areas where your team limits the innovation of other teams.
Teamwork . You are a key influencer in team strategy. You are able to take the lead on large projects that require the work of a team. You know how to divide a software project into parallel work that can be performed by you and other software engineers and then reassembled successfully into a cohesive launch. You help your team evolve by actively participating in the code review process, design discussions, team planning, and reviews of tickets, metrics and corrections-of-error. You are able to train new teammates on how your team’s software is constructed, how it operates, how secure it is, and how it fits into the bigger picture. You foster a constructive dialogue and seek resolutions in a professional way. When confronted with discordant views, you are able to find the best way forward and influence others to follow that path. You contribute to the professional development of colleagues, improving their technical knowledge and the engineering practices. You actively recruit and help others leverage your expertise by coaching and mentoring. You provide technical assessments for promotions. You ensure your team is stronger because of your presence, but does not require your presence to be successful.
Qualifications
- 6+ years of experience, or equivalent, designing and building robust user interfaces (with high degrees of complexity that are revenue-critical and/or highly-used) through all phases of SDLC and supporting in production
- Expert knowledge of the modern front-end development ecosystem
- Fluency in multiple programming languages/programming paradigms including JavaScript, TypeScript, and Python
- Knowledge and experience with modern JavaScript client-side web user interface and API frameworks (Bootstrap, Tailwind, React, Redux, Angular, Node.js, GraphQL, Apollo), including experience creating modular, testable user interfaces
- Experience with effective imaging and numerical data visualization techniques and technologies including management of high-resolution image rendering and streaming; Familiarity with libraries for graphing and image handling
- Experience with multi-stage deployment environments and automated CI/CD systems including build systems for front-end bundles such as webpack
- Experience working within an Agile framework
- Enthusiasm for quality, design, and user experience; Strong empathy for users; Detail oriented drive to create world class systems and experiences
- Enthusiasm for understanding the product and application domain and using that understanding to design solutions
- Ability to communicate effectively within a distributed team and with project stakeholders, both in meetings, over Slack and in written formats, such as tech design docs, tickets, and pull requests.
- Strong track record of operating creatively and autonomously in startup environments
- Proven ability to execute as an individual contributor in the face of ambiguity, shifting priorities, and limited resources
- Demonstrated ability to handle multiple competing priorities and projects in a fast-paced environment with a proven track record for delivering results on large, cross functional projects
- Strong steward of a software product and codebase, managing complexity and technical debt for a product that is evolving quickly
Preferred Qualifications
- Understanding of security concerns of front-end systems; authentication, authorization, and Role Based Access Control; Familiarity with technologies including OIDC, OAuth
- Well versed in automated testing practices and able to choose an appropriate level and approach to testing as part of designing a solution; Experience with test frameworks (e.g. Playwright, Cypress, Selenium, Jest)
- Experience designing and building systems that make use of AWS services
- Experience with serverless frameworks
- Working knowledge of container technologies (e.g. Docker)
- Exceptional problem solving, analytical and quantitative skills; Experience using data and metrics to test theories, confirm assumptions, and measure success
- Track record of fostering a culture of collaboration and continuous improvement