Position Summary
We’re looking for a full stack software developer to join our team to help us build and extend our platform and services. The developer will be responsible for applying business requirements and knowledge of software development lifecycles to design, produce and guide the development of complex software products or customer solutions.
Key Responsibilities and Accountabilities
• Demonstrates extensive knowledge of technologies and/or subjective matter expert knowledge of a technology, advising others on design, development and implementation
• Advances tools and applications by producing expert code and producing the right solutions needed
• Manages own workload and promotes an inclusive and open culture
• Is regarded as the point of contact in their domain by showing significant depth of knowledge and expertise in software development and develops further knowledge of other domains to act on linkages and dependencies
• Understands how the technology / domain strategy relates to and impacts own work, supporting the implementation of strategy and culture within all work. Contributes to strategy definition where appropriate
• Develops an understanding of the market and client's commercial position in it
• Leads the delivery of important projects, working autonomously and with little direction; may ensure the delivery of work from other team members, delegating work when required
• Works with architects to decompose a solution into Epics
• Leads design work and planning for Epics breaking them down to stories with product owners and quality leads
• Adapts existing patterns to develop robust solutions
• Builds trusting relationships with internal and external stakeholders, growing own network and collaborating with other teams. Communicates complex / technical information clearly and concisely in an audience appropriate format
• Continues to develop technology and industry expertise through certifications, professional qualifications and networking events.
• Work with a broader cross-functional team that includes other developers, testers, and product managers.
• Learn to provide high quality code and technical design reviews.
• Contribute to the code base, with a mind to best practices and an equally high degree of autonomy.
Skills and Proficiency
• Agile: Deploys agile best practices as appropriate throughout the software development lifecycle.
• Architecture design: Analyses infrastructure requirements and designs the architecture for central or distributed processing to meet user requirements.
• Automation: Creates, applies and implements technologies to deliver and produce services with minimal human intervention, to improve the efficiency, reliability and speed tasks.
• Application development/programming: Develops, tests and maintains software applications and related programs and procedures; demonstrates creativity and innovation using available software development tools and following design requirements.
• Documentation: Creates and maintains documentation to describe the system and its parts, including requirements documents, design decisions, architecture descriptions, program source code and support documentation.
• In-depth/breadth tech expertise (breadth): Possesses depth of technical expertise, knowledge of technologies and design, development and implementation of technologies.
• System and technology integration: Possesses knowledge of features and facilities for integration, and communication among applications, databases and technology platforms to bring together different components and form a fully functional solution to a business problem.
• Domain expertise: Possesses technical knowledge of tools and trends within industry; stays current in possible future policies, practices, trends and information affecting prospects or customer businesses and their internal organisation; knows the competition; is aware of how strategies and tactics work in the marketplace.
• Innovative thinking: Shows ability to come up with new ideas and novel approaches to problems and establish solutions through different methods.
• Problem solving: Defines a problem, generates solutions, and evaluates and identifies the best solution to overcome the problem.
• Relationship building: Interacts well with others, quickly establishing rapport building positive relationships and networks.
• Quality assurance: Ensures a product/service meets or exceeds specified standards and objectives to achieve desired level of quality.
Experience and Qualifications Required
• A Bachelor’s Degree in Computer Science, or a related engineering discipline.
• 8+ years of experience in modern programming languages, preferably Java and TypeScript working with a variety of technologies, including ReactJS, MongoDB, PostgreSQL.
• Experience using Kubernetes, Docker, and Jenkins, for containerization and CI/CD is a plus.
• Knowledge of scalable distributed systems with deep understanding of object oriented design and design patterns.
• Knowledge of designing APIs and microservices.
• Experience working on web technologies.
• Deep understanding of messaging systems.
• Excellent communication skills and ability to work effectively with developers, testers, and business stakeholders.