Web Development Principles: Develop for What Is, Not What Could Be
Published on June 7, 2011 (ā» February 5, 2024), filed under Development (RSS feed for allĀ categories).
This and many other posts are also available as a pretty, well-behaved ebook: On Web Development.
For any given project, web developers fare best when focusing on what is, not what could be. To fend off misunderstandings, that focus includes what absolutely will be.
The reason for this principle is that you are not a psychic. That is, you may think that your site might feature a 12 column grid in the future, but if the mocks in front of you say itās 8, itās 8, not 12. If it only has one page type you donāt need two. If it doesnāt use tables you donāt need to style tables. Again: ignoring what could be doesnāt mean ignoring what will be, and that means if the designers you are working with are assuring you that the next site iteration will sport 12 columns, it would not be smart to ignore such probability.
What happens when you are not focusing on what is is that you are increasing cost, are introducing complexity and, eventually, technical debt right from the start. That is, documenting and explaining all the extra features you included in your siteās prototype cost money by the work youāre spending on it, then by its implementation, and also by the added maintenance cost going forward. Developing for what could be will make it more difficult (note: more difficult does not necessarily mean difficultāthis distinction is important) to work with your project. Eventually, though we touched this with added maintenance cost, you are forced to carry around stuff that is not used at all and that hence just stands in the way when working on what is actually relevant.
Having an eye on what is reflects empiricism, which also informs the tailor metaphor I introduced around frameworks: You want to strive for the best possible solution and that means tailoring to actual needs. A good tailor will give you a little bit of extra room for your bellyāand so will you give your design and code some room to grow or shrink a littleābut he will not hand you a tent just in case you gain 100 pounds.
People working with me and people following my posts have heard me say this a few times: A good part of web development is about dealing with probabilities. You know that Iāve covered other principles in the pastāsee the most popular posts of this siteāand that itās likely that Iām going to talk about principles again.
About Me
Iām Jens (long: Jens Oliver Meiert), and Iām a frontend engineering leader and tech author/publisher. Iāve worked as a technical lead for companies like Google and as an engineering manager for companies like Miro, Iām a contributor to several web standards, and I write and review books for OāReilly and FrontendĀ Dogma.
I love trying things, not only in web development (and engineering management), but also in other areas like philosophy. Here on meiert.com I share some of my experiences and views. (Please be critical, interpret charitably, and giveĀ feedback.)
Comments (Closed)
-
On June 7, 2011, 19:31 CEST, David said:
Iād like to see a TED talk (or similar) video in the future from you Jens! You have a way of getting to the gist of things with brevity. Itās always inspirational to see someone with clarity elaborate their ideas with succinctness and belief as you have here and have done in past posts. I want to see you talk and teach for an hour, or so, on the principles you preach. Keep doing it! Youāre the chlorine in the proverbial pool! š
-
On June 10, 2011, 3:29 CEST, Marco Pivetta said:
I just wish to oppose my opinion when it comes to complex projects with long term deadlinesā¦
Iāve been working on dozens of websites which were continuously adding features, and features and more features.That can become something like a big assassin blob which will kill the project and force rewriting from scratch.
I usually work on the programming side, as the design work is quite fast if you keep templates as clean as possible, but in my opinion I have to plan dozens of features! Even if I donāt implement a half of them, I just mock them or write some interface that represents their base ideas and enforce all the project to follow their principles.
That allows me to have a project where people are constantly aware of future development, and I never (or almost never) reach a point where the customer asks me something I didnāt intercept before in an āinterfaceā or āmockupā.
This kind of development is also strictly related to the fact that I tend to reuse my code everywhere, improving it in every project a bit, and in new project I take a huge advantage from all the ideas that came from the preceding ones, without loosing any possible feature. Even if not yet implemented, itās there and weāve written down the base concept that has just to be implemented š
-
On June 10, 2011, 22:08 CEST, Rob Huzzey said:
Whilst I do see your point, I also do see the need to code in such a way as to be flexible to changes in scope.
If this means adding a few extra lines to make it easier in the long run, I canāt see an issue.
Thereās no need to go crazy adding in loads of features you will never use, this I agree with, thats just common sense.
Iām just saying code modular, code so you can add features in, if no extra features are added, yes your code is pointless, but have you ever worked on a project where scope didnāt change?
-
On June 10, 2011, 23:41 CEST, Roger Flanagan said:
The concept of coding for what is there is amazing in theory and would work for standard brochure sites. Most of the time a client canāt tell you everything they want or need until they click around on a live site. You should always code for what could be. Iām a front end developer and speaking from experience a client will always want to add an additional paragraph or one more contact button so always code with that in mind. Excellent article, I just havenāt met too many clients where this method would make sense.
-
On June 13, 2011, 19:38 CEST, Jens Oliver Meiert said:
Thanks David š
Marco, Iād be curious learning more about your project environment. From what I understand you have a good understanding of whatās coming your way, and correctly apply other development practices like modularization.
Rob, project scopes do of course change, sometimes in a healthy, sometimes in an unhealthy fashion. The more they change though the more useful it will typically be to stay close to the āwhat is,ā even when that is just a snapshot š
Roger, I see where you are coming from and Iām also aware of that situation in practiceā¦ itās just an incredibly expensive one, one one needs to get out of as soon as possible. Itās hard to hit when you donāt have a goal and in the situation youāre describing, defining goals and committing to them will probably be the first things to aim for. I hope the environment youāre referring to actually permits that.
Read More
Maybe of interest to you,Ā too:
- Next: Print Style Sheets and URLs
- Previous: Exposing Reset Style Sheets
- More under Development
- More from 2011
- Most popular posts
Looking for a way to comment? Comments have been disabled,Ā unfortunately.
Get a good look at web development? Try WebGlossary.infoāand The Web Development Glossary 3K. With explanations and definitions for thousands of terms of web development, web design, and related fields, building on Wikipedia as well as MDN Web Docs. Available at Apple Books, Kobo, Google Play Books, andĀ Leanpub.