Software Quality Digest – 2009-07-13
By Tobias Gurock, July 13th, 2009
The Software Quality Digest is back. The last two months were too busy to compile a decent digest, sorry about that. We prepared our new website and were working on our upcoming product. So, without further ado, here’s the digest with interesting articles, blog postings and discussions about software quality, testing, usability, accessibility, scalability and related topics of the past two-three weeks. 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
- Forgotten Refactorings – “I don’t know how much more emphasized step 1 of refactoring could be: don’t touch anything that doesn’t have coverage. Otherwise, you’re not refactoring; you’re just changing shit. And not a single IDE enforces or encourages you to have test coverage before mucking about with the refactorings.”
- Benefits of automated functional testing – “In the last few years of writing “enterprise” software in Java I’ve created and maintained thousands of unit tests, often working on projects that require 80% or better code coverage. Lots of little automated tests, each mocking out dependencies in order to isolate just one unit of code, ensuring minimal defects and allowing us to confidently refactor code without breaking everything. Ha! I’ve concluded that we’d be better off deleting 90% of these tests and saving a lot of time and money in the process.”
- Designers who wireframe: pros and cons – “There are plenty of conflicts of interest inherent in running a small creative shop where everyone has to wear lots of hats (or where one person wears all the hats)—like the account manager ideally should not be responsible for quality control because there’s too much conflict between the need to keep the job within budget and the need to take the time to do things right.”
Performance and Scalability
- SQL Databases Don’t Scale – “A question I’m often asked about Heroku is: “How do you scale the SQL database?” There’s a lot of things I can say about using caching, sharding, and other techniques to take load off the database. But the actual answer is: we don’t. SQL databases are fundamentally non-scalable, and there is no magical pixie dust that we, or anyone, can sprinkle on them to suddenly make them scale.”
- No to SQL? Anti-database movement gains steam – “One of the requirement for this new service was the need to build a graph that includes friends of friends, and products in catalogs. The process for building that graph with an In-Memory-Data-Grid took 2-3 msec vs. tens of seconds with a traditional approach (note that part of the complexity in this case is that the query itself is ad-hoc and can’t be easily partitioned). Building that graph on-the-fly at these speeds just couldn’t be done with traditional SQL database.”
Process and Methodology
- The problem with BDUF is the ‘B’ not the ‘UF’ – “I’m sure every developer with even the slightest amount of experience has run into a situation where a proposed design for a domain concept is initiated, and then someone (perhaps even the developer in question) has decided something along the lines of: “We need to generalize this so that it covers future requirements.””
- Agile is Dead – “The agile revolution has won. There is no doubt about it. No longer are its evangelists the pioneers who blaze new trails and chart the unknown, like they used to a couple of years ago. Agile principles, methodology, tool sets, even agile lingo, have become mainstream. Frankly, everybody and their dog is “doing agile” these days. Of course, there are pockets of resistance in the more backward (or “conservative” to be more polite) companies, but they are destined to eventually see the error of their ways and switch over.”
Usability and Accessibility
- Building Respect for Usability Expertise – “Respect comes only from proven performance. Once content owners see how much better customers react to websites that are written and designed according to established usability guidelines, they’ll start respecting you more. Sadly, this is a chicken-and-egg situation: you get to demonstrate the value of your advice only if it’s being implemented. “
- My first experience using an accessible touch screen device – “And I must say this was an amazing experience! My fingers definitely need to get used to gestures such as flicking or tapping, or using a rotor. But having an iPod Nano 4th generation helped with that, since moving the finger over the screen like on a dialer felt most like tracking around the iPod’s click wheel. Even the sound the rotor makes is the same.
”
Technical Tips
- Low Level Bit Hacks You Absolutely Must Know – “Bit hacks are ingenious little programming tricks that manipulate integers in a smart and efficient manner. Instead of performing some operation (such as counting the 1 bits in an integer) by looping over individual bits, these programming nuggets do the same with one or two carefully chosen bitwise operations.”
Misc
- Subtractive Design – “Subtractive design is the process of removing imperfections and extraneous parts in order to strengthen the core elements. You can think of a design as something you build up, construct and let grow, but it’s pruning away the excess that gives a design a sense of simplicity, elegance, and power.”
- Getting Pretty Lonely – “WordPress is licensed under the terms of the Gnu Public License (GPL) which, in a nutshell, stipulates that you are free to use the software however you like, but if you make changes and distribute those changes, then you must share those changes under the same terms. This simple, radical restriction means that you are prohibited from taking a GPL project and incorporating it with a closed-source project.”
- Making Games – “I hear from programmers every now and then who are considering trying to get into the games industry. Our projects are strange beasts that are similar to other software projects in some ways, yet vastly different in other ways. Still, if you look at it from outside, most of these differences will be hard to spot.” and a follow-up.
Related posts:
- Software Quality Digest – 2009-03-13
- Software Quality Digest – 2009-07-27
- 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.
