Our Client is looking for a Principal Software Engineer to play an important role in leading other software engineers in implementing projects. You will: Design, Implement, and Test software related to our software/services. The Principal Engineer will act as a "Software Team Lead" over the other company team leads, and must be able to provide extremely technical hands-on development, architecture, and leadership.
About You:
- Bachelor's Degree (BA, BS, or MS in Computer Science) or equivalent experience.
- Minimum 8 years of development experience, at least 2 years in a commercial environment for a consumer-facing product.
- Experience leading a team of skilled software developers.
- Experience mentoring developers to increase quality and effectiveness.
- Expert Knowledge of with .NET Core and C#.
- Experience with Modern JavaScript such as Angular 2+, React, and TypeScript.
- Proficient building solutions using AWS or equivalent technologies.
- Experience with scalable distributed systems.
- Extensive knowledge of object-oriented programming.
- Experience working with RDBMS.
- Experience working with MongoDB or other NoSQL technologies.
- Ability to troubleshoot, debug, and performance tune software code.
- Strong analytical skills, attention to detail, and a careful approach to handling issues.
- Understanding of software algorithms and ability to determine runtime complexity of algorithms.
- Proficient with containers and orchestration.
What You Will Do:
- Gather requirements to design and plan software solutions
- Design and implement software solutions by writing code in a matter consistent with the company's coding standards and guidelines.
- Manages programming tasks and ensures they are worked on in priority order as determined by their manager.
- Keep track of bugs in the code, and provides fixes in a timely manner.
- Participate in the planning and scheduling of tasks, and responsible for meeting deadlines as determined jointly with their manager.
- Put comments in code as appropriate, and produces external documentation for more complex software components.
- Recommend changes and improvements in the overall shared codebase.
- Stays up-to-date with current development tools, processes, and techniques as related to the type of programming tasks assigned.
- Provide information by collecting, analyzing, and summarizing development and service issues.