Takeaways from a Semester

15 May 2020

Over the course of these past five months, I was able to learn a lot about software engineering as I gained new skills and improved on old ones. While my knowledge only scratches the surface of what software engineering has to offer, the things I’ve learned this semester will be a great foundation in which I can further build upon as I continue to learn more about the field. While many of the assignments for this class were geared more towards web application development, the concepts I’ve learned from them will be a great help as I continue my education and work to develop my professional identity. Two concepts which I will highlight here are Agile Project Management and Ethics in Software Engineering.

Project Efficiency: Agile Project Management

Agile Project Management, as defined by the Association for Project Management, is an iterative approach to delivering a project throughout its life cycle. This essentially means that projects are broken down and worked on in small chunks. This allows for projects to be released in segments as they are completed. The benefit of this is that it enables developers to test the functionality of the release, making it easier to localize an issue and fix it before moving onto the next, ultimately reducing the chances of large-scale failures that would be much more difficult to fix.

A style of agile project management that we’ve utilized in our final project is issue-driven project management (IDPM). IDPM is better suited for smaller development teams with approximately 500,000 lines of code for applications that do not need to adhere to strict quality standards. More about IDPM can be read in Issue driven project management (IDPM) guidelines.

In the context of our CL-UH-B project, IDPM really encouraged communication between the group members and made it easier to manage our progress. It is only a matter of time before I would need to do another small-scale project for school, and when that time comes implementing the IDPM approach through the utilization of project boards will really help manage everyone’s tasks. Sometimes with group projects, communication on who’s supposed to do what gets a bit muddled. With a project board, responsibility will be transparent and this would, in turn, encourage productivity. Breaking down tasks and making smaller, partial deadlines would also make the project more manageable and less daunting.

The Importance of Ethics: Ethics in Software Engineering

I’ve explored ethics in software engineering in a previous essay, but to summarize: Ethics is necessary in software engineering because the work of a software engineer will always affect the public. In fact, ethics is a necessity in every profession from retail workers to surgeons. Before this class, I believed that ethics was all about doing the right thing, but I’ve come to learn that ethical responsibility also counts for awareness––awareness of your actions and how it may impact other people. Harm isn’t just from malicious intent. Ignorance and lack of foresight can also cause harm, and any avoidable harm done onto people is unethical. After reading about case studies on ethics in software engineering, I became more aware of the fact that even good intentions can breed ill-fates. From this, I have made it a goal to be more conscious about the potential ramifications of my professional work. This will be especially important once I step out into the workforce where my contributions to society will undoubtedly impact others and not just my GPA.