When I transferred to computer science from mechatronics engineering in 2012, I did it solely because I wanted to one day work remotely. I already pictured myself coding away in Thailand, mastering my Muay Thai in my leisure hours. I had zero passion for software and really, I had a very low opinion of the field and pictured mostly asocial nerds behind computer screens in dimly lit basements. That all turned out to be false. I never worked remotely from Thailand, I am still terrible at Muay Thai, and computing science turned out to be a thoroughly interesting field, against all my expectations.
Up until I started working as a software engineer, I had always worked blue-collar jobs. My parents owned a fairly sized family bakery and I did everything from delivering bread to cleaning the bathrooms to being a sales representative, being a repairman and more. These were the jobs I was running away from. They provided no intellectual stimulation whatsoever and held no future for me. When I started working as a software engineer, I was overjoyed to finally be paid to use my brain. I was no longer just a pair of arms and legs, attached at their center by a bag of meat to move physical objects from point A to B. Instead, I was now moving ones and zeroes while making my brain work at full steam.
What do I like most about software engineering? I think it must be common in most technical fields, but I am challenged daily to understand complex systems, work in a systematic way, and improve on these skills, continually. My work has forced my brain muscles to become more logically sound. I feel more rational these days, and it strangely carries into my personal life, making me a better human being.
If you end up working in a software subfield you do not enjoy, you are in luck because there are so many subfields: backend, frontend, infrastructure, networking, data engineering, data science, machine learning, project management and countless more. While it is not easy to transition to a different subfield, it is certainly not impossible. In 3 short years, I have worked on:
- Developing low-level, real-time cloud-based software to create image files from the binary data that satellite ground stations demodulate from the electromagnetic signal.
- Detecting Deepfakes in an R&D position.
- Worked on payroll and tax systems in the unimaginably complex U.S. tax landscape.
If you start getting bored in your day-to-day job, either you need to find a more stimulating job or need to revise your mindset. When you pick something to work on for a really long time, there will inevitably be moments when it feels utterly boring and uninteresting. These are the moments when I reevaluate what my approach to the craft is. In these times, my mind is telling me that I am settling, that I am going the easy route, so I pick up something new to learn or analyze where I can improve myself in my craft.
When you come at a problem with a learner’s mind, with a playful attitude and humility, the absorbing aspects of a problem divulge themselves more readily. There is a myriad of things to improve on when working as a software engineer:
- Your ability to handle a hammer and nails: i.e. mastering your programming languages of choice.
- Your ability to craft a beautiful, structurally sound and maintainable house: i.e. code you will be proud of and that won’t scare other maintainers away.
- Your ability to optimize the house’s plan: i.e. learning good software architecture.
- Your ability to lead your contractors: i.e. learn to work effectively with other engineers and lead them.
- Your ability to carry out house inspections: i.e. respectful and constructive code reviews.
- Your ability to minimize resource usage: i.e. master your data structures and algorithms.
To conclude, I initially went into the software field with the sole intent to live in a remote exotic place with a good salary. Sadly, I did not expect to like it. Never did I foresee that I would actually thrive and find the field deeply stimulating, both intellectually and emotionally. Often we paint the worst pictures in our minds when reality really is not that bad...and can actually be great! So keep a learner's mindset, have humility and stay open.
If really you end up hating it, you can always transition into another field entirely – out of IT – and that would certainly be financially doable on a software engineer's salary 😁.