So, I’m a subscriber to PHP|Architect (http://www.phparch.com/) and am usually quite impressed by the articles that come out of it. I’m lucky enough to be buddies as well with one of the tech editors that makes sure the articles are a. well written and b. technically accurate and not rubbish. It’s super cheap for an annual subscription and I absolutely suggest it for any PHP developer who wants to be better than the average ones we seem to have a lot of these days….
One article that was in the April edition was “How to build your own CMS”. Apparently the article nearly didn’t make it in for whatever reasons I don’t know about, but I was pretty upset that the code within it was so out of date and against best practise. I was also upset at the article not containing reasons why commercial companies and budding developers should sometimes be very wary of this approach. Hence this latest “blant” 😀
Some of the advantages of building your own CMS for a developer that wants to move their knowledge from Web Developer to Programmer are obvious. While creating components that are used such as user management, effective caching, article management, effective db schemas and all that other jazz, this is a very informative exercise. IF you make sure you research/learn good techniques to do them. If this is the reason that you are building a CMS then I applaud you for your quest to further your knowledge. I really do. In some jobs, I’ve relearnt some basic PHP programming that really helps in all aspects of my programming career that can sometimes be waylaid/taken for granted/forgotten. This knowledge being at the forefront of your brain while developing can also mean that you can improve functionality and wrap it to suit your business needs better. By building your own system for content management you sometimes may also have an upper hand when using a new CMS that you’ve previously had no experience with to edit.
However saying that, I am hugely against using your own CMS for production purposes and for learning on your own. I am definitely one of those “please don’t make me rewrite the wheel..” kinda gal and unless I have a seriously good reason for writing my own management software from scratch, I avoid it. Most CMS’ out there (Joomla, Drupal – even though I hate it’s procedural rubbish, Magento etc) have a huge community following. This is great for several reasons:
- If you have trouble with something, chances are someone else has tried before and has the solution already. In a commercial situation time is money and speeding up processes like using tried and tested solutions that are already there are a big saving.
- If you are really into developing your own stuff, there’s always loads of room for you to develop things for viable reasons (such as the current solution sucks, there is no solution yet etc) so you can still get your kicks developing new things. For an example, I’m currently planning to develop a new component for Zend Framework that I need and hasn’t been done yet.
- Alot of good CMS are pretty hot on keeping up with best practises and moving with the times. It’s a trick to know which ones to go with but with a little play around you soon find your feet. This is all helpful in not only helping you keep up to date, but saves frustration at outdated code. It’s REALLY difficult keeping your own CMS up to date…
- Resources that you need in order to refine, develop, review, test your own CMS is really high. There’s nothing like releasing a beta to a community to iron out those bugs!
These are just a few. I firmly believe that the best thing for any budding PHP developer that wants to go from developer to programmer needs to follow these simple steps.
- Subscribe to blogs and technical articles (such as PHP|Arch).
- Question EVERYTHING. If you think you have a better solution or you don’t understand why a certain solution works so well, just ask! We’ll either explain or go; “Wow, actually that’s a good point!”
- Look for those jobs where you have a lead/senior programmer who blogs regularly, is an advocate for simple solutions, is always looking for the next best thing out there (frameworks, CMS, libraries etc) to play with but keeps an open mind to how effective they really are. They will teach you loads.
- Remember that senior and lead doctors, architects, lawyers etc spend maybe 10/15 years getting to that position where they hold a major stake in opinion. Of course you will get the prodigies who pick it up in 5 mins but be wary of people who believe they know most things and have only been doing it for a short period of time. It’s very likely they’re teaching you bad habits.
It’s for these reasons that I think building your own CMS can actually be a detrimental way of learning this stuff without the input from much more experienced developers. By using community based projects you can have input but more importantly learn from those that have been doing this for a long time. As you progress, you’ll often find that you have better ideas than some of these “Masters” that have well founded basis in best practise and are up to date and that comes with experience, guidance and practise. When you build your own, you’re often learning on your own and that’s usually never as successful.
If you want your own project, don’t go for a CMS, there’s loads. Think of something original that you can use to learn this stuff. Perhaps using a framework such as Zend or something that you can have the best of both worlds!!
From someone who is going from “Developer” to “Programmer” and is still learning after 4 years commercial, 5 years in total! My old (very clever) colleague is still even now an invaluable source of knowledge I hope to gain as I go on! It’s ok to ask for help 🙂