Skills
- Python
- MVC
- Linux
- JavaScript
- AngularJS
- ReactJS
Job Description
Position Purpose:
The Software Engineer Principal is responsible for joining a product team and contributing to the software design, software development, and overall product lifecycle for a product that our users love. The engineering process is highly collaborative. In addition to pairing, Software Engineer Principals field questions from other product teams and encourage cross-team collaboration. They also play an active role working with 3rd party vendors as well as the open-source community.
Software Engineer Principals create foundational code elements that can be reused as well as architectural diagrams and other product-related documentation. They also define service level objectives for products. In addition, Software Engineer Principals may be involved in product configuration, performance tuning and testing as well as production monitoring.
As a Software Engineer Principal, you will be an extremely knowledgeable Engineer on the product team and are expected to build and grow the skillsets of the more junior engineers. There is also an expectation that the Software Engineer Principal will demonstrate expertise around modern software design and development.
Key Responsibilities:
- 70% Delivery & Execution
- Collaborates and pairs with other product team members (UX, engineering, and product management) to create secure, reliable, scalable software solutions
- Documents, reviews and ensures that all quality and change control standards are met
- Writes custom code or scripts to automate infrastructure, monitoring services, and test cases
- Writes custom code or scripts to do destructive testing to ensure adequate resiliency in production
- Creates meaningful dashboards, logging, alerting, and responses to ensure that issues are captured and addressed proactively
- Contributes to enterprise-wide tools to drive destructive testing, automation, or engineering empowerment
- Identifies product enhancements (client-facing or technical) to create a better experience for the end users
- Identifies unsecured code areas and implements fixes as they are discovered with or without tooling
- Identifies, implements, and shares technical solutions that can be used across the organization
- Creates and architects foundational code elements that can be reused many times by a product
- Creates meaningful architecture diagrams and other documentation needed for security reviews or other interested parties
- Defines Service Level Objectives for product to constantly measure their reliability in production and help prioritize backlog work
- 20% Support & Enablement:
- Fields questions from other product teams or support teams
- Monitors tools and participates in conversations to encourage collaboration across product teams
- Provides application support for software running in production
- Proactively monitors production Service Level Objectives for products
- Works with vendors and the open-source community to help identify and implement feature enhancements in software products
- Works with other product teams to create API specifications and contracts for shared data
- Proactively reviews the performance and capacity of all aspects of production: code, infrastructure, data, and message processing
- Triages high priority issues and outages as they arise
- 10% Learning:
- Participates in and leads learning activities around modern software design and development core practices (communities of practice)
- Learns, through reading, tutorials, and videos, new technologies and best practices being used within other technology organizations
- Attends conferences and learns how to apply new technologies where appropriate
Minimum Qualifications:
- Must be eighteen years of age or older.
- Must be legally permitted to work in the United States.
- Mastery of an object oriented programming language (preferably Java)
- Must be legally permitted to work in the United States
Preferred Qualifications:
- 6-8 years of relevant work experience
- Mastery with Java architecting and design
- Mastery of a modern scripting language (preferably Python)
- Good knowledge about the Cloud platforms preferably Google Cloud PlatformÂ
- Mastery in successful application of design patterns
- Mastery of a modern web application framework such as Ruby on Rails, Spring MVC, and Node.js
- Mastery of writing SQL queries against a relational database
- Mastery of a version control systems (preferably Git)
- Proficient in a front-end technology and framework such as HTML, CSS, JavaScript, AngularJS, ReactJS, and JQuery
- Proficient in a Linux or Unix based environment
- Proficient in a CI/CD toolchain
- Proficient in destructive testing methodologies and tools
- Proficient in production systems design including High Availability, Disaster Recovery, Performance, Efficiency, and Security
- Proficient in defensive coding practices and patterns for high-availability
- Proficient in modern microservice-based architectures and methodologies
- Proficient in successful application of design patterns
- Proficient in test-driven development and effective unit test creation
- Proficient in query optimization and troubleshooting
- Experience in working with 12-factor methodology and understanding its benefits, and able to demonstrate appropriate patterns to more junior team members
- Proficient in designing and implementing RESTful web services