
Copy of Staff Full-Stack Software Engineer, Typescript Compilers
- Santa Clara, CA
- Permanent
- Full-time
- Lead design and implementation of high-quality, scalable, and reusable full-stack code that will enable and empower ServiceNow developers
- Architect large, loosely defined technical projects; break down into executable parts for the team
- Collaborate closely with product, SDK (Fluent), and platform teams to evolve ServiceNow's pro-developer ecosystem: the ServiceNow SDK (Fluent) and ServiceNow SDK products
- Drive the evolution of ServiceNow's Fluent DSL and its seamless integration with modern JavaScript modules, the ServiceNow IDE, and other parts of the ServiceNow platform
- Enforce engineering best practices (code reviews, testing, scalability, performance)
- Be opinionated and vocal in architectural and product decisions
- Mentor engineers, drive deep technical exploration, and champion developer experience (DevX)
- Experience in leveraging or critically thinking about how to integrate AI into work processes, decision-making, or problem-solving. This may include using AI-powered tools, automating workflows, analyzing AI-driven insights, or exploring AI's potential impact on the function or industry
- Experience in using AI Productivity tools such as Cursor, Windsurf, etc. is a plus or nice to have
- 6+ years of experience in developing full-stack applications
- Expert-level knowledge in JavaScript/TypeScript and modern web technologies including but not limited to:
- Hands-on knowledge of at least one popular front-end library/framework (React, Angular, etc...)
- Typescript
- Deep understanding of the TypeScript Compiler (tsc) and how it transforms code
- Experience debugging and resolving compiler errors across large TypeScript codebases
- Comfortable working with the TypeScript Compiler API or tools like ts-morph for AST introspection and transformation
- Advanced Type System: Generics, unions/intersections, conditional and mapped types, utility types (Partial, Omit, etc.)
- Type Safety Techniques: Type guards, narrowing, assertions, discriminated unions
- Type Declarations & Modules: Ambient .d.ts files, module augmentation, ESM vs CommonJS
- Tooling & Config: tsconfig.json, tsc, ts-node, linting (eslint, typescript-eslint), and formatting (prettier)
- Cross-Environment Concerns: DOM typings, Node.js typings, event handling, and runtime compatibility
- Build & Integration: Integration with bundlers (esbuild, vite, webpack), and type-safe APIs/contracts (zod, io-ts)
- AST Structure & Nodes: Understanding of syntax trees, node types, and traversal
- Parsing vs. Transformation: Converting code to AST (parsing), modifying AST (transformation), then generating code
- Visitors & Walkers: Patterns for traversing AST (e.g., depth-first, recursive visitor pattern)
- Source Maps: Mapping transformed code back to the original source
- Event loop, microtasks vs macrotasks, and async behavior
- Web Workers, Service Workers, Shared Workers
- ES Modules, bundlers (Webpack, Rollup, Vite), and tree-shaking
- JSON, structured cloning, and serialization
- Feature detection and polyfilling
- Core APIs - fs, path, http, events, stream, buffer, crypto.
- Async Patterns - event loop, promises, async/await, timers, and error handling.
- Module Systems - ESM vs. CommonJS, module resolution, and caching.
- Familiar with authoring Node-based CLIs (i.e.: yargs, commander)