It’s Thanksgiving in the US, and one of the many things I’m thankful for this year is to be back where I started my career nearly 20 years ago, working at a company with a product people need, that rewards hard work, embraces new tech, and provides opportunities to learn and grow. The only reason I left was that I knew I wanted to be a programmer, but I was very green and there weren’t any positions I qualified for. I tried for a year, then left, got the experience I needed, and returned. I can’t say that was always my plan, but I’m glad it worked out the way it did.

The developer I am now, though, is a result of all the places, environments, and people I’ve worked with over the years, good and bad, and today’s as good a day as any to reflect on the experiences and lessons I’m thankful for.

Agile / Scrum - It’s slightly different everywhere, but I like that it makes visible the invisible (through kanban boards) and promotes conversation (through standups) where someone might not otherwise speak up about a problem. I’m also grateful for a team lead who pushed it before I realized what it was or why anyone would want it, and I’m happy for the companies since then where upper management saw the value too.

Pair Programming - I’ve worked in environments with 100% pair programming and others where any amount of pair programming was seen as a waste of resources. It’s a useful tool - not all the time but definitely in certain circumstances like mentoring or getting a second set of eyes on a tough problem to carry it through to completion.

CI / Automated Testing - Whether in Jenkins, TeamCity, Azure DevOps, or some other tool (I’ve gotten to play around with quite a few), I’m grateful for the teams that saw the value in making builds an automated, repeatable process, and running tests as a part of it. I was once on a team that manually deployed whatever code was ready on Monday morning, with minimal testing, and I cannot stress enough how poor that experience was for everyone involved. Guaranteed way to make people lose faith in the IT department. 😓

Cross Functional Teams - Since working on a more traditional team, with devs and QAs and whoever else working in completely separate areas, and I’ve come to appreciate since then how well smaller teams with several members representing each concern can work. The last team I was on included some very knowledgeable people who had spent decades learning the system, and I got to work closely with them on multiple projects. It made for much quicker collaboration, rather than tossing something over the wall to a group of people you get to work with very little.

Engaged Managers - It’s been interesting (and sometimes frustrating) to see how different managers perform their jobs. I’m thankful for those managers who prioritize 1x1s and get to know their team. I once had a manager who mailed everyone on his team some goodies at home, along with a personal note, during a rough project that involved a lot of overtime and stress.

Some of the nicest people I’ve worked with have worked for a company for 20 or 30 years, and I certainly hope I’ve found that now. But for those who are still looking, who are unhappy with their current situation for whatever reason, I hope you believe in yourself and your ability to learn something new! It may take awhile, but it’ll happen!

Today marks a month of a new (old) beginning for me, of returning to where I started, and of moving out of my comfort zone to learn new things. I’m glad I pushed myself, but I’m especially thankful others saw something in me and gave me the chance!