Journal 53

 August 12 - August 15

Another course has come to a close, I cannot believe how this program has flown by as this is one of the last classes on the roster. I learned so much in these short 8 weeks, but I definitely had a few topics stand out to me. 

To begin, I learned a lot about working with a team through Github. I had worked with the site before, but never really had a chance to work collaboratively on a large project, so I viewed it as more of a place to store code than to collaborate. I learned the importance of working on branches, reviewing pull requests, and project tracking to keep things organized and efficient. It also gave me perspective on communication between teammates as one small change in the code could affect other's work on the project.

I also learned a lot about Spring and Spring Boot. Working on the backend throughout the course gave me hands-on experience working with controllers, databases, security, APIs, and how each of these components connect and come together to make a cohesive project. Spring really gave me perspective on how software engineering is far more than just coding, and there are so many different, intricate layers that need to communicate with each other correctly in order to get an application working.

I found testing with Selenium particularly important and interesting. Creating system tests showed me the true value of testing an application from the user's perspective instead of only testing the individual methods. Selenium allowed me to automate actions such as logging in, navigating pages, and verifying that the application worked correctly. This was really interesting to see working when we implemented it during our team project because a feature could appear correct individually, but would still fail when combined with the rest of the system.

I also think service-oriented architecture was a very important concept because our team project demonstrated how an application can be separated into different services that communicate with one another. Working with the registrar, gradebook, and frontend helped me understand the benefits and challenges of this approach. Separating responsibilities can make a system easier to maintain and develop as a team, but it also can create additional challenges when services depend on each other or communication between them fails.

Learning about SaaS (Software as a Service) helped to really connect many of the technical concepts from the course to how software is actually delivered and maintained for users. It helped me understand why topics such as cloud deployment, scalability, testing, maintenance, and reliability are so important. Software engineering does not end when an application works locally as developers also have to consider how the software will be deployed, accessed, updated, and supported over time.

One topic I would like to see added to the course is more discussion of software engineering in data science and machine learning. Seeing that data science is the class taken right before this one, and that it also happens to be the area I am most interested in, I think it would be interesting to see how the software engineering practices we learned apply to data pipelines, machine learning models, large datasets, and analytics applications. For example, a small project involving building, testing, versioning, and deploying a data-driven application could connect software engineering principles with another growing area of computer science. I would not remove any of the topics because each one greatly contributed to my understanding of software engineering as a whole. 

I really enjoyed this class, and I am proud of the work my teammates and I did. I know I will certainly be using the things I learned in this class in my future projects and jobs.

Comments

Popular Posts