Week 1 CST 438
What did you expect a course in Software Engineering would cover?
Coming into this semester's course of Software Engineering was quite interesting. My expectations of the course was to generally focus on programming, writing code, learning some developmental tools, and basically thinking that we would be doing most of the stuff we had learned in the Software Design course. I thought I had a general idea of Software Engineering because of my previous service learning with LibreOffice where I had to do some team oriented work that engaged in how to do version control, code reviewing, building, and deploying patches. So my assumption was that this course would focus more on practicality when working in teams like using Git and deploying larger projects. Additionally I was expecting to improve my technical skills, and understanding of programming much more deeply than before. With my previous mentorship, I also presume that the topics to be covered in this course would involve debugging and general project management concepts. Though after going through the material and reading this week I thought my opinion of the class had changed a bit and I didn't really think through about the deeper concepts of Software Engineering like manageability and sustainability.
After completing week 1, how has your opinion changed?
After completing week 1, as I had mentioned in the previous paragraph my opinion of the class definitely changed. The first chapter opened my mind and eyes to deeper concepts of Software Engineering compared to the broader aspects of just programming. One of the biggest ideas that stood out to me was the difference between just programming and Software Engineering, where in programming we would generally worry about writing code for a short moment of time and how it works for the moment by getting it working, but on the other end Software Engineering involves producing code that would behave and survive over a course of time; that it would support more users and developers, and adapt efficiently to future changes. I've only been working with smaller projects so my understanding was that of a programmer and not as a software engineer.
Something that stood out to me this week was Hyrum's Law which is the idea that users may depend on every observable behavior of a system, even when a behavior was never officially promised. The concept sort of gives me the idea to pay attention to the little details and treat every change as something that would potentially break. Essentially for the future of this course I can already tell that I'll need to consider the design of my projects, and if they are controlled and intentional.
Going back to scalability, I had never really thought about this when creating projects. I guess now after reading the chapter I've understood that software engineers need to keep in mind things about the project like communication, testing, code reviews, upgrades, and specific policies. Also the fact that we need to keep in mind of trade-offs such as considering costs of time, money, performance, maintainability, security, and even how the product can affect society. There seems to be many ideas that need to be considered as a Software Engineer, and I'm hoping to learn more about them throughout this course. Overall I think what this chapter had taught me was that Software Engineering is a larger focus on long-term goals and thinking. I am interested in seeing what's to come in this course for the future of the semester and I hope to retain this information for the future of my career.


Comments
Post a Comment