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.
http://www.infoq.com/news/2012/12/stop_points_velocity
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.
http://zacgery.blogspot.com/2013/01/finding-lost-time-in-software.html
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.
http://www.infoq.com/news/2013/01/right-way-agile
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.
http://agile.dzone.com/articles/agile-planning-estimation
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.
http://www.randsinrepose.com/archives/2013/01/01/the_process_myth.html
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.)
http://blog.crisp.se/2012/10/25/henrikkniberg/agile-product-ownership-in-a-nutshell
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.
http://mike-bland.com/2012/07/10/test-mercenaries.html
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.
http://blog.14islands.com/post/39462312773/the-art-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.
http://www.runswift.ly/solving-bugs.html
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.
http://www.catonmat.net/blog/bash-one-liners-explained-part-five/
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.
http://eclipsesource.com/blogs/2013/01/08/effective-java-debugging-with-eclipse/
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.
http://insidecoding.wordpress.com/2013/01/07/code-review-guidelines/
This excellent article teaches you 10 concepts about JavaScript that are generally different from other languages by using examples from the language itself and from some of the popular, well-written frameworks.
http://dsheiko.com/weblog/learning-javascript-from-the-code/
“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.
http://pragprog.com/magazines/2013-01/functional-programming-basics
Productivity expert Theresa Amabile presents research that shows that the simple task of keeping of journal of small successes improves your productivity.
http://www.theatlantic.com/video/archive/2012/09/99u-teresa-amabile/262677/
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.
http://www.linusakesson.net/programming/kernighans-lever/index.php
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.
http://henrikwarne.com/2012/12/12/working-as-a-software-developer/
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.
http://www.johndcook.com/blog/2013/01/02/fractured-work/
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.
http://online.wsj.com/article/SB10001424127887324339204578173252223022388.html?mod=e2fb
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.
http://www.newyorker.com/online/blogs/newsdesk/2013/01/new-skills-for-a-new-year.html
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.
http://blogs.hbr.org/cs/2012/12/what_if_you_dont_want_to_be_a.html
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.
http://blogs.informatandm.com/6802/informa-telecoms-media-identifies-top-10-trends-for-2013/
In this interview, the head of lobbying group Voice Communication Exchange makes the case for retiring the traditional circuit-switched PSTN telephone system in the US by June 2018.
http://spectrum.ieee.org/podcast/telecom/internet/the-end-of-the-public-phone-network/
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.
http://www.foxarc.com/en/downloads.html
This excellent Visual Studio extension adds many web design features that are missing in the base package, including zen coding, CoffeScript and LESS syntax support, Markdown preview, JSHint support, JavaScript brace auto-completion, VS “region” support for JavaScript, CSS stylesheets and HTML, and much more. These features should be helpful to any VS user, especially since C# is on the rise as a mobile development language. You can even write C# (using Mono framework) directly on your Android device.
Microsoft has decided to focus on HTML, CSS, and JavaScript features in Visual Studio and, accordingly, is discontinuing their Expression production line. As part of change, their Expression Web 4 web design tool is now available for free download (no registration required). While not the most sophisticated tool, it has some nice capabilities for designing simple sites.
http://www.microsoft.com/en-us/download/details.aspx?id=36179
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.
http://rei.to/carotdav_en.html
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.
https://addons.mozilla.org/en-US/firefox/addon/suspend-tab/
Learning and testing regular expressions can be notoriously difficult and frustrating. The Regexper site allows you to enter any valid (JavaScript) regex and it will parse and display the meaning graphically. It’s a really boon to understanding regexes that you find in others’ code or on the Internet.
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.
http://www.masswerk.at/google60/
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.
http://www.sandraandwoo.com/2012/11/19/0430-software-engineering-now-with-cats/