Software Quality Digest – 2009-04-06
By Tobias Gurock, April 6th, 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
- Intentional API Design – “Don’t underestimate the importance of having good APIs. And don’t assume that if the product design is good, APIs will take care of themselves. That’s like saying if an airplane’s design is good enough, it will fly itself. That’s almost true. The problem is the word ‘almost.’”
- Coding: It’s all about the context – “I’m not sure who said that ‘if you rewrite a system that you didn’t write the first time you’ll probably make the same mistakes as the original team did’ but it’s certainly becoming more clear to me how this would be the case.”
- Kill Your Darlings – “I’m not sure why so many developers become so attached to code they’ve written. Perhaps developers have the same attachment to code that artists have to their paintings or music. Or, perhaps they view their legacy code as job security. Whatever the reason, developers seem to have some illogical desire to extend the life of code they’ve produced.”
Performance and Scalability
- Performance Anti-Patterns – “Since software patterns are considered abstractions of positive experience, we can talk about the various approaches that led to these performance problems as anti-patterns—something to be avoided rather than emulated.”
- Art of scalability (series) – “At the simplest level, Scalability is about doing more of something. Scaling a web application is about allowing more people to use your application is same time. Scaling it’s the ability to handle larger number of concurrent users.”
- A rant on automatic parallelism – “I don’t believe the lion’s share of developers want to rearchitect and rewrite their code with parallelism at the forefront of their development process. They don’t want to think about shipping memory over to the GPU and launching a highly-specialized data parallel kernel of computation, nor do they want to have to add locks and transactions everywhere to make things safe. But I do, however, believe the lion’s share of developers wouldn’t mind if their code ran faster as hardware got faster (via more cores).”
Process and Methodology
- Pair Programming: Slowly but surely – “Software development for me is a lot more about thinking through our options than coding the first thing that comes to mind and pair programming helps drive this approach to problem solving.”
- Pair Programming: From a Lean angle – “I’ve worked on teams which pair programmed the whole time and teams where pair programming was less prevalent and the difference in how well the knowledge of the code base was spread throughout the team is massively different.”
- Game Development going Agile – “Game development differs from business application development in many ways. Performance truly is king and a game dev may write code considered bad form to a business dev. Games have a fixed life cycle; once released there is no new development. This is the opposite of the business apps that are [...]. Differences aside however, it is comforting to see that the same Agile methodology, culture, and process can work for both. “
- Continuous deployment in 5 easy steps – “It’s a process whereby all code that is written for an application is immediately deployed into production. The result is a dramatic lowering of cycle time and freeing up of individual initiative. It has enabled companies I’ve worked with to deploy new code to production as often as fifty times every day.”
- Stumbling Through Mediocrity – “Worse, with so many organizations interested in “being Agile” rather than “being great,” a whole industry is springing up around providing watered-down, non-threatening, non-boat-rocking (and non-functioning) Agile. If the point is to Be Agile, there’s no need for Agile to actually work. Sell a certificate and walk away. Everyone’s happy, right? Right?”
- Are Some Software Development Challenges Too Complex for Agility? – “When the concepts of agile software development are introduced to an organization, a common response is, “Sure — that will work with a simple application, but ours is a very complex ‘Enterprise’ system”. Could it be that core agile software development principles are too simplistic to tackle the really tough situations? I recently found myself in a position in which it appeared that this might be so.”
Security
- Anatomy of a Cross-site Request Forgery Attack – “A Cross-site request forgery attack, also known as CSRF or XSRF (pronounced sea-surf) is the less well known, but equally dangerous, cousin of the Cross Site Scripting (XSS) attack. Yeah, they come from a rough family.”
Usability and Acessibility
- Designing Drop-Down Menus: Examples and Best Practices – “As a general rule, most Web developers, especially usability enthusiasts, say it is bad practice to use drop-down menus because they are confusing, annoying and oftentimes dysfunctional. From a design standpoint, however, drop-down menus are an excellent feature because they help clean up a busy layout. If structured correctly, drop-down menus can be a great navigation tool, while still being a usable and attractive design feature.”
- 10 Creative & Rich UI & How to Create Them – “Sometimes it’s just amazing to see, which level of usability, legibility and visual appeal can be achieved using some basic design techniques. In fact, some talented web-developers manage to deliver powerful, functional and gorgeous web-design in “look-and-feel”-style, which is easy to use and nice to see.”
- 8 Simple Ways to Improve Typography In Your Designs – “Many people, designers included, think that typography consists of only selecting a typeface, choosing a font size and whether it should be regular or bold. For most people it ends there. But there is much more to achieving good typography and it’s in the details that designers often neglect.”
Misc
- On the Speed of Light, Innovation, and the Future of Parsing – “These are the very early days of computing. We have just started exploring the shore of a new continent, and it’s shocking, because many are already proclaiming that it’s over. But the good news is that there is plenty of unconquered territory, most of the settlers have their eyes covered, and they’re not even attempting to grab any of it.”
- Should Competent Programmers be “Mathematically Inclined”? – “On the other hand, I have not found in practice that programmers need to be mathematically inclined to become great software developers. Quite the opposite, in fact. This does depend heavily on what kind of code you’re writing, but the vast bulk of code that I’ve seen consists mostly of the “balancing your checkbook” sort of math, nothing remotely like what you’d find in the average college calculus textbook, even. “
Related posts:
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.
