ICS 414 - A Familiar Experience

15 Dec 2022

A Solid Foundation

ICS 414, Software Engineering 2, is the next level course after ICS 314, Software Engineering 1. Although I was not really sure what to expect prior to starting this class, I assumed that we would be utilizing a lot of the topics that we had learned in ICS 314. I was correct in this assumption. While ICS 314 mainly revolved around learning the basics of developing functional web applications, ICS 414 took that a step further and instead of creating web applications for the class we created them for a real client. This was a very interesting experience for me because I was able to learn how to understand a client’s needs when doing work for them. In our case, we were working with the Department of Education (DOE) to create a legislative tracker that would monitor the status of a proposal throughout its lifecycle. In order to do this, we needed to gain a thorough understanding of the legislative process. What I especially enjoyed about these beginning stages is the intersection of software engineering and something seemingly unrelated, such as bills in the legislature. This made me realize how I could use my programming background regardless of the industry I want to work in, because every industry needs someone to manage their websites and other technical operations. Something that surprised me is the amount of questions we had while going through the planning stages of the process. When we had first learned about the specifications of what the DOE expected, it seemed straightforward. However, the more research we did, the more specific our questions had become, and we had so many of them! For example, something I had never fully considered until creating a roadmap for the legislative process was whether a bill could become “alive” again once it was dead (the answer is no). The more questions we asked, the more in depth our understanding became. To me, this reinforced the idea that asking questions in a workplace or any collaborative environment is the most important aspect of creating a successful project outcome.

The Importance of Collaboration

In the beginning stages of our work, we implemented project management strategies in order to make sure that work was being allocated equally and completed in a timely manner. In order to do this, we utilized Github’s project board feature and had a section for work that had not been started, work that was in progress, and work that had been completed. Due to the dynamic nature of this project, it was difficult to know exactly what features we needed to implement and what work needed to be completed for that. To mitigate any confusion or surprises, we had a list of around 20 tasks that group members could assign themselves to based on what they were interested in doing or where they felt they would be able to contribute the most, and tasks were added or removed as needed. This created a very efficient system where we could reassess our tasks frequently, and keep track of what needed to be completed in the next milestone. This system was also particularly useful because two people working on separate yet related tasks could work with one another in order to make completion of the tasks easier.

Next Steps for Future Improvement

As one of the main aspects of this class was implementing and maintaining a solid foundation of project management strategies, it is important to set some ground rules and limitations as far as making sure collaboration is occurring equally and consistently within the group. Due to reasons that are outside the scope of this essay, I had missed a fair share of classes and group work. After a certain amount of time, I felt lost regarding what was going on in the group. By following the Github project board, I was able to catch up to a certain degree but there were still many gaps in my knowledge. I realize that it may be redundant to have a group member explain to me what I had missed, although this would have probably been the next best course of action to take. This led me to thinking of ways to make it easier to catch up on what was missed on the off chance that someone had to take some time off from group work. I came to the conclusion that a singular file (accessible by all group members) with meeting notes could be a helpful way for someone to see what information they missed while they were away, or if they had failed to hear something important during a meeting. Another issue that I had noticed was holding people accountable for their work. Although everyone should be taking full accountability for the tasks they need to complete, and this is somewhere I fell short during this semester, I also think that for future group projects and even for the workplace it could be helpful to have a weekly or daily log where members of the team make short notes of what they completed during the previous week and where they are feeling stuck. I also think that it could be helpful to designate one person to reach out to someone who is not completing their fair share of the project and to take any necessary action afterwards.

Conclusion

Although this class was not what I had expected it to be and I don’t feel I took full advantage of learning everything I possibly could, this class still taught me a lot and led me to ask myself questions about ways that project planning and tracking could be improved in my future work. On a personal level, I learned to try not to overestimate the amount of time I can allocate to my courses, as when one does this they will inevitably feel overwhelmed and will fall behind in one or more classes. I also realized that it is better to ask questions and reach out to group members regarding any important missed points than to watch from the sidelines trying to understand everything yourself. The main benefit of working in a group is that you have people to collaborate with as well as having a small support system, one which I could have relied on a bit more heavily. However, it is experiences like this that I can learn from and take with me into future collaborative environments and do my best to support myself as well as others.