2018, Secondment at NS. I am here on behalf of my employer Luminis. They needed specific senior engineering skills on a development team at NS, so that’s when I joined the team.
The development team is responsible for a couple of products, and in this case: the ‘Unit’ app.
This is a real-time overview of the locations of the NS security teams.
At the NS Security headquarter they use this AngularJS website to get an overview of the current locations of their teams in the field.
All the individual members of the teams have an app on their employer-issued phone. This app enables individual members to sign in and out of the teams and to share their GPS location when on duty.
The majority of the work was focused on releasing a more reliable mobile app. Too much coding debt had accumulated in the Xamarin Forms app, so they issued a rebuild of most the mobile app.
I did a majority of the hard-to-solve-without-introducing-debt issues like cross-cutting-concerns (including: security, app state). And I made sure the overall quality improved over time (including: UI testing, back-end connectivity stability, async patterns).
The difficulty constraint in this project was to keep the backend untouched. That area was out of scope, but its structure had a major impact on the architecture of the app backend interface.
On top of that, there was no knowledge anymore of the inner workings of this backend and the automated testing was broken. I couldn’t let this happen because this was in-production code and one-way or another the team is responsible for its availability. So I made sure there was enough knowledge in the team, and I made sure the automated testing was up-and-running again to at least maintain the current working state.
Random order, tooling used
- Xamarin Forms
- Visual Studio Team Services (VSTS)
- GIT sourcecontrol
- Azure (Functions, WebServices, Resources)
- C# .Net Core / Full
- Continues Integration (VSTS Build / Release pipeline)
- Testing (Unit testing, SpecFlow Xamarin UI tests using AppCenter, postman integration tests)
- SCRUM (Workflow, Stand-up, Refinings, Planning, Retrospectives, continues improvement, team maturity)
- Application architecture (cross-cutting concerns, code quality, design patterns, SOLID)