Final Essay: Learning to Learn: Software Engineering

13 Dec 2023

Created By: Gerardo Hernandez

Reflections on Software Engineering

Introduction

 In an ever-changing world of Software Engineering, what could we possibly learn from 16 weeks of curriculum? Can it keep up with the times? Is it going to teach the latest software and project management scheme on the market? The answer, as we will discover, is quite a lot. While there are many changing platforms, the ICS 314 course taught many overarching principles and functionalities that can be applied despite any number of updates that may occur. We will discuss Agile Project Management and Ethics in Software as two specific areas of concentration for this course.

Agile Project Management

 Agile Project Management (APM) is a category of project management methodologies that take an iterative approach to managing the development of software. It’s based on the integration of customer feedback and a cyclic approach towards the continuous improvement of a project. While we didn’t learn Scrum, Kanban, or Lean, we learned about and practiced the overarching Agile Methodology. In our Final Group Project, for example, we began with a prompt for the needs of the customer and bounced that off our capabilities as a group. We generated a contract and business rules to go into the Application Design phase. Then we spent a lot of time going back and forth between Construction and Evaluation. Throughout various milestones of our project, we cycled back around to our entire loop of steps: 1. Evaluating our processes and structure, 2. Taking and implementing suggestions for process improvement, 3. Application Design, 4. Application Construction, 5. Evaluation and Monitoring.

 One learning point during the course was when my entire final project group waited until class time to get together and create a ton of branches to resolve several issues, without first following any basic Project Management features. What happened was that we spent so much time on Step 4 collectively, that once we finally got to step 5, all our changes conflicted with one another and we found ourselves having to undo an entire day’s worth of work, just to get our webpage to stop crashing. Lesson Learned.

 It’s important to highlight that by learning the overall process, we are setting up to learn the specifics that each individual type of Project Management Scheme brings to the table. Although it seemed broad at first, the steps themselves are relatively easy to implement within a small group setting. It also helped that our customer in this case was a prepared prompt, and not some needy customer with changing demands.

Ethics in Software Engineering

 Onto ethics. This topic was experienced by holding a debate about the ethics of Facial Recognition software. A lot of the reading material helped to teach the tough balancing act that Software Engineers must manage on a daily basis. In any project made this semester, one can look at the lines of code and see how many lines, components and pages are compiled and executed completely unbeknownst to the user of a site. This taught me early in the semester that there is a lot of inherent trust placed on the builder of a page as to what they are presenting to a user. Also, what they are taking from a user in the form of forms, cookies, or any other type of data. It would take little effort to redirect credit card information from a store if I was building their website, or to create a biased test that makes people think that they need a medication that could potentially be dangerous for them. Although it may be difficult to teach ethical behavior, it is easy to show the many examples where software developers were instructed by a customer to implement malicious and unethical requests on their pages. This made the learning and immersion into the ethical landscape of programming very successful.

Conclusion

 We know the world of Software Engineering is constantly changing. The underlying principles, however, do so more slowly. Our dive into the ethics of Software Development is something that is still equally relevant. In current news, there is much debate about the power of AI and where we should draw the line on its potential. Also, there is debate about the use of facial recognition used to identify and bounce people’s faces from public cameras to open source photographs. The fundamentals are the same. We need to understand our role and the role that the software development process has on these applications and emerging technologies. Agile Project Management was another example of fundamental learning that I experienced in ICS 314. Experiencing the building blocks of sound project management made a smooth collaborative effort for my final group project. Overall, this course has taught me a lot and to view the world from the perspective of the underlying code and programs that run our day to day interactions with computers and websites.