In my experience, a simple but reliable way to build #ABMs is to alternate between phases of complexity and phases of simplicity.

If the model is too simple, it will show results that are not interesting enough to be in a scientific article. We can solve this problem by adding new effects, non-linearities, interactions and some realism.

We may now end up with something interesting, but way too complex to be succinctly presented in a single article. The solution is to remove everything that is unnecessary for producing the "interesting effect".

Note that I'm not claiming that this is the only way to make ABMs, nor that it is the right way. I'm just saying that this way of thinking works really well for me and I usually recommend it to most of the people I work with; especially if they don't want a hard time during peer-review.