The Principal Software Engineer writes and maintains code within applications and systems to implement capabilities and features, improve performance and maintainability, while reducing technical debt in alignment with product and technology roadmaps. The Software Engineer plays a role in Agile planning, providing advice and guidance, and monitoring emerging trends. Key Responsibilities:
- Works with Product Management to understand the challenges that customers and end users face in their day-to-day work and partner with them to design viable solutions.
- Recommends viable solutions to processes, technology, and interfaces that improve the effectiveness of the team and reduce technical debt.
- Foresees capacity requirements for component usage and identifies limitations.
- Provides input into story sizing, backlog grooming, and release planning.
- Contributes to product and solution designs to address critical issues and complex problems.
- Understands technical architecture and writes software and automated tests that are aligned with agreed upon standards.
- Performs trouble-shooting efforts and investigations when necessary.
- Provides ongoing support, monitoring, and maintenance of deployed products.
Knowledge & Experience:
- Advanced knowledge in Windows Server 2008, 2012, 2016 & 2019 or Linux
- Experience with virtualization technologies such as VMware vSphere and OpenStack
- Continuous integration and deployment tools like Jenkins
- Practical experience with modern scripting languages Python, Powershell, etc
- Experience using Windows Powershell to automate tasks
- Familiarity with open source configuration, orchestration, and CI/CD tools
- AWS Certification in Development, Architecture, and/or DevOps or equivalent work experience
- Experience architecting, implementing and managing public cloud integration and configuration activities in both AWS and Azure
- Logging (Splunk), and CDN (AWS and Akamai) experience
- Lead a team of SRE’s on projects for users and be directly responsible for uptime.
- Ensure reliable and secure production and pre-production environments
- Working experience in software performance engineering in a large-scale environment
- Working experience optimizing website performance with strong knowledge in networks, browsers, content delivery, etc.
- Working experience of TCP/IP, networking topology, routers, switches
- Working experience in identifying system bottlenecks, architectural risks, and issues
- Working experience with source code control systems
- Knowledge of functional automation testing and tools
- Responds to production performance issues and sees those performance issues through resolution.
- Performs deep performance related diagnostic troubleshooting / analysis.
- Makes performance recommendations to developers based on results and code identifications.
- Communicates performance analysis to stakeholders and suggests applicable changes.
- Identifies workflows and system characteristics to be performance tested and monitored.
- Defines performance benchmarks and SLA’s.
- Writes, debugs and executes code used in performance/monitoring efforts.
- Analyzes test results to identify issues, and works with architects and developers to suggest improvements and drive issues to resolution.
- Analyzes production monitoring metrics to trace back to test results and offer suggestions for areas performance improvements.
- Works with team to ensure quality and standardization of performance test plans, scripts, and results.
- Control system design practice within an enterprise or industry architecture.
- Influence industry-based models for the development of new technology applications.
- Develop effective implementation and procurement strategies, consistent with business needs.
- Ensure adherence to relevant technical strategies, policies, standards and practices.
- Design, code, test, correct and document programs and scripts from agreed specifications, and subsequent iterations, using agreed standards and tools, to achieve a well-engineered result.
- Take part in reviews of own work and leads reviews of colleagues’ work.
- Establish standards and procedures across the technology service lifecycle (including the development lifecycle) in the areas of systems integration and testing and ensures that practitioners adhere to them.
- Manage application enhancements to improve business performance.
- Bachelor’s degree in Computer Science or related field and 10+ years of working experience or Master’s with 8+ years experience
- Working experience in design, development, and implementation of highly scalable, high-volume software systems and components, client-facing web applications, and major Internet-oriented applications and systems
- Working experience realizing applications from conception and design, to implementation and support
- Working experience with application lifecycle methodologies (e.g. agile, iterative)
- Working experience in analysis, design and programming
- Working experience with appropriate database technology