Lessons Learned

I thought I’d list some of the things I’ve learned working on software development projects. Most of these ‘lessons’ will come as no surprise, but I think it’s instructive to list them all in one place.

Please be warned: this is a cliché heavy zone 😉

First, and possibly most importantly:

Time is, indeed, money!

The idea here is to reduce the time taken to develop your project.

The more well defined your project, the less time it will take to develop.

  • Well defined projects have been thoroughly thought out.
    • The more you think through your design, the simpler it should become.
    • Simple designs are easier and quicker to develop.
    • Well thought-out designs require less (ideally no) re-design during development.
    • Carefully considering your design forces you to clearly identify your goals for the project.
    • Being able to simply articulate your goals allows you to communicate your requirements succinctly.

No matter how well defined, no project survives it’s first engagement with reality unscathed.

Another important way to help your project to completion in a timely manner is to keep it simple.

  • In our case this means use a little software as possible (more is not better).
  • Use as much off the shelf software as possible.
  • Off the shelf software has a higher chance of working properly as long as it’s been around for a while, is used by many people and has a strong and committed development community.

  • The more custom your solution, the more likely your project will run out time and over budget. Danger, Will Robinson!
  • Custom software is the opposite of off the shelf!
    It’s been around for zero time, been used by zero people and will likely stop being developed the second you turn off the flow of cash.

Custom Software…
Only if absolutely necessary.

This last one can be tricky: Try to cover your audience with one software base.

  • Trying to maintain one codebase for the web, another for Android, another for iPhone and another… and another?!
  • Creating a Progressive Web App (PWA) represents one way accomplish goal.

    A good PWA may be a simpler (and much, much broader solution). While an app is tied to its hardware, a good PWA may work well on phones (both Android and iPhone) as well as tablets, laptops and (if you can find one) desktops!

Do we still need Mobile Apps?
Yes, but not always!

Whether a website, web app or just an app… staying useful to your clients will likely require constant updates.

  • This is further support for the idea of keeping the software as small and simple as possible.
  • All projects will need ongoing maintenance.
  • Even if you’ve developed a stand alone app, it lives in an evolving environment.

Your project represents the beginning of an ongoing process.

Content Management Systems (Drupal, WordPress, Joomla) are particularly challenging!

    On the plus side…

    • Quick off the line.
    • Well tested, used by many and well supported.
    • Can be customized.

    On the other hand…

    • They are constantly evolving.
    • Every time to core is updated, your project may develop new issues (bugs).

    • All CMS’s rely on a constellation of modules, plugins and extensions that may not be well tested, used by many, or be well supported (or supported at all).
    • Customization is particularly susceptible to changes in the core CMS.

A CMS can be an excellent choice, but don’t underestimate the on going costs…
Welcome to the treadmill!

Your clients will expect ongoing upgrades…

  • One unexpected benefit of this ongoing evolution is that you may not have to wait for your project to be ‘finished’ before launching it.

Launching “early” puts you in an excellent position to quickly provide upgrades.

All this leads to…

My Design Philosophy:
Simple, Supported, Maintainable.