TL;DR
- I bring a lot of industry experience
- I know how to ship software
- I can work at all levels of the Software Development Lifecycle
- I’ll do the work people don’t care to do
- I’ll get down in the mud to get things accomplished
- I’m not the best developer in the room, ever
- I love mentoring younger developers
- I’m collaborative
- I’m empathetic
- I don’t give up
- I tell random stories, like the one you’re reading
That is a really good question. My answer is, I don’t know. My amazing wife — whose put up with me for over 36 years — would say something like ”Because you’re smart and know what you’re doing.” She’s always been my biggest supporter and I love her dearly for it. Anywho, I’ve always been my biggest critic and I can get down on myself, especially as I’ve aged.
After a failed attempt to run my own consulting company in 2014 I was really down and found it difficult to pull myself out of the funk that followed. Agrian saved me and I’m forever grateful for that and will never forget.
Moving forward to getting my gig here at WillowTree I was absolutely thrilled to make it through the interview process. I am a horrible interview. Sure, I do fine with the basic stuff; interacting with the interviewers, talking about general software development things, but the white boarding sessions are MURDER for me. There no other way to put it, I suck at them. They’re nerve wracking. I’m a slow coder, always have been, so that is an instant strike against me. I’m pragmatic and iterate on code until I’m happy with it. That often means I will chose an easier implementation that doesn’t go right to the best algorithm, but it written in a way that would allow for that later, perhaps during code review, perhaps in the next release. Maybe never if the code is easy to read, maintain, and is performant. Remember, premature optimization is not a good thing.
I can point to my feed reader Stream as an example of how I work. It took me two years to complete the first release of it and it’s a very bare bones app. As one reviewer said of it:
Very basic, unintuitive app, lika an experiment of a beginner developer
At first I was devastated by that. After some time to think on it and some encouragement from friend I came to realize it was a compliment in some regards. I’d made the app ”Very basic.” Yes, that was my intent from the beginning. I can fix the unintuitive bit and I believe I know what they’re talking about.
I’ve worked on and succeeded at developing large scale software projects. Two I can think of right off the top of my head are Visio, I was the 19th employee there, and worked on the project in various capacities for over 10 years. The second was Pelco where day one I was put on the embedded Linux version of our video decoding and viewing software. I was only there for five years, the first time, but feel like I accomplished a lot during my tenure.
Those were my heydays. I wrote a lot of C++ code on top of the Windows API and at Pelco the C++ code was shared between Windows and Linux. We had some really amazing devs there who I helped build a video decoding and encoding pipeline and base class framework for Windows and Linux. Those were good times.
But time marches on and so did my thirst for knowledge. At the end of 2008 I sat down to learn Xcode, Objective-C, and Cocoa/UIKit so I could become a mobile developer. After much frustration I shipped my first iOS app in mid-June of 2009 and it was approved on July 4th. It was a great day.
Since then I’ve learned Swift and various frameworks and as of this writing I’m just starting to dip into SwiftUI (worst technology name ever.) I may even have some Roku in my future, which I welcome! Yes, the one constant in Software Development is change. Embrace it!
Some select blog posts: