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.
http://www.infoq.com/news/2010/11/SimpleIT
Interesting overview of various perspectives on
the typical causes for project failure. Do you think that bad code by
itself could doom a project?
http://www.infoq.com/news/2010/12/bad-code-project-failure
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.
http://www.matthewbussa.com/2010/10/agile-retrospective-example.html
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.
http://yakovfain.javadevelopersjournal.com/the_unofficial_history_of_software_engineering.htm
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.
http://www.infoq.com/news/2010/07/explaining-refactoring
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.
http://blogs.techrepublic.com.com/tech-manager/?p=4985
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.
http://mysterioustrousers.tumblr.com/post/2060658213/features-is-a-dirty-word
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.
http://www.computerworld.com/s/article/351748/Processes_and_the_People_Factor
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.
http://www.informationweek.com/blog/main/archives/2010/09/truly_offtheshe.html
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.
http://cacm.acm.org/magazines/2010/11/100641-on-p-np-and-computational-complexity/fulltext
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.
http://www.infoq.com/news/2010/06/what-means-agile-survey
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.
http://searchsoftwarequality.techtarget.com/tip/0,289483,sid92_gci1523448,00.html
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.
http://www.sciencedaily.com/releases/2010/11/101110113042.htm
This site is a Google custom search engine for programming topics. It indexes such resources as Stack Overflow, W3 Schools, Hacker News and more.
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.
http://hamletdarcy.blogspot.com/2010/10/eclipse-keyboard-shortcut-wallpaper.html
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.
http://ksat.me/map-reduce-a-really-simple-introduction-kloudo/
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.
http://online.wsj.com/article/SB127093422486175363.html
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.
http://www.computerworld.com/s/article/print/352855/Teamwork_for_Techies
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.
http://www.cio.com/article/645663/Why_IT_Jobs_Are_Never_Coming_Back
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.
http://www.greatonthejob.com/strategically-proactive/how-to-interject-in-a-meeting/
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.
http://blogs.hbr.org/hmu/2010/03/how-to-give-your-boss-feedback.html
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.
http://technologizer.com/2010/03/08/the-secret-origin-of-windows/
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!
http://education.yahoo.net/articles/jobs_for_haters.htm
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.
http://gizmodo.com/5699159/how-ma-bell-shelved-the-future-for-60-years
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.
http://www.lupopensuite.com/db/oth/dropit.htm
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.
http://research.microsoft.com/en-us/projects/diffie/default.aspx
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.
http://matadornetwork.com/abroad/20-awesomely-untranslatable-words-from-around-the-world/
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!
http://www.techknowtimes.com/wild-card/5-mistakes-you-couldn%E2%80%99t-have-made-in-2005/
Even though many folks find the new Google Suggest functionality a bit annoying, it is useful for having a little bit of fun.
http://www.technomancy.org/google-suggest-venn/