I have a recurring pattern when implementing a project. I start simple. Then things get complex. Then I start overthinking, overdesigning, overengineering things. And they start getting really, really cumbersome, awkward, and unmanageable.
I've done this with every development platform I've used. WebObjects. Rails. PHP. WordPress. Moodle. Drupal.
Yes, even Drupal.
So, again, I need to remind myself.
Work WITH the tool.
NOT against it.
Or, if you're working too hard, you're doing it wrong. If things are designed properly, using the most appropriate approaches, more often than not things become quite simple. Easy, even. If something isn't easy, it's being done wrong.
If you're writing a bunch of custom code, you're probably heading off on a blind alley. Chuck the custom code and find a shared framework, module, plugin, etc... that will do the job. The less code you write, the less to debug and maintain.
I'm working on a website for an agency, where I'm building a system to manage the data and daily operations of a 100-person organization. I'd started writing custom code to embed snippets of processed data. I was writing code to chunk data into reporting periods, grouped by staff member, client, and any number of other criteria.
But - Views already does that. When combined with other modules like Calendar to provide the date-based chunking. And some other helpers to expose UI widgets and data selectors.
So, by working WITH the tools at hand, I just dumped a bunch of silly custom code. I'll need to refactor a bunch of stuff, but it will work much better in the long run, and take MUCH less to maintain.
The biggest thing I have to do at the moment is refining the data entry process - I need to find the best date selector widgets to make the process as painless and error-free as possible when in use in the field.