One of the most difficult things about technology is that solutions quickly become very complicated. For example, let’s say you want a website to show members of an organization. We will assume that you already have a website so we don’t have to talk through that complex process in addition to my example.
So you have a functioning website and you want to add a list of members of an organization. First you have to ask the question, how often will the members of this organization change? Who will be changing them? You run into the first bit of compounding complexity and have to decide whether you should use a database. Now a database really isn’t a complex concept – it is simply an organized way to store and find information, but with it comes another piece of software that needs maintenance and another language to speak to talk to it. Plus you have to find a place to store the data and a way connect it to your website. So let’s keep this simple and avoid the database for this example. We will update members by hand each time they change, which means a little more manual effort but if members don’t change often then avoiding the complexity will be worth it.
So we use our website software’s built in editor and manually add a few members of our organization in a simple table. Now we want to make it so that clicking on a row of this table shows us more information about that member. We’d prefer to let the user click anywhere on the row instead of having to click directly on the information in the row. Here comes more complexity! To make this table to work the way we want, we need to use a programming language called JavaScript. So we need to know another language and also how to make that language work with our website. We also have to be willing to fix that JavaScript if it breaks for any reason and be sure that it works in all of the 5 most used browsers. We decide to use JavaScript – we think this feature is worth the extra complexity. Now we can click on a row and see more information about a contact.
The contact information looks pretty good, but there are a few things we’d like to tweak to look a little better. Based upon the theme installed on our website, some of the text is bold where we want it normal weight and we’d like to change some of the colors to highlight important information. We’d also like to change that table that lists all the members so that when someone puts their mouse over one of the rows the row is highlighted so it is easier to see related information. Once again, here comes more complexity! Cascading Style Sheets (CSS) are used to change the style of things on a website. In prepackaged websites like Wordpress and Squarespace you can choose a theme that takes care of most of the CSS for you. But if you want to make a tweak here or there then you need to know yet another language and yet again how to make that language work with the website. We will choose to get the CSS working the way we want it in this situation because we really think changing the styles will make the information make more sense together.
All of that is a lot to consider for one “little” feature, I mean all we want to do is show a list of members and information about them! I could make a Word document that did that in a few minutes!
And even with all the complexity I discussed here, I didn’t talk at all about best practices like ensuring your website is secure, that your web pages load fast, that your information is backed up, how to best create and test changes, et cetera, et cetera, et cetera. Technology is complex by necessity.
Many systems try to remove, or abstract, away that complexity by limiting your options. That is great for situations where you are OK with those limitations and, frankly, where you are OK with looking like everyone else.
But the best way to abstract away that complexity is with people. Good people who know the right way to do things, know which details you need to know about and which you don’t, and that genuinely care.