Senior Software Engineer - Developer Experience
Sanity.io
·
Posted:
August 22, 2023
·
Remote
About the position
We are seeking a developer to join our Developer Experience team and contribute to the creation of a real-time collaborative editing platform for structured content. The role involves building APIs, ensuring reactivity and collaboration, debugging and optimizing performance, learning from the community, continuously improving the product, and contributing to an open-source project. The ideal candidate should have experience with web applications, be proficient in React and state management, possess knowledge of core web and browser concepts, be familiar with module systems and bundling, and have a good understanding of TypeScript and unit testing. Being compassionate, pragmatic, and conscious about code quality, as well as having effective collaboration skills, are also important for this role.
Responsibilities
- Building APIs: planning and implementing beautiful, minimal APIs for internal and external developers
- Thinking about collaboration: ensuring real-time reactivity and presence indicators for collaborative editing
- Debugging and optimizing: monitoring performance and optimizing the 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 the open-source project and making public contributions
- 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 the use of "any"
- Unit testing: ability to write tests using frameworks like Jest, vitest, tap, mocha, and understanding test isolation and snapshot testing
- Bonus knowledge: familiarity with RxJS, automated browser testing tools like Cypress, Playwright, Puppeteer, and Node.js for backend development
- Being compassionate and friendly: showing respect and empathy towards colleagues and users
- Being pragmatic: delivering incomplete or imperfect solutions for iterative improvement
- Writing readable and maintainable code: following coding style guidelines and best practices
- Effective collaboration with diverse roles and backgrounds: working with product managers, developers, and external clients.
Requirements
- Building APIs: planning and implementing minimal APIs for internal and external developers
- Thinking about collaboration: creating reactive APIs for real-time changes in content
- Debugging and optimizing: identifying and optimizing performance issues in a React-based app
- Learning and teaching: learning from the community and teaching best practices to developers
- 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
- Knowledge of React, including useState, useEffect, React developer tools, and optimization techniques
- Familiarity with state management tools like Reflux, Redux, or Zustand
- Understanding of core web and browser concepts, including HTTP requests, event loop, promises, browser development tools, and DOM APIs
- Familiarity with module systems and bundling tools like Webpack, Vite, and Rollup
- Proficiency in TypeScript, including interfaces, types, and generics
- Experience with unit testing using frameworks like Jest, vitest, tap, mocha, and understanding of test isolation and snapshot testing
- Knowledge of RxJS for handling real-time events and async event combination
- Familiarity with automated browser testing tools like Cypress, Playwright, and Puppeteer
- Understanding of Node.js for working with Node-based tools and dependencies
- Compassionate and friendly attitude, showing respect and empathy towards colleagues and users
- Pragmatic approach to delivering incomplete or imperfect solutions that can be iterated over time
- Focus on writing readable and maintainable code with consistent style and adherence to best practices
- Effective collaboration with people of different roles and backgrounds, including product managers, developers, and external clients.
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
- Opportunity for personal growth
- Inclusive and diverse team culture
- Equal employment opportunity regardless of race, color, ancestry, religion, sex, national origin, sexual orientation, age, citizenship, marital status, disability, or gender identity