Journal 46
June 24 - June 30
I cannot believe one of the last classes of the program has just begun, my goodness how time flies. I must say, before I began this course, I expected it to be just another programming class. I had never realized that there was a meaningful distinction between programming and software engineering, as I assumed the latter was just a more formal or professional way of describing the act of writing code. My interests and goals for the future are primarily rooted in data science, so I viewed software engineering as something that supported building models or applications, but I had never really considered everything that goes into creating and maintaining software beyond just writing the code.
After completing this week's work (a bit earlier than it is due because I am going on vacation (yay)), my perspective on the distinction between programming and software engineering has changed quite a bit. The reading was all about the differences between the two, and made it clear that programming is only one part of software engineering. Programming focuses on writing code, and software engineering also takes into consideration how that code will be maintained, modified, tested, and supported over time. The concepts of sustainability and scalability really emphasized the importance of thinking beyond simply making a program work in short term. Software engineers need to consider how software will continue to function as requirements fluctuate and technology changes. I was able to relate a portion of the reading back to a previous class, as the book stated that "at a large scale, even small discrepancies in usability, accessibility, fairness, or potential for abuse are magnified, often to the detriment of groups that are already marginalized." It is impertinent that we keep such ethics in mind throughout all fields under the computer science umbrella.
The lab tutorials and homework assignments helped to hammer home the idea of programming and software being linked while also being different from each other. Working with controllers, classes, dependencies, exception handling, authentication, and testing showed me that every piece serves a different purpose, and it became clear that building software involves much more than implementing functionality. Writing tests as simple as verifying controllers behaved correctly showed me how much effort goes into ensuring software remains reliable as it changes. It also made me realize we have really only scratched the surface of what software engineering involves, and there are many moving parts that must work together to create software that is maintainable and scalable.
As someone hoping to pursue a career in data science, I now have greater appreciation for the role software engineering plays in building reliable data-driven systems. Data science models are only valuable if they can be integrated into software that is maintainable, tested, and capable of evolving over time. This first week has been really eye-opening and has already fundamentally changed the way I think about software development and engineering, and I am looking forward to learning more in the coming weeks.
Comments
Post a Comment