Archive for the ‘Commentary’ Category

Got Requirements? If Not, You’re Doomed

Monday, March 31st, 2008

Yet another software development disaster is headed for the digital trash heap of failed projects. This time, the casualty is software funded by the U. S. Census Bureau. The Associated Press reports failure to deliver usable software to census enumerators could add as much as $2 billion to the 2010 census. Worse, the AP reports “census officials are considering a return to using paper and pencil to count every man, woman and child in the nation.”

This is a spectacular train wreck that had doom written all over it from Day One. It’s a familiar, predictable pattern constantly repeated since the first clueless manager commanded “just make it user friendly”.


Whatever Happened to the “Old School” Programmers?

Monday, November 26th, 2007

Uh, oh. I think I’m way too young to sound like such a curmudgeon, but I just can’t help myself. Before my recent move to a post-sales role, I spent 15 years writing software professionally. I thought at this point in my career I’d qualify as “the wise elder” – instead, I guess I’m just “the crazy old man who mumbles to himself.”

Remember the days of eagerly poring over core dumps to quash that nasty bug? The fascination of learning something new? The determination to write code properly so it could be maintained and easily understood by others? Remember when “so what? it works” just wouldn’t cut it for maintainable design?

I loved it. So, what is it with kids these days?


Earth to Wells Fargo: Stop Being Stupid About Phishing!

Thursday, August 9th, 2007

Have banks learned nothing? According to Gartner, U.S. computer users lost $929 million to phishing scams from May 2004 to May 2005. In response, major banks have launched aggressive campaigns to educate customers about how to defend themselves and recognize fraudulent emails.

Their recommendations to customers are simple and easy-to-follow. If someone calls you on the phone asking for your ATM number, don’t give it to them! Only divulge secret information when you initiated the phone call. Be wary of emails asking for your social security number or credit card numbers. You know the drill.

So, why is Wells Fargo undermining all of these self-defense measures by sending out emails with hyperlinks to a Web site asking for your online banking username and password?!


Tip to IT Staffing Companies: Respect Your Recruiters

Sunday, July 22nd, 2007

Ever get a phone call from an IT recruiter that leaves you scratching your head wondering “what was that all about?” You know – the recruiter who wants you to take a gig in a city you don’t want to move to, doing work you have no qualifications for, and for $15/hr less than your current rate? Yeah, they rankle me, too.

It’s not the recruiter’s fault.

Many IT staffing companies are utterly clueless about the extraordinary value their recruiters add to the company’s image in the eyes of job candidates. I’ve been a software professional since 1992 — C++, Java, and now C# — and I value the relationships I’ve formed with a handful of hot-shot recruiters in the Dallas area. Later, I’m going to hold up a lady named Shanna as an example of the sort of top-notch recruiter staffing companies should strive to attract and retain.


Java and C#: Language Nuances Make You Think Differently

Wednesday, July 18th, 2007

When you move from one programming language to another, do you eventually find yourself thinking differently?

After eight years of slinging Java code, I converted over to C#. The C# language borrows (steals?) heavily from Java, but it also has added some features. Some of C#’s most valuable introductions to the language have now been adopted by Java. Things like attributes, generics, and auto-boxing – which first appeared in C# – have now been added to the JDK as of 1.5. It’s only a matter of time until Java adopts using-blocks and the yield keyword, too.

Despite this back-and-forth trading of features and enhancements, each language still maintains its distinct flavor. Some facets of each language – many of which are quite subtle – will probably never be adopted by the other simply because their introduction would create such a fundamental shift in language concepts it would invalidate a lot of prior work.

So, I was careful about my approach to C#. My Java work had been preceded by seven years of C++, and I remember what that transition was like. Although Java is strikingly similar to C++, the similarities are deceiving. Seemingly minor differences between the two languages created a sea change in how I thought, how I designed code, and how I tested applications.


The Perils of Experience – Cutting the Ends Off the Pot Roast

Sunday, July 15th, 2007

In software development, experience matters. A former boss of mine used to say “Good judgment comes from experience. Experience is the result of a lot of bad judgment.” Most of my sense of “the right way” to do things has been formed by first doing it in every conceivable wrong way.

In our rapidly changing field, there are seldom “textbook solutions” to problems. The textbooks are out of date shortly after they go to press! Thus, we defend our technical decisions – be it object modeling or database design – by pointing out the flaws in the alternatives. We become aware of these flaws by reflecting on past experiences with the same problem. A successful solution to the problem then produces a design pattern, and a proven design pattern applied to future projects allows us avoid prior mistakes.

That’s perfectly reasonable – mostly. Unfortunately, that can lead to a trap when we forget the original problem behind our so-called “best practice” solution.