On the first day of class for my course on Software Engineering my professor had us work through a brief but eye opening exercise. He asked us to take out a piece of paper and then directed, “take 30 seconds to write down what your passion is. go.”
Only allowing that short amount of time I think forces you to write down the truth. I put the first thing that came to mind.
“Now trade papers with the person sitting next to you. Read what your neighbor’s passion is and take 30 seconds to write down how Software Engineering, or Computer Science in general will help your neighbor pursue their passion.”
I complied and took my 30 seconds. What he said next humored me but also made me think.
“Okay now pass your papers back. If your neighbor left you with a blank paper, they couldn’t think of any way that this class or computer science could help you pursue your passion… you should drop this class.”
This simple exercise reignited my thought process of striving to find relevant meaning in every course I take rather than just working for the degree. It is easy to fall into routine of College studies, especially in your 8th semester of Undergrad. It is so much more important to make connections from what you are learning to your passion than to just pass a class with a letter grade.
What I wrote on my piece of paper and shared with my peer was: Researching, learning, and collaboration. Thankfully, my neighbor did not leave me with a blank suggestion, I was in the right place.
Computer Science is a field where a lot of research can be done, there seems to always be something new to learn, and collaboration is necessary to be productive, an excellent match for my passion. Specifically some of the skills I want to develop in Software Engineering are project planning, large scale software design strategies, and the awareness of and experience with existing development tools.
Being able to draw out a plan that is feasible, efficient, and easy for others to understand is imperative to any significant endeavor, not just Software related. For example, a very large chunk of the research process is planning, you need to develop a concrete idea of what you want to study, make a rough timeline, write a proposal, and then probably refine everything you already did all before starting to work on the project.
Understanding effective large scale Software design strategies will help keep you sane and productive when working with thousands to millions of lines of code. If you want to develop almost any useful Software then your code needs to be organized.
There is an ever growing toolbox of platforms for version control and collaboration, development environments, debuggers, and more. Keeping close track and making use of all of them would be difficult and unnecessary but being able to find the right tool for the job is extremely beneficial.
I believe Software Engineering will help me pursue my passion; I am excited to learn and add Software Engineering to my skillset.