Demian L. Neidetcher | Architecture and Design Questions
Generally Applicable
- is this self-evident?
- does this add to the dissonance between users and the system?
- how do our users think about this?
- what do our users call this?
- would we understand this at 3AM?
- does this add clarity?
- what can be removed?
- does this add to the confusion?
- what if we need to delete one of these?
- are we trying to solve problems we don't have?
- can we add this complexity later if we still think we need it?
- what does the complexity buy us?
- can this logic be lower in the architecture?
- if I want to add another implementation how hard would it be?
- will this fail loudly?
User Interface
- is this obvious?
- could anything done to or uploaded to this page make bad things happen to the system?
- how many results do we expect?
- can the user save this link?
- are we helping the user create bad data?
API
- how many results will we send back?
- can we send a response to the caller quick enough?
- are we using the same terms that are in the database?
Schema
- what are the nouns in this domain?
- what is the cardinality between the domain objects?
- how fast will this grow?
- how many of these are there?
- how often will this change?
- what does everyone in the business call this?
- what if the name changes?
- will this thing change status?
- will we need notes associated with this?
- do we need to capture the history of this thing?
- are we spelling this correctly?
- should we use an acronym for this name?
- does an instance of this thing go by another name?
- will this have to map to something outside of our system?
- how will this data be used in the UI?