Building software is a journey, and no matter where you are on the path, I may be able to help. Here are some of the services I provide:
Have an idea for a new app but don't know where to start? Spinning your wheels on a hard technical problem? Or just need some specific expertise on your project? I'm happy to talk through your unique situation. In a one hour session, we can work together to define the problem, identify the key options and trade-offs (there are always trade-offs!), and gain clarity on a way forward.
Discovery and Architecture
It's been said that software architecture is about the decisions that are difficult to take back. Platform, language, framework, tools, security, service granularity, integration patterns, and more. These are all critical choices when building an application, and snap judgements can lead to disastrous consequences - bugs, failures, rework, or technical debt. You need to get these right. Having architected and built dozens of enterprise-scale applications I know the right questions to ask. Through interviews and discussion with your team, I will document the as-is architecture, extract the business and technical goals, identify key risks, and then help design a practical architecture that is both feasible to implement and also flexible, scalable, and robust.
Tech Debt Consult
Managing and working with legacy systems can be challenging to say the least. Small changes can take hours or days due to bad or confusing code. Out-of-date libraries can be difficult to upgrade. Bugs can pop up in the most unexpected places, and may be impossible to understand or replicate. I've written multiple open source code quality tools, overseen million+ line systems where we've kept technical debt at bay, and when the debt was intractable, built the case for a re-write. I can help your team quantify how much debt you have, identify exactly where it is, and establish an approach for how to start paying it down.
Deep Dive/Full-Stack Development
Sometimes you need a little extra development muscle to get you through those hard problems. I'd love to roll up my sleeves and help you get over the hump. Here are a few of my areas of expertise: responsive web apps, performance optimization, voice systems (Alexa), platform and tool-chain setup, authentication (OAuth), authorization, devops pipelines, usability testing, and test automation frameworks.
Here are some of the technologies I've been working with most recently:
|Front-end||Angular, React, JQuery|
|Back-end||Spring, Spring Boot, Spark, JPA/Hibernate, MyBatis, MongoDB|
|Devops||Docker, Kubernetes, Jenkins, Splunk, Elastic Search|
|Approaches||Responsive design, progressive web apps, microservices, serverless, reactive architectures, agile and lean methodologies|
I've been building software for over 20 years now, and it's still fun. In the beginning, I wrote tiny database applications for small businesses around town, just to make a little extra cash. But seeing real people use the software I created, and moreover seeing how it helped them in real ways, was both exciting and satisfying. I was hooked.
After college, I launched into the working world, writing code for companies of all sizes, from basement start-ups to global corporations, and across just about every industry, from finance and telecomm to higher ed, retail, logistics, and transportation. Like the small applications of my early days, these enterprise systems had to be functional for their users (of course), but they also had to be scalable, reliable, available, maintainable, and all other "ilities". Achieving this level of robustness meant mastering more than just the programming of systems, but the engineering of systems as well - when to employ caches, clusters, proxies, streams, etc. and then, just as important, when not to.
In recent years, I still write code when I can, but focus more on the (equally) hard problems "above" the code: strategy, design, architecture, devops, performance optimization, leadership, and mentoring. My years of experience have taught me to avoid the fads and focus on the impact. I'm happy to play whatever role is needed in order to drive a project to success.
In 2018, I ventured out on my own, starting Highline Solutions, where my mission is to "solve hard problems, build in quality, make an impact."