The Principal Software Engineer will be part of an agile development team, building enterprise grade Applications with different platforms. The Principal Software Engineer is responsible for and owns the architecture and design of projects; the PE is also responsible for coaching, and mentorship of the teams he/she works with. The PE is a key member of the Architecture Board in shaping the technical road map and standards for iHerb Supply Chain Solutions applications.
- Responsible for the ownership (architecture/design/implementation and deployments) of complex software components and systems
- Follow secure programming and web application security best practices
- Regular practice of CI/CD
- Lead the team’s software architecture and design
- Coach the team on software best practices (design, coding, troubleshooting, work breakdown, work estimation, refactor strategies, automated testing, etc.)
- Must be able to mentor all levels
- Work closely with the other teams to optimize system architecture and project efficiency
- Partner with our Product Owner to plan work and prioritization
- Provide technical leadership to teammates through coaching and mentorship.
- Maintain high standards of software quality within the team by establishing good practices and habits.
- Provide regular updates on projects and team performance
- Identify and encourage areas for growth and improvement within the team.
- Assist in the collection and documentation of user's requirements, development of user stories, estimates and work plans.
- Collaborate and add value through participation in peer code reviews, providing comments and suggestions
- Analyze and resolve technical and application problems.
- Travel may be required
- Research and evaluate a variety of software products
Knowledge, Skills and Abilities:
- Solid communication skills
- Must be able to coach the team on software best practices (design, coding, troubleshooting, work breakdown, work estimation, refactor strategies, automated testing, etc.)
- Ability to inspire team and a strong salesman of ideas
- Experience leading a team
- Strong knowledge and experience in Distributed systems, MicroServices, SOA and n-tier architectures
- Expert in Object-oriented Design and Analysis (OOA and OOD)
- Evaluate and identify new technologies for implementation
- Strong knowledge of C# .NET, Java or Go
- Strong knowledge of Relational and non-relational DBs
- Strong knowledge of REST Api, event-driven architecture applications, caching, scaling, security, etc
- Strong knowledge of CI/CD pipelines, automated testing and deployment
- Strong knowledge of debugging, performance profiling and optimization
- Production experience with Docker, Kubernetes is a plus
- Experience with DDD, Event-Sourcing and CQRS is a plus
- Solid communication skills
- Team player with a get it done attitude
- Experience with agile development methodologies
Education and Experience:
- Requires a minimum of eight years of experience with software development, design patterns, software architecture
- Bachelor’s Degree in Computer Science/Engineering or related fields