Magento is hard. No doubt about it. But this is not an excuse. Beside that (and a few other issues) it's still the number one e-commerce solution. It's proven.
So, i wanted to talk a little about how i maintaining my Magento projects.
1) I am keeping everything under version control
Keeping a .gitignore with all the Project's specific files is almost impossible.
Also, you can't carry with you your Project's modules, except using Composer with Magento which it's also complicate to work with. (Still struggling with it on Windows)
So, what i do is keep everything under version control, except temporary files like cache, logs, etc. etc.
2) Never touch core files
By never touching core files like in folders:
- js/ (initial folders only)
- lib/ (initial folders only)
Keeping your Magento always up to date can save you from big disasters. I must make sure that feature releases wont be a pain to get.
3) Extend everything
In case you need to extend a Magento's core functionality or make it behave different, you are covered.
Magento's team had a purpose and only one. To make the most extensible e-commerce framework out there. They even sacrifice performance on this purpose. Now, some may argue that that was stupid or they didn't success after all. I will have to disagree with both.
Magento is a true PHP OOP project, powered by the most powerful framework, the Zend Framework.
As about performance, these days you have a lot of tools in order to create a fast website. You may be hosted at an AWS super server, use fast caching methods, etc, etc.
4) Keep a local Magento with stuff i use a lot
After a few projects, i realized that a lot of processes were repeated again and again. The same modules i will installed on every fresh Magento install, the same configuration i would do. So i keep a private(yet!) Magento repository were i have all of my Modules and a clean Database dump with my configuration set.
How do you deal with your Magento projects? Share your tactics and technics with me on Twitter or bellow in the comments.