October 2011 Newsletter
The possession of power unavoidably spoils the free use of reason. –Immanuel Kant
The art of resting the mind and the power of dismissing from it all care and worry is probably one of the secrets of our great men and women. –J.A. Hadfield
Object-oriented programming makes code understandable by encapsulating moving parts. Functional programming makes code understandable by minimizing moving parts. –Michael Feathers
A good laugh overcomes more difficulties and dissipates more dark clouds than any other one thing. –Laura Ingalls Wilder
Right action is better than knowledge; but in order to do what is right, we must know what is right. –Carolus Magnus (a.k.a. Charlemagne)
No man is rich enough to buy back his past. –Oscar Wilde
Let him who would enjoy a good future waste none of his present. –Roger Babson
Anytime that you approach some work, you need to
consider both the benefits and the costs. This excellent, brief article
looks at some of the upsides and possible difficulties with adoption (small
"a") agile.
http://www.makinggoodsoftware.com/2011/07/31/agile-the-good-the-bad-and-the-ugly/
Everyone is "new" at some point in his/her career. While this article indicates that it's for "newbies", it really has some good advice for everyone who works in programming or other technology disciplines.
http://www.tenpoundhammer.com/2011/07/33-lessons-for-software-industry.html
One of the often overlooked aspects of implementing agile (or any
significant methodology or process change) is the organizational culture. This interview emphasizes that culture change
will be part of your implementation, whether your plan for it or not.
http://www.infoq.com/articles/organizational-culture-and-agile
Many agile teams struggle with getting the content of user stories
correct, without getting too much or too little detail. This article gives some brief, simple tips on
how to effectively clean up your user stories so that they contain good
requirements.
http://agile.dzone.com/news/retrospect-about-requirements
This author pleads with technology workers to take a break from the
endless "religious wars" (think Emacs
versus Vim or Java
versus .NET) and eschew dogmatic thinking.
He proposes a so-called Maturity Manifesto where programmers take the
high road on these petty differences to better serve their customers.
http://www.infoworld.com/d/application-development/my-manifesto-only-idiot-would-disagree-171350
The "team leader" role is often the first foray that developers
make into the realm of supervision and management. As such, this article points out some of the
common pitfalls and gives some suggestions for how to navigate the waters.
http://jamesbetteley.wordpress.com/2011/08/02/ten-mistakes-that-software-team-leads-make/
While not quite bad as the real 7 deadly sins, these traps and pitfalls
can really derail your agile practices.
One of the points from this list that I really liked is the idea that
your daily scrum meeting/stand-up should be a mini sprint planning session.
http://blog.scrumphony.com/2011/06/7-agile-sins/
Perhaps the most important task in software testing is the creation of a good set of test cases. Even testers with many years of experience will find some great tips in this article for improving the process of writing test cases.
http://www.softwaretestinghelp.com/tips-for-writing-test-cases/
Many folks, especially developers, have a naïve understanding about software testing. In this "confession", the author outlines some of the key aspects of testing and its integral importance in the development process.
This article provides an elegant explanation of the agile principle that the entire team has ownership of and responsibility for testing and the quality of the application. The author mainly tries the bridge the gap that testers and developers belong to separate disciplines.
http://testobsessed.com/2011/09/09/testing-as-a-whole-team-activity/
Communication between individuals and groups in literally the life-blood of a project. This is especially important when it comes to communication between develops and testers. This article explores the differences in approach and thinking between these groups and how to bridge these disparities.
This article cites research which demonstrates what should be second nature to most folks with any experience in large-scale development: Larger code bases typically have more defects. However, it's unknown what the relationship is between code size and number of defects.
http://blog.vivekhaldar.com/post/10669678292/size-is-the-best-predictor-of-code-quality
Even if you don't use Vim as your
standard editor (and the Vim versus Emacs debate
aside), knowing
Vim (or Vi) is a useful skill, especially since
they are ubiquitous and cross-platform.
This tutorial provides a 4-step framework for learning Vim: Survive; Feel
comfortable; Feel Better, Stronger, Faster; and Use vim superpowers.
http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/
Application security should be at the top of every developer and tester's
list of priorities. Here are 10 basic
rules that you should always consider with it comes to developing a secure
program or web application.
http://technet.microsoft.com/en-us/library/cc722487.aspx
Dean Wampler, author of Programming Scala, gives a simple, yet comprehensive of the principles
of functional
programming. He focuses on how
applying FP principles to your existing practices can improve your code without
transitioning entirely to FP.
Want to set up port forwarding on your home router, so you can connect
from the office? Or maybe you need for X
Windows graphics from a Linux server to your Windows machine. This tutorial shows you this and much more
and includes some great diagrams to explain the whole set up.
http://www.quarkphysics.ca/ssh/ssh_everything.htm
Closures
are one of the core concepts of functional
programming (FP), but are often a stumbling block for FP
beginners. This multi-part
interactive tutorial gently teaches you the concept using Javascript.
http://nathansjslessons.appspot.com/
T.S. Eliot said, "Good poets borrow, great poets steal." (or maybe not quite). Anyway, the point is that much of what is "new" is a mashup or recasting of something that already exists. This article explains the SCAMPER (a mnemonic) method to explore how you can extend, improve, or reuse an existing idea or product.
http://www.psychologytoday.com/blog/creative-thinkering/201107/9-easy-ways-create-ideas
This article suggests that performance reviews be re-cast in the model of agile, where an employee receives timely feedback on performance on a frequent basis. Wow! What a concept?!
http://5whys.com/blog/appraisals-and-agile-dont-play-nicely.html
This author looks at remote workers and distributed teams from both the perspective of being a remote employee and from the angle of working with remote people. Not surprisingly, his main point is that intentional communication by the entire time (those in the central location and the remote folks) and use of formal communication channels is the key to success. He also notes that distributed teams are only going to increase in the future.
http://arandomurl.com/2011/09/03/working-remotely.html
New research indicates that it makes economic sense for employers create an environment where employees not just survive, but actually thrive. This article suggests some simple things that managers can do to increase worker happiness.
http://www.nytimes.com/2011/09/04/opinion/sunday/do-happier-people-work-harder.html
"Employee engagement" is certainly one of the HR watchwords of the 21st century. But, in this counterintuitive result, researchers have found that some employees' emotional attachment to work (called "obsessive passion") is not adaptable and can actually be detrimental in the long run, often leading to burnout.
http://blogs.hbr.org/cs/2011/08/why_your_passion_for_work_coul.html
Most readers of this newsletter probably don't want to be considered Luddites, but many probably also get easily distracted with all of the technology and gadgets in our lives. This article gives some good practical advice on beating distraction and procrastination by making it harder to use some of the technology.
http://matt.might.net/articles/cripple-your-technology/
Some interesting results from a new survey about telecommuting, including that 1/6 of respondents actually admit to working less than an hour a day when working from home. Also, almost 1/3 get distracted by household chores.
Recently, we featured an article about the cognitive overhead of open work spaces. This article, summarizing the findings of a recent survey, says that open work areas not only enhance collaboration, but also increases ethical behavior.
http://www.baselinemag.com/c/a/IT-Management/Workers-More-Honest-When-Someone-is-Watching-868078/
According to a survey, 1 in 6 workers said that their manager or supervisor was the most disliked aspect of their job. This article explores the key questions that both employees and managers should ask themselves about the worker-manager interaction to have a good relationship. Perhaps this is part of the reason that IT manager was named the most hated job in America.
http://www.the-happy-manager.com/good-manager.html
Literate Eclipse Programming (LEP) is an Eclipse plugin that helps you write well-structured and documented source code in the style of Knuth's literate programming (remember that source code is meant for reading by people!). It includes features such as PDF/LaTex export supports C/C++ and Java programming languages.
This handy add-on for Windows 7 allows you to add your favorite web sites (such as, this newsletter!) to the Windows 7 desktop context (right-click) menu. You can choose which browser to open the shortcut with and even use the site's favorite icon to quickly identify it.
http://www.thewindowsclub.com/add-pin-website-links-windows-7-desktop-context-menu-web-pinner
ls++ is nicknamed "ls on steroids" and it really meets those expectations. It has excellent layout of file listings and provides customized color-coding of output.
https://github.com/trapd00r/ls--
ClickTo is a productivity enhancement that allows you quickly perform actions when copying objects to the clipboard. You can specify a target for the object, such as a document, e-mail, or web browser, or even "program" ClickTo to automatically perform specific actions based on the type of item selected.
VMware's Micro Cloud Foundry toolkit allows developers or testers to run an instance of their standard Cloud Foundry product on their local workstation to run and build cloud applications locally without having to configure middleware, and scale and deploy their applications wherever they want without modifying code. The platform supports Spring, Rails, Node.js, Grails, and Scala application platforms and MongoDB, MySQL, and Redis databases.
https://www.cloudfoundry.com/micro
Here are some pithy (and mostly punny) axioms about programming that you'll probably find enjoyable.
Check out these cool renderings of the faces of Star Wars characters using typographical fonts only. The subtlety of how fonts can be used in this way is amazing.
http://www.ibelieveinadv.com/2010/11/h-57-creative-station-the-force-of-typography/
What if, instead of making T-shirts for rock bands, we made them for some of history's greatest thinkers. Perhaps they'd look like this.
Here's a light-hearted look at how the computer (and technology, in general) has been portrayed over the past 50+ years on TV and in movies.
http://www.osnews.com/story/25157/Computers_on_TV_and_in_Movies