In this post I am going to reflect on the different aspects of software engineering that drew me towards choosing software development as a career path. When I think back to what first drew me to the field of software development, there are probably some things that appealed to me about it that I can no longer recall, but for the most part the five things I will discuss below stand out. These are not necessarily listed in order of their importance for why they made me choose software engineering as a career, but rather they are just in the order in which I was able to recall them.
- A Love of Problem Solving
Since middle school and high school I have had an appreciation for the challenge and thrill involved in tackling difficult problems. In high school I was in the math club, where at the end of every week we would work through problem sets with difficult math problems and attempt to solve them, and every several weeks we would participate in local and regional math competitions. I was also an avid chess player and in my last years of high school I drifted towards choosing a science subject as my major in college. In college I eventually settled on math as my major and graduated with bachelor of science in mathematics with a minor in physics. Throughout my college years I spent most of my time working on difficult problems for homework, tests, and occasionally projects or labs. Although I did not major in computer science or get very far into programming at all during college, I did take two courses for my major that that required me to learn the basics of, and use, two programming languages: C++ and Python. This was my first exposure to using programming languages to solve problems and although I did not get involved in anything relating to software at that point, I gained an appreciation for the way programming could be used to solve real problems using logic.
- An Affinity for Abstract Thought
One of the things I love most about programming and software development is the abstract thought involved - the use of variables and methods and classes and other components of programming languages to create software that can create general solutions to problems. By focusing on abstract, or more general, ideas and concepts when designing software, software engineers are able to create really remarkable products and services that have a lot more power and adaptability than products or services that are only focused on, and only capable of dealing with, one very specific problem or scenario. As someone who was already familiar with the power of abstraction in higher mathematics, it was easy for me to appreciate this aspect of software development and it was one of the things that I found most appealing about software development.
- The Ability to Create Things with Your Mind
When I was younger I wanted to be either an architect, a fiction writer (novelist), or a mathematician. Each of these fields appealed to me because they allow a person to basically create new and interesting ideas and concepts with just one's mind. Although I did not end up pursuing any of those careers when I grew into adulthood, I did find that same appealing aspect of being able to create something interesting and important with just one's mind in software engineering. The ability to create almost anything one can conceive of, with essentially no limits on what sort of product or service one can bring into reality, simply with thought and hard work, is one of the most appealing things to me about software engineering. In some sense, being a software engineer is like being an alchemist working with a modern day "philosopher's stone": with some starting ideas, materials, technologies, and the necessary programming languages, people can create (or transmute) seemingly inanimate and lifeless text, images, and numbers into a working, responsive, active system capable of implementing nearly anything that the creators wish it to implement, as long as the creators have sufficient skill, knowledge and hard work to make that product or service work.
- A Stable and Rewarding Career Path
One of the things that appealed to me about software engineering as a career is the stability and the rewarding opportunities available as a software engineer. Many jobs are available for software engineers in many different specialties (front-end, back-end, full stack, machine learning, embedded software, etc.) so there is a lot of variety, and most of these jobs pay very well, especially as one advances further in one's position. Furthermore, many new jobs are emerging or being created in software engineering over time, as technology progresses, unlike in some other industries where jobs are being gradually eliminated as technology advances and the use of automation increases. This means that software is a more stable career field than some other jobs such as certain factory jobs. Software engineering is also rewarding mentally, in addition to being financially rewarding. The ability to feel like what one applies one's thoughts and hard work towards really matters and helps people or provides a useful or enjoyable service is also mentally rewarding.
- An Opportunity to be at the Cutting Edge of Technology and Innovation
Being a software engineer also means that one is at the forefront of innovation in technology and business if one wants to be or chooses to go that route. In today's increasingly technologically sophisticated world, software is relevant for everything from robotics to e-commerce, finance, biotechnology or space exploration. Practically no field of human endeavor where important innovations are happening, or new technologies are being created or used, is without use for software engineers. This means that software engineers have a big role to play in advancing already existing fields by applying new or existing technologies to those fields and also in creating new technologies and new innovations that will create new opportunities and new areas of human activity.
These five aspects discussed above are the primary things (that I can recall) that drew me to software engineering as a career path. I hope it was an interesting read and hopefully someone out there who was considering software engineering as a career path will take something valuable away from my reflections on what drew me toward software engineering.