paint-brush
An Inside Scoop Into An Mechanical Engineer's Journey to Software Developmentby@kartikkhosa
128 reads

An Inside Scoop Into An Mechanical Engineer's Journey to Software Development

by Kartik KhosaMay 16th, 2023
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

After earning his Bachelor's degree in Mechanical Engineering from Penn State, I found myself unexpectedly drawn to software engineering during my time at Appian. I hope that by sharing my story, I can provide guidance and inspiration to others facing similar challenges. In this Hackernoon article, I aim to share my experiences, insights and advice for those considering a career switch to software development.
featured image - An Inside Scoop Into An Mechanical Engineer's Journey to Software Development
Kartik Khosa HackerNoon profile picture

Discovering a Love for Software Engineering

After earning my Bachelor's degree in Mechanical Engineering from Penn State, I found myself unexpectedly drawn to software engineering during my time at Appian, a SaaS company specializing in low-code business automation tools. This unforeseen passion led me to pursue a Master's degree in Computer Science at the University of Pennsylvania, where I honed my skills and knowledge, ultimately making the leap from a solution engineering role to a software developer position.


In this HackerNoon article, I aim to share my experiences, insights, and advice for those considering a career switch to software development. My journey has taught me valuable lessons, and I hope that by sharing my story, I can provide guidance and inspiration to others facing similar challenges.


The Spark: Internship at Cummins

My interest in software engineering was sparked during my internship at Cummins in the summer of 2019, where I worked on several projects involving fixture and component design for testing turbochargers.


The process had repetitive tasks such as drafting, analyzing, and optimizing designs, which I found very monotonous. Additionally, the long timeline of projects led to a lack of excitement and a sense of stagnation. The only project I liked working on was automating one of the tedious analysis tasks that we would previously do manually.


It would take a whole day and was done every week by me. I created a Matlab script with a GUI interface that could completely automate this and save me a day's work. Fortunately, I had taken some coding classes at Penn State during my undergrad, which provided me with a basic foundation in Matlab for me to be able to take this task. This project was very fulfilling and I knew I had to be in the tech space after graduating.


Landing a somewhat Tech Role

I applied to as many tech roles as I possibly could and applied to as many companies that came to my campus until I landed a job at Appian which started in early 2020. While working at Appian, I primarily worked with customers, learning valuable soft skills in managing customer expectations.


I was part of a support team that resolved issues around the integration of third-party APIs with Appian and design issues within the Appian platform. This experience exposed me to the creative aspects of software engineering and solidified my interest in pursuing a career in the field.


My Process of Applying to CS Master's Programs and then Transitioning to Software Development:

  1. Researching available online programs:
    • As a working professional, my focus was on online programs, but the options were limited since this was before COVID-19 when online courses were not as popular.
    • Creating a list of programs offering online degrees, I found that only a few were open to applicants without a previous bachelor's degree in computer science.
  2. Applying to multiple universities:
    • Based on my undergrad experience, I aimed to apply to at least 5 schools: 2 safety, 2 target, and 1 reach, which included Georgia Tech and UPenn.
    • Gathering all relevant documents and materials, such as transcripts and recommendation letters, early on, enabled me to apply in the early decision deadline, which historically has higher odds for acceptance than regular decision.
  3. Selecting the best program for my skill level:
    • The choice came down to Georgia Tech and UPenn. After evaluating both programs' curricula, I ultimately chose UPenn's MCIT program.
    • Factors that influenced my decision included program duration, course offerings, TA to student ratio (arguably the most crucial factor), cost, and faculty expertise.
  4. Completing coursework and gaining knowledge in Computer Science:
    • Up until now, I have successfully finished 8 out of 10 required courses in the program, striving to take 3 courses a year and taking a break during the summer semester if I feel burnt out.
    • Setting a goal for myself, I aim to complete the degree by mid-2024 and learn as many new and relevant technologies as possible.
  5. Preparing for a job search in software engineering:
    • Recognizing the importance of investing in a LeetCode subscription, I gained access to a vast library of coding problems; there are free alternatives, but LeetCode is the most popular among students and industry professionals.
    • I dedicated time to practice coding problems semi-consistently for about a year.
  6. Joining a support group with similar goals:
    • Connecting with a group of friends at Appian who were also pursuing software development roles, I found support and camaraderie.
    • We participated in group discussions, shared resources, and motivated each other.
  7. Leveraging previous experience and academic projects:
    • In job applications and interviews, my solution engineering experience was highlighted to show that I am a quick learner, work well with others in a team and have good people skills such as working with clients.
    • Showcasing academic projects from the CS Master's program, I demonstrated practical skills that are used widely by industry such as data analysis, algorithm optimization, software architecture design, and full-stack web development.
  8. Applying to software engineering positions:
    • Actively searching and applying for jobs, I faced the uncertain job market of late 2022 but continued to apply to 100s of roles.
    • Tailoring my resumes and cover letters, I ensured they matched the requirements of each position but made sure my main resume was general enough to be used for most of the applications.
  9. Securing a position in the competitive world of software development:
    • Landing my first software engineering role was a success.

    • Embracing the challenges and opportunities that come with starting a new job in the industry, I prepared myself for this exciting journey.


Transitioning and Thriving in Software Development

Progressing to my first software engineering job was not easy. To help myself grow, I kept a log of the things I learned during the first two months. Writing things down significantly aided in tracking my progress and developing my skills. One important skill I developed was the ability to ask the right questions and make an effort to find answers independently before seeking help from others.


As a solution engineer, my work focused on troubleshooting and working with software teams to identify bugs. However, now as a software engineer, I now develop new products from scratch, fix bugs, and work on new features for existing products. It's exciting to see my code in action, used by thousands of people.


Gaming: A Valuable Outlet for Success and Conclusion

One aspect of my life that has helped me succeed in my professional journey is my passion for gaming. Gaming has not only been a great way to stay connected with my college friends in different states, but it has also helped me develop teamwork skills that are valuable in my professional life.


Additionally, gaming serves as a fun and engaging way to destress and maintain a healthy work-life balance, allowing me to approach my software development career with a clear and focused mind. In my future articles, I plan to provide even more insight into my life as a software engineer, both professionally and personally. I hope that by sharing my experiences and lessons learned, I can inspire and encourage others to take the leap into the rewarding and exciting world of software engineering.