What is it like to ask a developer a question? Prepare for a long answer. We recently asked a couple of questions of our Director of Development to help flesh out our website. We expected a simple response, but we received a very detailed response.
Our Director of Development has a number of hobbies; one of them is building model steam engines. Presumably, he hopes to build a full scale steam engine at some future date. This is the question we posed to him:
How is building a steam engine similar to building a website?
Here is his reply. Enjoy.
When building a website the first step is planning. We need to figure out what it is going to take to create a working website that meets the needs and requirements of the client, i.e. we need to have a website that displays our products and allows the user to request a quote. Once that is known, the next step is to work through the multitude of different details to build the base for the website. Concurrently, choices are made on what will make the website efficient and beautiful. Finally, it is all assembled and tested to make sure it is functional.
Building a steam engine consists of almost the same steps. You decide what the engine needs to do. This might be as simple as 'It should spin when compressed air is injected', or as complex as 'It needs to generate 1HP and drive an electric generator'. This matches the client 'needs and requirements' of the website.
We then need to create a design that matches the requirements. In steam engines this is a selection of piston size and stroke, operating speed in RPM, and valving. Additional concerns might be if it is a condensing engine or non-condensing engine. This is the equivalent of the planning stage in website building. As part of that planning and design we would pick the right framework or CMS to meet the needs and requirements of the customer.
Once the design has been finalized it is time to create. The machinist, or web designer, works from the detailed drawings/documents of the planning stage. Sometimes the tasks are simple, sometimes the tasks are difficult. In a website, building out a good database design is a complex fiddly task that takes a long time and is considered 'difficult'. On the other hand, applying the right CSS to position an HTML element is easy but time consuming.
Creating a steam engine also involves difficult and easy tasks. Sometimes the difficult tasks actually take less time than the easy tasks. For example, it is fairly 'easy' to turn a rod to size. It is easy to put a thread on a rod when it is at size. It is easy to make a rod the correct length. It is equally simple making four stand-off posts, each of which has to be the same length between threads, and each set of threads must be the same, and each total length has to be the same - but it takes time. On the other hand, casting an engine piston is only a few minutes of intense work (pouring molten metal is the most intense thing I've ever done), and requires an hour or two of waiting to see the results. No major time is actually involved, but it's still very difficult.
Once all the pieces have been created for a website: the database tables, the different themes and views, the logic - it is time to assemble them all into one cohesive gestalt. With both projects you do test fittings as you go, but it isn't until you start assembling that you know what you have. You carefully put all the pieces together until you have the completed website or engine.
At this point it is time to see if it works. You open the site to the customer and hope that they like it. You've done your best and you've followed all the instructions and guidance you've received, but it is only at this magic moment that you know if you got it right. With a steam engine, this is the point where you apply compressed air to the 'steam' in port and see if the engine turns. You set the pressure and take your measurements of speed and power of the engine. You also look to see if there is any leakage.
If this all works it is now time to launch. The day of launch is always exciting. The developers make a copy of the website from the staging area where the client has been giving feedback to the production area. Everything is checked and double checked. The client comes and does a double check. Finally, the site is made live and the world invited to see what was accomplished. Orders start flowing.
For the machinist, launch day involves connecting the engine to the boiler for the driving forces and connecting the output of the engine to something to make use of that power - for example a dynamo, hydraulic pump, or generator. The boiler is fired and then live steam at 340ä‹Š and 100 PSI is allowed to flow to the engine. It hisses, spitting water and steam, and then starts to turn. Pretty soon the engine is spinning at speed and a load is applied. The engine slows and then picks back up, and meters can measure the power flowing from the generator or the hydraulic pump sees the GPM gage move upwards.
In short, websites and steam engines are remarkably similar!