Which skills I had to develop to become a great software engineer
“Trust me, I’m an engineer!” - this was used to be my favorite joke years ago. When I was following my gut feeling and people around me were in doubt. Later I started to notice people are doubting less. Maybe not really, but I was caring much less. This was directly related to my professional growth and complexity of the problems I was confidently solving.
Analyzing detail, noting weak points and identifying missing information became my daily drivers. Everything requires structure, everything that’s unclear - must be figured out. And the structure starts from the goal. Why does it matter? What’s the purpose? Are we having fun or are we here to achieve something. This is the moment many people get stuck at. I somehow managed to survive through the field of despair and learn how wonderful moments these are - when I’m having fun while I’m walking towards the goal. This requires honesty.
And I believe engineering always required and requires honesty. Because no matter what’s the field we’re doing the engineering job for. The outcomes are always validated by reality. True, harsh, sometimes devastating reality. We can’t override law of physics, we can’t reinvent algebra. It is not possible to claim something is “good” or “bad” depending on the mood or my personal point of view. Well, technically it can be claimed, but the outcomes may lead to a crash. Being honest and humble is what engineering taught me.
Once these lessons are learned - the true power of engineering opens up. I may get from point A to point B faster than anyone else without being the fastest runner. Heavy items can be delivered upstairs without me being a powerlifter. Water can travel upwards, despite it should never happens. It is available when engineers are humble enough to accept failures and at the same time being dreamers and rebels to doubt something isn’t possible.
Do not believe it until you have not checked yourself. This is mantra I learned the hard way. And this rule led me to the place where I am, being among the best software engineers. Doubting documentation, doubting other people claims “I’ve checked everything”, doubting customers and clients. In software development we can bend reality a lot, because laws of physics has almost no impact on it. Therefore many things are possible. Don’t be afraid to doubt other doubts. Never doubt your curiousity and inner voice.
Professional deformation is a 2-sided sword. From one side - it makes us great professionals. I was always obsessed with getting understanding of anything, that matters to me. I am often sharing this idea with my younger colleagues: “when you do understand - you don’t have to remember”. It becomes a part of the huge world. The mechanism. You can keep your knowledge on the current level of abstraction, you can get some levels up to connect to other areas of live. Or you can spend indefinite amount of time to deep-dive and learn as much as possible about each and every situation in life.
This is the blessing and the curse. Because life stops becoming a place where magic happens. It becomes a place that I do not understand enough. Humanit don’t see enough, don’t measure enough, don’t understand. Then it’s a moment for another lesson - the lesson of acceptance. And that’s the different story you can read through my previous articles.
Finding the root-causes, deep analysis, hard work and flexible brain - these skills are useful for any life situation. Except you want to drift through this life. You can’t get dumber the natural way until certain age, when our body degrades. Either don’t become smart or enjoy the ride.