The goal is to get something working quickly, often using workarounds. Consider code that has many if statements to handle many separate cases to pass autograder tests that is challenging to update and explain.
Prototypes, proof-of-concepts often leverage tactical programming, to show that something could theoretically work.
There’s no time spent on overall design
Code is complicated
Refactoring takes time and potentially means restarting
If you didn't plan for Project 2 runtime requirements, you would have to redo the constructor and the entire project
Proof of concepts are sometimes deployed in the real world due to lack of time
The goal is to write code that works elegantly - at the cost of planning time, to reduce coding time. This emphasizes long term strategy.
Code should be:
Maintainable to fix bugs
Simple to understand
Future-proof to add new functionality
61B projects have deadlines; afterwards, you can throw it away
If the strategy is insufficient, go back to the drawing board before continuing work.
Helper method strategy is key to leverage throughout projects, especially when we have written comprehensive tests to ensure that these methods are correct.