Going into ICS 314, my software engineering class, I wasn’t expecting to only learn web development in terms of technology, since the entire scope of technologies built includes areas such as app development and cloud services. But after taking this class it’s clear that the knowledge of software engineering goes beyond these. For instance, agile project management and coding standards are two concepts that display the broader scope of software engineering.
Before going into these concepts, I want to state we gained extensive practice on them on our final project for the course. I worked with 3 other fellow students to develop an AI chatbot and used these concepts to ensure a smooth completion of the project and the ability to continue working on it after the class was finished.
This project marked my first experience working in a group for a coding assignment. At first, my mindset was all about ensuring I understood the code whenever I coded. However, in a real job setting, code has to be written in a way where it’s as clean as possible for people to have the easiest time understanding it. Working in a group where everybody has different ways of thinking about a problem with multiple parts opened my view on this reality. Additionally, this process of doing this project was the tip of the iceberg of the operations of coding projects in real companies. Companies can have 20+ people on a team working on a project, while my team consists of only 3 people on a small project. However, everyone starts somewhere, and as I continue to practice these principles I will be able to bring valuable contributions to the big companies.
Agile development is a methodology that prioritizes adaptability and continuous improvement in the development process. It’s about breaking down projects into smaller, manageable chunks, which are completed and reviewed incrementally. This approach allows for quick responses to changes and continuous improvement in the product.
I used agile project management within my team for my chatbot project. We utilized issue-driven development. This is where we set up project boards in GitHub and listed a large number of issues to be taken care of. Each person was assigned an issue to keep organization and clarity in what we needed to do. We also divided up all the issues into 3 milestones with due dates on each one so we can keep a good flow of work going knowing when issues are supposed to be due. Each milestone was assigned a specific overall objective to achieve.
Moreover, the course highlighted the importance of coding standards. These are a set of guidelines and best practices designed to improve the quality of the code and make it easier to understand and maintain. Coding standards are essential for ensuring consistency and readability in code, making it easier for multiple developers to work on a project.
In our project, we utilized a coding standard called ESLint. ESLint allowed my team to follow the same pattern, so we wouldn’t have to worry about trying to figure out the various patterns we would have preferred to use.
In summary, the software engineering course provided important concepts in both the technical and organizational aspects of software development. The technical side delved into web development using HTML, CSS, and JavaScript, then going further with React and Meteor, and eventually incorporating databases and website deployment. The emphasis on concepts like agile project management, and coding standards demonstrated that successful software development is about more than just writing code, it’s about working effectively as a team and maintaining high-quality code.