---
tags: job-prep, ate
---
# Lead Developer ATE Role
## Details
- [Profile link](https://cshr.tal.net/vx/lang-en-GB/mobile-0/appcentre-11/brand-2/user-2020914/xf-54a8e1a89315/candidate/eform/23722612/page/1)
## Core role remit
* Web app development to enable collection of data representing future investment plans nationwide
* Development of software to deliver geographic datasets in an intuitive user interface, in collaboration with a frontend developer and data scientists, to support the design of active travel infrastructure
* Supporting the development of digital architecture and cloud based services for internal use, in collaboration with digital architects
* Collaboration with data engineers to develop web APIs that will make valuable datasets on active travel available to the people and services that need them, internally and externally
## Responsibilities
* Take the lead on software engineering in ATE, being lead developer on core digital products
* Developing software within an agile team, including people with expertise in frontend development, data engineering and databases, and data scientists
> S - Supporting development of novel COVID modelling tool as part of a cross disciplinary remote team
> T - Develop a modelling framework leveraging computational geographers, epidemologists and software engineers
A - Instigated and led regular team stand ups to identify blockers and ensure tasks were properly delegated. Encouraged use of GitHub PRs, code review, issues to track bugs and tasks
R - Delivered a prototype of the modelling framework that included a high performance implementation using OpenCL
* Ensuring good engineering practices and knowledge sharing within your team
> S - Crucial to keep RSE team knowledge to a high standard for supporting researchers
> T - Organise and deliver both internal and public technical talks on topics such as reproducibility
A - Arrange ad hos lectures or team technical talks which are delivered by myself, other team members and invited guests. Covers topics such as vagrant, Docker, AppTainer, reproducible computational notebooks, devcontainers, Apache Airflow
R - Ensures the team maintains an up to date knowledge of modern toolings and techniques for software engineering
* Creating and executing automated tests
> S - As a LIDA data scientist intern my second project involved developing a Python package for simulating police demand based on open source crime data
> T - Develop a Python package that implements automated testing
A - Developed a Python package using test-driven development approaches that implemented tests written with `unittest`. Automated testing using CI/CD approaches was developed using travisCI and then GitHub actions
R - Package was released on PyPI and exists in a currently unmaintained state on GitHub
* Helping ensure that services are resilient and supported
> S - A deployed shiny app crashes during certain use cases. The app has no logging and is implemented as a single 2000 line file
> T - Implement robust logging to help enable easier troubleshooting in future
A - Implemented a fork of `rlog` to add hierarchical logging through the Shiny app
R - App now has logging that is viewable via the Azure App Service log stream and can be configured while in production
* Mentoring junior team members
> S - Signed up as a mentor for the SSI Learning to code mentorship programme.
> T - Over 11 weeks mentor a PhD student teaching them Python.
A - arranged weekly calls with PhD student and worked through introductory Python course materials.
R - Mentee developed a series of Python scripts for automating their gas chromatography data analysis pipeline they'd previously done through Excel
## Suggested experience
* Worked with more than one programming language
* Web app development, especially with backend experience
* Experience working with databases and defining data schemas
* Code testing including unit testing and testing on CI frameworks
* Worked with or knowledge of cloud platforms such as GCP and AWS
* Experience debugging and refactoring codebases
* Demonstration of self development, including open source/community contributions and an interest in active travel data
## Technical skills
### STAR
- S, situation
- T, task
- A, action
- R, result
### Assessed technical skills
- Programming and build (software engineering)
**Situation:**
Worked on a project from 2020-2021 supporting COVID modelling
**Task:**
Work to coordinate research developers remotely across multiple institutions
**Action:**
Ran weekly standups to coordinate activities
Instigated team standards around writing tests and documentation across the project
Provided training and support to team members around using git and GitHub effectively
Implemented a process of code review to ensure code met required standards and to avoid breaking changes
**Result:**
Proof of concept project used as part of a publication showcasing the novel methodology
- Modern Standards Approach
**Situation:**
Took on a project in October 2022 debugging a Shiny app deployed to product.
RStudio includes the best tooling for debugging Shiny but app is deployed as a Docker container
**Task:**
How to develop a portable, reusable way to debug with Rstudio
**Action:**
Wrote a VSCode devcontainer that installed Rstudio server that could be included as part of the repository
**Result:**
Able to debug the app in a production-like environment
Reproducibly share the devcontainer so that future developers just need Docker to debug using RStudio
- Prototyping
**Situation:**
Deliver a comprehensive training catalogue but crucially needed to refresh and write new materials on topics such as high performance Python and how to install applications on HPC (an overview of how to install software)
**Task:**
Develop web based training materials with episodes covering different sub-topics.
**Action:**
At very early stage allow members to prototype different documentation tooling: jupyterbooks, mkdocs, readthedocs, sphinx
Use GitHub issue based task segregation to divide labour across team
Encourage members of the team to research and write their own episodes
Code review of team members episodes allowed us to test and iterate over the content
**Result:**
Developed jupyterbook template for all new training
SWD6 and HPC2 courses developed and delivered as part of training portfolio 2022
Strong documentation and code review focus allows flexibility within team for who can deliver workshop
Open source lesson materials mean outside of courses people can go through in their own time
- User Focus
**Situation:**
RSE time was requested on a project to extend the functionality of an R Shiny app already in production
**Task:**
Meet with researcher (product owner) and help define use case, user journey, user stories of using this new feature
**Action:**
Arranged a series of meetings with the researcher and map out user stories and journeys of using the application
Used the GivenWhenThen format for writing test cases and acceptance criteria
**Result:**
Project specification was agreed with clear acceptance criteria based on user stories
Clear agreement on expected app experience
## Questions
- What are short-term/long-term goals of the team?
- Are we working with any existing infrastructure?
- What is the structure of the team?
- What would you expect from me in my first month at work?