Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 

Repository files navigation

How I Build Software

This repository documents how I approach software engineering, the principles behind my technical decisions, and the areas I am actively developing.

My path into software engineering began with more than a decade supporting business-critical enterprise systems in production. That experience taught me that software is not finished when it runs locally. Reliability, recoverability, maintainability and clear operational behaviour all matter once software is used in the real world.

I now apply those lessons while building cloud-hosted full-stack applications and developing my skills across software engineering, testing, deployment and AI-assisted development.

Engineering Principles

Understand the problem before choosing the technology

Technology should serve the business and the user. I try to understand what needs to be achieved before deciding how it should be built.

Keep complexity appropriate to the problem

I prefer solutions that are simple enough to understand and maintain, while still meeting the technical and commercial requirements. Complexity should be introduced when it provides clear value.

Treat reliability as part of the product

Production experience taught me that predictable behaviour, safe recovery and careful change management are engineering concerns, not afterthoughts.

Make technical decisions deliberately

I aim to understand the trade-offs behind my choices, including architecture, databases, integrations, deployment platforms and authentication.

Own the outcome

Ownership does not mean working alone. It means remaining responsible for understanding the problem, communicating clearly, delivering a solution and improving it when requirements change.

Use AI as an accelerator, not a substitute for understanding

I use AI to support research, implementation, debugging and learning. I remain responsible for validating the result and do not consider a concept fully learned until I can explain, modify or rebuild it independently.

Treat projects as evolving products

Rather than viewing projects as finished once their first version works, I continue improving them through testing, deployment practices, documentation, accessibility, performance and maintainability.

Current Focus

  • Automated unit and integration testing
  • Docker and containerised development
  • CI/CD workflows
  • TypeScript
  • Cloud architecture
  • Application reliability and observability

Longer-Term Interests

  • AI-enabled applications
  • Embedded systems
  • Autonomous drones
  • Collision-avoidance software
  • Computer vision
  • Distributed systems

Featured Project

My current flagship project is a cloud-hosted full-stack commerce platform built with React, Node.js, Express and MongoDB.

The project includes:

  • JWT-based authentication
  • Persistent cart and user sessions
  • Stripe and Braintree payment integrations
  • Separate frontend, API and database cloud services
  • Structured backend layers using routes, controllers, middleware, services and models

The next phase focuses on expanding the automated test suite, introducing Docker and building a CI/CD workflow.

About

My engineering principles, production lessons and software development roadmap.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors