July 2011 Newsletter
Flaming enthusiasm, backed up by horse sense and persistence, is the quality that most frequently makes for success. –Dale Carnegie
The practice of forgiveness is our most important contribution to the healing of the world. –Marianne Williamson
They used to tank cod from Alaska all the way to China. They’d keep them in vats in the ship. By the time the codfish reached China the flesh was mush and tasteless. So this guy came up with this idea that if you put these cods in these big vats, put some catfish in with them. And the catfish would keep the cod agile. And there are those people who are catfish in life. And they keep you on your toes, they keep you guessin’, they keep you thinkin’, they keep you fresh. And I thank God for the catfish, because we would be dull and boring if we didn’t have somebody nipping at our fin. –Vince Pierce, from the (faux?) documentary Catfish
We pretend that technology, our technology, is something of a life force, a will, and a thrust of its own, on which we can blame all, with which we can explain all, and in the end by means of which we can excuse ourselves. –T. Cuyler Young in Man in Nature
Quality is never an accident. It is always the result of intelligent effort. –John Ruskin
This author explores the biases that are common when learning functional programming after a lot of experience with OOP. One of the interesting things that he notes is that applying functional principles to OOP can often help streamline code and improve design.
This great article explains the natural transitions that developers go through when adopting TDD and the characteristics of each stage.
As agile development enters its second decade (as measured from the release of the Agile Manifesto), agile development seems to being going through some growing pains. In this article, Phillippe Krutchen presents 20 "elephants in the room" that the agile community needs to address. He goes on to offer some suggestions on approaches for addressing a few of them.
This article gives some good tips about avoiding some of the pitfalls of Agile (with a big "A") and how to truly become an agile organization. The key things that this author emphasizes is the importance of communication and of measuring before adjusting your process.
Elimination of waste is one of the key elements of the lean philosophy. But sometimes it's difficult to quantify what constitutes waste in software development. This author provides some very good examples of development waste and ideas on how to reduce them.
The role of the scrum master on agile projects is often one of the most difficult to grasp when starting out. This article lists 10 key skills that the make for a successful scrum master. And it's interesting to note that interpersonal skills are much more important than technical talent for this role.
This is a common question that comes up in development circles. Check out how some well-known folks in the industry answer this question. Some of the answers may surprise you. How would you answer it?
Organizations are learning that a combination of agile and traditional software development methodologies is often the best option.
Most of us who have been involved with software testing for any appreciable amount of time have heard how something is "just around the corner" which will render manual testing unnecessary. While I certainly don't believe this (and never have), this new approach does look promising with respect to bringing testing and development closer.
Even with all of the technological and process advances, we still frequently hear about buggy software. In this article, the author interviews a researcher at NICTA who is working on how to make formal verification techniques practical for day-to-day use.
Every once in a while (or maybe even quite frequently) we hear about how the “traditional” (whatever that means!) software tester will become extinct soon. Usually, it’s the test tool vendors that espouse this view. This article makes a good case for how the role of testing continues to evolve and change, but that human testers will never be obsolete. One of the strongest arguments is that as new development technologies are introduced testing tools have to catch up, so testers still have to be involved.
Surely this article is likely to raise the hackles (if not ire!) of many folks (and I grant that organizations like Forrester make money by being controversial at times), but the author makes a good point about the fact that development teams need to have more accountability for quality of systems. And like the article above, I don't think that testing will ever be completely replaced, simply because you need "fresh eyes" (i.e., independent folks) to assess an application's fitness.
I've probably read over 100 articles about test-driven design (TDD) and each one only moves me a little closer to actually getting the concept in a way that is meaningful and practical. This simple guide, in the style of the Tao-Te Ching, lucidly explains the basic premises of TDD.
Subtitled "50 lessons, observations, & unadulterated opinions on web developer life through the eyes of one of them", this site gives some great tips and inspiration for developers of all types. The items are categorized into relevant categories.
If you need to brush up on (or even re-learn) the basic algorithms of computer science, check out this site. The author provides clear, simple explanations with examples in Java and C# which have visualizations of actually running the algorithm.
Developing leadership talent in the IT and other technical organizations is frequently difficult. This author suggests that management must develop both the "soft" skills and technical acumen of future leaders.
This author offers the counterintuitive idea that, rather than strengthening your willpower, you should instead work on how to make as many activities as possible second nature to reduce the cognitive cost of doing them to improve productivity and efficiency.
A programmer (who else?!) did some analysis of users' reputations and age on Stack Overflow and determined that older developers (he only goes up to age 49—I hope that's not a bad omen!) tend have better reputation scores. While probably not completely statistically sound, this is some interesting food for thought.
How does it make you feel when someone simply says "Thank You"? If it makes you feel good, you're not alone. Social science research shows that basic common courtesy is a good motivator.
Most of us are familiar with the concept that a good portion of communication is non-verbal. This presentation shows how important body language is for agile teams, which distributed teams, who communicate mainly via e-mail and telephone, need to be attentive to.
Similar to Elgan's grieving over the loss of strong work ethics, Tim O'Reilly talks about how the computer science and programming education process is promoting many of the underlying causes of this, especially around the "everything is easy" mantra.
This application may seem a little too retro for you, but if you ever have need to draw a diagram in a plain text e-mail, it's very handy. ASCIIFlow is an online diagram tool that uses plain text characters, but makes it simple to draw items and move things around as blocks.
If you use VirtualBox on your Windows system for running Linux or other OSes, especially for development work, you probably have many situations where you want to run your guest OS in headless mode, but still want quick access to some features. VBoxHeadlessTray puts your guest OS as an icon in the system tray. The icon has menu items such as pausing, reseting or shutting down and even switching to the GUI display of the guest OS.
Most Linux/Unix shell (command prompt) spend a good portion of their time changing between directories using cd command. Autojump is a cd command that "learns" your directories so that you can quickly jump to the desired directory without entering the full path. Autojump is mainly for situations where you need to move "far away" from your current location and complements cd for "nearby" use.
As the name implies, this site provides a web interface to a variety of common Linux/Unix shell utilities. Some of the supported functions include regular expression evaluation, XML/XSLT processing, JSON formatting, base 64 encoding/decoding, and various encryption hashes.
Alvor is a simple, yet powerful Eclipse plug-in that does static analysis on SQL statements embedded as strings (not sure if works directly with StringBuffer or StringBuilder objects) in Java code. It is configurable to check against a specified SQL grammar or a database itself. Any JDBC-compliant database is supported. SQL syntax errors are displayed as normal errors in Eclipse.
This site sports some really incredible user-submitted optical illusions, many of them using video. If you thought you'd seen every type of illusion imaginable, you'll be forced to think again.
With all apologies to Dr. Maslow, of course.