Not really a fan of big upfront design. I prefer a "just enough" upfront design approach to get started, and then design as the need to do so arises. A big upfront design has the tendency of making future changes difficult, and "change" is the one constant in software development.
Regarding all the other principles, I have the same opinion as Frank Puffer a few comments above: you should know the principles and adhere to them, but you have to strive for that sweet spot of balance between them.
I find "just enough" design + SOLID leads me to code that does what it needs to, but the abstractions are clean enough that there are enough places for me to expand some part to deal with changes (more likely more details) to the specifications
Not really a fan of big upfront design. I prefer a "just enough" upfront design approach to get started, and then design as the need to do so arises. A big upfront design has the tendency of making future changes difficult, and "change" is the one constant in software development.
Regarding all the other principles, I have the same opinion as Frank Puffer a few comments above: you should know the principles and adhere to them, but you have to strive for that sweet spot of balance between them.
I find "just enough" design + SOLID leads me to code that does what it needs to, but the abstractions are clean enough that there are enough places for me to expand some part to deal with changes (more likely more details) to the specifications
Exactly :)
Zero upfront design here.
Covering following roles does the job.
All class properties private, no getter-setter and other magic tricks.