20 Lessons Learned From 20 Years in Tech: Part 2

More reflections and lessons learned from a 20-year journey in tech to help guide you on your own path through the industry.

Last week, I began writing about some of the lessons I’ve learned since I began working in tech back in 2004. Doing anything consistently for twenty years will undoubtedly create plenty of opportunities to learn new lessons that apply to one’s career and life. I wanted to share some of that hard-earned knowledge and experience with the world, hoping that others find some use for it. You might find something helpful for your own career or realize that you’re not alone in experiencing something that happened to you.

I encourage you to read the first ten lessons in part 1 of this series before diving into these lessons, which will give you a better sense of where many of these experiences come from.

11) Always leave your projects better than when you started

A few years into my PHP developer role, the company hired another programmer to help me. I had been working alone once I took over the company’s codebase and became a bottleneck. Before the new hire, I had no experience working with other developers, leading to poor coding habits. I took every hacky shortcut imaginable to plow through my work. As soon as the new developer came on board, it was clear my cowboy coding style would not benefit anyone. He was getting frustrated about not understanding the codebase, and I was becoming frustrated spending so much time explaining things that only I understood.

Around that time, I discovered the book Clean Code by Robert C. Martin, one of the earliest books I read that had a profound impact on my career. One part that stood out for me was the “Boy Scout Rule,” where the author said to “always leave the code you’re editing a little better than you found it.” That quote came at the perfect time and has stuck with me. Since then, I have always tried to leave my project a little better than before I touched it, no matter the circumstances. It helps me, but more importantly, it helps my coworkers and future developers. I’ve had former coworkers send me messages to tell me that some work I did on a codebase years ago is still helping them with their work now. When we collaborate to help each other do our best work, our careers will become better for it.

12) Don’t always believe the hype

The tech world is constantly evolving, which also leads to constant hype. It’s easy to get swayed by the newest and shiniest toys that pop up on Hacker News, Reddit, and other forums every other day. It seems like every week, someone declares the new trend as the “wave of the future” that will “disrupt the way we work.” Some of those claims are correct, like the current AI wave we’re riding on. But for every helpful product or technology that arrives at the scene, we have dozens of others that fade away just as quickly.

Far too many people immediately jump into the newest hyped-up fad without thinking about how it will benefit them. Often, we waste our time doing this until the “next big thing” comes along. Sometimes, it leads to more than wasting time, like everyone who lost money by going all in with NFTs a few years ago. But the solution isn’t to dismiss anything new instantly since that will keep you stuck in your career. The key is learning to objectively evaluate new trends without giving in to the hype and giving it time to see how it shakes out. You might not have that “hipster cred” by knowing something before it became popular, but slowing down a bit will save you a lot of time and headaches.

13) Mistakes will happen—get over it quickly

Any time I have the opportunity to work with junior developers or testers who are starting their careers, the primary thing I try to help with is to help them get over their fear of failing. I know this feeling all too well because I dreaded making any mistakes when I began working as a developer. I thought that if I made a mistake, I’d get called out as a fraud and immediately shown the door, never to work in tech again. Still, no matter how hard I tried, I messed up quite a bit, like the time I deleted an entire production database. Trying to avoid any missteps led to an enormous amount of stress and anxiety.

As I went deeper in my career, I learned that almost every blunder you commit as a developer or tester is something you can recover from. Even my accidental database deletion proved reversible with a restored backup. Knowing that mistakes will inevitably happen eases the fear of screwing up and helps you get over the issue quickly. Not everyone works in an industry where bad code or a production bug can lead to money loss or harm people. For most of us, mistakes aren’t irreversible disasters. They’re also the best teachers, as they take you on the fast track on what not to do in the future. The sooner you embrace that you’ll eventually mess up, the quicker you can learn their lessons and become a better developer or tester.

14) Say “I don’t know” more often

When I began my journey in tech, the pressure to have an answer to everything I was asked at work mounted quickly. Whenever my boss or a coworker asked something I could respond to instantly, I couldn’t stop talking about it—often talking too much to prove my knowledge. But when I knew they would ask something I didn’t have an immediate answer for, I was like a grade schooler slouching in the back of the class, hoping I wouldn’t get called upon. I felt like saying “I don’t know” would make me look like a clueless fool. It was rough to admit that I didn’t know something, and that attitude led me to remain silent, never speak up, and hold me back in my career.

I eventually discovered that most of the time, the person asking me those types of questions didn’t expect me to know the answer immediately. There was no reason for me to feel ashamed, and it immediately lessened my anxiety. However, the power of saying “I don’t know” extends beyond your personal feelings. Saying “I don’t know” while deliberately trying to learn how to answer the question will build trust and collaboration with your team. It also transforms you into the type of person who knows how to get things done, improving your standing among your peers.

15) Know your worth and never lower your value to anyone

As a freelancer, you’ll frequently run into potential clients who want to work with you but throw low-ball offers that are way below your asking rate. It’s tempting to accept these offers to build your client list when starting your freelancing career, even when uncomfortable with them. I frequently did this when I first did a freelancing stint years ago since I worried I wouldn’t get a project because I asked for what I wanted. Every single time, I regretted it. Those clients under-appreciated everything I did and became the most demanding and unpleasant people to work with.

Whenever someone asks me questions about getting into freelancing, I always emphasize that they should never, ever work for cheap, and to never relent from significantly reducing their rates. This lesson also applies to full-time employees. If someone doesn’t want to pay you what you’re worth, it’s in your best interest to move on and find someone who will. I know it’s easier said than done, especially in the current layoff-heavy climate in tech. But if you fully understand your value to an organization, there’s no reason to sell yourself short.

16) Never undervalue the roles others play in your company

Technology startups focusing on building software instead of providing services often place software engineers on too high of a pedestal, making their role the most precious and valuable in the entire organization. Unfortunately, it also leads to software engineers undervaluing the work of others around them. When I was younger, I admittedly had that frame of mind. It didn’t help that many of my fellow developers shared the same attitude, making ourselves feel significantly more important than anyone else. Over time, I shifted to the belief that everyone working within an organization is essential to the end result.

While the work that software engineers do in these places often provides most of the tangible and visible results, the success of any company depends on every role across the board. Testers strengthen the product before shipping, saving developers from embarrassing bugs and rework. Sales and marketing help get more eyes on our work, and the development work won’t matter if no one uses the product. Customer support stays close to the people using the product, keeping us free of distractions from the frontlines. I can go on and on about how different roles contribute to whether or not your organization stays afloat. Don’t devalue what others do because their work helps make yours better.

17) There’s no such thing as work-life balance.

“Work-life balance” is a term thrown around so often that it’s lost all meaning. In my experience, attempting to always keep your work and personal life in harmony is more myth than reality. In some seasons of your life, your job will require most of your attention and mental energy. For days or weeks, you’ll need to focus and dedicate blocks of uninterrupted time to meet deadlines or handle a challenging project. You might even need to sacrifice the occasional weekend to get something off your place. You shouldn’t overwork yourself for others always (as mentioned in lesson 10 of the first part of this series) but know that it’s inevitable for most careers to have these moments.

However, the trick is to not tip the scales in favor of work for too long. It’s just as important to know when you need to spend most of your time on your family, friends, hobbies, and well-being. You need time off to unwind with yourself and those closest to you to remain healthy long-term and avoid crashing and burning. It’s nearly impossible for anyone to have equal time for their career and private life at all times. It’s an ever-changing and dynamic process where you need to continuously adjust based on your current priorities at any given time. Trying to find the perfect balance in that will only lead to incredible stress, so let go of seeking something that doesn’t exist, and instead, be mindful of where your focus is needed the most.

18) Losing your job can be a blessing in disguise

No one wants to lose their job. Getting fired or laid off feels like a punch in the gut, even when you know it’s coming. It makes you question your abilities and leaves you worrying about the future. I’ve been laid off and close to getting fired in my career. Both times, it was a challenging experience that left me feeling a range of emotions, from anger to sadness and everything in between. What I didn’t know then is that both events led to something much better soon after. In hindsight, it taught me that the moments that seem like a disaster can lead to a positive turning point in your life.

It hurt when I got let go from my job, but I also didn’t let the negativity sink in for long. I didn’t dwell in pity and instead took those moments as a sign that I needed to reassess my career goals and seek new paths. Had I not been laid off or shown that I was one step from getting fired, I wouldn’t have explored new possibilities that improved my life. I realize it’s easier said than done, especially if you and your family rely on that steady paycheck you’ll no longer receive. But know that losing your job isn’t the end of the road for you. Instead, remain open to new possibilities because these situations often turn out for the best.

19) Don’t ignore your instincts when you know when it’s time to move on

I’m an avid journaler, and for the past ten years, I have taken a few minutes almost every evening to jot down a few notes about my day. I recently stumbled upon some old notebooks and re-read some passages during a challenging period in my career. I joined a promising startup and was excited for the first few months. After the honeymoon period died down, I saw plenty of signs that this wasn’t the place for me. Although I knew finding something new was in my best interest, I stayed for far too long at that place. That environment negatively affected my physical and mental health—I was irritable towards family and friends, my body ached randomly, and I put on a lot of weight.

Many of us have had experiences where we stay stuck in jobs that we know aren’t well-suited for us. The weird thing about this is that when we’re in the middle of it, we’re optimistic that things will improve, or we suck it up because we have bills to pay and families to take care of. So we stay in a loop that inevitably leads to burnout or getting fired. We always know when it’s time to look elsewhere, yet we ignore our gut feeling about these situations. I stayed for over a year at that startup before finally listening to my instincts, which led to a much better path for my career. This event and the proof in my past journal entries taught me to trust my intuition more when I know it’s time to move on because it’s usually the right call.

20) Always remember, working in tech is a privilege

I can’t begin to express how grateful I am for all the opportunities I’ve been provided by working in this field. This kind of work has helped many across the globe, giving them a path to earn a very comfortable living doing creative work on a computer. Even with the issues facing the tech industry these days, with countless layoffs, forced return-to-office policies, and fewer openings for new jobs, we still have it good compared to other industries. The tech sector offers us a unique blend of creativity, flexibility, and the potential to have an impact on the lives of others. Not many others can say they have that in their work lives.

Sometimes, we can forget that having a career in tech is a blessing. We can get too comfortable with the salary and the perks of this career path. When I worked in San Francisco, I often witnessed how entitled many of my peers became in that environment. An example that sticks out is when I saw a software engineer threaten to quit because their company went from paying the team’s lunch from five days a week to three. This type of entitled behavior can happen to anyone if we’re not careful, so we should remind ourselves frequently that this is a privilege and we shouldn’t take it lightly. We never know when it can all go away.


The list began as a reflection on the work I’ve done in this space and some topics that I think can help those who are just starting out in the world of tech, but it’s also a reminder that everyone’s career consists of good and not-so-good moments. I don’t think anyone on the planet has experienced a smooth ride throughout their journey in life. But the bumps on the road and the stumbles we have are what shape us into who we become. Hopefully, these lessons will help remind you of that.


Do you need an experienced software engineer or tester on your team?

Whether you need someone with hands-on experience to lead new projects, tackle technical challenges your team is facing, or provide guidance and mentorship to guide you on the right path for your organization, I’m here to help. With my extensive software engineering, testing, and DevOps background, I’m available to provide expert assistance to you and your team. Together, we can take your projects to the next level, helping your team produce high-quality results consistently.

Let’s get in touch to discuss how we can collaborate to ensure the success of your projects and the growth of your team.

More articles you might enjoy

Article cover for 20 Lessons Learned From 20 Years in Tech: Part 1
Tech Career
20 Lessons Learned From 20 Years in Tech: Part 1

Some lessons that might help you navigate your career and personal life, based on a 20-year journey in the tech industry.

Article cover for How to Achieve Speed and Quality in Software Development
Software Development
How to Achieve Speed and Quality in Software Development

Discover how to find the perfect balance between shipping quickly and delivering high-quality software without cutting corners.

Article cover for Automating Rubocop Into Your Rails Development Workflow
Rails
Automating Rubocop Into Your Rails Development Workflow

Do you have Rubocop on your Ruby on Rails application? Here are some ways to run it early and often to maintain your code for the long haul.

About the author

Hi, my name is Dennis! As a freelancer and consultant, I work with tech organizations worldwide to help them build effective, high-quality software. It's my mission to help these companies get their idea off the ground quickly and in the right way for the long haul.

For over 20 years, I've worked with startups and other tech companies across the globe to help them successfully build effective, high-quality software. My experience comes from working with early-stage companies in New York City, San Francisco, Tokyo, and remotely with dozens of organizations around the world.

My main areas of focus are full-stack web development, test automation, and DevOps. I love sharing my thoughts and expertise around test automation on my blog, Dev Tester, and have written a book on the same topic.

Dennis Martinez - Photo
Learn more about my work Schedule a call with me today