San Francisco, CA – FTE
Seeking a Principal Software Engineer interested in web products and site reliability to develop and improve our award-winning software. As an engineer in this position, you will lead projects to refactor and modularize code in order to make the system more scalable as well as implement features that support our product. This position is part of a fun and highly technical team responsible for maintaining critical business workflows in our SaaS application.
Responsibilities:
- Improve the quality of a large web software application
- Support the move to a microservice architecture by designing and writing new services that can gradually replace portions of the legacy codebase
- Support existing features while improving the quality of the current codebase
- Increase the number, quality, and reach of unit and integration tests
- Investigate and address production issues
- Work closely with software architects and database/operations engineers on system infrastructure and design
- Foster engineering best practices and technical excellence through mentoring of engineers and working closely together on projects (e.g. pair programming, code review)
- Provide technology analysis, proof of concepts, pilots, evaluations, and recommendations across the various heterogeneous technology stacks (LAMP, Java, Ruby on Rails, Go, Node.js, iOS,
- Android) and programming languages within client
- Implement highly scalable, elegantly simple, secure, maintainable, and modular commercial grade new software for the core client technology stack
- Accelerate the reduction of technical debt across our production software systems
- Evangelize and implement engineering and testing best practices across the company (code reviews, SCM conventions, tools, etc)
- Contribute to efforts to investigate, document, drive, and define goals, non-goals, formulate designs, plans, and implementation strategies for our transition to a microservices architecture
- Innovate, drive, and define high impact technology research and projects
Required Skills:
- 8+ years experience writing robust web/SaaS applications in one or more high-level programming languages such as Golang, Node.js, Java, Python, and Perl
- 6+ years experience in object oriented programming with expert knowledge of distributed systems, concurrency, REST web services, SQL and no-SQL databases, and internet scalability
- Extensive experience with web application frameworks and software development best practices (e.g. test-driven development, ORM, object-oriented design, code profiling, debugging)
- Experience with container and clustering technologies like Docker, Kubernetes, Tectonic, etc in a micro-services environment
- Background in cloud technologies and frameworks such as Amazon Web Services, Google Cloud, and OpenStack a plus
- Demonstrated success working as a technical lead on one or more significant projects
- Experience using software version control systems, especially Git and GitHub
- Success in mentoring and supporting other engineers
- Ability to work with complicated legacy code
- Experience working with Linux and SQL databases
- Ability to communicate effectively with both technical and non-technical colleagues
- Experience or interest in working within an Agile model (particularly Scrum)
- A high level knowledge and experience of industry trends and technology advancements relating to distributed systems, cloud, platform as a service, software as a service
- Experience in participating in open source standards and contributing to open source is highly desirable