Me and my first home-entertainment system
(For the humor-impaired: yes, this is a joke.)

I got my start building home-entertainment systems in the early 1970’s.

I then moved on to designing electronics and software—and sometimes both together—in the 1980’s.

Fast forward to 2006, when I quit my cubicle job, and moved into consulting, primarily on web systems written in Perl.

I’ve done Perl, Java, JavaScript…

…MySQL, PostgreSQL, HTML, CSS, C++, PHP (though I don’t brag about that). My LinkedIn profile adds embedded systems, Linux, a little Bash.

I find that all fairly boring because these are all tech skills, and tech skills are relatively easy to acquire. In early 2020, when I decided I wanted to shore up my Java and JavaScript skills after more than a decade, it took only a couple weeks of practice to come back up to speed.

Skills are easy. Philosophy and values are more difficult.

I value human connection over technologies and tools. I’ve spent the last several years focusing on (a) communication skills, including verbal and nonverbal communication, active listening skills, writing, and public speaking; and (b) relationship building skills such as fostering emotional intelligence, developing conflict management and negotiation, and identifying and addressing both effective and ineffective relational dynamics.

I have high attention to detail. However, I am unwilling to let perfect be the enemy of good. I believe in designing systems that are easy to use, easy to understand, and easy to extend. I love software that does what you want, when you want it, without fighting you every step of the way, and I’m willing to invest a little extra effort up front in order to benefit from that good design on the back end.

Hey, can I get Facebook on this thing?

That said, I prefer to take the easy way out. Much of the time, a software feature can be added without resorting to heavy-duty programming. “Do the Simplest Thing that Can Possibly Work”: get something out there, and then refactor it later, if you need to. Continually take small steps, reflect, and reevaluate.

I think critically, open to evidence that disconfirms my opinion. And I find intrinsic motivation and create meaning in the work I do, and I appreciate teams that foster a safe environment in which to explore and invest in the project. I believe this is one of the keys to a gelled team.

But…

I’ve had a love-hate relationship with software. In the late oughts, it plunged me into a deeply dark place. For several years, I took a break from software, contracting on the odd Perl project, just for the money. I wrote and published several indie books, applying my technical skills to the entire process from conception to final distribution. This gave me a much-needed respite, time to think about what I really love about programming. Eventually, I discovered how programming can even be a spiritual journey.

And that’s what brought me back.

The great thing about being able to work from the road

Back building software. Serious software.

But not just for the money.

And not just for anyone.

I found myself. I began to travel. I spent a number of years as a remote web developer, working in distributed teams.

The team is the most important part of software development, and it’s surprisingly difficult to get it right. I’ve worked on some wonderful teams, and I’ve worked with some that have struggled. Everywhere I’ve gone, I’ve met people that I feel connected to, and I’ve worked with developers I look up to. Every experience has been a learning experience. Every adventure has been enlightening.