Life lessons from a software engineer

When I started my journey as a developer, I never could never have predicted all the non-technical lessons I would learn along the way. Here are few the insights I’ve learned about life by being a software engineer.

Do the hard work upfront. Your future self will thank you.

One of the traits of developers that I find the most endearing is our tendency to spend hours working on something that will shave off a few seconds of work. Can we sometimes be guilty of over-engineering things? Totally. But often our “proactive laziness” is what makes us so good at what we do.

In my daily life, this might look like carving out time to properly organize my space so that everything I own has a dedicated home. It might look like spending a couple of hours on Sunday to meal prep. I’m not perfect about doing these things, but when I do, it makes it infinitely easier to make good choices throughout the week.

Automate everything.

Our brains are brilliant at solving complex creative problems, but terrible at remembering to do something at a specific time. Developers understand this, and there’s a reason why we work hard to leave very little room for human error or forgetfulness. This is exactly why CI/CD tools exist. Finding ways to automate your life – such as setting up auto-pay on your utilities, or having a portion of your paycheck automatically deposited into your savings account – can help you not only save time, but also money and stress.

Automating is also about delegating. With apps like TaskRabbit, you can find people to help you with anything. In the past I’ve hired someone to be my “house admin” person, and every week she’d come to my house for one hour and take care of any random task that I’d been procrastinating on, such recycling my massive collection of Amazon boxes, cleaning out the fridge, assembling furniture, or just general tidying. She was my weekly “reset”, and it did wonders for my mental health.

Problems never completely go away – they just change

In the early days of my career, I remember feeling like a deer in headlights anytime I would run into an error. I would immediately turn to my right and bug the senior engineer next to me for help. Over and over I would run into problem’s I’d never encountered before, and over and over I’d want to throw in the towel. Seeing how easily more experienced colleagues would easily be able to help me resolve my issues, I (naively) came to believe that the more I learned, the fewer errors I’d run into.

Wouldn’t that be nice. 🙃

As any developer can tell you, gaining experience does not decrease the number of errors you encounter. Not in the slightest. But the errors you encounter do change over time, and this is a good thing. There’s no such thing as a developer that doesn’t encounter bugs. It’s part of the job. But as long as you’re consistently encountering new errors, it means you’re making progress.

When you run into a problem, get specific.

In tech support, its common to receive vague requests that don’t provide much context to the issue:

  • “My site is down, please help!!”

  • “I tried to do this, but it didn’t work.”

In order to help resolve a query faster, there are three simple questions that users can answer:

  1. What did you do?

  2. What did you expect to happen?

  3. What actually happened?

Instead of just saying “I can’t do X”, providing more context and details to a support request makes it much easier to debug.

This principle could be extended to all areas of our life, and not just when trying to fix something. Let’s say you’ve been trying to eat healthier, but you keep falling off the wagon. Telling ourselves that we’re “just lazy” and that’s why we can’t stick to our goals is not only unkind, it’s also unhelpful. What might a more honest and specific answer be?

Maybe your idea of healthy lunches is a kale salad, which doesn’t sound all that appetizing, and that’s why you’ve been defaulting to ordering takeout. This is not only a much more specific reason for not sticking to your health goals, it also helps us identify a solution: don’t eat kale salads! Find other healthy recipes that actually make your mouth water. By identifying clearly our roadblocks, it becomes much easier to find solutions.

Turn frustration into curiosity

There’s a reason so many developers are guilty of blindly copying and pasting answers from StackOverflow. You Google the error you’re facing, quickly scan for a code block that looks like a solution, and give it a try. Sometimes this can have disastrous consequences, but even when the solution does work, we might not understand why.

Everyone wants an easy solution, because handling problems on our own can be tiring and frustrating, especially when it feels like we’re making no progress. Once I learned to transform that frustration into curiosity though, things began to change.

Not only was curiosity more conducive to problem-solving, it also alleviated my feelings of inadequacy. Imposter syndrome is actually a bit of an egotistical problem. We can get so wrapped up in what others think of us. But curiosity affords us a safe psychological space between what we know (or don’t know) and who we are. When you transform something scary and confusing into an interesting mystery, it’s much easier to ask the right questions. It’s hard to worry about your own insecurities when you’re busy asking questions about something new.

Written by Annie Sexton

lasdflkjasdflk ja sl;djkasdljk;fasdjlk asdj fl

Looking for a note-taking app with better markdown support?

Typist features auto-rendering Github-flavored markdown and keyboard shortcuts for days.