Yeah I've gone through this process several times now. At the start of a project I tend to be more impulsive. It can be very useful to just try things on the fly even if you risk breaking things. Over time the set of things you keep trying shrinks as exploration ceases and activities fall into a small number of predictable trajectories. Now they can be made less error-prone by some sort of web layer. However, as you rely on the new abstraction layer, one starts to forget the power that is still available below, and new requirements often go unfulfilled for a long time. Things that used to be obvious six months ago gradually turn into epiphanies. This is especially true if you bring in new people (like hubski brought me aboard); even if they're programmers they might get blinkered by the admin interface somebody showed them on the first day and not realize that they could look under the hood.
My current opinion after these experiences tends to be against admin interfaces for things I don't do on a regular basis. Just creating new functions is good enough to deal with error-prone activities, and it doesn't let me forget that I'm dealing with code.