Wrong tools and procrastination
I had already published this note in 2014, but I decided to edit it a bit and publish it in a new version, as it has not lost its relevance.
While reading the book of great guys from 37signals (now Basecamp), almost at the very end of the book, I read an exciting thought. It was spinning in my head too, but I couldn’t formulate it. Besides, I could feel it correctly well described in the book, but I couldn’t understand why it happened. The idea is that it’s essential to surround yourself with the right work tools that will help with your work, not interfere with or distract you. This thought is as old as the world but still manifests itself almost always and everywhere.
I have worked for a long time and am well acquainted with CMS MODX, maintained the community site, participated in the development of the product, and every time I tried to work closely with it, I had a strange inner feeling as if something was missing. This feeling was especially heightened when I started working with other frameworks.
Everyone familiar with MODX knows that the system does not work the way most frameworks do. All sources of the final site, and in particular templates, individual pieces of code, widgets - are stored in a database. This all works perfectly, processed, and stored in a cache. Ordinary users and not quite programmers just delighted to work with MODX, because it has no restrictions and everything are done extremely simple, but to store the source code in a database that even moveton.
I originally wanted to make my current site on MODX and worked on it for a while, but editing the code in my browser or SSH connections drove me into a state of the great depression. Thanks to Artem Sapegin and his article “WordPress → Aegean → DocPad” I translated the site to DocPad and now it’s a pleasure to maintain the site. All source files, documents, and notes are on GitHub. Updates to the site are posted by running a single command. Maximum automation.
Note! This is a note from 2014 and written in the paragraph above, although it is true at that time, is not quite relevant now. How things are now - read the note “Reincarnation of the site”.
When I want to update the site to MODX, I usually make a copy of the database with all the source code, copy the entire folder to the server, upload the copy to the database on the server. It’s a great solution when I’m the only one working on the site. But what do you do if you have more than one person working? I created a template in the database with ID 1 and Vasya with ID 1. What should I do?
Another case: the site a million products, three dozen snippets, a dozen templates, and I only need one line to correct. Download yourself gigabytes of data, correct and upload back? While I’m correcting the code, someone can add more entries to the database. Unacceptable.
In fact, in this struggle, I’ve already tried a lot of ways and tools, but I haven’t found one that really works without criticism yet. And coming back to the feeling that it was the same incomprehensible problem that keeps me busy when I’m going to do something on MODX. Because of that, more than one project was lost, just because sitting behind it gave me the idea of how to improve the process so that it wasn’t a headache. And I was trying to solve that problem instead of quickly building the site and forgetting about it. That’s probably what they call procrastination.
Now I’m working with Symfony most of the time, started studying Laravel and used nodejs a bit. Everywhere the code is stored in files, you can store versions using git, and the database only stores user data and the source code is independent of that. These are the right tools for me now. All that remains is to make sure that MODX is the right tool, not the developer’s headache.
To sum up, would you like to advise everyone to review the tools you work with and look around, suddenly a screwdriver is in the next drawer while you try to hammer the screw?
Related reading
Ivan Klimchuk
I am a Senior Software Engineer and indie maker. I build things for the web and share my journey here.