Gotta Start Somewhere!

14 May 2020

Gotta Start Somewhere

Broadening My Knowledge

When I started this software engineering class, I didn’t know what I would learn or what to expect. I thought this class would just teach me the fundamentals and how software engineering works, but instead I had the opportunity to learn different types of platforms and use it to make products that I could put to use in real life. My knowledge widened with not only learning another piece of computer science, but also with useful tools that make me feel confident going into a job with these skills. The whole point of going to college and taking degree courses is to prepare the person for real world jobs and allowing the student to find their passion in that field of study. I think if a student can walk away from a class and feel confident in being able to use their learnings for a real paid job, then the professor did their job well. This class made me feel comfortable with pursuing a career in software engineering and most of the questions I had were answered. I wish we had a longer period of time to expand on the platforms as well as the back-end engineering. These skills weren’t only to prepare me for jobs in computer science. It also reminded and taught me new ways of how I deal with my work. Ethics in software engineering, agile project management, and functional programming were the lessons that I took the most away from.

Functional Programming

Functional programming was really awesome to learn and was also the first new platform that was taught in this course. We used what is called Underscore. It made my coding life so much easier and neater. What would have taken five lines or more, underscore did it in one. It allowed you to call a function within a function and assign it to a variable. An example that I used often in my code was pluck. Pluck allowed me to take an array of items and the function would sort for a key, a word or a group, and return a list that met the requirements. This was great for sorting arrays into certain groups and grabbing the data I needed. I wrote a code in C language that delivered the same exact product, but that code took up about 15-20 lines of code and a lot of my time. With my experience in coding, I quickly realized that coding takes a lot of time and that time is precious if you are trying to make a deadline. Using functional programming saves me hours of code, which is great because in a real life job, there are important deadlines where every second counts. I honestly wish I knew about underscore earlier. With functional programming, I noticed how time is precious and it makes a difference when one line of code can save you hours of work. It keeps your brain sharper because you aren’t staring at a screen for hours trying to make something that already exists.

Ethics in Software Engineering

The ACM Code of Ethics expresses the conscience of the profession. Most of the rules are common courtesy and I hope that people are already that ethical. It also entails rules of code and addresses the privacy issues as well as what boundaries there are. All big companies have to live by these rules when making projects. With technology being the sole center of today’s new generations, I think these rules are probably the most important part of software engineering. Ethics to me is an important quality to have otherwise you will cross lines that affect many people. This isn’t something that only applies to computer science. I can use this in all aspects of my life. Reading into cases about companies that broke the code of ethics, it showed me how it can affect others in ways I wouldn’t have thought of. This applies to my school work, my sports, my jobs, everything. A part of the standards includes completing your work with the best of your ability and professionally. In my school work, I need to do my best in order to get good grades, but also learn the most I can. With track, I need to perform 100% every practice otherwise I won’t be at my best for competitions. The beauty of the code of ethics is that it can be molded to what the company stands for and can be used for all aspects of life.

Project Management

The last lesson was agile project management. We used the github issues and project tabs to help us keep our final project organized. It helped a lot since we had to work with other group members. During this corona pandemic, we couldn’t talk to each other in class times, therefore, communication was harder than it should have been. The project board helped with communicating on what responsibilities each person had as well as tracking the progress of our team. We created 3 columns that represented the to-do issues, the in-progress issues, and the completed issues. I feel like this is a tool I could use in any future group projects or even just a solo project because it keeps you focused on one goal at a time. I know what it is like to have so many ideas and responsibilities that I get sidetracked on the main goal. This agile project management way allows me to keep my head organized on what needs to be done in order. With groups, you can assign the issues to certain people so we all are on the same page and not repeating steps. This is a great skill to utilize in a work place since you most likely won’t be working alone. I typically don’t have to implement this only for projects. It could be used as a planner as well by keeping my assignments in order on what I need to finish first and when it is due. Agile project management is a great tool for organizing your responsibilities in whatever field.

With all the skills I have acquired in this class, I know that it can be put to use in other aspects of my life. I was thinking about going to graduate school for software engineering and this class showed me that I could really see myself going into this field. I have learned a lot in this course and I wished we had more time to expand on some platforms.