What does your role involve?
As a senior developer, my role is to solve difficult technical problems that meet the human needs of our clients and the people they provide services to. Most of my work is in the "back-end" systems that process, store and provide data to the "front-end" sites you would visit in your web browser and to integrate securely with other systems via APIs.
Additionally, I consider performance, reliability, security and accessibility to ensure we are providing robust and practical solutions in a cost-conscious way.
What languages do you use in your work?
I come into this role as something of a professional generalist. While I primarily work with the Python programming language, I have also spent time on:
- eLearning and content management systems in PHP
- supporting front-end codebases in half a dozen JavaScript frameworks
- computer vision systems and other non-web applications in languages like C++ and Java.
Across all of the work that I do, one of the most important languages is English. I need to support and coordinate with my colleagues and work with my clients, to build a common understanding of their requirements and values. Getting the best results requires a good understanding of the "why" questions, not just the "how"s.
What does your typical day look like?
A typical day varies from project to project but usually starts with coffee. Not just to wake up the brain but as an almost meditative time to draw the threads of my work together and plan out what I need to be doing in the day.
If there are some deep technical tasks with clear requirements, I'll block out a few hours to sit with the problem and find a good way to make it work. Often, this involves writing some tests first to be sure of the "business logic" and then building out the code that satisfies those tests.
Where the requirements still need refinement, I'll work with my team and clients to zero in on what is needed. Sometimes, this means designing solution architecture, experimenting and prototyping - but just as often, it is about actively listening and asking the right questions.
Additionally, we aim to not only solve the immediate problem but to ensure that it is maintainable for the future so that other developers and operational staff will be able to understand what this system does and why.
Tell us about a recent problem you helped solve.
Recently, I had a client with an ongoing digital transformation programme. They needed to streamline their academic systems for reporting learners' grades to ease some of their administrative workloads during the busiest times of the year.
I built a system that takes in spreadsheet data via a file upload, checking that it is the right file type with all of the expected fields. First, it validates the data to ensure that the information supplied is in the right "shape". Next, the system verifies that information against other systems that store details about learners, courses and enrolments. If any discrepancies are discovered they're matched back to specific rows and cells on the spreadsheet.
The system provides administrators with early visibility of any information quality problems rather than finding out later when things don't match their expectations. This means students can get their results reliably and without unforeseen delays.
What do you enjoy about working at Catalyst?
I started working here nearly ten years ago when some regulations changed, and I suddenly didn't have the funds to finish my Computer Science/Education PhD. One of the things that attracted me to Catalyst was its open source ethos: contributing to not just a company but to communities. Sharing the features that we build on open platforms and frameworks means that we can all spend more time doing new things, improving the software and serving more people's needs.
That's also a large part of why I'm still working here ten years later. I get to collaborate with great people, tackling novel and interesting real-world problems and generally making things better in meaningful ways. That is a culture I am proud to be a part of.