This weekend, I was working on a session proposal (for my first conference keynote) and I came across the code for the first coding project I wrote as a professional programmer. I guess I missed a big anniversary in 2019—my 30th anniversary as a professional programmer. Upon reflection, there was one item that stood out in my mind as essential to my success. This one item was and still is COMMUNITY.

As many of you know, the profession of software developer can sometimes be isolating and lonely. In my first two jobs, I learned this first-hand. The first was as a programmer for a property management company. My job was to build applications to manage core functions of our business, including the Hot Tub Management Program. My second job was at a resort where I built numerous applications that were core to the sales and marketing functions of a timeshare business. These included processes like survey tracking, mailing list management, sales and marketing reports, and many others. In each of these jobs, I was the only programmer on staff.

I didn’t have anyone to bounce ideas off or to learn from. I was both the most senior and the most junior dev on staff. There had to be a solution. In the late 80s, our online existence was provided via dial up into proprietary services like Genie, AOL and the one I chose, CompuServe. I found myself with a new account, ready to rock my fresh new handle: 76244,3116. (This was an era when we didn’t get to choose a username but got assigned a unique number.)

My first course of action was to seek out samples of other people’s code. I was hoping to gain insights into new coding techniques that already existed and worked. Although this scratched an itch, it didn’t seem to fulfill what I was really looking for: interaction with other programmers. Then I found the FOXFORUM.

CompuServe had various specialized area where users could focus conversations on particular subjects, known as forums. FOXFORUM was a place where FoxPro developers congregated. I participated in this forum as a lurker. I read messages and followed conversations in read-only mode. It took me some time to build up the courage to become a more active participant. This fulfilled a part of what was missing in my life: interaction with other developers, albeit in a read-only mode. It didn’t take long for me to make the leap into a new type of community: software user groups.

After toiling in the service industry of Central Oregon, I found myself moving to the "big city" of Seattle. This is where I discovered user groups. Soon after, I learned via the FOXFORUM that local software developer (and FOXFORUM member) Jeff Winchell would be demonstrating features of the newest version of FoxPro at a local user group. "Wow! This is awesome—I’m IN!" I told myself. A few nights later I was in a room full of other developers getting a glimpse of software that I would use for many years.

I was also lucky to meet people who would change my life forever. Seattle was a real hotbed of software development and had some great developers who were willing to share their knowledge. I found myself attending other user groups where I met many people who are still friends to this day, like Paul Litwin, Ron Talmage, Eric Ranft, and many others. I found myself interacting with a group of people who would go on to become highly respected developers in their individual area. Many of these people became trainers, book authors, and in one case, a co-founder of DocuSign. I felt lucky to be interacting with this group of great software developers.

During this time, I continued writing code for various firms in the Seattle area and in 1994, I found myself at a crossroads, I was getting downsized and decided to take the plunge and became an independent consultant. The community came to the rescue one more time. During my tenure at Pinnacle Publishing, I met Erik Ruthruff who became a good friend and colleague. Erik introduced me to many people who would influence my life from that point forward. (As an example, Erik introduced me to my awesome editor, Melanie Spiller.) About six months before my layoff, Erik had left to work at a company in Minneapolis called Application Developers Training Company. He told me that if I was ever interested in becoming a trainer for them, I should give him a call. I did just that and this is where the next phase of community began.

Before I could become a trainer, I needed to prove to myself that I could actually teach people without running away in fright from public speaking. I decided that my best course of action would be to attempt speaking at a local user group. I contacted the leader of the local FoxPro user group and asked if I could give a talk. The answer was affirmative. Soon, I found myself in a packed room of other developers giving a talk on using DDE (Dynamic Data Exchange) with FoxPro for Windows. I succeeded and a few months later, I found myself in various hotels around the country teaching developers FoxPro programming. It was at this point that I found my community expanding at quick rate. I met more developers, like Ken Getz, Paul Sherriff, Mike Gunderloy, and many others. Over many dinners in strange cities, we shared development stories. Being a trainer for AppDev caused the size of my community to grow exponentially, and from this community, many opportunities presented themselves. I became a conference speaker, a user group speaker, author, and eventually a mentor to other members of the community.

I can say without reservation that one of the most important aspects of a quality life as a software developer is interaction with other developers. This interaction doesn’t always need to be as co-workers: It can be as a part of a community of other people who do what you do. Programming doesn’t need to be a solitary endeavor.

Some items that might work for you include participating in local user groups and meetups, attending Code Camps and/or conferences, or just by helping out on sites like Stack Overflow or in the many listservs you can find online. Interacting with members of communities is an effective way to extend your skills and to enrich your life as a developer.