Tuesday, March 26, 2024

Software Engineering: Journal 4

I'm happy to say that week number 4 has concluded for one of my last computer science classes I will be taking at CSUMB. Currently, we are reading a book titled Software Engineering at Google which has some pretty interesting lessons from engineers at Google.  I have found that the discussion about the difference between software engineering and programming super interesting. I have always had this same question, specifically, because there is so much overlap. I think the book gives a great description, however, because it focuses on how programming is mostly a practice of, "the now," as I would call it. There isn't much policies or planning, because programming projects don't last that long to require these extra engineering steps. Software engineering on the other hand, focuses more on a structure that will allow for code maintainability and adaptively well into the future, even if the original author is no longer there. I think this book correctly points the reader to use the correct tool for the job. You don't always have to be software engineering if it's not required for the scale or time of the project.

Tuesday, March 19, 2024

Software Engineering: Journal 3

This week, for my software engineering class, we implemented the front-end of the React + Spring Boot app we have been working on. This was my first time using React, as most of my experience has been on the backend. However, for a previous class I took, Internet Programming, I had used JavaScript and EJS to build apps. In fact, this web app deployed using Docker and AWS was built using EJS, Node, Express, and vanilla JavaScript: https://bingehive.com/

Compared to that experience, I like React much more than EJS. The workflow seems a lot faster to me because you are building components that are reusable. I also like the fact that the HTML is in the same file as your JavaScript. That way, I don't have to switch between different files, which adds an extra cognitive load. The only criticism that I may have is the huge levels of abstractions React adds. It seems like for everything, you need another dependency that you may not know exactly what it's doing. On top of this, the file size you are sending to the client could increase to amounts that may be problematic if the client is on a slow connection.

Tuesday, March 12, 2024

Software Engineering: Journal 2

 This is week 2 of my software engineering course for my computer science degree. For this week, we are tasked to answer the following question "In lab 1 on Junit you used a Mock. In your own words describe what a Mock is and why it is useful in unit testing." This is in reference to the first lab, where we practice using mocks with unit testing. Essentially, a mock is a way of faking an aspect of a unit test that typically would be handled by a remote server or the like in the real world. Essentially, you can output fake data or a fake response to run your unit tests. This is incredibly useful incase you are developing offline, or you simply don't have access, or it could potentially cost money to run the test in a live environment. One example of this would be when uploading to an S3 bucket in AWS.

Tuesday, March 5, 2024

Software Engineering: Journal 1

This week, I started one of my last couple of classes during my time at Cal State Monterey Bay. This class is focused on Software Engineering practices and methodologies. Going into this class in the first week, I was expecting to be taught about how to develop programs that scale; however, I was pleasantly surprised by the interpersonal communication skills that this first week taught me. We started learning about agile and how to communicate with non-technical people, especially in how to communicate with the owner of the project using "stories" and other agile methodology. Overall, I think it was an interesting and somewhat light week. I'm excited to see what else this class teaches me in the near future.