After a time management challenging and fairly rigorous semester, I reflect on what exactly it is I’ve learned. While a large portion of the course I took (ICS 314 - Software Engineering) revolved around web application development, I think the thing I took away the most from was how much my understanding of Software Engineering had evolved since the start of the semester. It probably should have been much more obvious since the course is titled ‘Software Engineering’ but many who take the course may mistake the course for a web application development class. However, you learn many concepts that apply to software engineering in general, although we see them hands-on in the form of web app development. Some of these concepts include Agile Project Management, specifically Issue Driven Project Management, and Ethics in Software Engineering.
So you might have been just like me a month or two ago and asked ‘What the heck is Agile Project Management/IDPM???’. Simply put, Agile Project Management is an iterative approach to delivering a project throughout its life cycle. Issue Driven Project Management is a type of Agile Project Management with a specific set of guidelines to follow. The basic premise of IDPM is to make progress in your project through issues or milestones, micro goals essentially, every week or two weeks until the project is finished. Now since learning of IDPM and implementing it for my final project of the course, I’ve learned a lot about actual project management and have expanded my understanding of projects in Software Engineering. Although I was excited to work on the final project, once we dipped our toes in the water, I and the rest of my groupmates quickly realized that we can’t swim. We likely would have drowned had our professor not prepped us with a life vest and lifebuoy. IDPM gave my group, and likely every other group, a way to organize ourselves for our first real software engineering project. Since then our project progress went swimmingly and gave us a lot of breathing room to finish it before its due date. Although we’ve only used IDPM for developing a web app, I can see it being used in non-web app projects. The premise is simple enough that I could see myself applying this form of project management for nearly all types of projects, assignments, or tasks.
Once again, just like IDPM, ethics wasn’t exactly a topic I had imagined to be connected with Software Engineering. In hindsight, it makes a lot of sense for it to be considered part of Software Engineering. Common sense even. Although it’s a relatively young field in comparison to other engineering focuses, Software Engineering having its own set of ethics, moral guidelines, codes, etc, is necessary for the field. The fingerprints of Software Engineering can be found in virtually everything if you look hard enough. Therefore the ramifications of unethical applications of Software Engineering can be catastrophic. Learning about ethics in this field opened my eyes to the scope of Software Engineering. It has made me more self-aware of how I conduct myself in this space. It’s helped establish a much firmer foundation in terms of my understanding of this field. Hopefully, the introduction of this topic will have also helped create a more ethical and responsible future software engineer.
Over this semester my understanding of Software Engineering has grown massively. I understand its scope of activity and thereby, the massive responsibility each software engineer must take upon themselves when they enter this field. Breaking just one code in the ACM code of ethics, intentional or not, could have massive repercussions to not just the one breaking the code but also the public. Being lazy and unprofessional could lead to entire systems going down, affecting an entire userbase. I’ve also learned how to properly conduct and manage myself in Software Engineering projects, with IDPM being my go-to strategy from now on. Software engineering projects are not easy. I don’t think any project of any type is easy. Project management is essential for all projects. So is time. IDPM will help manage your project efforts efficiently by spreading everything out over 1-2 weeks every 1-2 weeks. It’s simple, flexible, and has helped me develop proper time management skills that can be applied to anything. Although I’m not able to properly go over every way these two concepts have essentially established the foundation of Software Engineering for me, there’s no doubt that it’s never going to leave me. It’s forever part of my foundation and that will never change. I will take these concepts of Software Engineering and utilize them to be a much better software engineer soon.