when i was "taught to code" the prevailing wisdom they kept going on about was that to create software, first you designed a rock-solid Architecture, and then when that was set in stone the implementation could just be whatever. you could keep swapping out the implementation details, those didn't matter. but in my experience of the actual world, the architecture is always the thing that keeps changing and being restructured all the time