I respect people who work with their hands. I have some small idea about what it takes to change my car’s oil, or put in a new pond in the back yard. But I don’t know what it takes to rebuild a car’s engine or design the landscape for a new shopping complex. I have some small idea what it takes to put a laminate floor in a living room, but no real idea of what it takes to organize multiple companies to complete the renovation of an old theatre.
I don’t have any desire to muddle around in those sorts of professions. It seems difficult and time consuming to me and I acknowledge that much of my perceived difficulty lies in my lack of knowledge for that industry. I’m alright with that, because I work in an industry that people have an idea about, but may not know all that goes into building a full project.
Computer programming, and the web specifically, is my industry. And like me and changing my car’s oil, you know how to open a browser and navigate to your favorite website. But do you know what it takes to build that website? Well, that’s quite a large question, and involves gathering technical requirements, architecting the data structures, designing the look and feel of the site, programming the site, testing, deployment, scope changes, and analyzing the data once the site is live.
In this post, I’d rather we just talk about what it takes to make a small change to a site once it is live. Let’s assume that we have recently launched a website to collect and store book information, and then share it with friends. When we first built the site, we all agreed that the publisher information for the book was not necessary and did not need to be collected. However, it’s clear from a few weeks of being live that everyone expects to see the publisher information. Our task is to add that to the site.
Here is what needs to happen:
1) Update the database design – we need to make sure there is a field to hold the publisher information
2) Pull down the code base from subversion
3) Update the code base to reflect the new field. Our code needs know how to relate the database change to our classes.
4) Update the design – where does the publisher field fit in the design. Is it just a new row in the book details?
5) Update the HTML to fit the new design
6) Update the code to output the publisher in the correct spot
7) Update the book search so users can search by publisher
8) Commit the code changes
9) Test the code changes in the development environment
10) Test the code changes in Internet Explorer 7, 8 and 9, Firefox, Google Chrome, Safari, and on mobile devices. Adjust HTML to make sure it works with all of these different applications
11) Pass the changes on to the client so they can approve the changes made, or suggest revisions
12) Deploy the changes to the live site and to the live database
Each of these steps has been simplified to make sure this post doesn’t reach book length. However, I hope that it is illustrative of the process that takes place even for small changes to a site. At the end of the day, what you see on the web should be easy and intuitive, and you shouldn’t have to know all the work that goes into it. Just like having your oil changed!