Learning to be a Software Engineer

08 May 2023

Learning to be a Software Engineer

For spring 2023, I took Software Engineering II (ICS 414) right after taking Software Engineering I (ICS 314) last semester. I took this class because it aligns with what I want to do of becoming a software engineer, specifically as a Full Stack or Front-End Engineer. Our main task was to develop a web application within our teams, and we collaborated with the customers. This class was unique relative to other classes, and it has helped me get closer to that goal of becoming a software engineer.

Unique Learning Experience

This class is very different from other classes. We didn’t have tests or many assignments, we worked and collaborated in teams, and we had weekly team meetings outside of class. We also worked with the customers to discuss app expectations and received feedback from them. Since this class was more of a project-based learning class, it has its pros and cons. The main benefit of this type of learning is that it simulates working as a software engineer in the workplace. The downside of this type of learning, however, is that your learning depends on the tasks you work on. I was focused on different parts of the application thus, I only created a few tests, and I didn’t create database collections. Nonetheless, working on the project was a good learning experience.

What I Learned

From working on the web application, I gained some new valuable knowledge including the importance of planning, project structure, using components, React (useState and props), and utilizing external libraries like D3. Having a good project structure and having reusable components are the most important things I took away from working on this project because it greatly helps with having organized and clean code that allows you and your team to easily scale or add on to the project.

Conclusion

My experience in ICS 414 was good. I enjoyed working on the project, working with my teammates and the customers. In this class, I learned to be a software engineer.