My name is Jason and I'm a computer programmer living in Vancouver, British Columbia.
This page exists for colleagues and prospective employers to get to know me a little better. It provides background context that may not be apparent from my curriculum vitae.
Aside from computing, my major hobbies are playing video games, watching hockey, reading, eating at restaurants, and listening to music.
Check out my posts on the Tableau Engineering Blog:
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.
For me 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 is a useful practice for building software this way, typically employing Unit Tests and Dependency Injection.
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 vitally important and constructive feedback on their work. When done poorly, they degenerate into an adult bullying playground that creates toxic cliques and drives competent developers away. Code reviews are essential, but 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.
I have experience in the roles of technical team lead and software development manager. This has often taken the form of self-managing or managing upwards, but has also at times been a formal role. Sometimes people ask whether I would rather be a manager or an individual contributor, and of course the answer is that it depends on many factors, such as the culture of the organization, the needs of the team, and what value I'm bringing to the table. Everything else being equal, I prefer to do what will make the biggest difference for the better.
Strong influences on my beliefs include the books 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've typically employed Agile style methods to these ends.
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.
It is crucial for a manager to be socially and politically savvy. Without power, a manager cannot effectively advocate for their team or for the individuals that report to them. The best leaders leave the legacy that the people who followed them were better off for doing so.
Video games are my life's work, at least in some respects. I arguably love technology and software development practices even more, but video games will always be my primary hobby. I play all kinds of video games, of just about every genre on just about every platform. I also enjoy the occasional board game or card game.
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.
I am currently strongest in,
I aspire to get stronger at,
Ideally I'd like to get more familiar with,
The following are some tech stacks that I've worked on projects with: