Today I'll be attempting to provide an answer to this question, as somebody who doesn't have formal training in programming, but who has built several different tools on the web and more traditional desktop platforms.

Click the icon below to listen.