Engineering Skills for a More Fulfilling Life

By Stefan Auvache

Working as a full-time software engineer has taught me a lot about life.

I spend a great deal of time using logic to understand and debug code. I think about how to manage my workload efficiently, when and how to properly say no to requests, and how to be more productive and useful. I am constantly problem-solving, project-managing, and communicating concepts to people with various levels of technical understanding.

The lessons that I have learned as a software engineer directly influence the way I live. They help me to be more productive, patient, present, and flexible. The daily practice of engineering has made me more capable, curious, and fulfilled in all the aspects of my life.

Here are some of the most important lessons I have learned as an engineer and how they apply to everyday living:

1) Improvement Work is Necessary Work

The return on investment (ROI) for improvement can be astronomical.

One of my jobs is to get better at being an engineer. I spend time learning about security, design patterns, new technology, and how to write more maintainable code. This can sometimes feel like extra work that pulls time away from more important tasks. But taking time to improve pays off in the long run.

As my skills have improved, I have become far more productive. The hours that I have invested in improvement have paid for themselves over and over again by saving me time and frustration in the future. Trading that investment for short-term productivity would have been more expensive in the long term.

Taking time to get better, be it in software engineering, communication skills, or physical fitness, pays dividends down the road. Improvement work is not something extra to do if you have time left at the end of the day. It is necessary work that can and should be prioritized.

2) Be Intentional With Your Time

I have roughly 40 hours per week to keep up with my responsibilities as a software engineer. This includes building and managing projects, fixing issues as they arise, organizing and planning future projects, and other work (learning, admin stuff, etc.).

If I am not intentional with how I use my time, I cannot get everything done.

I have a physical to-do list on my desk every day. I do the most important work first. I constantly use timers to keep myself from getting distracted with unimportant details or other tasks that pop up during the day. My goal is to know what I am doing and why I am doing it.

That same habit of intentionality has helped me spend more meaningful time with my family and friends, replace busyness with purpose, and make deliberate progress in my hobbies and skills. Life is better when you think and act with intention.

3) Do One Thing at a Time

When I constantly switch between tasks, I get confused, make mistakes, and end up burning out quickly.

Doing one thing at a time empowers greater focus, productivity, and satisfaction. When I block out distractions and give all of my focus to a single task, I find depth of focus. I do deep work. I am more efficient and better able to solve problems.

Once you have decided to give your time to something, do that thing and only that thing. If you are coding, code. If you are writing, write. If you are eating dinner with your family, friends, or someone new, keep your mind in the present. Do one thing at a time.

4) Plan for Unplanned Work

One of the greatest stressors in life is having too much to do.

There is a joke in software engineering that, once you have coded the first 90% of a project, you need to code the second 90%. The phrase comes from the unexpected issues that always arise during development. Projects can take 2-3 times longer to complete than you initially think.

One of the keys to effective project management is to plan for unplanned work.

Whether you are on an engineering team, running a business, or raising kids, don't fill your schedule to max capacity. Set time and resources aside to handle the unplanned work that will inevitably arise in your life. When things pop up, you will have the bandwidth to handle them.

5) Measure What is in Your Control

Software engineers set goals all of the time. We set deadlines on completing projects, make lists of the work we need to do each day, and constantly balance what we want to achieve with how we plan to achieve it.

There are two main types of goals that people set—product goals and process goals.

Product goals lie outside of your immediate control. Process goals, on the other hand, are immediately doable. An author doesn't directly control how many books they publish, but they do control how many words they write per day.

Setting process goals is the secret to achieving product goals. If my product goal is to be more effective at doing my work, my process goal is to work on improving myself for 30 minutes every day. A daily study habit is easy to measure (did I study for 30 minutes or not?) and entirely in my power to achieve.

6) Avoid Premature Optimization

Writing software can be an endless pit of perfectionism. You can always make something a little easier to read, a little more efficient, and a little bit better. Some developers waste a lot of time improving things that are probably good enough as they are.

In software, this is called premature optimization—the practice of perfecting things before they ought to be perfected.

Just because something can be better doesn't mean that it needs to be, at least not right now. Premature optimization can be the death of productivity. You cannot make everything in your life perfect. Attempting to do so will prevent you from finishing all of the work on your plate.

This does not mean that you should be lazy or sacrifice craftsmanship. You can do great work without wasting time making unnecessary improvements. Don't be a perfectionist. Make things as good as they need to be and move on.

7) Cultivate a Growth Mindset

In the 1970s, Carol Dweck began a career-defining study of how kids respond to failure. She found that kids either had what she called a fixed mindset—the belief that their abilities were innate and inflexible—or a growth mindset—the belief that they could learn and improve with effort.

Thinking you have all of the answers is a recipe for disaster, especially as an engineer. There is too much to know for anyone to understand it all. The best engineers I know are the ones who are still humble and willing to learn after decades in the field.

Cultivate a growth mindset. Be more curious than you are opinionated. Don't let your ego get in the way of learning new things. You will become more capable, knowledgeable, understanding, and pleasant to be around.

8) Think Agile

In the early days of software development, projects often failed the same way: engineers were given a list of requirements for a new project. Months later, they would present a finished product that—though technically correct—didn't match the original vision.

In 2001, a group of engineers and business leaders got together and created Agile Development. Agile is a flexible, iterative approach for building software. It focuses on delivering small, usable pieces of a project quickly, gathering feedback, and improving iteratively through collaboration and adaptation.

Outside of engineering, Agile is a powerful framework for self improvement. Instead of setting a rigid five-year plan, create a vision for the future that leaves room for iterative improvement. Make short-term plans, take action, and get feedback on how things went. Then, use what you learned to improve your processes and better understand where you want to end up.

Being a software engineer is about learning how to think more clearly and plan more effectively. It is about building things that work well and becoming a more capable person.

You are the engineer in charge of developing your life. Work to improve yourself. Be intentional with your time. Give all of your focus and energy to the task at hand. To prevent overwhelm and burnout, plan on doing unexpected work. Measure things that are in your direct control, avoid perfectionism, and strive to learn as much as you can. As you learn new things and become a more capable person, adjust your plans accordingly.


Enjoy this article? Share it and subscribe for weekly insights.

  • Share on X
  • Share on LinkedIn
  • Share on Facebook
  • Share on Reddit

One Email, One Idea, Every Week

Learn Agile Personal Development—the iterative approach to building a life you actually want.

Articles

AI Strategies to Safeguard Personal Development

AI can make you far more productive, but it can also cause valuable skills to atrophy. By focusing on understanding, reinvesting time saved into deeper work, and collaborating with AI intelligently, you can improve skills while taking full advantage of AI's power.

Measure What Is in Your Control

Stephen King has written dozens of bestsellers, sold over 350 million books, and built a net worth north of $500 million. While impressive, these are metrics he pays little attention to. As an author, there is only one metric that King pays attention to—words written per day.

The Ninety-Ninety Rule and Overcoming Unplanned Work

Every project takes longer than expected. Unplanned work derails progress, but it doesn't have to. Gain visibility, double your timelines, and triage like a pro to stay productive and in control.

Agile Development: A Pattern for Improvement

Stripped of business and coding jargon, Agile Development is an incredible framework for self-improvement. Make a plan to get a little closer to where you want to be. Act on that plan. Measure the outcome of your actions. Then, use what you have learned to adjust your vision for the future and plan your next move.