Ship Solutions, Not Slop

Market leaders are built on top quality code. Generative AI tools require expert guidance, and all teams benefit from clear documentation, elegant architectural patterns, and safeguards in the form of automated tests.

I can provide insight as an independent consultant. Email me or visit my LinkedIn profile to get the conversation started.

Coding

Code is written for people to understand firstly and for computers to interperet secondly. I subscribe to the ideals of refactoring and clean code as described by Martin Fowler. I also follow trends in DevOps and believe that Psychological Safety (see also: Google re:Work) is the key factor in the success of software development teams.

The essence of clean code is to write many small functions, mostly pure functions, and to practice thoughtful bottom-up and top-down design. Programs ought to be structured in layers such that concerns like data persistence and user interface are kept separate from core business logic. Domain-Driven Design can help to organize the problem domain into services, while Ports & Adapters (sometimes known as Hexagonal Architecture) decouples business rules from integration logic, sometimes with the help of Dependency Injection. Unit Tests are employed to validate the internal correctness of modules and carefully configured Integration Tests ensure that these modules satisfy each other's requirements.

An aspect of software development that I take pride in is thoughtfully documenting my work so that others may be able to reproduce the work and reuse parts of it. Good code illuminates the problem space, and good docs provide context as to what problem is being solved and what decisions were made for what reasons. When I accomplish something significant, I often make a presentation (slide deck) to capture lessons and spread knowledge.

Code reviews are a tricky topic that I have a lot of experience with. When done well, they provide a support structure for developers to get constructive feedback on their work. When done poorly, they degenerate into toxic bullying and politicking that hurt the business. Code reviews are an essential practice, but they must serve the needs of individuals. As with all team communications, trust is a key factor. Westrum generative culture is vital to the team's success.

Leadership

I have experience in the roles of technical team lead and software engineering manager. Sometimes people ask whether I would rather be a manager or an individual contributor. That depends on the needs of the project and where I can have the biggest impact. When more leadership is needed, I am not afraid to step up and provide direction. When more hands are needed on-deck, I roll up my sleeves and get involved in the code. Both varieties of work are types of problem-solving.

Software teams leads must have a hands-on role in technical designs and code without hoarding work or always being the smartest person in the room. The ideal team is self-managing. Listening and coaching are often the activities where the manager is most effective. Teams tend to deliver the best outcomes when everybody is contributing their insights, and for that to happen people must feel secure in speaking their mind.

Some books that resonated with me are Radical Candor by Kim Scott, Lean Software Development by Mary & Tom Poppendieck, and The Psychology of Computer Programming by Gerald Weinberg. The leadership ideals that I strive for are to build trust, push for clarity, challenge assumptions, visualize work in progress, shorten lead times on customer requests, and always consider the larger context of my team's work. I employ Agile style practices to these ends.

Games

I have a background in video games and I still play them. Some of my favourite games of all time include Final Fantasy VI, Super Mario 64, Resident Evil 4, and XCOM: Enemy Unknown.

I've spent over ten years of my career working to produce outstanding user interfaces for big budget video games. Samples of my work are showcased below.

I enjoy game jams as a way to make new connections and sharpen my programming skills. I've participated in both Ludum Dare and Global Game Jam. For a while I was part of a jam team called the Ghost Pixels and we produced a few Flash games. Our most ambitious title is Black Square which we released as a free game for the Ouya, an Android OS micro-console.

My most popular jam project to date is Many Ninjas, which I made as an entry for Ludum Dare 30. It was featured on some sites dedicated to incremental progress idle games (eg. Almost Idle.) and the page I originally hosted it on had over 10k hits.

Game Jam Projects

Small Web Demos

Links

My Publications

Misc