What is software engineering? What do software engineers even do? These are questions I asked myself before starting my software engineering class. Before starting this semester, I was completely clueless on what I would learn and what I would do in class, and honestly, I was worried and scared that it would be too much for me or I wouldn’t be good enough (although I have to admit I was also excited). As the semester started and the class went on, I learned things about development and software engineering that I thought I would have never learned before, and I found the class more and more enjoyable. Software engineering started feeling less scary and more like a goal that I could work towards, and something that challenged me to do better. It helped keep my work ethic high, pushed me to learn and think critically and allowed me to become much more familiar with web application development. Now that this semester is coming to a close, and I can confidently say that software engineering has been one of my favorite classes. I not only learned software engineering skills, but skills applicable to real-life and other fields.
Personally, I find many aspects of software engineering inherently helpful to your growth not only as a worker, but as an individual as well. Things such as persistence, problem solving, teamwork, and having the ability to learn and put what you learned into practice are all skills that can all be developed from software engineering, but I will be focusing on what I think are the two most important and applicable skills that I learned in this course: the ethics involved in software engineering and agile project management.
By definition, ethics refers to the concept of right or wrong behavior, and essentially attempts to figure out how an individual can live their best life. So, as you can guess, software engineering ethics focuses on the right and wrong behavior in a software engineering environment. This is very important because as a software engineer you may have access to private user information or be responsible for a system that may affect the lives of others, so you want to be sure that you are making good choices in your code and how you handle situations. But this doesn’t only apply to web application development. Ethical issues can apply to everyone, and although individuals may have a different sense of what is right or wrong, it is important to at least know the ethical approaches that are considered for situations. For example, if you are forced to choose either killing one person or 5 people, with either choice resulting in loss of life, what would you choose? Knowing ethical issues about any field can help you make better decisions anywhere. It helps you become more aware of what others are thinking and feeling and based on that you can make good decisions that will better the lives of yourself and others. I believe that being aware of ethical issues in any practice and figuring out how you would act in those situations is essential and covering the ethics of software engineering helped me become more aware of those issues no matter what field or job I pursue.
The second most useful (and what I think is the most important) topic that I learned was agile project management, which focuses on the finding requirements and developing solutions through collaborative efforts made by the team you are working with. I found this to be very efficient way of approaching a task or project, especially by implementing an issue-based approach to our final project for this course. This allowed for our team to manage time better and allowed us to have lighter workloads over a period of time. But this type of approach can be applicable towards any goal or task in life, and I believe that it doesn’t have to involve working with a group of people either. Although this type of project management definitely helps builds better communication among team members, it also helps a person individually develop better time management and organizational skills, both being good skills to have. Using an agile project management approach can help one meet deadlines efficiently. By doing lighter loads of work consistently over a long period of time it becomes much easier and less stressful to meet a deadline, whether it is homework for a class, or planning a party for family and friends. By implementing project management techniques like organization and time management into our lives, we can develop good habits that will set us up for success throughout our lives.
Overall, my software engineering class has been incredible and very a valuable learning experience and has provided an amazing opportunity that allowed me to learn and develop many skills that I believe will be useful anywhere in life. Although the class seemed daunting at first, I have come to realize that I really enjoy web application development and I plan to continue pursuing a degree in computer science with a focus on development. Even though this class has finished for the semester, I will continue to view myself as a student of software engineering, which I consider to be a never-ending class that will constantly allow me to grow and better my skills and myself.