Today (3rd July, 2024) is my 35th anniversary working in and around the software industry. All but 18 months of that have been spent on software development teams; those errant 18 months were spent editing technology books. I figured out fast that it wasn’t for me, and came right back home to the software industry.

In 35 years, I’ve learned some strong lessons. Maybe they’re ones you’ve learned yourself already. We all learn at different paces and at different times!
Do things in the most straightforward way possible. It’s easy to fall into the trap of clever solutions, or clever applications of technology, or overbuilding something because you’re anticipating the future. Don’t do it. You will hate yourself for it later when you have to maintain it. Build the thing in the simplest way you can, as fast as you can. You can improve it over time as needs demand.
There is no substitute for working software in Production. I can’t believe now that I have been part of 18-month release projects. This was back in the bad old waterfall days, but even then it was possible to release a lot more frequently than that. The software we build is valuable. It builds the value of the company. When you hold it until it’s perfect, or everything you think it needs to be, you are holding back on building the company’s value. Find the fastest, shortest path to getting the smallest increment of the thing that will work into the customer’s hands. You can keep making it better from there.
Relationships matter if you want to advance. It took me until about ten years ago to start to understand how building relationships across any company I work for is critical if I want to move up, and even remain employed when times are tough. I’ve found that being relentlessly helpful to others, even in things that aren’t strictly your responsibility, keeps you as someone everybody wants on the team. And when you push for a promotion, you have a base of people across the company who think you’re awesome. It greases the skids.
Relationships matter if you want to see your vision come to life. You may have the best vision ever for the product and how it should be built. You may see something that isn’t working well and know just how to fix it. It’s a 90-degree uphill climb to make your vision reality when you aren’t well connected to people with the power to help you. Even if you’re at the lowest level of the organization, try to build relationships with key leaders.
Never be invisible. When I was still testing software for my supper, I’d just quietly work all day and then go home. I’m going to toot my own horn a little: I was fast and good at finding the most critical bugs. Nobody could touch me. But, critically, nobody in leadership knew it. When I wanted to move up, I had a hard time showing that I was ready. I needed to make sure my work was visible, so that leaders could see what I was capable of.
Build and maintain a network of people in our field, outside the company you currently work for. As I write this, I realize I have let my network fall off since the pandemic. I need to rebuild it. My network has saved my bacon more than once when I unexpectedly lost a job. I wouldn’t be at my current company without my network. I got introduced to a particular fellow about ten years ago and we had coffee. We really enjoyed the conversation and committed to coffee once a quarter, a habit we kept for many years. It fell off in time as his life took him in a different direction. He was connected to the CTO at this company, who was trying to figure out how to build out the QA team and test process. My colleague connected me to him, and I gave him some free advice that he used. He thought I was sharp enough that when his Director of Engineering left to start his own venture, he called me and asked me if I would be interested in the job.
Be willing. There have been plenty of things in my career that I didn’t know how to do, but when my boss asked me to do it, I simply said I’d figure it out. As you do this, it’s good for you in two ways. First, bosses like people who accept assignments and figure them out. Second, you then learn how to do the thing and can do it again; you’ve built skill. In my time at my current company, my CTO has asked me to do plenty of things I didn’t know how to do. I simply said yes and got on with figuring it out. Someone who already knew how to do it could have done it faster and better, for sure, but I got it done. We all have to start somewhere when we learn how to do something.
Chase adventure and interestingness, not salary and title. This might be controversial with some, for whom salary and title are critical. So be it. We’re ridiculously well paid in this industry, even at the entry level. I’ve had a varied career, from technical writing to QA to engineering. I’ve said yes to, or chased after, things that sounded like would be challenging and interesting, and therefore fun. The money and positions have come to me in time. I might have gotten them a lot faster had I chased after them instead. What I got was a fascinating career and a great deal of personal and professional growth. I regret a couple choices, and a couple other choices totally didn’t work out for me. But there’s so much opportunity in this industry (even though the downturn we’re living through has tightened that up for now) that you can recover from that.
Challenge yourself to stretch past your natural tendencies. I loved it back in the waterfall days that I could pick up a big assignment and go work on it alone for weeks. Frankly, I still would love to do that. Those days were always so comfortable – come to the office, get some coffee, put on headphones, and chip away at my assignment all day. What I didn’t understand was that it kept me off everybody’s radar. I’m not a highly competitive person. I mostly want everyone to get along and work together. But unfortunately for me, there are times when you need to be competitive to keep your job, such as when a company has a rough time financially. I had to figure out how to show visible value all the time so that the sentiment was, “well, we can’t let Jim Grey go, he gets so much good stuff done.”
Understand that different social classes have different ideas about how the world works. I grew up working class, blue collar. We work in a white-collar industry. Because of my background, I thought that if I worked hard and did good work, I would rise. That was true for my dad, who rose from factory floor, to quality control, to quality manager, and finally plant manager. But in a white-collar world, it’s far more about relationships and power than about your work. I still struggle with this lesson. I still want it to be about my work. But it wasn’t until I built relationships and power that I was able to reach the Director level. If I ever want to make the VP level, I have even more work to do there.
When you deliver work you’re really proud of, you’ve almost certainly done too much and taken too long. I have a bit of a perfectionist streak. I want to do my work well and thoroughly. It took me a long time to learn that when I do that, it’s for me, not for the company. When I’ve reached 60-80% of the thing being as good as I want, I’ve probably done enough.
The software we are building right now will one day be decommissioned and not be used anymore, probably before your career is over. I’ve lost track of all of the software I’ve delivered that isn’t running anywhere anymore. Some of that is because my career is 35 years long. But even some of the software I worked on five or ten years ago isn’t running anymore. This is another good reason to build small increments, just good enough, get them out there, and iterate from there. Anything more and you’ve overbuilt some software that isn’t going to run forever anyway.













