Software Quality Digest – 2009-03-30

By Tobias Gurock, March 30th, 2009

The Software Quality Digest with the latest articles, blog postings and discussions about software quality, testing, usability, accessibility, scalability and related topics of the past week. If you have a relevant link for the Software Quality Digest, please let us know and we would be happy to include it in the next digest.

Software Quality and Testing

  • Five Dollar Programming Words – “Why are these words worth five dollars? They’re uncommon words that have a unique and specialized meaning in software development. They are a bit off the beaten path. Words you don’t hear often, but also words that provide the thrill of discovery, that ‘aha’ moment as you realize a certain programming concept you knew only through experimentation and intuition has a name.”
  • Making the debugger redundant – “It got me thinking about how the way that we can reduce the need to use the Debugger when writing code in imperative languages. Debugging is so boring and takes so long that spending large amounts of doing it both crushes the spirits and slows you down considerably.”
  • Reassessing what the debugger is for – “Admittedly the name ‘debugger’ doesn’t really help us here as the name describes a tool that “helps in locating and correcting programming errors” which is all well and good but I think it should be one of the last tools that we turn to rather than one of the first.”
  • JavaScript Testing Does Not Scale – “It’s become increasingly obvious to me that cross-browser JavaScript development and testing, as we know it, does not scale.”
  • TDD: The Art of Fearless Programming – “Test-driven development is a discipline of design and programming where every line of new code is written in response to a test the programmer writes just before coding.”

Performance and Scalability

  • How to write fast code – “Key takeaway: Don’t think in terms of making a slow piece of code run faster. Instead, think in terms of making it do less.”
  • Twice-as-fast isn’t good enough – “In very few cases will your life be changed by a two-fold speedup of anything computer-related. If your business plan (for a new technology) is predicated on speed, and the promised performance boost is less than a factor of ten (a full order of magnitude), rethink what you’re doing. ‘Twice as fast’ is not a competitive advantage. Not by a long shot.”
  • Google searches for holy grail of Python performance – “Google’s Python engineers have launched a new project called Unladen Swallow that seeks to improve the performance of the Python programming language. One of the project’s goals is to replace the Python virtual machine with an LLVM-based JIT.”
  • Performance – When do I start worrying? – “A common problem of the application designers is to predict when they need to start worrying about the Architectural/System improvements on their application. Do I need to add more resources? If yes, then how long before I am compelled to do so? The question is not only when but also what.”
  • Upgrading Twitter without service disruptions – “For every incoming tweet, the messaging system gets notifications for all the folowers, which are then processed asynchronously. One of the most important changes they introduced to improve performance in the last nine months is moving from a Ruby messaging middleware to a custom build JVM-based messaging middleware written in Scala.”

Process and Methodology

  • Developers should not be allowed to work overtime – “I have a very simple tip for software companies and engineering managers who want to make their developers happier and more productive (and less likely to produce buggy code). Forbid overtime.”
  • The Importance of Wireframing – “Since wireframes take considerably less time to generate than full color comps, you can spend time early on using them to map out all of the pages for a particular site. Even at this early stage you can get a sense of the user experience and therefore spot potential usability problems with your design.”
  • Get Wireframing: The All-In-One Guide – “Wireframing is a great tool to incorporate into your projects as it allows for rapid prototyping and helps to pinpoint any potential problems. I personally find it invaluable on projects to have a visual representation of content, hierarchy and layout. Overall it’s an excellent step to incorporate into your project before the design process begins for both you and your clients.”
  • Idealistic vs. Practical – “Is Agile idealistic or practical? Agile does embraces a set of principles (ideals) and I’ve seen many of its adherents become drunk with the beauty of it. I’ve been there a few times myself. So yes, it is idealistic in that respect. However, I think a better question is this: Is Agile merely idealistic?”

Usability and Acessibility

  • Mega Drop-Down Navigation Menus Work Well – “Big, two-dimensional drop-down panels group navigation options to eliminate scrolling and use typography, icons, and tooltips to explain the user’s choices. “
  • White Space: How to Get it ‘Right’ – “Space is important in layout. Space can be created by content – such as text, images, lists, logos etc. – or it can be created by the space in—between content, called negative space, or whitespace. Space can be passive; a by—product of the layout process. Or, it can be active; there for a reason, to guide the user’s eye, or help them make a decision.”

Technical Tips

  • Fast polling using C, memcached, nginx and libevent – “In this post I’ll show you how to implement really fast polling using C and libevent, memcached and nginx. The performance of the server is over 2400 request pr. second on a not optimized Mac Book – that’s 144.000 requests pr. minute.”

Misc

  • Java as Legacy Language – “We owe a lot to Java, clearly, but the sheer cost of using Java for smaller-scale projects is driving the creation of new, lighter-weight languages and frameworks that offer a better impedance match with agile working styles. Going forward, it simply won’t be economical to use Java for most kinds of development.”
  • The Elegance of Imperfection – “Bringing heart to web experiences can be difficult, since websites and applications are fundamentally a construct of logic (via code). While you can’t create a website that functions as a pure expression of wabi-sabi, finding ways to infuse our creations with a hint of wabi-sabi adds a new dimension to our work.”

Related posts:

  1. Software Quality Digest – 2009-03-13
  2. Software Quality Digest – 2009-07-27
  3. Software Quality Digest – 2009-04-06

Found this article useful? Make sure to subscribe to the No bug left behind feed or via email and don't miss our future articles about software quality, performance, usability and related topics. This blog also features the regular Software Quality Digest with links to relevant articles, discussions and other resources.

2 Responses

  1. Haytham Says:

    I like it, very useful post.

  2. Tobias Gurock Says:

    Thanks Haytham, I enjoyed reading your scalability/performance postings as well.