I am a veteran software architect with a breadth of experience and interests, and a knack for communicating about technology with both business stakeholders and large audiences of developers. I'm looking for my next challenge. To get to the facts, you can go straight to my LinkedIn profile, or read on to learn what I can offer to a high-impact software team.
I'm enjoying an eventful career making software, and it isn't just about writing code. One of my first jobs was working on the first PC-based audiometry & hearing aid fitting system. At the time I knew nothing about hearing testing or hearing aids, and didn't bring much beyond familiarity with the Windows API and decent C++ & OOD chops for my age. I learned a tremendous amount on that job, both about building software and about what it takes to ship a product that helps people. I also developed a taste for learning what it was like at the frontiers of other people's fields.
Most recently, I was privileged to work with cutting edge AI and augmented reality technology at Meta (née Facebook). On Meta's AI/ML Partner Engineering team, I educated developers about PyTorch, delivering in-person training and building educational materials, and worked on the launch of platform cornerstones like TorchServe, PyTorch's horizontally scalable containerized API wrapper for inference. On the AR side, I helped launch Meta's Spark AR platform in 2017, and continued working with outside partners on establishing product-market fit for new features, including Spark's Commerce API, virtual make-up try-ons, and virtual furniture "try-ins".
In between, my career has taken many turns in the technologies used and the fields I've worked in, but I've continued the habit of seeking out new tools and unsolved problems. At Tutor.com, I wrote software to deliver educational services over the web before broadband put video chat on every desk. My team at Proclivity Systems was an early adopter of Hadoop for scaled data processing - what we now call Big Data work - to drive behavior prediction from web analytics. In consulting gigs and with my own startup, I got to ride the mobile wave, exploring and pushing the capabilities of the early generations of smartphones while they matured into the ubiquitous pocket computers we have today.
At every turn, I've enjoyed learning about different businesses and their problems and the language they use to talk about them. I've enjoyed seeking out and creating the tools to solve those problems. Now I'm looking for new problems to solve. I'm much less interested in the particular technology stack or business vertical than I am in answering the questions: Are we solving a real problem? Are we using the best tools for the job? Are we doing it as a team with a shared vision?
Good software craftsmanship is about reducing the cost of change. Code that works is the bare minimum output for someone in my field. For that code to live on as an asset with durable value, you must be able to change it to adapt to new requirements. This is the "softness" of software; the best engineering craft is that which keeps the software at its softest. The way I think of this softness is as the cost of changing the software.
Clean code, automated test coverage, AI assistants, elegant object design, and agile process are not ends in themselves. They are tools with specific domains of applicability and anticipated benefits - none of them is a silver bullet. The experience-driven judgment to choose the right tools and processes for a project is part of the value I bring. Reducing the cost of change is at the center of these judgments. Delivery velocity, product quality, and software stability all stem from this organizing principle. What are the likely dimensions of change in the business requirements? In the technology platform? How junior or senior is the team, and have they worked together before - how much supportive process do they need to behave cohesively? A focus on delivering value by reducing the cost of change sets a team up for success.
I don't just make technology, I communicate about it. This can mean giving in-person and online talks and classes to developers and non-technical audiences, writing blog posts and documentation, building reference and example projects, and collaborating over the solutions to complex problems.
This skill at communicating about complex topics with broad audiences multiplies my value as a technical leader on a cross-functional team. Faithfully translating technical constraints and opportunities for non-technical stakeholders supports good business decisions. Flexible pedagogy around engineering craft allows an org to leverage my deep knowledge over a team. My experience as a technical evangelist helps me bring the same product vision into focus for everyone and draw a team toward a consensus about solutions. I count all of this as part of my remit as a senior technical leader.
If your team is solving real problems with software, maybe I can help. The easiest way to get in touch is to message me on LinkedIn.