Principal Software Engineer (Direct Hire)
Job Requisition: 6445
Description for Principal Software Engineer:
The Principal Software Engineer, as a member of the Platform Services team, will develop detailed designs for multiple complex distributed systems. Will work closely with software development teams to bring the designs to life and bridge gaps in the integration phase.
Responsibilities for Principal Software Engineer:
- Lead all stages of software development working across project teams including refining product vision, gathering requirements, project planning, software system design, coding, testing, release, deployment and support.
- Assigned to more complex aspects of systems work and will perform programming, project management and development assignments without close supervision.
- Lead role in complex projects spanning across multiple system components
- Work in all phases of product life cycle including creating technical requirements, project planning, identifying dependencies, system architecture and development.
- Investigation and root cause analysis of software and system defects.
- Organize and drive configuration management activities of the development process
- Work directly on complex application/technical problem identification and resolution
- Work independently on complex systems or infrastructure components that may be used by one or more applications or systems.
- Mentor and assist software engineers, providing technical assistance and direction.
- Communicate with end users and internal customers to help direct development, debugging, and testing of application software for accuracy, integrity, interoperability, and completeness.
- Performs integrated testing and customer acceptance testing of components.
Requirements for Principal Software Engineer:
- Bachelor’s degree required, Masters Degree preferred.
- 15+ years software development experience.
- 7+ years demonstrated experience leading software engineering projects.
- 8+ years experience in designing and developing software applications in Java or Scala.
- Strong experience deploying and maintaining software using public clouds such as AWS or Azure.
- Demonstrated leadership on large-scale projects impacting strategic priorities.
- Ability to shift priorities, demands and timelines through analytical and problem-solving skills.
- Effectively prioritize, delegate responsibilities and execute tasks in a high-pressure environment.
- Experience with the following:
- Design, develop, deploy and maintain software at scale.
- Develop software applications using relational and Nosql databases.
- Application architectural patterns, such as MVC, Microservices, Event-driven, etc.
- Deploying software using CI/CD tools such as Jenkins, GoCD, Azure Devops etc.
- Deploying and maintaining software using public clouds such as AWS or Azure.
- Batch or stream processing systems such as Apache Spark, Flink, Akka, Storm
- Message brokers such as Kafka, Rabbitmq, AWS SQS, AWS SNS, Apache ActiveMQ, Kinesis.
- Experience designing well-defined Restful APIs
- Experience writing API proxies on platforms such as Apigee Edge, AWS API Gateway or Azure API Gateway
- Hands one experience with API tools such as Swagger, Postman and Assertible
- Test driven development and behavior driven development.
- Hands on experience with testing tools such as Selenium and Cucumber and their integration into CI/CD pipelines.
- Datastores such as MongoDB, Cassandra, Redis, Elasticsearch, MySQL, Oracle.
- Debugging and maintaining software in Linux or Unix platforms.