Remembering Why We Are Here

I was reminded yesterday of the dangers of developing tools for the sake of tools.  Back in the day when I developed websites for folks, I would be so excited by a new technology or widget I'd found that my instinct was to include it so I could play.  I would add a bit of DHTML or javascript because I found it, not because it did something I wanted to do.  To some extent, I still do that on, because it's my hobby site. The challenge when working for a client or employer was to ensure the design had as little as possible while meeting the goal, and no more. Anything else is a distraction that wouldn't help achieve the goals of the site.

"Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away."  --  Antoine de Saint-Exuper

The actual issue yesterday was a project management process.  The process to ensure quality and governance was starting to shape the software development process, when it is supposed to be unobtrusive and stay out of the way of getting the work done.  The software design process was being asked to change to fit the documentation and reporting requirements set by project management.  It didn't help create better code, just better reporting.  The focus was going away from developing useful, bug-free code on time and under budget to completing deliverable documents and passing through review gates.  The project management process was becoming the focus of the activity, instead of being in an oversight and supporting role.  The software development needed more priority, as it was actually developing code for use by the business.  Likewise, the software development process should bend to service the business, not stay so rigid that the business has to adapt to IT processes.

The focus needs to be on achieving the goals of the organization.  No organization has a goal of "developing software" -- they either want to use the resulting software to conduct business or sell that software.  The development process is just enabling the goal, not meeting the goal.  Likewise, while the project management controls are in place to ensure efficiency and effectiveness of the development, they are not an end in themselves, but rather serve the larger goals.  When the wrong things take priority, the goals are not being met.

And lest you think this only applies to software design, remember the same thing in your own life.  My life is not all about designing cool sites.  In part, I do this because I enjoy it, but at the root, my life is about my family and serving the Lord.  I work so I can afford to do those things.  When the job takes me away from the family more than necessary, or when I start to obsess about my job when I'm at home, I'm no longer serving the goals of being with my family or serving God.  The priorities have to be in the right place and remember why you're doing things, or you will be focused on glittery distractions and useless features in this life.

Wow, that got deep.