Web Development Principles: Develop for What Is, Not What Could Be

Published on June 7, 2011 (ā†» February 5, 2024), filed under (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.

Was this useful or interesting? Share (toot) this post, or maybe treat me to a coffee.Ā Thanks!

About Me

Jens Oliver Meiert, on September 30, 2021.

Iā€™m Jens, and Iā€™m an engineering lead and author. Iā€™ve worked as a technical lead for companies like Google and as an engineering manager for companies like Miro, Iā€™m close to W3C and WHATWG, and I write and review books for Oā€™Reilly and FrontendĀ Dogma.

With my current move to Spain, Iā€™m open to a new remote frontend leadership position. Feel free to review and refer my CV or LinkedInĀ profile.

I love trying things, not only in web development, but also in other areas like philosophy. Here on meiert.com I share some of my views andĀ experiences.

Comments (Closed)

  1. 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! šŸ˜Š

  2. 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 šŸ˜Š

  3. 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?

  4. 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.

  5. 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.