When is it time to stop coding and rethink the problem?
Look for concerns that have become intertwined. Stepping away to reconsider the problem can reveal which of those dependencies really belong together.
Read on through a shared source
Why does testing a business rule need a database? →Separate who qualifies for a reminder from whether the reminder can be delivered.Do separate layers really separate concerns? →Placing code in different layers leaves the underlying concepts free to depend on each other. Trace which changes still require coordinated edits.Which choices should an API leave out? →Removing an uncertain feature reduces what clients must learn. Separating tangled concerns reduces how many choices they must consider together.
Compare the passages
start seeing interconnections between things that could be independentmost of the big problems we have with software are problems of misconception