Lead Software Engineer
Summary
Lead Software Engineer based in London who designs, builds, and maintains microservices primarily in Golang. Day to day they set architecture best practices for scalability and reliability, collaborate with cross-functional teams on requirements, and mentor teammates on microservices design patterns.
- Establish and enforce best practices for microservices architecture to ensure scalability, reliability, and maintainability.
- Collaborate with cross-functional teams to gather project requirements and deliver scalable solutions.
- Mentor and guide team members on microservices design patterns, principles, and technologies.
- Design, develop, and maintain microservices, primarily using Golang.
- Continuously improve services by fixing bugs, enhancing performance, and adding new features.
- Containerize microservices and prepare deployments for Kubernetes environments using Helm charts.
- Ensure the resilience and reliability of deployed services.
- Gain a comprehensive understanding of the end-to-end technical architecture and apply this knowledge in development.
- Develop and maintain high-coverage automated tests (unit, contract, integration, e2e).
- Manage source code using Git and handle build, test, and deployment processes with CI/CD pipelines.
- Build and test solutions remotely, deploying to lower-level environments as needed.
- Conduct code reviews to identify errors and improve code quality, performance, and readability.
- Lead design and process discussions, driving technical decisions within the team.
- Report project status and manage risks for assigned applications/services.
- Participate in demos and acceptance discussions with stakeholders.
- Assist in sprint-based task planning, estimation, and review.
- Own the delivery of assigned tasks, including design, development, testing, deployment, configuration, and documentation.
- Collaborate with data science teams to implement and engineer features based on their requirements.
- Bridge the gap between architecture and engineering, aligning development with architectural guidance.
- Write high-quality production code in Python/Golang and SQL; be open to learning new languages and frameworks.
- Work with large data volumes and build high-throughput, low-latency solutions using Kafka and Kubernetes.
- Apply modern service design approaches, leveraging containers, orchestration tools, APIs, and NoSQL/in-memory data stores.
- Resolve technical challenges by selecting pragmatic or rigorous solutions as appropriate.
- Follow devops-based workflows, contributing to continuous integration and deployment processes.
- Communicate effectively with various stakeholders, including engineers, analysts, devops, security, and data science professionals.
- Adhere to code review, version control, and change control best practices, balancing quality and scalability.
- Optimize solution performance within given technology constraints.
- Engage with or show willingness to productionize machine learning solutions and large-scale feature engineering.