It took me a while to work this out, but I think it comes down to having 3 toolsets available in your armoury. Some of these tools can be used to do everything, in fact, with the 3 systems I’m recommending you can do everything. You shouldn’t try to force one system to perform beyond it’s capabilities the end users experience will not be nice. For the past 3 years, I’ve been trying hard to have one system that I can call on to build everything in and it never works. Each project is unique and has subtle requirements that often only come out through truly understanding the customers needs and end goals.
It’s a real shame when developers try to shoehorn a project into their favourite system. Sure it makes it easy for them, but the end user doesn’t get the full benefits of a dedicated architecture and design. A classic case would be a resistance to use any open source CMS on a project but to build a totally custom system each and every time.
So in quick summary you should be familiar with the following 3 technologies.
- Wordpress - so many sites out there, good for blogs
- CMS - Wordpress is not a CMS, try something like MODX or Silverstripe
- Web App framework - something to make powerful web apps that don’t rely on content.
Wordpress developers are some of the biggest culprits for forcing an inappropriate technology choice on customers, because theres a plugin for that, right? Wrong. Wordpress is a fantastic blogging engine and seems to have some great SEO features, configured in the right way it can perform very well. However, it isn’t a Content Management System, and it definitely doesn’t support advanced features well.
As a freelance developer, I’ve found plenty of work fixing Wordpress sites that are crawling slowly, building simple templates and general maintenance work. Credit where credit is due, the Wordpress community is making some great headway and serious improvements in performance and capabilities, but it will always remain a blogging engine.
Speed optimisation, correct plugin development and theme development are the basic areas that need to be focused on. The sheer number of Wordpress sites that are out there and the poor quality of some of the work make this a profitable skill-set.
There is a subtle distinction between a blog and a CMS and quite honestly I have no idea where to draw the line. My rule of thumb is longterm content that is more complex than simply a news item. Most CMSs do have blogging capabilities, but this shouldn’t be the main focus of the site. Product, service or technical information is an ideal candidate for a CMS. I’ve built sites with on MODX that need calendars of events, cinema listings and really tight integration into newsletter software like Mailchimp. I’d go as far as to say most businesses need a CMS driven site rather then a blog driven site especially if their content changes very rarely.
CMSs can typically handle larger numbers of static pages in a much more elegant and user friendly way; a personal favourite MODX runs sites that handle millions of pages and daily page-views. What is also important is the ability of the end user to easily produce large amounts of sometimes complex content without an intimate knowledge of HTML or the CMS. The CMS needs to become a helpful and useful tool that reduces someones stress and workload, rather then adding to it. Increasing the amount of work or complexity will result in a poorly performing website. Having a customer thank you for reducing their workload, or making their life easier, is one way to make a job stand out as a success.
This is the most rarely used tool personally, if I’m building an application then they tend to be native clients rather than web apps that said having an understanding and knowledge of the tools available is very useful. Web apps not being driven by content require a completely different approach to construction you start moving in to a world where MVC and ORM becomes important. Choosing a web application framework has filled entire websites and at least one civil war.
I’m a fan of PHP it has many flaws and isn’t perfect, but it is promiscuous. PHP is everywhere from incredibly cheap hosting packages to running Facebook. PHP is mature you know what you are getting, and there is very good documentation and community support, which goes a long way to making a tool usable. All the other tools I’ve talked about today are PHP based, to make my life easy so are the frameworks that I choose. I don’t need to setup special hosting packages, I already have a testing environment configured and ready to go. I’m tending towards using Yii for the web apps that I build. Simplistically it’s an imitation of Rails (as in Ruby on Rails) but for PHP. It prioritises convention over configuration and used a strong MVC approach. It’s also fast and mature with a good community, so ideal for what I need. By using convention over configuration, it means you can get a very basic implementation up and running very quickly for a customer.
If you want to focus on purely web app development then you probably want to go and make another choice, node.js and or Ruby on Rails are all good solid solutions that are credible contenders.
The fourth of three things you need to know, at some point if you’re going to start writing code in exchange for money ecommerce will rear it’s ugly head. Choosing a correct of suitable ecommerce package is a whole other world of problems. Sales channels, competition, payment methods, type and number of products, source of stock, shipping, pricing strategy and stock turnover all come into play when choosing a platform.
Meanwhile, you can get a long way on getting experience of the common payment APIs, really in the UK there are 2 Sage and Paypal. Both platforms come with example PHP libraries that you can use to play in the sandbox.
Obviously being successful in freelancing takes more than just choosing the right platform. Having a ranch of technologies to call on though won’t hinder you at all.