This semester flew by and while it may have been tough at times, those are the times where you grow the most. I really enjoyed 314 and learning the fundamentals of Software Engineering from a conceptual and coding standpoint and using what we learned cumulatively to implement our fully deployed web application for the final project. The transition from taking ICS 314 to taking the next step into ICS 414 was relatively smooth with the use of the same tech stack we were familiar with including Meteor, React, Javascript, MongoDB with only the new addition being the CSS framework BootStrap which was used in place of Semantic-UI. Right out the gate we were introduced to the task at hand, and split into groups who we will be working with on our project throughout the rest of the semester. The task at hand was to build a web application that would help the DOE and UH System track bills relating to and impacting both educational institutions. Within the first week we got to meet with the DOE and UH System over zoom to get briefed on the current system and applications they were using to stay in the know with the bills throughout the legislative session. They were looking for a revamped user interface and a way to make the process more intuitive and easier to follow while still garnering the same or better results. It was interesting to see the applications they were using which did seem really outdated and how they wanted to shift away from using the older system and transition into a newer looking and better feeling web applications made using the newer frameworks we learned to use. The coolest part of this class for me was the opportunity to work with an actual client and attempt to build something matching their wants and needs. I feel it was really beneficial to experience the Client-Developer dynamic and utilize our agile project management skills to adjust and cater to them.
Another noticeable difference I found in 414 was the team dynamic for our project. The team size was more than double the size we had for the previous class and this came with some advantages and disadvantages. On the plus side with more people in the group we had more ideas/perspectives on how we would want to implement a certain feature or functionality, more people to code and take care of issues, boosting productivity and decreasing burnout. On the other hand some issues I noticed with a bigger group including the lack of coordination at times with not everyone on the same page resulting from lack of clear communication, for example on multiple instances there were two people separately working on the same issue resulting in lost time. Another thing I feel came from a bigger group was that with the skills of each member varying, some team members may have felt discouraged and weren’t able to contribute equally. Understanding the goal and moving towards it as a group was challenging at times but our group was able to find our groove and consistently push out code working towards our goal every milestone. This approach to a class was definitely different from its predecessor 314 and more self/group oriented with practically no lectures and mostly time for groups to meet and discuss our project. While I did miss the lecture aspect of 314 where we learned a bunch of new things and applied them through homework, I appreciate this approach and how it simulated what it would be like more as a software developer/engineer working on an application with your teammates and Professor Moore was always a great help when we encountered problems. I also liked the introduction to code reviews which were interesting and fun at times, hopefully will help enforce better coding standards in my future code!
As someone pursuing a career in the field of software engineering/development this class project opened my eyes to how a Client-Developer relationship works while working on an application with a team and a goal in mind. It also emphasized how fast technologies are changing in the current technological climate, seen through the differences of the DOE’s old software to the tech stack we use now and I experienced a hiccup in production myself when I learned that the new way to implement certain things in React changed from imperative to more functional programming which provided a slight learning curve. Another thing I learned during this class was when researching a topic for a project like this, you will have to take your time to look through all the top resources the internet has to offer and discern which ones that fit your situation the best and if it is material you comprehend. From there you piece together knowledge gained from these multiple sources and attempt to implement it on the app. This can be long, frustrating and sometimes you stray away from what you really need to be researching so you want to go into this type of research with a clear and accurate goal and don’t be afraid to ask for help! I’m glad I took this class to help strengthen my software engineering skills along with my teamwork, communication and project management skills all leading me to be increasingly eager to learn more about the fundamentals of software engineering, like what are the different steps and the pieces you need to get the interworking of your app running as intended? Afterall with software engineering the possibilities grow with curiosity…