December 2010 Newsletter
It is a characteristic of wisdom not to do desperate things. –Henry David Thoreau
How we spend our days is, of course, how we spend our lives. –Annie Dillard
Confusion of goals and perfection of means seems, in my opinion, to characterize our age. –Albert Einstein
If you keep proving stuff that others have done, getting confidence, increasing the complexities of your solutions—for the fun of it—then one day you'll turn around and discover that nobody actually did that one! And that's the way to become a computer scientist. –Richard Feynman
Practical application is found by not looking for it, and one can say that the whole progress of civilization rests on that principle. –Jacques Hadamard
Effective leadership is putting first things first. Effective management is discipline, carrying it out. –Stephen Covey
The successful person makes a habit of doing what the failing person doesn't like to do. –Thomas Edison
The Agile Manifesto was introduced almost 10 years ago. This article gives a retrospective of the evolution of agile of the past decade and whether or not it has actually improved the practice of software development.
George Fairbanks talks about his new book and his views on software architecture. He strongly discourages big design up front and favors an iterative, risk-based approach to defining architecture and making the architecture practical.
Most technology professionals are familiar with Brook's Law: Adding people to a late project makes it later. This article discusses the typical alternative to adding people to a project: Working lots of overtime. The author emphasizes that overtime is ineffective at helping a project that's behind schedule.
Agile development methodologies don't give much guidance about how to start a project. Here are some things to consider when kicking off a new project.
Many organizations undertake IT transformation projects, often with limited or little success. This consultant says that the main reasons for failure are lack of a common shared vision, poor communication which leads to passive resistance, bad metrics to measure progress, and not gathering the low-hanging fruit first.
In looking at the "revolutions" in software development over the past 40 years, this author believes that visual development tools and languages for end-user programming is the next wave. Fundamentally, the new path needs to be about making the use of technology seamless.
Sometimes your user stories on a project can get so large that they are unwieldy and certainly can't fit within one iteration/sprint. How do you decide when and how to split these stories? This author suggests following the INVEST/SMART approach.
Just like anything that you aren't familiar with, there are always some myths and half-truths about agile that need to be dispelled. This author focuses on some of the legends that managers are likely to get taken in by.
Software architecture is almost always a touchy subject with developers. This author suggests that the most important aspects of software architecture are making it relevant and focusing on separation of concerns to isolate impacts of changes.
As a user of an application, one of the aspects that has the most influence on whether your love or hate the system is around how error conditions are communicated. Even if you have the easiest system in the world to use, but mess up on the error messages, you are likely to get some bad feedback from users. This article suggest six principles for good error communication:
One of the key elements of quality assurance (QA) is to recognize that it goes well beyond mere testing and that QA is more about process. This article explores the principles about developing a quality mindset throughout the development process.
This author makes a strong argument for maintaining the separation and independence of the testing team from development, especially as it relates to the recent common practice of blurring unit tests into functional tests. He says that independent testing is invaluable because developers rarely can accurately see the end-user perspective.
This author says that as a result of the quicker cycle times of agile development, the future of testing is test automation. The upshot of this is that testers need to expand their skill sets to include strong programming expertise.
This article is an excellent, detailed (but not too technical) explanation of the basic principles behind public- and private-key cryptography. The author not only provides great explanations, but uses diagrams and examples effectively.
This comprehensive set of tutorials for JUnit covers everything from setting up JUnit, to the types of unit tests to using mock objects to using JUnit for test-driven development (TDD). The author explains everything in good detail and uses examples for each concept.
Even if you aren't a hard-core GUI designer or graphic artist, everyone can benefit from having a little understanding about how to effectively structure the UI of an application based on the audience and how it will be used.
Java provides substantial support for multithreaded programming, but since the paradigm is quite different than traditional programming, many developers haven't taken the time to fully understand how it works. This article provides five relevant tips about getting the most out of this tool.
Goldman Sachs expects IT spending to increase by ~10% in 2011. While this might not translate directly into higher salaries or IT employment, it's still some good news about the IT milieu.
This author considers the combination of technical and "soft" skills that an ideal developer should have. Do you agree with the list? What would you add or take away?
In this newsletter, I frequently point out the differences between managers and leaders and their complementary nature. In this article, pundit John McKee says that to dig ourselves out of the current economic crisis we need more managers instead of more leaders. It's an interesting perspective, since we frequently see handling crises as the domain of leaders.
No matter how intelligent you think you are, you simply can't remember everything. Many of the greatest thinkers in history took notes on even the most mundane things as a way remember and reinforce ideas. Here are some great tips on how to use notetaking as a way to keep your edge.
The start of most job interviews is awkward and the interview will usually try to break the ice with "Tell me about yourself…" This is your chance to get the interview off to a good start by highlighting your strengths. And you might even want to have your response rehearsed.
Sometimes we can easily fall into traps around efficiency and productivity that are actually counterproductive, such as multi-tasking. Here are five suggestions to evaluate your productivity routine.
It's said that a picture paints a thousand words (but why can't I paint you J) and we all know that a good chart or other visualization is invaluable in communicating a point. To celebrate a new BBC series called The Beauty of Diagrams, here are some of the most effective and ubiquitous diagrams from history. The obvious point is that simplicity matters whether its words or illustrations that are conveying the message.
Recently, a couple of articles have noted how distraction has become a "natural" part of growing up and that very few people take time to ponder the big questions in life. This author suggests that after only 15 years into the digital age, it might be too soon to draw conclusions about how people are learning to adapt to these changes, especially around the impacts to the traditional educational process.
Even if you aren't actively looking for a new job, it's always a good idea to keep your resume up to date (but don't rely on it completely!). Here's a nifty tip to keep your resume in Markdown, which you can easily transform to HTML or almost any other format, and posted on GitHub so it gets indexed by search engines.
Just like technology pervades every other area of our lives, it's also front and center when it comes to looking for a job. Even if you submit a résumé in writing, it's likely that it'll be scanned into a computer system. This article gives you some tips on getting your résumé over the electronic filtering hurdles.
With the net neutrality debate in full swing, Julius Genakowski says that the problem that worries him more is that the US is not first in broadband Internet access.
7sDoc allows you to search documents on your PC by textual content. A couple of nice features compared to most desktop tools is that it displays the search results like web search engines do with the found results in context and a hyperlink to the result. Also, it allows you to customize the file types (by extension) that are indexed, so you don't have to bother with indexing file types that you aren't interested in.
dnGREP is an excellent grep tool for Windows that includes some great extras like using regex in file names to be searched, search and replace, ability to launch your preferred text editor from the search results and display of matches in context in a viewing window. It also features ability to test your regex on sample data and bookmarks of results.
Endeavour ALM is an enterprise software development project management tool for agile development. It has support for use cases, iterations, project plan, change requests, defect tracking, test cases, test plans, tasks, document management, reports and many other process artifacts. It runs completely in browser on client machines and is hosted on most any Java 2 EE platform, such as Tomcat.
Systems with two (or even more!) monitors are now commonplace. DisplayFusion makes working with multi-monitor displays easier. Some features include extending the Windows Taskbar across all displays, hotkeys for moving windows, snapping windows to edge of any display, moving maximized windows between displays, and much more.
By default, Windows is configured to allow the kernel to be swapped to disk paging file. To improve performance, you can tell Windows to always run the kernel in RAM. To do so, open the Registry Editor (Start | Run | regedit) and navigate to the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management registry folder. Locate the DisablePagingExecutive DWORD key and change its value from 0 to 1. Close the Registry Editor and restart Windows for the change to take effect.
Most people are familiar with flash mobs. Well, this one should really put you in the Christmas spirit! Over 650 members of Philadelphia Opera with other singers "spontaneously" break into the Hallelujah Chorus in Macy's department store.
It's hard (for me anyway!) to believe that ST:TNG is almost a quarter-century old now. Here are some rare pictures from behind the scenes of producing the series.
The folks at InfoWorld return with their annual quiz to measure your geekiness.
Some of you may remember the short Saturday morning PSA about healthy snacking called "Hanker for a Hunk of Cheese" (from the series Time For Timer). Well, if you have really strong cravings for cheese, it might be because it (along with other dairy products) contains a bit of morphine. Who knew?
This is a funny short, short story about bug fixing in the prose style of Hemingway.
By now, most people know that the U.S. Congress is incapable of fixing the budget deficit, let alone the national debt. So this interactive site lets you try your hand at balancing the budget.