I prepared to give a 15-minute version of this talk at a hackthon (but actually didn't), but it made me think some about it. This issue explains my ideas so that maybe they can be used more.
I was going to divide modularity into three types:
functions. What presentation currently focuses on.
abstraction layers and composing them together (groups of functions that do different things, e.g. reading data, transformation, analysis, etc). This also helps to answer the question about "how to decide what functions to use?" - at least the best I could think of so far. I invented these layers for science: input, preprocessing, transforming data, analysis, output. We have opportunity for some exercises like "how should this task/function be split into layers and how does data go between them", "what are the layers in your programs", etc. We can even make a hands-on exercise, but this becomes quite language-dependent.
packaging. Not necessarily the same topic as the rest of things, but important to mention somewhere. And in order to package something, you have to make it properly modular to be able to reuse it, so it sort of fits.
I thought this would give me a chance to make a consistent story and explain the "how" a bit more. But it would require a lot of care to be able to give it well. Does anyone have another resource which we can use as inspiration?
I prepared to give a 15-minute version of this talk at a hackthon (but actually didn't), but it made me think some about it. This issue explains my ideas so that maybe they can be used more.
I was going to divide modularity into three types:
I thought this would give me a chance to make a consistent story and explain the "how" a bit more. But it would require a lot of care to be able to give it well. Does anyone have another resource which we can use as inspiration?
My changes are here: https://github.com/rkdarst/modular-code-development/tree/rework-functions-layers-packaging but it may be better to take ideas from there and reuse it.