Senior Software Engineer
We are looking for a Senior Software Development Engineer to help us build functional systems that improve customer experience. We’re providing you highly talented and motivated Software Development engineers to join the Engineering and Operations team working on the Microsoft Azure platform. This is a broadly defined role that encompasses many aspects of cloud engineering. The successful candidates will be multi-faceted in their interest and skillset. This role is critical to ensuring the organisation can move swiftly.
- We have a cloud footprint in both Google Cloud Platform (GCP) and Azure. We are creating a set of shared services that will be used across both cloud environments. You will be laying the foundation of our new cloud shared services – components encompassing Channel, Identity, Platform & SDK, Data Integration, Operations, Security & Governance in both GCP & Azure cloud
- Develops software solutions by studying information needs, conferring with users, studying systems flow, data usage, and work processes; investigating problem areas; and following the software development lifecycle.
- Determines operational feasibility by evaluating analysis, problem definition, requirements, solution development, and proposed solutions.
- Documents and demonstrates solutions by developing documentation, flowcharts, layouts, diagrams, charts, code comments, and clear code.
- Prepares and installs solutions by determining and designing system specifications, standards, and programming.
- Improves operations by conducting systems analysis and recommending changes in policies and procedures.
- Updates job knowledge by studying state-of-the-art development tools, programming techniques, and computing equipment, and by participating in educational opportunities, reading professional publications, maintaining personal networks, and participating in professional organizations.
- Protects operations by keeping information confidential.
- Provides information by collecting, analyzing, and summarizing development and service issues.
- Accomplishes engineering and organization mission by completing related results as needed.
- Supports and develops software engineers by providing advice, coaching, and educational opportunities.
- Develop and document cloud best practices, guidelines, and guardrails cloud technologies
- Manage cloud environments in accordance with best practices
- Operationalise solutions from proof-of-concept through production, using automation for repeatability, maintainability, and to enforce standards
- Deploy and troubleshoot cloud technologies in accordance with IT security guidelines.
- Implement integrations requested by customers
- Build tools to reduce occurrences of errors and improve customer experience
- Develop software to integrate with internal back-end systems
- Perform root cause analysis for production errors
- Create and maintain optimal data pipeline architecture and system architecture.
- Continually, Identify, design, and implement internal process improvements: automating manual processes, optimizing data delivery, re-designing infrastructure for greater scalability, etc.
- Provide immediate support in troubleshooting and resolving issues with existing .Net applications
- Collaborate on technical design and the development of web applications following standards, guidelines, and project requirements
- Produce clean, stable, fast, well-architected code and solutions
- Develop frameworks of reusable, extensible code and components to maximize development efficiency
- Provide estimates for projects based upon technical and business requirements
- Assist with code reviews to ensure architecture and coding standards are met across all web projects
- Develop web-based applications using the latest technologies.
- Create data tools for engineering and data scientist team members that assist them in building and optimizing our product into an innovative industry leader.
- Maintain an active continuous integration environment, developing system configuration management, good security practices and supporting production applications
- Implement and enforce standard data and network security protocols.
- Configure and automate Cloud Services instances and services
- Encourage the use of best security practices among the company.
- Write or Implement tools to improve the delivery of applications.
- Work with the engineering team and take architectural decisions impacting deployment
- Bachelor’s Degree in Computer Science or related field or equivalent experience
- Bachelor’s Degree AND 5+ years of professional software engineering experience OR 10+ years of professional software engineering experience
- Experience using system monitoring tools (e.g. New Relic) and automated testing frameworks
- Expertise in Python and other automation languages (Go,.Net Core etc.)
- A successful history of manipulating, processing and extracting value from large datasets.
- Advanced Knowledge of Cloud Services, SaaS, PaaS, IaaS is desired.
- Experience designing and implementing cloud solutions using IAAS and PAAS
- In-depth knowledge of relational databases (e.g. PostgreSQL, MySQL) and NoSQL databases (e.g. MongoDB)
- Familiarity with various operating environments (Linux, Mac OS, Windows)
- Experience building containerized and serverless applications in AWS, Azure or GCP using NodeJS or other modern languages.
- Experience setting up a Continuous Integration and Continuous Development pipeline using Jenkins, Nexus, Cloud Formation, Code Pipeline, etc.
- Exposure to implementing ML/AI technologies.
- Experience working with Agile and Scrum methodologies for software development and project execution.
- Familiarity with project tracking and collaboration tools such as JIRA and Confluence (Wikis).
- Experience using Git code repository.
- Familiarity with Lambda, Docker, containerization and microservices.
- Deep understanding of tools in the Azure and Google Cloud Platform platform
- Have a demonstrable working understanding of infrastructure-as-code software
- Experience developing and operating infrastructure systems and services.
- Experience working with large-scale real-time systems.
- Troubleshooting skills
- Ability to diagnose and remedy software performance issues.
- Ability to profile and remedy programmatic and algorithmic performance issues.
- Ability to profile and diagnose software memory issues.
- Familiarity with APM (Application Monitoring) tools like AppDynamics, NewRelic, or Stackify.
- Familiarity with log aggregators like Sumologic or Splunk.
- Familiarity with ORMs (Object Relational Mapping) products like Entity Framework, Hibernate/NHibernate, or Dapper
- Understanding of web services (SOAP, WCF, RESTful feeds, etc.)
- Demonstrate a passion for learning new technologies and take pride in delivering working software.
- Demonstrated history of successfully managing multiple concurrent initiatives and maintaining one’s own workflow.
- Demonstrated ability of a strong work ethic and of meeting project deadlines.
- Demonstrated ability to work in a dynamic, collaborative team environment.
- Strong interpersonal skills that include excellent skill in collaboration and problem solving with other departments and colleagues.
- Ability to work well under pressure while maintaining a professional demeanor.
- Strong passion for automation, testing, and code quality.
- Motivation to take initiative and own projects.
- Strong interpersonal and communication skills, and a team-focused approach towards software development.
- Analytical mind with problem-solving aptitude
- Ability to work independently
- Excellent organizational and leadership skills
- Excellent presentation skills and basic knowledge of presentation software.
- Excellent verbal and written communication skills
- Appreciation for interfaces and contracts in large organisations with many small teams
- Understanding of the complexity that arises from poorly managed dependencies
- Experience with cloud cost management and oversight