HW2: Responses

Common Threads


While reading through the four articles I found myself thinking about the little experience I have in the programming or software development world but that in the little experience creating small, mostly meaningless 'programs' the concepts and problems discussed were relevant. A common theme I found throughout was the importance of design, organization, and testing. Should I have spent a bit more time developing a gameplan before diving face first into creating simple data structures examples? Definitely. Should I have kept a detailed log of all of the ways I tried and failed to solve a problem with my program as the "Cherry-Picking and the Scientific Method?" suggested? Yes again. The idea that the development of the software wasn't primarily about the coding itself but the process and all the hurdles that must be overcome throughout was something I found intriguing.

Incremental development

Incremental development was mentioned outright in the article, "No Silver Bullet", written by Frederick P. Brooks in 1987 which I found fascinating as you can read about the concept playing out in "Why Google Stores Billions of Lines of Code in a Single Repository". Brooks suggests that software should be grown, not built and Google uses, in part, this idea in their Trunk-based development style where even the name evokes the growth concept in my mind. The trunk is the foundation where the key structures of their software are used to create and eventually integrated into the trunk. Brooks also writes about some of the psychological benefits of having a working shell of a program early on and I can say from my personal experiences, having even the most rudimentary shell of a program boosts my morale. I can't count how many times I've struggled through a simple problem that I didn't plan out well enough to test before 10 other parts of my program were completed. Had I put in the work on the front end using the incremental development concept I'd likely have completed the program more efficiently. And while even the Google article suggests that strategy for development is not for everyone, it offered key insights into why different strategies are necessary for different scenarios.
Attributed to : https://memory-alpha.fandom.com/wiki/Medical_tricorder
Tricorder
Attributed to :
 https://memory-alpha.fandom.com/wiki/Medical_tricorder


Testing

The final common thread I found was the importance the authors placed on testing. George Neville-Neil writes that developers should use something akin to the scientific method in the development process and he also stresses the importance of documentation. As software grows and grows it becomes impossible to recall each step that was made that was on the sliding scale of success during the development of software. Considering the mind-boggling size of Googles' repository coming in at 2 billion lines of source code, it is no wonder they have created a number of tools (Tricorder being my favorite) to document, review, and test the quality of their code throughout their development processes.
In addition to these tools, the concept of code ownership seems like an excellent way to ensure that the best code possible is being put forth prior to implementation.

Signing off

Design, organization, and testing will play a more important role for me as I move forward in my learning and development.






Comments

Popular posts from this blog

HW10: Chapter 5

HW11: Chapter 6

HW26:Chapter 24