Position: Lead Python Software Engineer
Company: Global IT Support
Experience required: 5y
English level: upper

**About the client:**
Corsearch has more than 1500 team members serving over 5,000 clients on five continents, and we’re growing and changing rapidly. We are a fantastic company to work for — with great benefits, growth opportunities, and a terrific internal culture — and we truly believe that it’s people who make us thrive. Every day, we are transforming ourselves into a better partner for our customers, a better employer for our colleagues, and a better investment for our owners. Corsearch is growing fast and is always looking for new talented people to be part of the journey.

**Requirements:**
Bachelor of Computer Science (BSc), Engineering, or equivalent qualification;
Good knowledge of modern image processing techniques;
Excellent knowledge of data processing systems and scalability;
Modern web application development including RESTful web service development, databases, and operating systems;
In-depth experience of the software development lifecycle and code repositories such as git, including branching and merging flows;
Python, Golang, AWS, GCP, MySQL, Postgres, Airflow, Kafka (preferred);
Linux toolchain.

**Responsibilities:**
Leading a cross-functional team to develop software components that deliver value to stakeholders;
Line-managing other software engineers across the flat-structure org;
Bringing technical direction and vision to the delivery of the product, participating in Discovery and keeping engineering standards in place;
Specifying and designing software to meet defined requirements by following agreed design standards and principles;
Working with a team to deliver outcomes through software development;
Identifying, creating, and applying software development and security standards and processes;
Planning and designing software applications, components, interfaces, and related characteristics (including security);
Estimating time and effort required for software development;
Constructing, amending, and verifying software components;
Applying test-driven development and ensuring appropriate test coverage;
Using peer review techniques — such as pair programming;
Documenting software components;
Understanding and obtaining agreement to the value of the software components to be developed;
Selecting appropriate development methods and life cycles;
Applying recovery techniques to ensure the software being developed is not lost;
Implementing appropriate change control to software development practices;
Using design concepts and patterns to develop software design and providing the basis for software construction and verification;
Adopting and adapting software design models, tools, and techniques based on the context of the work;
Resolving operational problems with software and fixing bugs.