Principal Software Engineer
It's fun to work in a company where people truly BELIEVE in what they're doing!
We're committed to bringing passion and customer focus to the business.
iHerb is one of the leading global e-commerce retailers with its emphasis on Nutritional and Wellness products. Our mission is simple…providing the best overall value for natural products through "e-simplicity." Our values can be best defined as an environment in constant and continuous pursuit to conscientiously meet the needs of our customers, business partners, and team members while doing our part to safeguard the environment.
The Team Leader will be part of an agile development team, building enterprise grade Applications with different platforms. The Team Leader-Software Development is responsible for supervising their team members through coaching, mentorship, they are responsible for the development of their team members and for the overall performance of their teams as well as shaping the technical road map and standards for iHerb’s 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
- Guide team development efforts towards successful project delivery.
- 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.
- Prepare reports, manuals and other documentation on the status, operation and maintenance of software.
- Design, develop, and unit test applications in accordance with established standards.
- Collaborates and adds value through participation in peer code reviews, providing comments and suggestions
- Package and support deployment of releases.
- Analyze and resolve technical and application problems.
- Assess opportunities for application and process improvement and prepare documentation of rationale to share with team members and other affected parties.
- Adhere to high-quality development principles while delivering solutions on time and on budget.
- Provide third-level support to users.
- Flexible schedule to work with other time zones
- Must supervise their team’s personnel matters: scheduling resources, time off requests, recognition on a timely and consistent basis
- Monitor team members productivity and provide constructive feedback and coaching as needed
- Responsible for performance management of their team members (quarterly feedback)
- Work with HR in hiring and training top talent for their teams
- Serve as a link between team members and the management team
- Travel may be required
- Research and evaluate a variety of software products
Knowledge, Skills and Abilities:
- Solid communication skills
- Strong knowledge of system architecture, best practices and design patterns
- Strong knowledge of design and implementation of distributed systems (SOA, Micro Services, Docker, etc)
- Ability to inspire team
- Expert knowledge of and ability to communicate software architecture and design principles
- Expert in writing testable software
- Expert in design patterns which decouple the UI from the business logic
- Proven track record being technical lead of software projects from inception to successful release
- Strong knowledge in CI/CD systems
- Proficient with Object Oriented programming
- Experience leading a team
- Experience with source control systems
- Experience with agile development methodologies
- Experience with debugging, performance profiling and optimization
- Strong initiative to find ways to improve solutions, systems, and processes
- Writes and implements quality procedures.
- Must be able to manage the team’s day to day matters: scheduling resources, time off requests, feedback on a timely consistent basis
- Experience effectively working with remote teams
- Experience with user interface design and prototyping
- Experience with e-commerce
- Requires a minimum of five (5) to ten (10) years of experience with software development, design patterns, software architecture
- Bachelor’s Degree required. An emphasis in Computer Science is preferred
If you like wild growth and working with happy, enthusiastic over-achievers, you'll enjoy your career with us!