💡 Lessons Learned

Reflections on a journey as an engineer & leader

Sean Handley
6 min readApr 16, 2024

As I prepare to leave one job and start a new one, I’ve been reflecting on some lessons learned through my career so far as an engineer, a manager, and a manager of managers.

As with all advice, please view it with healthy skepticism. It’s far more important to develop your own compass than to over-index on someone else’s!

  • A career spans decades. Jobs come and go, and they tend to evolve and change often and quickly. The consistent part is you — invest in yourself, your learning, your values. Like it or not, you’re growing your own brand (intentionally or unintentionally) and it’s this brand you will be selling when you’re interviewing. Make sure you know what you’re selling, and that you believe in the product!
  • Every job is crap for a different reason. We have a tendency to hyperfocus on the broken things, both as people and as tech professionals. Don’t forget to make time to appreciate the things that are working well, and don’t feel too bad that your job includes days, tasks, projects, or people that may be challenging or frustrating. All jobs have these — as my grandma used to say, “where there’s muck there’s brass”. Another way to think about this is: when everything is going to plan, your opportunities to learn and grow are limited.
  • Be kind. it doesn’t mean tolerating bad behaviour, but being mindful that people can be very quick to be defensive when encountering a person whose values or ideas are different. This is an evolutionary trait rooted in tribal behaviours — the mark of intelligence is the ability to entertain a new idea without necessarily condoning or believing in it. Who knows — you might even learn something, or change your mind.
  • You’ll never be fully qualified. There will always be someone more qualified. Do the things you’re not fully qualified to do yet₁, and see how you fare. You might surprise yourself.
  • Your health is the greatest asset you have. Do everything in your power to sleep the best you can, eat the best you can, and look after your body and your mind in every way that you can. You can’t be great (or even adequate) inside work if you’re falling apart outside work.
  • EQ is way more game-changing than IQ. If you want to make yourself a better engineer, collaborator, manager or stakeholder then invest time in learning about the key four emotional intelligence topics: Self awareness, self management, awareness of others’ emotions, and relationship management. This has the very tangible benefit of improving your relationships and mental health outside of work too.
  • Building software is an exercise in communications. People need to spend a lot of time talking to people before they start talking to computers, and that’s where most of the problems and misunderstandings happen. We solve this by getting very good at over-communicating and making things so clear there is no margin for misunderstanding.
  • Make it maintainable. The fundamental problem of building software (beyond solving your user’s problems correctly) is to create a maintainable codebase that can be evolved as requirements inevitably evolve. The fundamental problem of building maintainable software is controlling coupling through writing code as a suite of composable modules with clearly separated concerns such that each unit (method, module, class etc) has only one reason to change. Training yourself and your colleagues about this is crucial.
  • Write things down. Don’t forget to read what you wrote periodically and to act on it. Remember that the act of writing helps to crystallise your thoughts and improve your understanding. We often think we know a lot more about a topic than we actually do until we try to articulate it. Teaching others is a good way to hold yourself accountable, but you can get the same effect by forcing yourself to write at length about a topic, even if another person never hears what you’ve said.
  • Always be learning. Make time each week to read, take courses, watch videos. Be religious about this. Your future self will thank your past self for making the investment.
  • Work is infinite, your time is not. Work will always expand to fill the time, and the reward for getting work done is often more work. Defend your time and your energy because this is an infinite game with no ending. Even after you retire, that stream of work will keep flowing. Never feel guilty for shutting the laptop.
  • The power of habits. What you do every day is what creates change over time. Be mindful of what habits you want to cultivate, and what habits you want to curtail. Success comes from making marginal gains in the things you do repeatedly and seeing the cumulative effect of that — almost never does it come from Herculean acts of heroism.
  • Nothing changes unless people feel it. The hardest part of changing things is persuading other people that the change will impact them positively. You’re not selling the idea — you’re selling the person a better version of themselves, once this idea is realised.
  • The XY Problem. People have a tendency to talk too much about solutions before they’ve fully understood the problem. Engineers especially love to dive head-first into building things, and stakeholders often walk into conversations with the intention (explicit or implicit) to direct it towards a pre-selected solution. Everyone involved should be crystal clear on the problem, or things will go astray, time will be wasted, and people will become frustrated.
  • Systems, systems everywhere. Everything can be viewed as a system. Systems thinking is at the root of solving any problem, whether it’s in code, architecture, people, teams, processes, etc. It can all be modelled with a set of rules that help us to understand behaviour and predict future behaviours, risks, and bottlenecks.
  • Be the worst member of the band. If you’re working with people whose abilities exceed your own then you’re in a great position to learn and to grow. Seek out opportunities to work with people who can help you learn.
  • No stupid questions. If you’re not willing to risk looking stupid then you’re limiting your potential to learn and to grow. Learn to be unafraid of asking those “obvious” questions. Bluffing will only come back to haunt you later — every day is a school day.
  • Keep It Simple, Stupid. Great design doesn’t come from there being nothing left to add, but nothing left to take away. Strive for simplicity and be ruthless about the things you won’t need.
  • Become familiar with critical thinking. Once you understand confirmation bias, you start to see it everywhere. In all seriousness, the subject of critical thinking (understanding cognitive biases and logical fallacies) is extremely useful as a foundation for navigating the world.
  • Don’t let technology distract you. Turn all the notifications off₂ every piece of mobile and desktop software you use. This way you get to decide when to refocus your attention somewhere else. Controlling your attention is a pivotal skill that will help you to be effective and reliable.
  • Enjoy yourself. Finally, you must never forget to have fun. If you’re finding ways each week to enjoy yourself then you’re energising yourself and others. There’s nothing frivolous or silly about that because it gives you and other people the ability to be resilient and to overcome challenges. Laugh at everything, especially yourself.

₁ Except for surgery. Be fully qualified if you’re performing surgery.
₂ Unless you’re on-call, of course. You should be distractible then.

📚 Links

I often re-read/re-watch these. I consider each of them to be gold.