I am slightly unique in that I only build out web applications. I'm perfectly capable of building other types of site, but as of yet I really haven't been asked to. Anywho, here's the process I go through when building a web application.
Database Design
After studying Computer Science for 5 years at various establishments I know the importance of a good database design. Having a good solid database structure is important for any website, but even more so for web applications that can expect to have a decent amount of traffic. I take into account various ways to scale databases, including proper normalisation, which parts of the database could be abstracted out into a separate database etc. It's always important to design the database first, I feel, because then you have a solid base to build the application around.
Front-end Development
I then proceed to build out the front-end HTML pages. I usually end up with a complete working version of the website up and running, but without any working parts. So register and login pages etc won't work. Sometimes I build the front-end as I build the backend development, but I'm trying to split these up into two separate sections so it's easier to outsource front-end and/or back-end work.
Back-end Development
This is where the bulk of the work and most of my time is used up. For non technical folk, back-end development is all the stuff that runs on a web server to build the web pages, and make stuff happen. This means all the authentication functionality, and all of other dynamic functions that need to be built out for the web application. This is the bit I enjoy the most since it's what I trained myself to do. More recently I've had to come up with some processes to make back-end development quicker, there are some new libraries I've built that I plan to release this year to hopefully help other people out there too.
Polish
Once all features have been completed, the client will provide feedback on the functionality and the look and feel of the website. I take comments in and act on them. Some clients like the give feedback as I push new functionality to the site, but I always leave it to the polish stage before acting on them so I can get it all done at once rather than holding back the functionality and release of the website.
Deployment
The final stage of development is to deploy the client site to either their own hosting environment, or create accounts for them on my hosting platform. Deployment usually means cloning a central git repository (usually hosted at bitbucket.org) and setting up the database. Other times clients use a shared host which only has FTP access, so I have to do everything old school!
Ongoing Maintenance
Clients then get to choose whether or not they need me to keep their hosting software up to date, have the latest version of CodeIgniter and fix bugs for them. I use EventLog to keep track of metrics for the client as well as using it as a way to keep me informed of any errors, which is useful to help give my clients the best experience possible.
The difference between brochure sites and web applications
Most people that ask me locally for a website either have a small budget, or no budget at all. Whilst it's always nice to be offered beer to develop a website, 2 pints won't cut the mustard. People usually balk at my rates, thinking that it's very expensive (I'm not, people just don't seem to see value in websites, or that it actually takes effort.) people need to understand the difference between what I build and what they want.
Web Applications
I take web designs given to me by designers, and turn them into fully functioning web applications. The best way to describe a web application is to use Facebook as an example. Facebook is a dynamic website, every user has a different experience, because everyone has different friends, different groups, went to different schools, subscribe to different pages and use on different devices. This is a web application, and it's what I build, and these sites usually have mid-large sized budgets.
Brochure Websites
Brochure websites are sometimes static, they don't change. Although the sites I would make would be dynamic in the sense that you would be able to change the content of the pages. This website is a brochure website, there are pages that tell people about me and my business, and I have a blog, where I try to post relevant things and keep people engaged with my website.
Costs of operating a business
What people don't tend to understand is that along with all the usual bills, rent, mobile phone, broadband, council tax etc: there are business related costs as well. I have to have web space, which costs me money every month. I also need to have the right software and hardware to use to build websites in the first place. It all adds up, plus I have to work out my own tax and pay everything myself, which takes time out of the year every year.
Using my Knowledge
Most of the time I don't just get hired to sit and write code all day. I get hired for my experience in web development, what works and what doesn't; from both a technical view and the view of a typical user of any particular web application. I am constantly being asked for my input on projects, rather than to just sit and write code like a good little web developer. Saying that, when you hire me, or anybody else in the field, you don't just hire them for a a week of their time, you hire them for the years effort they've put in to learn the craft. When I started out building websites I built sites for fun, without being paid. It takes time to learn a skill as complicated as web development can be, and the best web developers cost good money. So yes, your cousin or your mate's mate probably can build you a website for free or some beer or £20, but do you get years of experience, solid support and a secure system? Or do you get someone who can knock up a website in 20 minutes using a free theme?
What should a website / web application cost?
Well honestly, there isn't really an answer. A good website built by a professional, not just some kid who can use a computer, is going to cost a good chunk of change, and you should expect to pay good money for a good website. It does vary hugely on who you get to build your website, their experience in the field and where they are based, since certain places cost more to live so prices are going to be slightly higher. Plus, what do you want from your website? Asking how much a website costs is just like asking how long a piece of string is, it's a variable that is dependant upon the developer hired to build the project and what your requirements for a website are.
My pitch
I won't charge you £40 for a website, in fact I charge about that an hour. But if you want to work with a professional web developer, who has a network of other freelancers to provide a full service to you for your web application, then get in touch via my contact page or simply email me by clicking here.
Your tuppence worth
Now I throw the proverbial gauntlet over to you. What are your processes for designing / developing a website? How do you define what to charge people and how do you explain to people the true value of websites?
Comments
Mike
1st February 2012
Hi Adam,
Some interesting points. How much client interaction do you have? I could see it been a problem if you do it just at the spec/polish stages.
I would love to try working in a proper agile environment (XP) with better client feedback but it just doesn't work with one person and isn't practical at work because we always have more than one project on at once.
As a result my development process doesn't seem to differ too much from yours:
Sort of a double waterfall model!
The company I worked for is now moving towards using WordPress over bespoke software to manage sizable chunks of the backend. I was a bit skeptical at first - there are limitations to all frameworks, but I'm finding it frees me up to work on the fun stuff (application logic and writing WordPress widgets).
Perhaps best suited for brochure websites but we are trying it out for the development of large applications (also see BuddyPress).
Adam Griffiths
1st February 2012
HI Mike,
I have contact with clients throughout the projects I work on. Regarding your comment about leaving all feedback to the polish stage:
It helps me if I can have a long list of things to complete in one chunk. I have found with some projects people expect me to be on Skype or available all the time so when something doesn't work how they think it should, I can be there to fix it immidieately. This isn't a very good way to work when there are more than one project. If I manage client expectations to be "send me feedback whenever you like, but I'll do it all at the end of the project when all the functionality is done." This helps the client understand when things will be done and so far it has worked out quite well for me.
On the odd occasion I will see something that needs doing to make it look better, and I'll do it when they email me. But that's always a bit fo an extra. Although if there are any glaring errors anywhere I'll fix them as soon as I'm alerted to them.
Cheers, Adam