Lead the way - "Lead" means staying up to date with tools, trends, technologies and best practices and then sharing that knowledge in a meaningful way to advance the overall state of technology for the entire organization.
Own key areas within our platform. "Owning" means envisioning, designing, creating, building and supporting. This infrastructure needs to operate with a high degree of operational excellence.
Support our developers. "Support" means be the go-to-person for questions but never be a bottleneck, see around the corner and anticipate developers' needs, host brown bags, knowledge-transfer sessions and generally evangelize the platform.
Be responsible for software architecture including determination of current limitations and compatibilities between subsystems, selection of new concepts and methodology, and development of major components.
Lead by example and produce high-quality code that establishes coding standards and best practices for the team.
Create technical requirements, software design specifications and other forms of architectural documentation.
Perform code reviews and have your code reviewed by peers.
Investigate and resolve application issues, bottlenecks, and inefficiencies.
Be responsible for mentoring a highly skilled set of Software Engineers.
Exert technical influence over multiple teams, increasing their productivity and effectiveness by sharing your deep knowledge and experience.
Effectively communicate technical and business risks to stakeholders to ensure that the most informed decisions are being made.
Play a critical role in planning, working closely with senior leaders to develop plans, resource requirements, and influence our long-term technical and business strategy.
BS, MS or Ph.D. in Computer Science or equivalent experience.
10+ years of software engineeringexperience, with a proven track record of leading large-scale, high availability and fault tolerant SaaS or consumer applications.
2+ years of hands-on experience as a Principal-level software engineer.
Extensive experience with service oriented architectures, design patterns, web services, and web applications development.
Deep understanding of system performance trade-offs, load balancing, and engineering for high availability.
Extensive experience with database design, queueing, caching, containers, APIs, security and the operational aspects of running large systems.
Excellent planning/execution skills including estimating and scheduling.
A strong desire, and a track record, of mentoring as well as learning from others.
Excited by building reliable, self-healing services with robust error handling.
Experience designing, developing, debugging, and operating resilient distributed systems.
Capable of driving and delivering thin slices of end-to-end functionality on a regular cadence with data-driven feedback loops.
Strong problem-solving skills; adaptable, proactive and willing to take ownership and deal with ambiguity.
Well-rounded engineering skills; full-stack development experience.
Strong experience in agile and test-driven methodologies.
Strong verbal and written communication skills. You’ll need to create consensus among passionate stakeholders in a dynamic, fast-paced environment.
Strong analytical skills and passionate about answering questions with data.
Ability to work in a fast-paced environment where continuous innovation is a way of life.