Here’s a transcript of my interview with Lance Redgrave for his upcoming book, Cunningly Clever Business Online.
Engineering for the web – why is it important?
What are the most important factors that should be considered when engineering a website/platform?
First you need to determine the balance between features and budget. Maintainability, extensibility, performance, and polish are all factors that are easy to forget without proper planning. After you set a plan taking all variables into account, the most important factor is in controlling the scope of the project. It’s easy to acquiesce to a client’s suggestions if you’re not accustomed to being the “expert” in the relationship.
If performance is a factor, how can you engineer for this?
From a technical standpoint, caching, minification of files, optimization of images, and making sure your server environment is sufficient are the most important considerations. It’s also vital to engineer the application to make as few queries as possible, to use few and small images, and consolidate your files so as to avoid making a lot of requests.
If reliability and stability are factors, how can you engineer for this?
Beyond having a good server, reliability and stability can only be guaranteed through extensive testing: testing under load, going through all actions a user will take, and testing edge-cases, to name a few.
What are the most common traps a web developer can fall into when building a website/web platform?
Not adequately defining a project beforehand is the top mistake by a long shot. Scope creep, new requirements, ending up with something the client doesn’t even want, and excessive stress for all people involved are a few consequences of imprecise scoping. Beyond that, a trap many fall into is focusing on less urgent, less important things when there are better things to be done at the moment. Following that line of thinking, projects can end up with great-looking buttons but a process that doesn’t convert users well.
What methods or techniques will you avoid, that others may not?
Crafting great HTML/CSS/JS takes a lot of forethought and knowledge beyond the basics. SMACSS, for instance is a great way to organize styling information, but most front-end coders tend to create style rules haphazardly. Using a tool like SASS enables you to keep styling for each functional element separate and quick to update.
What advice would you offer to a client, who was seeking to build a high performance website, but who had little knowledge on the subject?
Minimize image usage, compile all resources into as few files as possible, make few requests per page, utilize caching, minify files, and only use resources that you really need. Furthermore, the client may wish to utilize a content delivery network (CDN) to effectively decrease latency between distant users and the server.
Any others comment or advice?
Thinking and planning are indisputably the most important parts of a project, and often clients and agencies don’t make sure to consider all the angles as much as possible before beginning. Progress updates are essential if there’s any doubt about the end product or certain features, and it’s immensely important with any money-making or lead-generating website to continue with improvements over time. There’s a lot more potential in any website than simply creating a one-time website and never making updates, improvements, or additions.