An Event Apart: Building Things Fast

by October 14, 2009

Simon Willison's Building Things Fast and Getting Approval presentation at An Event Apart Chicago outlined several development trends that are making it even easier to quickly build, test, and launch Web applications.

  • Web development 4 years sucked. We built the same stuff over and over again. But lately there has been enormous progress on the front end and back end to help us build faster.
  • Why do we want to do things faster? It’s cheaper, fun, and gives you an opportunity to get feedback early and fast.
  • There’s a number of recent trends that aid rapid development: Web frameworks, APIs, Client-side prototyping, and interactive development.
  • Interactive development speeds up writing code. Get a good idea if your code will work before you save the file. Tools are available for Javascript, CSS, Python, Ruby, PHP, etc. If you search for your favorite language with REPL –you will find language shells for that code that allows you to do interactive development.
  • Client-side prototyping allows you to build rapid applications just using HTML, Javacript, and CSS. Server-side development often means deployment headaches that you can avoid when you build in the client.
  • JSON-P (with padding) allows you to add functional calls to data that exists on third part Web sites. So a Web browser can run code from a different URL This gets around same origin cross-scripting.
  • The same origin policy: protected users from un-trusted Web sites running code on a trusted site.
  • Frameworks help you develop quickly. JQuery has probably won as the dominant Javascript framework.YQL from Yahoo! lets you run SQL queries against Web APIs.
  • But we are getting to the point where the Web does not work without Javascript. Beware the phantom Web where modern Javascript interpreters are required to access data and content.
  • Server-side prototyping has also changed due to the rise of modern frameworks: Ruby on Rails, Symfony, CakePHP. These are all full-stack frameworks so they handle everything you need to build a Web application.
  • DRY = don’t repeat yourself. Identifies common patterns and builds them into a framework.
  • Rapid development in a group. Pair programming increases productivity and helps keep focus.
  • KJ Method –a way of achieving consensus in a group. Helps to ensure everyone agrees to the same thing. Brainstorm every feature they can think of then post them to a board. After, people group these features into related bundles. All of this is done in silence until the first round is organized. Then everyone gets five votes on prioritizing features. At the end everyone has had an equal say in what is being built.
  • Making your organization more hackable. Hack days give people 24 hours to create something and demo it. These events help people bring new ideas into the organization.
  • APIs can also increase your team’s ability to explore new ideas and products. If you don’t have a lot of APIs, you can leverage existing RSS feeds or use screen scraping (scrAPIs).
  • More robust ways to construct screen scraping exist today. With YQL you can scrape screens through CSS. Its now possible to write single screen javascript applications that access content from other sites.
  • Open source is an ecosystem. You can evaluate and try software without lock in. If you buy commercial software, you have to use it.
  • Should you release your own code? Sites like github allow you to practice “fire and forget” style of code sharing. People can fork code and create their own version.

For more...

Check out my notes from three years of An Event Apart presentations.