Takeaways from my Software Engineering Experience

18 Dec 2019

My Expectations

On the surface, “Software Engineering” felt simply like a web application development class. I have been so focused on just learning about the technicalities of web development that I lose sight of more important takeaways. Throughout the semester, we developed our technology stack skills; such skills ranged from honing our JavaScript abilities through Functional Programming, to forming a cohesive software development team with Agile Project Management, to educating myself with the rules of Ethics in coding. These skills demonstrate more of the highlights from this class than just building a crud website.

Ethics in Software Engineering

Writing code – not only for just developing website, but for all code in my future career – must maintain the importance of ethics. Ensuring that the safety of users is secure by upholding the responsibilities of producing professional work is the basis of ethical code. We debated in class one day whether or not users should delete Facebook; while some argued the position to keep your account, the opposing side proved interesting points that support their stance to delete it. We have concluded that Facebook has violated principles that are listed in the ACM Code of Ethics and Professional Conduct. For example, they violate 1.6: Respect Privacy, as Facebook fails to deny that they collect user data in order to present better ads. The company does so by gathering information from what you do on your website, such as your posts or search results. As Facebook collected numerous copies of user information from their platform, it has also been shown that they fail to delete such copies. Storing vulnerable data on their website may lead to distrust to many of its users, prompting them to delete their account. In hopes to learning from their mistake, I wanted to implement solutions to our website.

However, for our final project, we have made a grave mistake in ethical security. Our website, TextXchange, wanted to be used for primarily University of Hawaii students. The best way to know if they attend any of the UH campuses is to ask the user for their UH email. But, as we were blinded by our drive to implement “cool” features to our signup page, we prompted user to input their UH ID as we, unknowingly to its severe consequences. It was the equivalent of asking students for their social security: it’s a unique fingerprint for every student to access personal data that must be kept confidential. It would be concerning if it would be stored in our database, vulnerable to anybody who may get their hands on them. We then removed this feature quickly in the following milestone, only asking for a proper email address for verification. I now know how to avoid this sort of situation and will make sure that such mistakes would not be in any professional work.

Agile Project Management

Working on our final group project allowed me to realize that organization is tedious but crucial. Tasked with developing our own web application, we combined the brains of four individuals to come up with a product that would help the UH community. To ensure that our work flowed effortlessly and efficiently, we utilized the aspects of agile project management that was taught in the class. We implemented the use of Milestones that was managed through GitHub, which split up the development into three parts with three separate due dates. This helped to organize the process, focusing on what needs to be done first by building the site’s foundation then adding in functionality, instead of overwhelming ourselves to rush through code all at once. Another feature that assisted us greatly was the use of issues and organizing them with the Automated Kanban system. To allocate the workload equally amongst team members, we split each task of the site separately into their own issue and assigned at least two to each member. We then processed each issue through the Automated Kanban system which is comprised of a “To do,” “In progress” and “Done” section. Issues were neatly categorized in their respective cells to observe that each team member is doing their task, and that we complete each of a milestone’s set of issues on time. I have never done this procedure for group projects before and using it for the first time made me realize how efficient it is.

My Path Beyond the Classroom

Overall, this class was more than just learning how to code in JavaScript, HTML, CSS and developing web applications. It assisted in developing my skills of working as an ethical member of professional work and a proficient contributor with a team of colleagues. Perhaps I will be going into the field of software engineering. Perhaps I will not. Whichever path I may embark on after this class is still a mystery. But I am certain that the takeaways are applicable to any destination I strive to achieve in.