Principal Full Stack Java Software Engineer (Machine Learning)
|Location:||Sydney CBD, New South Wales|
|Salary:||Attractive salary package|
This successful and growing technology company is looking to add to their talented Sydney based team a Principal Full Stack Java Software Engineer.
Established in Sydney nearly 20 years ago, this company now has thousands of customers in more than 70 countries around the world using their products, which employ machine learning technology (amongst other things). Their products are highly regarded and market leading, and the company currently employs around 500 staff globally.
The Principal Engineer will be a key hire, as one of the most senior roles in the engineering department, reporting directly to senior management.
Whilst the role is hands-on, it is also a coaching and mentoring role, as well as working with senior management to support and champion the mission and values of the team. They are building a fantastic, high-quality engineering culture, and this person will demonstrate the skills and personality to enhance that further.
The role will involve
- Gaining and maintaining a deep understanding of one or more products, as well as a general understanding of all the company's products.
- Engage in hands-on, in-depth analysis, review and design of software, including technical review and analysis gathering.
- Deliver scalable and high quality solutions as part of an Agile team.
- Collaborate across teams to achieve seamless integrations.
- Macro scale architecture of the software technology.
- Provide oversight to multiple development teams to ensure the technologies interoperate with or connect to each other.
- Act as a technical expert advising engineering on one or more specific problem domains - e.g. machine learning.
- Actively monitor technology trends that may create opportunities for the company.
- Provide guidance to the team to ensure they develop from approved designs and/or requirements, making efficient use of the company's software development environment.
- Leading planning, backlog and technical design discussions.
- Coaching and mentoring team members.
Skills, Knowledge and Experience
- At least 10 years' relevant programming experience, and a demonstrable track record of providing technical solutions to complex problems.
- A strong knowledge of computer science (data structures, patterns, system design).
- Experience building Core Java applications (Java SE), not just web frameworks.
- Solid knowledge of multi threading and messaging concepts.
- Good knowledge of Unix, Scripting and Networking fundamentals.
- Expert Java knowledge, including familiarity with Java 8 and/or 9.
- Knowledge of Spring and Spring Boot.
- Knowledge of NodeJS, Webpack, Grunt, Gulp or similar.
- Experience with Cloud / AWS services: EC2, CloudFront, RDS. Some knowledge of Kubernetes is desirable.
- Good knowledge of modern Java web applications (e.g. Spring Boot backend, on Tomcat, with reach FE), although the role will spend significant time on other products (desktop applications - Java SE with Swing FE).
- Experienced in troubleshooting and debugging problems.
- Ability to accurately estimate development and testing effort.
Behavioural Skills and Characteristics
- Ability to collaborate and communicate effectively across multiple teams.
- A genuine desire to help mentor and develop other Engineers in the technical aspects of building great software.
- Approachable and focused on the team.
- Degree, or equivalent, in a relevant field such as computer science / engineering, software engineering, machine learning, mathematics etc.
This is a fantastic opportunity to join a growing, global company which is fostering a high-quality environment in which to work and learn.
The package is attractive for the right person.