Our client, a leading Financial Services technology company, is seeking a talented Principal Software Engineer.
As a Principal/Lead Software Engineer, you will be working in a high-energy team, writing beautiful code using the best engineering practices in the industry today. Passion for problem solving and all aspects of software development is a critical. We are building teams that are empowered to solve the business needs by having a rapid development and deployment pipeline with a focus on automation and continuously releasing software.
As a key contributor to the Scrum team, you will be responsible for leading the team to deliver solutions that adhere to the software architecture strategy, coding standards, and established organizational policies and procedures and providing technical and architecture guidance to others in your areas of expertise
Job Functions, Essential Duties and Responsibilities
- Analyze software requirements to determine best solution to deliver business goals including estimating and planning throughout an agile software development lifecycle
- Modify codebase to implement complex software modifications following appropriate standards for coding and design patterns, source code control, unit testing, and continuous integration and deployment
- Analyze and troubleshoot complex errors in software application to determine root cause and resolution
- Assist with testing and written description of application software changes
- Collaborate with team members, actively participate in all Scrum ceremonies and activities including pair programming and peer code review with a constant focus on continuous improvement
- Establishes alignment with Product Owner to understand, influence, and deliver on road maps with a sense of responsibility for application architecture and technical execution
- Be a driver for innovation on the scrum team by leading or assisting in technical research initiatives, working with other teams, participating in technical architecture discussions to influence decisions and maintain consistency across the organization.
- Lead by example, act as a role model, coach, mentor and provide continuous feedback to other team members, especially in the areas of technical and architecture expertise or when production issues arise
- Bachelor’s degree in computer science, engineering or related experience preferred.
- At least 8 years of professional experience developing software & systems on the Microsoft Technology Stack using C# and .Net
- Strong technical leadership skills for effective participation in design discussions with both technical and non-technical audiences creating technical documentation and diagrams
- Experience mentoring and technical coaching less experienced developers
- Extensive understanding of good object-oriented design principles (patterns, cohesion/coupling, S.O.L.I.D., data structures and algorithms)
- Strong experience with a relational database such as Sybase, MSSQL, Oracle
- Strong experience with distributed systems, Services Oriented Architecture, RESTful services and Microservices development
- Strong understanding of web technologies such as HTTP, Apache, HTTP Proxies
- Strong experience with multi-threaded applications and memory management
- Strong experience writing clean and maintainable code using engineering best practices such as unit testing, TDD, continuous integration and deployment, automation, design patterns, refactoring, etc
- Strong experience with Agile SDLC practices
- Excellent problem solving and communication skills
- Strong trouble shooting skills
Nice to Have Skills
- Experience with Containerization, Docker & Kubernetes
- Experience with GraphQL
- Experience with Public API
- Experience with at least one modern JS front-end framework (ReactJS, KnockoutJS, AngularJS, Bootstrap) with a preference for ReactJS