January 2013 Newsletter
If you change the way you look at things, the things you look at change. –Wayne Dyer
Testability = Availability, operability, simplicity, consistency, decomposability, stability and understandability. –Peter Zimmerer
Simplicity is prerequisite for reliability. –Edsger W. Dijkstra
There is a foolish corner in the brain of the wisest man. –Aristotle
If you don’t like change, you’re going to like irrelevance even less. –General Eric Shinseki, Former Chief of Staff, U.S. Army
There is no exception to the rule that every rule has an exception. –James Thurber
Patience and perseverance have a magical effect before which difficulties disappear and
obstacles vanish. –John Quincy Adams
This article explores a recent wave within the agile community (or, at least, among agile pundits) about abandoning use of story points and/or velocity as productivity metrics. Most of the concern centers about the abuse and gaming of these measures.
This article asserts that, while estimation is a necessary part of projects, it can subtly become a problem due to Parkinson’s Law, unless there is a clear, defined, and efficient process for doing estimates. In particular, large task estimates (i.e., work that isn’t well defined) must be avoided.
You probably think that modern warfare and software development have little in common. However, this article shows how the practices of the founder of modern warfare, Swedish general Gustavus Adolphus, apply to successful development efforts, as well.
Methodology expert Tom DeMarco makes an interesting observation about late projects. He says that they aren’t late (necessarily) because of bad estimation of effort (although that may be a factor), but because they start late. It may sound obvious, but the implications are that they started late because of such factors as insufficient business value, lack of business support, etc.
This article emphasizes that agile is not about following particular practices or adopting a certain philosophy, but rather about making progress. Agile means that you are doing things that improve the situation both for the development team and your customers.
Web content strategy consultant Karen McGrane says that as more web traffic moves to mobile platforms the value and importance of an API for your service increases. Moreover, the API-centric approach has another benefit for providers in driving a services-based architecture (SOA).
This comprehensive article emphasizes that, like other agile practices, the key aspect of planning and estimation in the agile world is iteration. The author explains four levels of planning, each of which is intended to refine the information from the previous level.
I chuckle when I put this article in the newsletter, since the heading of this section includes the word “process”. Anyway, this article does say that all process is bad, but that processes that don’t have an understood and agreed upon purpose are a drain on productivity and morale.
This video (along with transcript) gives an excellent overview of the roles and responsibilities of an agile product owner. The video helps you to visualize the relationships between product owner and other team members very well. (You can download the complete illustration from the video here.)
A former Google test engineer dishes about his 5+ year experience of working with development teams to improve code and product quality. It provides a quite interesting look at the dynamics of long-term improvement efforts.
Just a few of interesting comments about what “quality” means, borrowing heavily from Pirsig’s Zen and the Art of Motorcycle Maintenance. If you haven’t read this modern-day classic, it has a very strong philosophical examination of quality.
This interesting (and somewhat philosophical) essay explores the subtle difference between fixing a bug (more focused on addressing the symptom) versus solving the underlying problem. It provides a good bit of food for thought about your own personal approach to quality.
Most shell/command line power users will tell you that they are much more efficient at file management and associated tasks compared to using GUIs. But, if you are just starting out with bash, this might seem laughable. This excellent article shows you to the default Emacs keyboard shortcuts to supercharge your shell sessions.
With the recent proliferation of web service APIs, libraries, frameworks and other various resources for programming and web development, it can be difficult to keep track of documentation. This site provides a well-organized, directory of API documentation.
While most of the tips in this article are well known, this is a nice summary of some of the Eclipse functions that make debugging more efficient and productive.
Most of know the value of code reviews from our own experiences, but they often seem tedious and in many cases are easy to skip in the crunch to get development completed. This comprehensive guide gives tips to both reviewers and to the developer whose code is being reviewed to make the review more productive and less painful for all involved.
“Uncle Bob” Martin gives a very thorough overview of the philosophy and concepts of functional programming. He emphasizes the importance of FP, especially as multi-core programming becomes more mainstream. Of course, his approach is not without its skeptics, such Tim Bray and Cedric Otaku.
Productivity expert Theresa Amabile presents research that shows that the simple task of keeping of journal of small successes improves your productivity.
Using Kernighan’s warning against being too clever in writing code, this developer goes on to show how cleverness and elegance are actually part of the process of improving skills, by using them as motivation to go just a little bit beyond your zone of knowledge continuously.
This summary of a presentation that programmer gave to first-year students provides a good overview of some of the key principles of development, along with how practice differs from theory. It’s a good refresher no matter where you are in your career.
This article makes an excellent observation that programming (and probably most any type of “knowledge work”) inherently has a very small “quantum of work” (the smallest independent bit of work that you can do without consulting outside resources—co-workers, Internet, etc.). At the same time, he also notes that perhaps we need to look for ways to operate in a less connected manner to improve productivity.
Distraction is nothing new, of course. However, hyper pace of our work world and all of the “screens” that we have to deal with add to the stress. This article looks at some of the impacts and potential solutions to the onslaught of disturbance.
While we often hear the cliché “You can’t teach an old dog new tricks,” the author of Guitar Zero, which chronicles his effort to learn music at age 40, says that everyone should try to learn some new skill each year, regardless of age. He says that the biggest impediment most people face is “critical period” concept that has been drilled into most of us for our entire lives.
What if you’ve worked hard to climb the corporate ladder and you wake up one day and decide you don’t want to be a manager any longer? This author offers some advice that includes options within your current company and for striking out on your own.
This analyst group predicts another difficult year for telecom service providers and also some new stumbling blocks for OTT media providers. Both sectors will focus on increasing revenues from mobile usage, as content providers continue to focus on smartphones and tablets.
Think of Convert Image to Html as ASCII art meets web page. It will take any image (BMP, GIF, JPG, and PNG supported) and convert it to HTML text with proper colors. You can chose whatever text you want to use. Likewise, it allows you to adjust the font style, font size, number of characters per line, the aspect ratio and the background color.
CarotDAV is a Windows WebDAV client that has built-in support for a variety of cloud-based storage services, including Dropbox, SugarSync, SkyDrive, and Google Drive. Since CarotDAV is a portable tool, you can connect to any of the various services without having to install the specific client. In addition, CarotDAV supports FTP/FTPS and direct connections to Google Docs.
If you use Firefox and frequently have many tabs open, you are likely familiar with how memory quickly gets consumed. Suspend Tab will suspend (“unload” the content) of the tab after a user-defined amount of inactive time (30 minutes by default). You can suspend or resume a tab on demand via the context menu.
Return to the thrilling days of yesteryear (or the 1960s!) when the IBM 360 with keypunch card storage was the state of art. Enter your search query and watch the punch card update. And it really does run your search on Google.
WikiGIFs is a fun little time-waster. It randomly displays one of the animated GIFs on Wikipedia. Hit the <Space> bar to load another one. Or click on the link to view the Wikipedia entry that the image came from.
You are probably familiar with this comic about software development. Here’s another humorous look at the programming process.