August 2011 Newsletter
A little thought and a little kindness are often worth more than a great deal of money. –John Ruskin
Success is achieved and maintained by those who try and keep trying. –W. Clement Stone
True leaders don't choose the popular way, they make the right way popular. Leaders create consensus. –Rick Warren
The more project management you do the less likely your project is to succeed. –Former Google CIO Douglas Merrill
I can't change the direction of the wind, but I can adjust my sails to always reach my destination. –Jimmy Dean
A perfection of means, and confusion of aims, seems to be our main problem. –Albert Einstein
Like Leibnitz and Newton's mathematical breakthrough with calculus, Uncle Bob Martin speculates that software development is on the verge of a huge leap forward in substance that takes us beyond "sequence, selection, and iteration."
Of all of the tasks in software development, I believe that accurate estimation of effort and duration of work is the most difficult. As Jonathan Swift said, people are not rational and so our cognitive biases take over and we often grossly over- or under-estimate. This article gives some good practical tips that will help you improve your task estimation, including in agile environments.
In this distinctive twist on Yoda's famous line "Do, or do not. There is no 'try'", this author emphasizes that agile is not something that you do, but, to be successful, it something that you become. In other words, until the agile principles are internalized, you can't expect to make much progress.
While this article specifically deals with the mental models between scientists who develop software and "professional" software development, it likely has similar applicability when considering how business customers approach software development when considering it a black box. Some good food for thought about how we interact with our customers.
Nothing really new or revolutionary in this article, but it is a good concise reference on some of the practical principles that should be used to write good code. This might be one to bookmark and refer to periodically.
The title of this article is intentionally provocative (got me to read it!). Nevertheless, the author points out a number of common pitfalls that teams make when trying to implement agile using the Scrum methodology. The overarching theme of these problems is that strong management commitment to agile principles is critical.
Notwithstanding the desire in some quarters to stop the proliferation of manifestos, this article provides a good framework for personal development in the practice (or "craftsmanship", if you prefer) of programming. It focuses on a three-pronged approach: reading, practicing, and community participation.
Nearly 5 years after the last major release of Java (by Sun at the time) and following much weeping and gnashing of teeth, Oracle has officially released Java SE 7. Some of the most anticipated new features include support for strings in switch statements and multiple exception handling syntax.
As dissatisfaction with quality of applications increases, it seems that organizations are getting the message and increasing investment in quality and testing. Most money continues to be spent on manual testing, but test automation and cloud-based testing are taking hold, too.
This author emphasizes the important fact that unit test code is code just like any other and, therefore, is itself subject to having defects. Furthermore, he notes that QA, distinctly different from testing, is about the development process, rather than some single part of the process.
When testing (or doing anything!), we all bring cognitive biases that prevent us from seeing the "big picture" fully. In testing, it's easy to think of problems resulting from a single underlying cause, typically coding errors. This list is a good reminder that their many origins for problems (and most of us are familiar with the ideas that poor/incomplete requirements are one of the major causes).
One of the hardest things for new testers to learn is that not every aspect of even the simplest system can be tested (or tested effectively). This article gives a great overview of risk-based testing and how to decide what to test based on business impact/value.
Defect reports are the stock in trade for software testers. Accordingly, writing good, repeatable bug reports is extremely important. This article goes beyond the basics and includes how testers should triage issues to ensure that the most important items are addressed first.
Spring MVC is probably the most popular framework for web development using Java. But there is a dearth of approachable tutorials for beginners to the platform. This free online book provides a simple, yet detailed, step-by-step approach to building a Spring MVC application.
If you are looking to build a REST API for your web application, make sure you read the ideas and suggestions in this article. You may not agree with all of them, but they'll definitely help you to think through the best approach.
To do almost any kind of network troubleshooting, netcat (available on Windows too) is an invaluable tool. This cheat sheet gives you a good overview of the basic features as well as some of the more advanced ways you can use it.
By now, it's fair to say that the JVM is the real victory for Java. Over the past couple of years, many folks have predicted the demise of Java itself (unlikely in the foreseeable future, in my opinion), but even if it were to go away, there are plenty of great options that allow you to write code that runs anywhere that Java can. While certainly not an original idea, my money would be on Scala (which is even being ported to .NET) or Clojure taking the mantle from Java.
Technology workers that are looking to move up the corporate ladder need to be careful about too things: Not making themselves indispensable in the current role by grooming other experts in their area and adapting their communication styles to suit management instead of other technical workers.
At one time or another, probably most of us have dreamt of working for Microsoft, Sun, Google, or a similar big software company. This article provides an insightful look at why hiring good candidates and filtering out the bad doesn't work at these companies. And these same pitfalls probably happen at most companies who hire programmers/developers.
Technical workers tend to be "left-brained" (analytical, linear thinkers), which, as this author points out, has both advantages and disadvantages. Knowing the downsides of the logical thinking style can help you work better with others in all situations or even when looking for a new job.
According to some new researcher, employees who work from home more than half of the time are more satisfied with their jobs, because of more flexibility and ability to balance personal and work life, along with enjoying less stress from interruptions and office politics. Of course, telecommuting is not without its disadvantages, too.
This pundit believes that IT is undergoing massive changes that will result in 3 general classes of IT workers: consultants, project managers, and developers/programmers. Nevertheless, technology jobs are still a good option in the new economy.
Modern life and work is so fast-paced that most of us usually have a hard time catching our breath. If you want to slow down a bit, one of the best ways is to learn to say "No" to some things. This article helps you understand the value of saying "No".
As I get deeper into middle age, I know that my memory is starting to fade and that frustrates me. Well, perhaps declining memory is not only a sign of age, but of poor sleep.
Weep for the well educated! According to this new survey of over 5000 workers, those with PhDs and master's degrees are more likely to have high stress at work or struggle with work-life balance. Likewise, the survey showed that younger workers are less engaged than older workers.
This is an interesting look at how technologically-driven productivity improvements have affected job losses and allowed businesses to continue after the recession without new hiring. But don't lose hope, because maybe even Steve Jobs couldn't find a new job today.
Looking to improve your work-life balance in your career? Check out this list of the best 25 employers based on employee feedback.
With metered/rate-limited Internet service becoming the norm in many places, Netflix has introduced three tiers of video quality for their streaming service to help customers avoid hitting their cap limits.
The IEEE wireless standards committee has approved the new 802.22 standard which allows use of spectrum "white space" for wireless communication with range up to 100km, which would cover an area 1-1/2 times the size of Wales. This development is likely to ease broadband access in rural areas (even though only 16% of US population is rural!).
Akamai's quarterly "state of the Internet" report shows that the worldwide average connection speed is up almost 1/4 over last year with South Korea having the fastest average and the U.S. coming in 14th at an average of 5.3 Mbps. They also observed that Myanmar jumped to the top of the list of sources of malicious code with 13% of it coming from there.
This year is the first time that access orders for Ethernet services are above orders for traditional access lines. Traditional services orders are increasing at an annual rate of 1%, while Ethernet is growing at a rate of 22% per year.
Text Sharp is an add-on for Visual Studio 2010 that allows you to adjust the text rendering mode in the VS editors. If you find the anti-aliased fonts annoying, you can turn this off or even choose grayscale or ClearType.
There are plenty of free standalone BPM tools and Visio has some basic support, but this tool goes way beyond those. It supports Process diagrams, Collaboration diagrams, Choreography diagrams and Conversation diagrams described in the BPMN standard.
If you frequently use edit boxes in browser-based applications and wished there were better editing features, this bookmarklet comes to the rescue. Just add the bookmarklet to any modern browser (Firefox, Safari, IE 8+, or Chrome). Then, when you are on a page with an edit box, click on the bookmarklet and hover over the edit box to display the icon to enable editing using the Bespin rich editor.
If you are new to jQuery or just want to try out a simple change to some of your jQuery code, jQueryPad is an invaluable tool. It allows you to edit your HTML and jQuery code in two separate editing boxes and then automatically merges them and displays the results in an embedded web browser (Internet Explorer). You can save your changes and even run them in external browser (Internet Explorer, Google Chrome, or Mozilla Firefox). Think of jQueryPad as a desktop scratch pad for front-end web development.
PasteBin is a cool desktop front-end for the great PasteBin.com code snippet sharing/hosting site. One of its greatest strengths is the ability to keep track of your pastes even if you only use the site as a guest. If you have a user account on PasteBin.com, you can upload your pastes and specify the lifetime of the snippet and accessibility (public/private).
WebPutty is an online, interactive CSS editing tool. It allows you to see a preview of a site (even if it's not your own!) and the associated CSS side by side and then edit the CSS and see the changes immediately. Currently, the tool is free and requires a Google account.
Many of the positive and negative aspects of the Internet as we know it in 2011 were predicted with amazing clarity over 30 years ago. Not to mention that many of the things that we think of as Internet revolutions existed quite some time before.
Perhaps this item should go in the Useful Utilities section above, but… Anyway, this cool cross-platform tool generates abstract art from input data, known as a perceptual hash. With the tool, you can create your own from source code, random data, famous texts, or anything.
Ever wish that there was an "Easy" button for life? Well, now there is! Sort of…
While most of us probably have a distaste for Powerpoint and similar presentation software, I'm not sure that I'd quite go to this length to banish it.