Roles & Responsibilities:
The candidate will:
· Analyse system and customer requirements
· Define the architecture design of the entire software system based on requirements
· Choose the technologies and methodology for the implementation of each components and interfaces in the software solution.
· Ensure that software architecture stability is maintained throughout the software development lifecycle from Bid to Delivery and Maintenance;
· Guarantee adherence to in-scope standards and best practices, reuse policy and product development plans;
· Co-ordinate product definition, and assessment of design trade-offs between aspects of cost, customer requirements and technological possibilities;
· Document the design choices and the related justifications;
· Lead the software technical document writing and effort estimation for bids and projects;
· Conduct technical presentation to software team and other internal/external stakeholders;
· Provide knowledge on state-of-the-art software architecting, taking account of future developments and maintenances;
· Lead and participate in Software team` activities including detailed design review, coding, code review, unit test and debug
Essential Skills & Qualifications:
· Bachelor’s degree in computer science or related field
· Singapore Citizen or Permanent Resident referred
· Minimum 12 years of relevant experience building front end and back end of software and web applications
· Minimum 5 years of proven experience in software architect role, designing and developing large-scale software/web solution
· Software/enterprise architect related certification is good-to-have. E.g.
o Certified Professional for Software Architecture (CPSA) by iSAQB
o Certified Software Architect (CSA) by the Software Engineering Institute (SEI)
o TOGAF 9 Foundation by The Open Group
o Certified Enterprise Architect (CEA) by the Zachman Institute
o Federating Enterprise Architecture (FEA) Certification by the Open Group
· Knowledge of system architectural design patterns
· Knowledge of various coding methods and programming languages, e.g. Java, C#, Go, JavaScript, Python
· Experience with various development frameworks
· Experience with RESTful services and Microservices Architecture
· Experience with at least one message queue solution and data streaming solution (e.g. Apache Kafka)
· Experience with software system-level integration
· Experience in analyzing technical/design choices and documenting the analysis results.
· Experience with data modeling, relational database, nosql database
· Experience with cloud technologies, e.g. Microsoft Azure, Amazon Web Services
· Extensive working experience (at least 3 years) with Containerization: Docker, Kubernetes
· Experience with common software development tools, e.g. Jira, Git, Visual Studio code
· Experience in scrum/agile software development methodologies
· Experience with continuous integration (e.g. GitLab CI) and code management repository tools
Good-to-have Skills/Experiences:
· System skillset :
o System Administration basic skillset (services, ssh, user management, …)
· DevOps advanced skillset :
o Developing and maintaining Ansible Playbooks and Modules
o Deploying and setup of CI/CD pipelines (closely work with development team to develop CI/CD pipelines and deploy into private and public cloud)
o Scripting experience in Shell (bash or Python) etc
· Infrastructure as code skillset :
o Automate deployment and configuration using Ansible
o Working knowledge VMware ESX and other virtualization technologies
· Network basics :
o Good working experience with NGINX and HA proxy deployment and configuration
o Familiar with commonly used network commands (e.g. curl, telnet, netstat)
o LAN architecture (CIDR, vLAN, routing, NAT)
o DNS and SSL (internal, external)
· Security :
o Secrets management using various vaults (Gitlab security vaults, Kubernetes secrets)
o SSH administration
· Experiences in MHA (Ministry of Home Affairs) projects are good to have.
Behaviour:
· Produces Ingenious, astute design, with an open mind
· Excellent communication, presentation and interpersonal skills
· Collaborative team players preferred
· Be able to lead and motivate teams to deliver high-quality software