The Principal Software Engineer will provide leadership and direction to the development team. The role will be responsible for the management of the delivery of all software components with an overriding commitment to the highest standards of quality in design and development, reducing rework and improving consistency, quality, and speed of delivery. Will work closely with Business Analysts, Solution Architects, Quality Assurance, Project Managers, Client Services and Clients to ensure that solution design, test plans and released code meet client expectations in terms of quality, timing and cost.
- Responsible for delivering software that aligns to the company products, delivering solutions on time and within budget, managing actuals versus estimates, and ensuring development best practices including design, documentation, coding, unit testing and peer review.
- Experiment with, and introduce, new technology to improve software solutions.
- Work with Architecture and Senior Leaders on technology strategy.
- Instill an “On Time, and Right the First Time” culture within the development team.
- Work with Business Analysts and Solution Architects to provide appropriate estimates for efforts that include time to understand requirements and the proposed solution, carry out necessary design work, design and build unit tests, write code, carry out peer reviews and subsequently test code.
- Work closely with the Project Management team to ensure appropriate resources are available to deliver against project deadlines and to pragmatically manage resource conflicts.
- Foster a culture of ownership and accountability across the team for the solutions developed.
- Make sure that the Development team take pride in their work and fully understand the business benefits of their efforts.
- Ensure a consistent approach to Development that ensures maintainability of all code going forwards.
- Mentor Development team and assure that individuals are being challenged and supported at the same time.
- Manage the peer review process.
- Lead Development team, ensuring resource levels, skills and quality are maintained to appropriate levels at all times.
- Provide forward thinking in terms of exploiting new tools that will improve the delivery capability of the Development team.
- 10+ years of commercial software development experience.
- 5+ years of experience leading development teams.
- Bachelor’s degree in Computer Science or similar discipline.
- Experience in both frontend and backend technologies.
- Deep Expertise in Java with proficiency in at least one other programming language.
- Experience in scripting languages like Python.
- Familiarity with modern frameworks like Spring.
- Experience with high volume transactional systems.
- Experience with test driven development.
- Experience integrating with 3rd party API’s, e.g., in the social media space.
- Familiarity with public cloud providers/services (Azure, AWS, GCP).
- Solid background in SDLC, from building, testing, quality to release (e.g., Maven, Junit, Cucumber, Sonar, Clover, DBDeploy, etc.)
- Experience with continuous integration, code coverage tools, source control management tools (e.g., Jira, BitBucket, Bamboo, Jenkins, Artifactory, Crucible, etc.)
- Preferred experience developing cloud-based solutions with good knowledge in web/application servers (Nginx, Apache, JBoss).
Preferred Skills & Abilities:
- Solid working knowledge and experience applying OO principles and functional programming.
- Ability to code software according to published standards and design guidelines.
- Excellent communication skills, written and verbal.
- Skilled in working with both relational and non-relational databases.
- Proficient in DevOps/Continuous Delivery and related infrastructure-as-code tools.
- Solid analysis and design skills.
Interested candidates can apply online or email your CV to firstname.lastname@example.org