One important note: if you go the programming route (either native Groovy SmartApps or WebCoRE), all of your automations will by definition be Cloud Based, and therefor subject to the requirement for constant Internet connectivity to your hub/location.
On the other hand, if you use the native automations in the “new” app, OR the ST-provided SmartApps in the SmartThings “Classic” app, many/most of your routines will run entirely within the hub.
Pretty much everything you describe has already been programmed (by SmartThings) and will run ‘local’ - Smart Lighting handles your lights (based on time/sun/motion/contacts open/close, etc), and Routines handle a comprehensive suite of changes based on presence, time, modes, etc.
FWIW, many of us here are programmers also - we just avoid rewriting code that’s already been done by someone else - focusing instead on those things nobody has yet provided.
Hence you can find a plethora of “cool” things for SmartThings, like Ecobee/Nest thermostat integration, Chamberlain garage door openers, Ask Alexa, Echo Speaks, Homekit bridges, WebCore, ActionTiles ad infinitum. Yes, all depend upon the SmartThings “Classic” app infrastructure, but collectively they make SmartThings far, far more powerful than the simplistic world created by the new Samsung SmartThings app…