You were asked to build a website? Does it seem it will be a larger one? It might be the case it will actually not be a website but a webapp. It might need a team to actually do it. Well, better prepare answers for these couple of questions :-)

[[toc]]

Vision and requirements

  • Is there a short document explaining why this piece of software should exist and a concise description how it would accomplish that?
  • Do we have a place for collecting and prioritizing requirements?
  • Are non-functional requirements written somewhere?
  • Do we have a schedule or milestones which describes at least roughly what will be done when?

Communication

  • Can you think of any expectations that are not described by current requirements?
  • Will the customer collaborate with us on a regular basis? [1]

Technical environment

  • Does anyone from the team have a specific know-how which is necessary / effective to leverage for successful completion of the project?
  • Will there be a reasonable return of investment from learning and implementing new technologies? Would it be easier to hire new people with such skills?
  • Are there existing systems like CMSes or APIs that needs to be integrated?
  • Are there existing URL addresses or domains that needs to be redirected to new ones once the new website will be released?

Infrastructure

  • Is there a possibility that currently running systems will be negatively impacted after deploying this new application on target domain?
  • How will we host our website or application? Is it possible to change it now or in the future?
  • What are the pros and cons of chosen hosting environment over some more traditional choice?

Users

  • Do we have some existing analytics data?
  • How many users do we expect first day, first month, first year?
  • Which browsers and their versions are going to be supported?
  • Would the project suffer from missing accessibility features? Is it a subject of regulation?
  • Is it any good to provide users with a chatbot and is it worth the effort and possible performance issues?
  • Are there any use cases for our website/application to be used without JavaScript enabled?
  • Do our users need more language mutations and other internationalization adaptations? Will we need to support a RTL language?
  • Will we need to build multiple variants of the software for different users/customers?

Code

  • What is/will not be in a version control system? (like secrets, documents, etc.)
  • Is there a README.md file which has enough information for any developer to run the application, test it or prepare it for production?
  • Does every developer have an automatic way of formatting new code? (in editor on save, precommit hook)
  • Is there a process in CI that checks common code style issues for every change? (i.e. linting)
  • Is there a process in place that ensures that all code is checked for quality? (code reviews, automated tests and checks)
  • Does every developer know when and how a code review is needed and when it is appropriate to merge? [2]
  • Are there some automated checks for security? [3]
  • Is there a CI/CD pipeline that deploys every change? (continuous deployment)
  • Is there a preview environment for every change and is it practical to have them?
  • Do we have know-how when and how to use unit testing, integration testing or end-to-end testing?
  • Do we use the right programming language for the job?
  • Which framework do we use, what it solves and what problems it does not solve?
  • Is there a way to generate some boring boilerplate code?
  • Do we have a set of testing data?
  • Can we develop against this data set without even running the database?
  • Will there be only one version of the software at a time? Or will we have to support multiple versions with following maintenance?

Runtime

  • Does the web app handle redeployments of static assets seamlessly?
  • How will the web app handle a breaking change in backend APIs while an old version of frontend code is still running on the client side?
  • How is the cache on the CDN level invalidated?
  • Do we send correct security headers?
  • Do we send correct cache headers for HTML, data requests and assets?

SEO

  • Does every page have its canonical URL? [4]
  • Does our canonical URLs end with or without a slash? Do all redirects, sitemap items and links target this canonical URL?
  • Do our domain default to www prefix?
  • Do we need more control over Google results, and will we use Google search console? Will we use structured data?
  • Which website analytics solution will be used? Will we try to project for missing data (blocked by users or usage before consent) and how?
  • Do we have a complete sitemap?
  • Do we have a robots.txt? Does it contain only necessary records?
  • Do we have a page on the site for every frequent search term?
  • How are we managing third party scripts? Do we need Google Tag Manager? How much will be the performance influenced by third party scripts?
  • Does the application respond with correct response codes? An unknown URL should be 404 etc.

Performance, UX, a11y

  • Is it OK to display loading spinners for 10 seconds on a 3G network before displaying the content?
  • Will we have to do image preprocessing? Will it be a hosted solution? Do we care about resolutions and formats of those shipped images?
  • Is it useful to measure Core web vitals regularly/automatically?
  • Will we use progressive enhancement techniques? Does our team have knowledge to do so?
  • Are we going to optimize the amount of generated CSS? How?
  • Can be the desired set of fonts optimized in order to prevent Flash of unstyled fonts for most users?
  • Which level of accessibility will be our target? Do we have someone who understands accessibility on this level?
  • Do we have a plan for hallway usability testing? [5]

Design

  • How does our design process look like? How are responsibilities distributed among designers, developers, marketers, product or UX people?
  • Do we need our own design system?
  • Which tools and techniques we will use (preprocessing, postprocessing, feature detection, polyfills, CSS structure and layering, scoping, reset, RTL support…)?
  • How will we approach responsive design? Mobile or desktop first, strict set of media queries or more fluid techniques, leverage container queries?
  • Which set of icons we will use? Will it play well with our framework of choice?
  • Do we have a live web with our style guide?
  • Is it necessary to have a cookie consent on the website?
  • In case we need a cookie consent would it be beneficial to use a third party solution? Will we use the analytics from that solution for something?
  • Do we need to implement something extra in order to comply with privacy laws like GDPR?

Maintenance

  • Where will we track tasks and bugs?
  • How can our customers report bugs?
  • Do we have an automated system for reporting runtime errors?
  • How are our production systems backuped? When was the last time we have done a restoration from those backups?
  • How often there is a change in some data or source code? For how long will our system handle the increasing frequency of change?
  • Which types of changes would our architecture allow easily and which would be hard?
  • Do we have a place for writing down maintenance procedures? (E.g. updating dependencies, data schema migration, adding redirects, etc.)
  • Who manages credentials and how? Do we need to use an external service for them? Do we need to rotate them?
  • Is there a single place (like a URL) which anybody from the team can visit and see important links or other useful information about the project? (I call this a project signpost)
  • Do we need to track special events in the system, like conversions?
  • Do we have a way to automatically check for links that accidentally targets PAGE NOT FOUND?
  • Does our monitoring, logging and tracking solution solve real problems?

Marketing and sales

  • How does marketing or sales strategy correspond to a release date of our product?
  • Do we focus enough on feedback from users, developers, investors?

The bottom line

This is not an exhaustive list, although I was trying to be complete—based on my experience. BUT keep in mind that it is also critical to maximize the amount of work that does not need to be done! [6]

Notes

  1. From Agile manifesto: Customer collaboration over contract negotiation ↩︎

  2. One nice strategy for this is called Ship / Show / Ask ↩︎

  3. For example GitHub has tools for automated checks of dependencies and static code analysis ↩︎

  4. There are quite a few rules for canonical URLs so it is best to consult Google search documentation ↩︎

  5. Hallway usability testing is mentioned for example in the famous Joel’s test ↩︎

  6. Again a quote from Agile manifesto ↩︎