Posts tagged ‘UI’

Stack Overflow DevDays Toronto 2009 – Better Late Than Never

So I attended this event literally a month ago, but I had to write this post for work. I figured I would reprint here:

Stack Overflow DevDays was a one day platform-neutral web developer conference, discussing everything from new languages and technologies to general theory on software development and the business of software development.

A public discussion of the Toronto Dev Day is available here, complete with the audio of a few of the speakers:

http://meta.stackoverflow.com/questions/27151/devdays-reviews-toronto

Topics of the day:

Joel Spolsky (Fog creek Software, Stackoverflow) discussed Elegance in User Interface Design, and the tension between giving users lots of options (more power) and the decision paralysis that can come from “asking the user too many questions.” He pointed out that many of the questions and options that appear in most applications via settings menus or pop up boxes are mostly things that really don’t need to be asked (such as “would you like to check for new software updates?”)  – they are things that simply get in the way of a user performing a task. In the example of software updates, why not just check and update them silently? The average user does not really care what version of software they are using.

Other examples of bad UI design given were the Windows Vista UAC dialog (where every time you try to do something, the screen goes dark and you are asked “Are you sure?”) and the Dancing Pigs problem, as well as a music website with a search dialog box where you type in a term, but then have to choose from a dialog box wheter the term is a song, artist or album (Why can’t the application just search in all three places?).

Barry Gervin and from Joey Devilla from Microsoft were next, discussing the ASP.NET MVC Framework. This is a framework built on the Microsoft stack, which simplifies the menial tasks that most developers go through whenever building a modern web application. For instance, querying from a database to display results on a webpage are greatly improved, and within a couple of clicks most of the code is generated for you. This is something I’ve always liked about the Microsoft frameworks; setting up the basic things that you normally have to write over and over again in other languages is quick and easy, and gives the developers more time to spend on actually building the logic for the site and other features. It also simplifies tasks like modern SEO techniques such as relevant paths for pages (http://fakesite.com/products/games/nintendo/ or http://fakesite.com/user/edit ).

Jordan Baker (Plone, Scryent) gave a very insightful introduction to the Python scripting language. His demo included a Spell checker written in 21 lines of code. It covers everything from extra letters, missing letters, transpositions (letters in the wrong order), and replacements (an Q typed instead of a W). The spellchecker was accurate up to a distance of two (meaning a word could have two different problems with it). This example was given to illustrate Python’s strength in list manipulation – it is very easy to write loops for reading, writing to and checking values in long sets of data.

Ralph Whitbeck gave a demo of jQuery, a technology already used on tvo.org, the upcoming drupal integrations of the new websites, as well as several Ideashaker projects. While I was already farmilliar with it, I am still new to this Javascript library, so it was nice to confirm based on his walkthroughs that I was not missing anything or doing anything incorrectly.

Joel came back out to give a live demo of FogBugz 7, a suite of tools for software bug tracking. While this was more a sales pitch then anything else, it did strengthen his presentation from the start of the day, illustrating some great UI design choices: The entire web app is cross browser compatible, can be used entirely via the keyboard with the tab key (makes data entry much faster), and uses things like Bayesian filtering to learn which users should be assigned certain emails and tasks based on their previous history.

Greg Wilson (U of T) gave a presentation about the history/future of software development, and how it should be compared to areas of academia such as medicine, specifically the methodologies used to build software and the way we benchmark these practicies. He cited several studies regarding several project management styles and methods as they pertain to software development. Some of them include:

  • Most errors occur during analysis and design. The later they are removed, the more expensive they are.
  • For every 25% increase in problem complexity, there is a 100% increase in solution complexity
  • The two biggest causes in project failure are poor estimation and unstable requirements
  • If more than 20-25% of a component has to be rewritten, it is usually better to rewrite it from scratch.
  • Inspections can remove 60-90% of errors by reading code before the first run. The first hour of code review is the most important.
  • Code Maintenance is 40-80% of the cost of a software project.
    • 30% of the time is spent figuring out how the code works.
    • 60% is code enhancements.

And one of the most important ones to me:

  • Physical Distance between project participants has no bearing on post-release faults. However, distance on the company org chart DOES.

This can apply directly to projects the Ideashaker works on, as almost all of our projects work with other departments (web encode, the web teams, producers, etc). It is important to have clear communication early and often with all these teams to make sure that everyone is on the same page at all stages of the project.

At the end of the day, Reginald Braythwayt gave a chat on the differences on programming languages and how they reflect how we think about software development. Specifically, he is implementing features in Ruby to “rewrite” the language in ways that reflect how he thinks about code.

Overall It was a great day of workshops. It not only shed some light on new technologies in the web development world, but also gave me some things to think about when it comes to project management and software design.