A company based in Cape Town is looking for a Lead Java Developer / Architect to join their team permanently, working remotely. CV to [Email Address Removed]
Purpose of the role:
As a Senior Software Engineer, you will be someone whose expertise directly translates into the development of robust software in the e-commerce domain. You will have the opportunity to implement best practises to improve existing software and participate in the development of new features. While we don’t promote after-hours work as part of the regular workday, we run a 24/7 business with the need to keep systems up and running. Software Engineers are expected to provide after-hours support on a rotational basis to resolve critical system issues.
Duties:
- Design and build solutions to assist our business users, and improve customer experience
- Architect and design solutions with your team
- Develop code, making major improvements to non-functional areas
- Develop high-quality production code for work of high complexity and scale
- Utilize and improve functional and non-functional testing practices
- Design solutions for complex problems with difficult decision trade-offs, typically system- or domain-wide
- Lead architecture proposals for your division’s domain
- Participate in and collaborate on architecture proposals across engineering
- Own the maintenance of architecture documentation in the team
- Support alignment of architecture across the organization
- Respond to and resolve bugs in production for systems in your division
- Respond to alerts and support incident response within your division
- Investigate and drive resolution of issues that impact multiple teams
- Triage and respond to hot-desk support tickets
- Assume technical lead on major incidents impacting the division
- Lead technical analysis, and design specification documentation
- Assist with sprint planning, work estimation, and project prioritization
- Assist the product teams in helping to determine priorities for technical projects
- Support, challenge existing, and define new engineering processes and directives
- Lead interviews and assess potential engineering candidates for skills and fit
- Review, and contribute fixes and content to internal documentation
- React to technology trends, identifying risks and opportunities for your division’s technologies, systems, and domains
- Mentor, coach, and share knowledge with your peers in your division
- Share knowledge through blog posts, tech talks, and workshops across engineering
Minimum Requirements
Formal qualifications:
- Bachelor’s Degree or Advanced Diploma in Computer Science, Mathematics, or Engineering or equivalent experience in software development.
- If you do not have a bachelor’s degree or an Advanced Diploma (Computer Science, Mathematics, or Engineering), an equivalent experience requirement must be met, which equates to a minimum of 8 years of Software Development experience
- A thorough understanding of computer science fundamentals, including object-oriented design, data structures, and algorithms
Role-specific knowledge:
- 8+ years as a Java Developer
- Experience in writing robust, efficient production code
- Experience with SQL database systems
- Experience with development in a Linux environment
- Proficient in a strongly typed opensource language such as Java, Python (Can upskill), Golang (Can upskill)
- Open to diversifying language skill set
Experience in the following will be advantageous:
- JavaScript, React, jquery
- MySQL, PostgreSQL, MS SQL
- Memcached, Redis
- Message Brokers, Queues, and Pub Subsystems (e.g., Kafka and RabbitMQ)
- Containerisation (e.g., Docker)
- Orchestration (e.g., Kubernetes)
- GitHub, Travis CI, Jenkins
- AWS, GCP, Azure