January 2011 Newsletter
There are two ways to write error-free programs; only the third one works. –Alan Perlis
Mastery in life is achieved by developing a process of constant and rapid correction, rather than the illusory goal of freedom from error; accomplished musicians, aviators and athletes know this. –Alexander Franklin Mayer
You will either step forward into growth or you will step back into safety. –Abraham Maslow
You can’t have great software without a great team, and most software teams behave like dysfunctional families. –Jim McCarthy
The way to get started is to quit talking and begin doing. –Walt Disney
In this overview of some recent posts by Steve Jones, the author discusses a proposal for what might be called "agile architecture", which values long term evolution over short term expediency, architectural clarity over coding efficiency, and business strategy over IT strategy. Sound like some good principles to adopt.
Interesting overview of various perspectives on the typical causes for project failure. Do you think that bad code by itself could doom a project?
Retrospectives are a key element of the agile methodology, because it provides real-time, usable information that can help improve team performance. But learning how to run a retrospective meeting can be a challenge. Here's an example, including agenda.
This article contains some very interesting and astute observations about how cloud computing may allow n-tier architectures to collapse to two tiers: the client and the cloud.
Almost inevitably, when you adopt agile development methods, as your team develops more code, the need to refactor the code base for improved performance, consistency, etc. will arise. But how do you sell refactoring to management? Here are some great tips.
Most readers of this newsletter probably have at least a passing exposure to UML. This article gives some simple reasons why it is probably a good resource to have in your toolkit, especially in trying to clearly communicate architecture.
This author demonstrates that even failure can have a bright side, if you use it learn some lessons. One of the points that he makes that most stood out to me is: Most people need regular shots of both thanks and praise. Thanks and praise are not the same.
It's the time of year where everyone either looks back and what happened this year or forward to the next. Pundit Patrick Gray makes some interesting predictions about 2011 including that tablets won't make it big in the enterprise and that the buzz over cloud computing will subside.
This essay (maybe more of a rant) makes a good point that when we as developers focus too much on features and functionality, we often miss the point that our real job is to solve problems for our users.
When organizations, especially IT, struggle, often the first inclination of management is to change the processes. This pundit points out that without understanding the culture and people involved in the process, just changing the process is a recipe for disaster.
It looks like enterprise software vendors are finally catching up with the rest of the world. Most enterprise applications are difficult to install and maintain and typically come with an army of implementation consultants. Now, enterprise vendors are looking to take advantage of virtualization to ease implementation.
Almost as quickly as it arrived, the buzz around the claimed proof that P ≠ NP has died down. However, this article explains why this is not the end of the story and the fundamental importance of the result.
One of the difficulties with implementing agile development methodologies is that there are still many different ideas about what agile means. This article discusses some academic research that is trying to help define the meaning of agile, based on the most important concepts.
As agile development becomes more mainstream, many organizations are going beyond agile and adopting principles of lean manufacturing in their development methodology. This article explains how the software testing group can lead the way in using lean techniques to improve efficiency and effectiveness.
NIST has released a new version of ACTS (Automated Combinatorial Testing System) intended to simplify testing multiple combinations of test inputs. In addition, they have published a new comprehensive tutorial on combinatorial testing for practitioners of software testing.
If you spend any amount of time programming in Eclipse, you certainly know that keyboard shortcuts can save tons of time. Here's a nice wallpaper with almost all of the Eclipse keyboard shortcuts that you can use for quick reference.
Using some simple examples in Java, including refactoring, the author explains the basic functional programming concepts and shows why this paradigm is becoming more important. For more information about doing purely functional programming in Java, check out this article.
The map-reduce algorithm is a very popular and good performing method for distributed computing tasks. It's what makes Google run. This explanation (almost a parable) gives you a gentle introduction with a very understandable analogy.
In this book excerpt, which grew out of a popular op-ed piece in WSJ, the author gets right to the heart of why the ubiquitous performance review is so maligned by workers at all levels of the organization: It is typically a bogus, fraudulent evaluation of the employee’s work. He says it needs to be replaced by good day-to-day management with discussions about problems as they come up.
Even with the continued economic doldrums, you are still advised to periodically review your salary in comparison with others who do the same kind of work. This summary from a Salary.com survey shows the national averages, including distribution for almost 4 dozen typical IT titles.
Despite Forrester's declaration that Java is a dead-end platform, this language still tops the list of most popular programming languages for enterprise development, based on multiple surveys. Likewise, old stalwarts like C and C++ are still very much in demand.
Technical workers still carry the stereotype of being "lone rangers". But even on geographically distributed teams, collaboration is still necessary. Here are some case studies on fostering teamwork.
A new study from the Hackett Group says that corporate IT will no longer contribute to IT job growth due a combination of factors including increased offshoring, more global IT infrastructure options, and better automation.
Technology workers are often reticent when it comes to participation in meetings. This article gives some great ideas on low-risk ways to speak up politely, but firmly when you want to make a comment.
One of the most disconcerting and daunting activities for many employees is to provide feedback to the boss. Here are some excellent tips for how to effectively provide both positive and negative input to your manager.
Microsoft Windows is ubiquitous now, but that hasn’t always been the case. (Even I remember when Windows didn’t exist!) This is the story of Tandy Trower, who was the product manager who actually delivered Windows 1.0 after many failed attempts.
You probably won't be surprised to find "computer programmer" on this list. But I have to take some exception to the URL for the story: Jobs for Haters!
In this excerpt from a new book by Tim Wu, the author discusses how in the 1930s AT&T had technology far ahead of its time, but didn't roll it out due to fear that it would drive customers away from the telephone.
Keeping files organized on your hard drive can be a monumental task at times. DropIt provides a desktop "target" which you can drop files on to be sorted. You can define actions, such as move, copy, compress/archive, etc., based on file name or file type/extension. Likewise, you can define multiple profiles to handle different actions based on projects or other criteria. And it's even available in a portable version.
Diff-IE is an Internet Explorer add-on from Microsoft Research that highlights changes on web pages between visits. It can even view and compare different versions of a page from browser cache. Excellent tool for testing web-based applications.
Got data in a spreadsheet or CSV file that you need to get into your database? Most popular database platforms support some type of import function, but they aren't always intuitive and can be quite finicky. FlowHeater helps with this problem by providing a common method for handling these conversions, including some basic drag-and-drop ETL support to allow transforming of data before loading. It has "adapters" for many databases (MS SQL Server, MySQL, Oracle, and more) and data formats (CSV, Excel, and plain text).
Using a small PXE loader on either USB flash drive or CD, you can boot your computer remotely using a variety of Linux distributions, including Debian, Ubuntu, and DSL, plus other utilities like hard disk managers. They aren't always the latest distributions, but really handy option. And, if you use USB flash drive, you can even save your data from your session.
Even though the English language has so many words that we throw a bunch out all the time (but you can rescue some of these cast-offs!) and invent new ones, here are some words from other languages that don't have single-word equivalents in English.
If you find the regular Git documentation a little too simple for your liking, then perhaps this one might be more your speed.
To bring home the rapid pace of
technological change, especially in social media, check out this list of faux
pas that didn't exist five years ago. To
me, it's hard to believe that YouTube is only 5 years old!