A Front End Engineer's Manifesto
By @zachleat
Full Version or Full Monty
Web or Presentation Mode
  1. Most importantly and above all, I will put the needs of the user first over my own needs as a developer.
  2. Progressive Enhancement and Unobtrusive JavaScript are my tools.

    Without JavaScript or CSS, or without mobile Webkit, my site may not look pretty but will still be functional.

  3. Simplicity is Respect

    I will not unnecessarily tax my users' brains with complicated designs and user interfaces. I will strive to make interactions succinct and minimize mental overhead.

  4. I will educate my friends and family that Web Browser choice matters.

    Web Browsers should at minimum properly implement web standards and should be responsive to the advancing web. Web Browser Choice should be separate from picking an operating system. This is especially important for mobile devices.

  5. I believe in the power of the Open Web.

    My content was accessible when full Flash / Flex apps were popular, and I will continue to provide accessible device independent content in the face of App Store ubiquity.

  6. I acknowledge that Performance is Critical.

    My own developer hardware is not representative of the real world, and will be mindful of limited hardware, poor latency, and low bandwidth situations.

  7. I will learn at the root, not the abstraction: JavaScript before jQuery or YUI, Prototype, Mootools, et al.
  8. I believe that Open Source Code and royalty free tools represent the best future for the Web.

    Especially when considering file formats and codecs for images, audio, or video.

  9. I will not underestimate the importance of accessibility.

    It is not just about helping users that may have trouble differentiating colors or difficulty reading small fonts, but is about providing comprehensive access for users that may prefer to use either the keyboard or the mouse; in providing a clean print friendly format; in providing content to devices of varying technological capabilities.

  10. I will give back to the Community

    I will contribute workarounds, fixes, and document issues that may help others. I will file bugs at the source with the web browser’s bug tracker.

  11. I will continue to foster both hemispheres of my brain

    I will better myself not just in math and code, but also in art, music, design, and usability.

  12. I will do my best to keep my knowledge current.

    I understand that I cannot learn everything and will be mindful of what I do not know.

  13. I accept responsibility for View Source.

    I will take care to use approaches that will be compatible with current and future web browsers, including preference for feature detection over user agent sniffing when it does not violate rules #1 or #5.

  14. My code will be portable.

    I will be mindful of overzealous CSS specificity, overuse of CSS !important, the global JavaScript namespace, as well as numerous browser implementation quirks.

  15. I will choose the right tool for the job

    Whether it be a big choice between a full stack framework and a simple DOM-centric library, or even the simple choice between CSS and JavaScript to solve a task, I will educate myself on the mistakes of those before me to make the correct choice for my project.

  16. I will strive to create secure applications.

    I will properly escape my output and code to prevent XSS and CSRF. I will not store sensitive information in Cookies, and will use HTTPS where appropriate. I will be responsive in correcting issues that may cause harm to applications I have created.