Requirements:
- At least 4+ years of experience developing commercial Enterprise Python applications using Python / Django, using UNIX / Linux;
- Ideally 2+ years of demonstrable experience in designing distributed, high-volume, highly available, complex transactional systems;
- Some hands-on experience in designing applications using the actor model;
- Demonstrable experience with TDD and / or BDD;
- Knowledge of Relational Databases;
- General understanding of the use of Docker, Ansible, Maven, Jenkins, Sonar and Git (BitBucket);
- Ability to document technical solutions in a variety of formats and to constructively share knowledge with less experienced team members;
- Ability to learn and critique new technologies quickly;
- Excellent verbal and written communication skills, including presentations to peer groups;
- Excellent teamwork skills, capable of supervising a small sub team or deputizing in a management role;
- Demonstrably being able to deal with change on a daily basis; must be comfortable both with external factors driving this change as well as internal;
- Experience in contributing to and influencing technical strategic planning or responsibility for a technical strategy
Additional Requirements:
- Experience in another popular web framework (JSF, Drupal, GWT, Spring MVC etc.);
- Hands-on experience in developing microservices using at least one popular framework (Netflix OSS, Spring Cloud, Play etc.);
- Some hands-on experience in designing distributed systems using a central ‘broker’ (such as Kafka or potentially an ESB);
- Some experience in Domain Driven Design, the actor model, event-sourcing and CQRS;
- General scripting skills: Bash, Perl, Javascript etc.
Responsibilities:
- Development of new features and functionality for products and services, including the production of unit tests as and where required;
- Active participant in reviews for products and services delivered across the wider team;
- Ensuring code quality is maintained for products and services delivered by the team;
- Ensuring that products and services adhere to agreed performance KPIs and are delivered in line with pipeline requirements;
- Ensuring that all products and services have agreed levels of test coverage, in line with requirements and adhering to agreed architectural and technology (including security) standards;
- Maintenance of relevant technical sections of the internal Knowledge Base;
- Mentorship of less experienced Software Engineers;
- Ability to input into high level estimates of software deliverables for planning purposes;
- Proactively identify and address areas of material improvement, notably around performance, security and scalability;
- Ensure that all team members have a clear understanding of the overall system architecture and design components, in the context of meeting product requirements;
- On occasion, lead an Agile workstream.
We Offer:
- Friendly and highly professional teams;
- Competitive salary and compensation package;
- Career and professional growth;
- Regular (twice a year) performance reviews;
- Low hierarchy and open communication.