Software Quality Digest – 2009-04-21
By Tobias Gurock, April 21st, 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 two weeks this time. 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
- Turn off your step-thru debugger – “My mentor suggested a couple more approaches to try (and when I tried them, they worked, of course). Then he made a remark that has stayed with me ever since. ‘I try to stay away from debuggers,’ he said. ‘A debugger is a crutch. You’re better off without it.’”
- Exception-Driven Development – “When a user informs me about a bona fide error they’ve experienced with my software, I am deeply embarrassed. And more than a little ashamed. I have failed to see and address the issue before they got around to telling me. I have neglected to crash responsibly.”
- “I don’t have time to test!” – “Now, I think that abandoning testing due to time constraints is reckless and irresponsible. I sometimes catch myself thinking that I don’t have time for test writing, but I soon find myself proving this argument wrong. Often people who don’t have time to test will waste hours debugging code that they are desperately trying to force into production. This code ends up being brittle and costly to produce anyway.”
- Coupling and Cohesion – “One of the things about design that makes it such a joy is that it requires balance. If elements are too large, each change will be more expensive than it needs to be. If elements are too small, changes will ripple across elements. And optimizing the design takes place against the backdrop of an unpredictable stream of changes.”
- It’s Not TDD, It’s Design By Example – “The word “test” in software is a very loaded term. The first time I came across a tester (as in, a person performing the quality assurance role) was in my first professional job. We were never taught about testing at college, as we were all there to learn to be developers.”
Performance and Scalability
- Performance optimization: The first thing to do – “So, here is my point: The most important thing about optimization is analysis. You can’t fix a problem by simply trying different solutions to see if they work. In order to fix a problem, you have to understand the problem first.”
- Learned lessons from the largest player (Flickr, YouTube, Google, etc) – “If you working in new website; don’t buy too much equipment just because you want your website to be faster. Start slow, and small, and using the right statistics you will know the right direction. Measuring the right thing is fundamental and important. Selecting a benchmark and comparing the results seems, initially at least, to be a simple problem, but a host of mistakes are made during this process.”
- Experiences deploying a large-scale infrastructure in Amazon EC2 – ”
You’ll say that you’ve done lots of load testing before. This is very good….but it still will not prepare you for the sheer amount of traffic that the internets will throw at your application. That’s when all the things I mentioned before — automated deployment of new instances, charting of the important variables that you want to keep track of, quick identification of bottlenecks — become very useful.”
Process and Methodology
- Why do our time estimates suck? – “Everyone dealt with it in some form of another. Either you have given your estimations and you missed it by a long shot or someone handed you some estimations and they grossly underestimated the amount of work. And when that mark is missed, its the wag of the finger and the rain cloud of shame upon you. Management has deemed you a failure. Way to go.”
- The Pond – “I cringe. It’s Ian and Ian is a senior engineer. He’s a rock. He gets it done. I never have to ask him twice and, after six years, Ian has every right to ask to work remote. But I’m still freaked because my first thought when anyone asks to work remote is, “This fine person is a year away from either quitting or being fired.” Why? Because they’re asking to leave the Pond.”
- Pair Programming: The Code Fairy – “One of the hardest situations that comes up when pair programming is when you want to solve a problem in a certain way but you can’t persuade your pair that it’s the approach you should take. The temptation in these situations is to wait until your pair isn’t around, maybe by staying late at the end of the day or coming in early the next day and then making the changes to the code that you wanted to make but didn’t when you were pairing with them.”
Technical Tips
- Constraint Yourself! – “Part of this epiphany is realizing that DDL (Data Declaration Language), DML (Data Manipulation Language) and DCL (Data Control Language) are all an intrinsic part of SQL and not disjoint languages that stand apart. This article deals with the DDL, but better DDL makes for better DML and DCL. When a business rule is in the DDL, it is done one way, one place, one time. You do not have to hope that every application and every DML statement gets all the rules right. You do not have to hope that a change in the rules will be corrected in hundred or even thousands of places in the system. “
- The Dangers of the Large Object Heap – “Usually, .NET developers don’t need to think too much about how their objects are being laid out in physical memory: after all, .NET has a garbage collector and so is capable of automatically removing ‘dead’ objects and rearranging memory so that the survivors are packed in the most efficient manner possible. The garbage collector has limits to what it can do, however; and when these limits are reached, then the runtime can exhaust memory in a way that is surprising and confusing to any developer who is not aware of how .NET chooses to lay out objects in memory.”
- 15 Essential Checks Before Launching Your Website – “Your website is designed, the CMS works, content has been added and the client is happy. It’s time to take the website live. Or is it? When launching a website, you can often forget a number of things in your eagerness to make it live, so it’s useful to have a checklist to look through as you make your final touches and before you announce your website to the world.”
Misc
- We Slice Software Vertically Just Like Bread – “Some tasks look like they’ll take weeks to complete. That my friend is not a task. We need to split that. There is probably some aspect of that which could be completed in a day.”
Related posts:
- Software Quality Digest – 2009-04-06
- Software Quality Digest – 2009-03-13
- Software Quality Digest – 2009-07-27
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.
