I don't think I really have one, overarching mental model. However, I definitely have a bunch of models I tend to reach for a lot as tools. I've tried to condense a couple of them here:
ASSEMBLY LINE and ORCHESTRATORS
This is a metaphor I tend to use quite a lot, particularly for data transformation. I've used it successfully with scripts, functions, and classes.
I try to structure code so that one top-level component orchestrates lower-level components, but doesn't do any actual work its self. This lets me separate the sequencing or wiring of things from the actual implementation.
For visualizations, I tend to think of my orchestrators as the controls on a puppet, and the parameters to that orchestrator being the strings.
AXIES OF SEPARATION
When trying to subdivide problems, I try to keep in mind that there are multiple axies it can be split on. Some examples are:
1) By system (database, ui, theme, etc.)
2) By use case
3) By business object
I usually end up visualizing this as some sort of geometric thing (a cube or some such thing that I slice up).
Thanks for the awesome thought experiment!
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
This is an exceedingly cool question!
I don't think I really have one, overarching mental model. However, I definitely have a bunch of models I tend to reach for a lot as tools. I've tried to condense a couple of them here:
ASSEMBLY LINE and ORCHESTRATORS
This is a metaphor I tend to use quite a lot, particularly for data transformation. I've used it successfully with scripts, functions, and classes.
I try to structure code so that one top-level component orchestrates lower-level components, but doesn't do any actual work its self. This lets me separate the sequencing or wiring of things from the actual implementation.
For visualizations, I tend to think of my orchestrators as the controls on a puppet, and the parameters to that orchestrator being the strings.
AXIES OF SEPARATION
When trying to subdivide problems, I try to keep in mind that there are multiple axies it can be split on. Some examples are:
1) By system (database, ui, theme, etc.)
2) By use case
3) By business object
I usually end up visualizing this as some sort of geometric thing (a cube or some such thing that I slice up).
Thanks for the awesome thought experiment!