Job Description
Would you like to help build and run the platforms underpinning public services in Scotland?
The Digital Directorate is building a mobile app and associated services to allow the people of Scotland to access public services via their mobile phones. The app will provide users with a convenient, accessible way to perform tasks, access personalised and interact with services directly their smartphones, making best use of inherent mobile phone capabilities such as push notifications.
The software engineering team that develops those services, and the companion web application, builds and runs applications on AWS using Kubernetes and Lambda. Backend services are written in Java, with Node JS and Typescript used for front-end applications. Persistence is provided by S3, DynamoDB, and Redis. We use Grafana/Prometheus for metrics and dash-boarding, and Gitlab for CI/CD. The apps themselves are built in React Native.
The Role
As a Senior Software Engineer, you will: develop software to meet user needs, writing clean, efficient, secure, documented and well tested code; operate the services you build and identify issues in production: observe best practises contribute to their improvement; and have awareness of common security vulnerabilities and how to mitigate them.
We welcome developers interested in working across both the front and back end (recognising you may be stronger in one of the areas, and will try to assign to teams accordingly).
We don’t require experience of our specific tech stack and will support you to learn it or refresh your skills. There will also be opportunities to work with additional technologies beyond those listed above.
Responsibilities
- Managing service components to ensure they meet business needs and performance targets.
- Participating in the information security process.
- Designing and implementing embedded security controls in solutions and services.
- Competently applying a modern standards approach and guiding others to do so.
- Using the agreed specifications to design, code, test and document programs or scripts of medium-to-high complexity, using the right standards and tools.
- Establishing design patterns and iterating them.
- Identifying, locating and fixing faults.
- Designing systems characterised by medium levels of risk, impact, and business or technical complexity.
- Selecting appropriate design standards, methods and tools, and ensuring they are applied effectively.
- Reviewing the systems designs of others to ensure the selection of appropriate technology, efficient use of resources and integration of multiple systems and technology.
- Understanding how to undertake and support integration testing activities.