Monday, September 8, 2014

Making a "Simple" Site is Damn Hard

If you're somehow related to the IT field (you're a sys admin, a QA, a Project Manager, or even a programmer) you surely got at least one request from a relative who just opened a business, to create them a "simple" website. This term - "simple" - lies anywhere from some texts that don't need to be updated in the future, to online stores or web scale streaming platforms. How hard can it be? it's just a "small" web page after-all. You're in luck, my friend. This post is here to help you make them appreciate the simplicity of web sites.

 This impression, that to build a good web site is so simple that even the nephew of one of my wife's cousins who's only in his 9th grade is able to do, is our fault.

We, the people from IT, fail to communicate properly how complex and what a big deal it actually is to have a "Hello World" correctly displayed in a web page. After all, there might be a reason (related to social and communication skills) why when you ask somebody what job this guy
has, most of the people will say he's an IT guy.
People are ignorant by definition and this also includes us, the software developers. If you start talking to me in nautical jargon, I'll most probably understand only your linking words and phrases. Why should we expect from our non-technical peers to understand that in order to avoid sql injection attacks on their "small" web site, we have to use prepared statements or ORMs? Or that they want their site protected against cross site scripting vulnerabilities and we have to use some sort security encoding library or framework? No, they don't have to know all this and it's absolutely normal for them to expect to have a web site that in a month or so after you finished, it will still display their content and not some commercials to the blue pill for men or genuine fake watches.

They instead can, and actually should understand, that software development is hard. The simplest way to convince them that web development is a difficult process is to ask them to press ctrl+u (if they use a PC and Firefox or Chrome as browsers. If they use other "browser", one of the most helpful advice you could give them is to switch to a real browser) and have a quick glance at the source code of any web page.

And then explain them that all the gibberish characters they see there is actual code that a programmer (most probably you) has to write, all of it. And then, tell them that if instead of jQuery you happen to write jquery, none of that part of the code will work anymore.

Next, let them know that the whole process of building a "simple" web site is a stream of decisions that you have to make:

  • Will you design the site from scratch? Will you buy and use an existing theme (disclaimer - that link contains my referral id to the themeforest site)? 
  • Will they require a CMS?
  • What features will they need on the site? (shopping cart,  newsletter, contact form, forum, blog, calendar, polls, etc.)
  • Will you implement the above features by yourself or you'll re-use existing solutions?
  • What kind of hosting will you recommend (dedicated server, VPS, shared hosting, etc)?
  • etc

Of course, you'll have to take some of those decisions together with the beneficiary of the web site, but most of them you'll take by yourself. The fact that you take as many of those decisions by yourself and get off the burden from the shoulders of your potential client, will increase their appreciation of your work because having to make too many decisions increases the anxiety of normal people.

Please notice that I haven't even brought into discussions the decisions related to:

  • What programming language should I use? (although it should be Perl, obviously)
  • What framework should I use?
  • Should I use a relational database, or some no-sql technology?
  • What's the caching strategy that I'll adopt?
  • Full-text search solution?
  • Hosting OS?
  • What web server should I use in production?
  • etc

I haven't mentioned these kind of questions, because they don't concern average Joe. The ignorance of normal people regarding those questions is absolutely normal, and we should only bring them into discussions when we want to be seen as some special kind of smart asses. It's like someone would've told me that he tied a becket hitch  instead of tying a knot. I'm not a walking wikipedia to know everything and neither are our non-technical friends. 

In conclusion, the more you make regular people understand why software development is a complex process, the less difficult will be for them to appreciate your work and accept your hourly rate. Share this article with your friends and help them become a little less ignorant regarding the complexities of web development.


Want to see some of my work? have a look at PRForge - a crowd speaking platform where you amplify your message with the help of your friends and brand ambassadors across different platforms (for now we support facebook, twitter, reddit and hackernews). We'll soon open the private beta, so leave your email address in the form there, to catch a seat in the first row.


Post a Comment