Senior Software Engineer - Developer Experience
Sanity.io
·
Posted:
April 13, 2023
·
Remote
About the position
Sanity Studio is seeking a developer to join their Developer Experience team. The ideal candidate will have a strong focus on developer experience and will contribute to building a framework and tooling for real-time collaborative editing of structured content. Responsibilities include building APIs, thinking about collaboration and reactivity, debugging and optimizing performance, learning and teaching best practices, continuously improving the product, and contributing to the open-source nature of the project. Proficiency in React, state management, core web and browser concepts, module systems and bundling, TypeScript, and unit testing is expected. Knowledge of RxJS and automated browser testing is a bonus. The candidate should also possess qualities such as compassion, pragmatism, code readability, and effective collaboration skills.
Responsibilities
- Building APIs: planning and implementing minimal APIs for internal and external developers
- Thinking about collaboration: ensuring real-time reactivity and presence indicators for collaborative editing
- Debugging and optimizing: identifying and optimizing performance issues in a React-based app
- Learning and teaching: learning from users and teaching best practices and new approaches
- Continuously improving: improving test coverage, robustness of APIs, and staying up to date with dependencies
- Building in the open: contributing to an open-source project with public and MIT-licensed contributions
- NOT creating "webpages": working on a complex, React-powered application with longer lifecycles
- NOT working on an internal tool: delivering high-impact work for a large number of customers and users
- NOT being stagnant: exploring new patterns, tools, and staying ahead
- Knowing React: familiarity with useState, useEffect, React developer tools, and optimization techniques
- Understanding state management: knowledge of Reflux, Redux, or zustand and fine-grained subscription techniques
- Familiarity with core web and browser concepts: understanding HTTP requests, event loop, promises, browser development tools, DOM, and browser APIs
- Knowledge of module systems and bundling: understanding Webpack, Vite, Rollup, ESM, and CommonJS
- Proficiency in TypeScript: understanding interfaces, types, generics, and avoiding "any"
- Experience in unit testing: ability to write tests using frameworks like Jest, vitest, tap, mocha, and understanding test isolation and snapshot testing
- Bonus knowledge in RxJS: understanding reactive programming and combining async events
- Familiarity with automated browser testing: knowledge of tools like Cypress, Playwright, Puppeteer
- Understanding of Node.js: ability to navigate Node-based tools and dependencies
- Being a compassionate and friendly team member: showing respect, empathy, and inclusivity
- Being pragmatic: delivering incomplete or imperfect solutions that can be iterated over time
- Conscious about readable and maintainable code: following coding style, best practices, and guidelines
- Effective collaboration with diverse roles and backgrounds: working with product managers, developers, clients, and content authors.
Requirements
- Experience in building APIs, both internal and external, with a focus on high-level problem-solving
- Familiarity with reactive APIs and real-time collaboration
- Proficiency in debugging and optimizing React-based applications
- Willingness to learn from and teach others, including content editors and developers
- Commitment to continuous improvement, including test coverage, API robustness, and staying up to date with dependencies
- Experience with complex web applications, including local state management and reacting to remote changes
- Ability to work on impactful projects with a large user base
- Willingness to explore new patterns, tools, and technologies
- Proficiency in React, including useState, useEffect, and React developer tools
- Knowledge of state management techniques, such as Reflux, Redux, or Zustand
- Understanding of core web and browser concepts, including HTTP requests, event loops, promises, and browser APIs
- Familiarity with module systems and bundling, such as Webpack, Vite, and Rollup
- Proficiency in TypeScript, including interfaces, types, and generics
- Experience with unit testing frameworks like Jest, vitest, tap, or mocha
- Knowledge of RxJS for driving reactivity and handling async events
- Familiarity with automated browser testing tools like Cypress, Playwright, or Puppeteer
- Understanding of Node.js for working with Node-based tools and dependencies
- Compassionate and respectful attitude towards colleagues and users
- Pragmatic approach to delivering solutions, even if they are incomplete or imperfect
- Focus on writing readable and maintainable code, following best practices and guidelines
- Effective collaboration skills with individuals from different roles and backgrounds.
Benefits
- Highly-skilled, inspiring, and supportive team
- Positive, flexible, and trust-based work environment
- Remote/WFH on the Central/East Coast in the US or Canada
- Universal healthcare, support for physical and mental health, and parental leave
- Healthy work-life balance with flexible work hours
- Competitive salary and stock options program
- Equal employment opportunity regardless of race, color, ancestry, religion, sex, national origin, sexual orientation, age, citizenship, marital status, disability, or gender identity