I fell in love with code — Leaping from Chemical Engineering to Software Development.

Michael Arnold
7 min readMar 16, 2021

--

I have always been an engineer. For as long as I can remember, I have been fascinated by science and technology; the skill of adeptly transforming dreams into reality once seemed unobtainable. Programming taught me that this superpower is more attainable than I could have ever imagined.

A little bit about me.

My name is Michael Arnold. I am 22 years old and am currently a Chemical Engineering student, finishing up my last semester of college. Currently, I work in the water industry on a variety of wastewater and water resources projects. Just ten months ago, I was common amongst my peers; I had an idea about where my career was going and I knew how I was going to get there. Little did I know that one simple VBA project at work would uncover my passion and change the course of my life.

Throughout my childhood, I was always curious about computers and technology. I used to spend hours playing with different software, creating things for fun. By the time I got to college I was using products from the Adobe Suite and Microsoft Suite on a regular basis, not necessarily for work, but just for the thrill of learning how to use them. This behavior crowned me as “the computer guy” amongst my friends and family; whenever anyone had a tech support question, I was usually the first person they’d call. Even though I could proficiently use plenty of software and answer a lot of questions about it, I was always left with this lingering thought, “ how does this actually work ? ”

My introduction to programming

Photo by KOBU Agency on Unsplash

My first formal introduction to programming was in 2017. I took a MATLAB class for Chemical Engineering students that was designed to assist us in some of the more rigorous calculations from other courses. This was a great tool to have; problems that were previously gate-kept by analytical complexity were suddenly easy to solve with the numerical methods that MATLAB provided.

In Spring semester of 2019, I took another programming class where we used an Arduino and the provided IDE to code and build really interesting projects. My favorite was one where we mapped a joystick to an RGB LED so that as you would move the joystick, the LED would change colors. At this point I was enamored by the possibilities and accessibility that the computer provided. I decided to go against the grain and forgo an internship for the summer. Instead, I focused my efforts on learning to code. The language of choice, Python.

That summer was life changing. I was a sponge, learning and writing python programs like crazy, and I loved it. There was this distinctly pleasant flow-state that I would become engulfed in as I sat at the computer for hours, abstracting my human thoughts into something the computer could understand. By the time the summer had ended, I was starting to have some pretty serious questions about my career and the path I was on. I truly loved to code, but I had already committed to Chemical Engineering, right? Unfortunately, the pressure and pace of engineering school had no mercy for my uncertainty, forcing me to bottle up these questions and deal with them another day. Still, day after day, the thought lingered in the back of my head.

Fast forward to Summer of 2020 and I had secured an internship in the water industry. After months of searching, dozens of applications, and four interviews, I had finally landed a job. Initially, water seemed like the obvious choice for me because I had previously worked on a desalination project with reverse osmosis. The reverse osmosis project was particularly interesting as I got to apply my programming skills and use numerical methods to solve real-world problems.

At my internship, my main job was to pull, clean, and analyze large sets of water quality data. At first, I was using Excel as my primary work horse. But soon, the work became repetitive and I was increasingly aware of the inefficiencies. At some point early on, I decided it was worth it to develop an application that would handle the bulk of the work for me. I did some research and came to the conclusion that I would design and build this project using VBA. A few weeks of intense Googling and Stack Overflow later and I had a working prototype, well sort of. Looking back, that first application was kind of a house of cards; it would work 90% of the time and then randomly fail on me when the structure of the raw data I gave it was a little bit off. But hey, it worked and had saved me a massive amount of time. I had actually used code to noticeably improve the efficiency of my workflow, and I was hooked.

At this point, I started thinking about all of the other ways I could use code to handle aspects of my job. My job was very data heavy, so I picked up Python for Data Analysis by Wes McKinney. Soon after, I had rewritten that VBA application into Python and cleaned it up so it wouldn’t break; I also created a GUI for it using Tkinter and wrote the documentation in hopes that the next intern will be able to pick it up where I left off. Outside of this, I developed a handful of other applications that have effectively automated a majority of the data collection, cleaning, and analysis process that I used to perform manually.

Programming made my job extremely fulfilling. I would go home and think about different ways to abstract my thoughts into code. I would be at the gym, and I was testing algorithms in my head. Programming was quickly becoming my life. Writing software was my passion. This realization brought those earlier career questions that I had stuffed away back into full focus; however, this time the answer was soberingly clear. I will do whatever it takes to become a software engineer.

Developing proficiency.

Photo by Roman Synkevych on Unsplash

Outside of work and school, I spend about 3–4 hours a day writing code, reading documentation, or learning new technologies. The most true thing that I have heard along my journey is that to get better at this, you have to write code.

Another thing that I have found very helpful on my journey is to make a definitive decision on where I want to take this career. Personally, I have decided that full stack web engineering is where I belong. The result of this decision is that I can focus my learning into what that role entails. In the earliest stages, I found myself hopping from language to language with no clear direction or goal. Choosing a path removed this uncertainty and has streamlined my learning process.

Outside of my water job, the technologies that I am using currently to work on personal projects are primarily HTML, CSS, ReactJS, and PHP Laravel. I have found that the most effective way for me to learn is to watch one short tutorial just to get up to speed and then just immerse myself into a project. By doing this, I ensure avoiding “tutorial hell” and I actually challenge myself, which I believe is the best way to learn. When I am stuck, I read the documentation. Consistently doing this has given me a better understanding of what I am doing, consequently making the debugging process a lot easier.

Beyond actually writing code, I have started to make an active effort to get more involved in the developer community. One of the ways has been with the creation of this blog. Others include getting active on GitHub and consistently making commits to my repositories. I have also been really focusing my podcast and YouTube consumption to development related content. I understand the importance of my involvement in the community to my success as a developer. If no one knows that I exist, then what are my chances of achieving my goal?

Where I am going from here.

The first thing will be to finish my Chemical Engineering degree, and finish strongly. Even though I do not intend on pursuing Chemical Engineering as a career, I am thankful for the experiences it gave me. It taught me to think like an engineer, a skill that is applicable in all fields.

Afterwards, I want to continue my education into Computer Science. While there is not really a requirement to have a degree to get into Software Development, I find myself evermore curious about the theory of Computer Science. My plan here is to first take a few CS courses at a community college and then to eventually go into a Masters Program.

In the meantime, I will continue building personal projects and get involved into some open-source work. Continuous improvement can only be had if I am continuously coding. I am also planning on continuing this blog and starting a YouTube channel to document my journey. The goal here is not monetize them or to become viral but rather to serve as an archive that I can refer to to observe my progress.

If you are interested in staying up to date with my progress, please visit my GitHub: https://github.com/michaelarn0ld

Keep learning, keep coding…

--

--

Michael Arnold
Michael Arnold

Written by Michael Arnold

Tech nerd and aspiring entrepreneur; I am a software developer, engineering enthusiast, and first principles thinker.