5a: Specialist Area 1

Last Updated: 1 min read

CMALT Guidance

In describing your specialist area(s) you should refer to the core values listed at the top of these guidelines. Because these are specialist areas you should be clear what makes your work distinct from common practice; many people teach on online courses, but designing and delivering fully online courses requires specific skills and would be considered specialist. Similarly, many teachers provide blended learning, but developing and sharing guidelines for such practice or working with a distinctive blend of contexts might distinguish your work as specialist. It may be that your specialist area is common amongst the group that you work in as you all work in a similar area; that is perfectly acceptable.

Evidence for your specialist activity is likely to be very specific but could include: reports, papers or presentations you have written; this could be backed up by a job description plus written statements supporting your specialist knowledge from colleagues, clients or managers; active membership of professional or other bodies; certificates of completion of specialist training programmes or courses.

Description

My specialist area is full-stack JavaScript development, with a focus on building and optimising GraphQL APIs and working with relational databases like PostgreSQL — skills that go beyond basic web development. What makes this work distinct isn't just the technical complexity, but how I've applied it within an educational context to improve learner access, system performance, and platform reliability.

I transitioned into development after more than a decade in education, and that background has shaped how I build software. From 2021 to 2024, I worked as a full-stack JavaScript developer at Learnlight, a global EdTech company serving over 700,000 learners. I built and maintained its learning platform, the same one I previously used as an English language trainer. In that role, I:

  • Reduced redundant GraphQL API calls tenfold using dataloader, which significantly improved speed and efficiency for users across multiple services
  • Implemented API rate limiting using GraphQL Rate Limit Directive to ensure platform stability at scale
  • Fully replaced manual backend testing with automated tests using Postman and Mocha
  • Authored more than 40 pages of technical documentation to ensure continuity and improve team onboarding

This work combined programming, systems thinking, and user empathy to make sure that performance improvements aligned with the real needs of our learners and staff. For example, optimising backend calls wasn't just about efficiency: it helped improve access in low-bandwidth regions and reduced operational costs. Aligning technical systems with educational outcomes is what drives my development work.

My development work also includes testing, documentation, and developer workflows. I've introduced quality assurance processes that directly impacted how quickly and safely new features could be deployed, which is especially critical in always-on learning environments. I'm comfortable working across the stack, utilising React and Next.js on the front end, Node.js and PostgreSQL on the back end, and collaborating with Agile teams using tools such as Jira, Confluence, and Git.

I'm a self-taught developer, and my learning has been shaped by practical application and a strong belief in knowledge-sharing. I've completed a range of development-focused training, including:

I also maintain an active GitHub profile at github.com/Karl-Horning, where I share code for side projects and personal tooling, and a portfolio site at karlhorning.dev, which showcases my work.

Ultimately, my specialist skill set lies at the intersection of education and engineering. I develop systems that are technically sound, but always with the learner in mind. That might mean better accessibility, faster load times, clearer documentation for future contributors, or more stable APIs to support global delivery. My background allows me to navigate both pedagogical and technical challenges, and that's where I can add the most value.

Reflection

Transitioning from educator to developer has shaped not just what I build, but how and why I build it. My background in education taught me to think about systems in terms of clarity, access, and inclusion — principles I now apply in my development work. For instance, implementing performance optimisations like reducing GraphQL query duplication with dataloader wasn't only about technical efficiency. It also improved access for users in low-bandwidth regions and improved the trainer experience — an often-overlooked group who benefit just as much from responsive tools and reliable interfaces.

One challenge I've consistently faced is the inaccessibility of developer documentation. Concepts like batching and caching in GraphQL are often explained in overly abstract, text-heavy ways that don't cater to diverse learning styles. As a visual learner, I often turned to alternative resources such as video tutorials, MOOCs, and community forums to fill the gaps. These experiences shaped my approach to documentation: I now write detailed READMEs, use JSDoc consistently, and document GraphQL schemas so they're easily understood and usable in tools like GraphQL Sandbox. I've come to see documentation not just as a technical requirement, but as a way to support more inclusive learning and development.

Being self-taught has also meant navigating imposter syndrome, especially in teams made up of traditionally trained developers. Finding mentors with similar backgrounds has been difficult, and at times I've felt isolated. Community learning platforms like freeCodeCamp, YouTube, and forums have helped bridge that gap and remain essential to my ongoing development. These experiences have deepened my belief in the value of knowledge-sharing. I maintain an active GitHub profile where I try to make my repositories accessible and easy to follow, and I've recently launched a blog inspired by posts such as Our learnings from adopting GraphQL and Migrating Netflix to GraphQL safely. My goal is to reflect on development challenges and explain concepts in a way that's approachable and useful to others.

For me, development is not just a technical pursuit, but a continuation of my commitment to lifelong learning and learner empowerment — values I carry with me throughout my time in education.

Summary

  • Applied full-stack JavaScript development skills — including GraphQL, PostgreSQL, and Node.js — in an educational context to improve learner access, system performance, and reliability
  • Delivered specialist backend optimisations (for example, using dataloader and API rate limiting) to enhance platform efficiency and support learners in low-bandwidth regions
  • Introduced quality assurance practices such as automated testing and technical documentation to support safe, scalable, and maintainable feature delivery
  • Demonstrated cross-stack proficiency (React, Next.js, Node.js) while collaborating in Agile teams using industry tools such as Jira, Git, and Confluence
  • Maintained a reflective development practice through ongoing self-directed training and community engagement (for example, GitHub, online courses, developer blog)
  • Made technical systems more accessible through clear, inclusive documentation and schema design, drawing on my experience as both educator and learner
  • Bridged pedagogical and engineering mindsets to ensure that development decisions align with user needs, educational outcomes, and inclusive design principles

Evidence

Further Reading