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

Learn more/Apply for this position