When? When you have to maintain that code, especially
when others have to maintain that code. Of course,
merely using subs and packages does not guarantee robust,
reusable code, but when working on team with others,
proper decomposition (and a good API) is a must.