Monthly Archives: July 2015

What’s YOUR programming philosophy?

We met with a prospective client recently, who asked me, “What is your programming philosophy–do you prefer Waterfall or Agile?”

If you’re unfamiliar with the terms, here’s a brief overview:

Waterfall Software Development

The waterfall approach to software development breaks the overall project into several distinct phases:


For Waterfall to work, developers can move on to the next phase only when its preceding phase has been completed and reviewed. We can’t swim upstream, and there are no fish ladders available.

The Waterfall Challenge.
The biggest problem with this approach is that clients seldom have a firm grasp on exactly what their requirements are. If requirements are unclear, the project will never get past the requirements-gathering phase.

But if a client insists on moving forward without completing each phase, software developers will likely end up throwing portions of the code away, as the project scope changes later on.

Agile Software Development

Several years ago, to address the limitations of the Waterfall approach, a group of seventeen software developers met to discuss alternatives. They published the following Manifesto for Agile Software Development:

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

Individuals and interactions    over    Processes and tools

Working software    over    Comprehensive documentation

Customer collaboration    over    Contract negotiation

Responding to change    over    Following a plan

That is, while there is value in the items on the right, we value the items on the left more.

Kent Beck   James Grenning   Robert C. Martin
Mike Beedle   Jim Highsmith   Steve Mellor
Arie van Bennekum   Andrew Hun   Ken Schwaber
Alistair Cockburn   Ron Jeffries   Jeff Sutherland
Ward Cunningham   Jon Kern   Dave Thomas
Martin Fowler   Brian Marick

© 2001, the above authors. This declaration may be freely copied in any form, but only in its entirety through this notice.

Agile software development offers an appealing alternative to Waterfall. Rather than scoping out a massive project and trying to address every possible detail, it breaks development down into bite-size chunks. As each new chunk is finished and tested, it moves into production immediately. This approach is known for its ability to deliver working software to customers faster. Then, as end users begin working with the new features, they often provide valuable feedback to drive future development.

Some of the best software we’ve written was developed using the Agile approach; we met with our customer to identify an overall goal, then wrote self-contained modules which performed specific functions fairly quickly.

The Agile Challenge.
But there’s a potential tradeoff. Developing software without an overall project design is akin to building a house without a blueprint. Unless project stakeholders pay close attention to the overall project evolution, the final result can end up looking like the cobbled-together effort that was used to put it together.

Oh, and then there’s one other small (almost trivial) issue: cost. Agile tends to be a pay-as-you-go approach. As a result, Agile projects can end up costing considerably more than anticipated.

Don’t get me wrong–if your company’s goal is quality software written quickly, then Agile makes a lot of sense. Just realize that if you’re working within a fixed budget, you may end up with less functionality than you envisioned. I.e., you may run out of budgeted funds before the evolving goals for your project all come to fruition.

You’ve probably noticed that I haven’t really answered the question. Why? Because I won’t be writing the check for your software project. More important than asking, “What’s I/O Technologies’ development philosophy?” is the question, “What is YOUR development philosophy?” If you need software quickly and don’t have all the details fleshed out, then Agile is the way to go. On the other hand, if you are faced with a fixed, not-to-exceed budget and can put together a well-defined project specification, then let the water fall!

A Security Vulnerability We Encounter Way Too Often

There were no locks on the house where I grew up in rural Wisconsin in the 70’s. And we never gave it a second thought—we knew all our neighbors. Crime was simply unheard of.

Can you imagine living without locks on your house or office today? I’ll bet you lock your doors even if you live in a relatively “safe” neighborhood. It just makes sense to take simple precautions.

That’s why my programmers and I are often surprised when clients and prospective clients don’t seem to share the same level of concern for security when it comes to their local area network.

If your small office/home office connects to the internet, it’s sitting right smack dab in the middle of a dangerous neighborhood.  Oftentimes, the only thing that stands between your computers and the criminal element is a piece of hardware called a Diagram of firewallfirewall.   In theory, your firewall is supposed to allow you to surf the internet, while keeping the bad guys at bay.

So you might be thinking, “As long as I have a firewall in place, I’m protected—right, Dave?” Maybe—But here’s a problem we see more often than you’d expect: when firewalls come from the factory, they’re preprogrammed with a default login and password—typically ‘Admin’ and ‘Password’ or something similar. If no one ever changes the login/password, there’s a good chance that your network is vulnerable. The bad guys have tools that can crack simple passwords in no time.

This is so important that I want to say it again: If nobody changes the password on a firewall that allows for remote management, you might as well paint a sign in big red letters, “COME ON IN—THE DOOR’S OPEN.” Once hackers get past your firewall, there’s not much to prevent them from rummaging through your files, taking copies of your sensitive data, trashing your website, or worse.

If you don’t know how to change the password on your firewall, please find someone who can. Since our business focuses on writing software, we don’t typically do this type of work. But we know several reputable companies who do. If you need help securing your network, let me know and we can put you in touch with professionals who know their stuff.