What is the first step to creating a new building? Is it grading the land? Building a foundation? No, the first step to creating a new building is to architect it. I might be able to learn enough about engineering and architecture to design a house. I doubt anything I came up with would be elegant enough to be on the cover of Architectural Digest – I don’t have enough experience! And likewise, my friend who is an artist could probably come up with some really fantastic, charming design for a house, sure to stun anyone who walks by… but her design might not be sufficient to meet building codes or even support its own roof. Architecture is the process of design, which is both art and science. A truly skilled architect can design something that meets all the requirements, is structurally sound (safe), and is also beautiful to look at.

Now, let’s take the same lesson and apply it to the building of information systems. Architecture needs to be the first step of the process. The design needs to be prepared to handle the many flaws that will undoubtedly be written in accidentally by the developers working on it. Despite the industry calls for building security in, software is, and will likely always be developed without consulting an experienced, talented architect who can help design the system for maximum resilience.

A recent example of this is a widely publicized flaw in the new Mac App Store, leaving many application developers without income from their applications because they are easily pirated. John Gruber of Daring Fireball pointed the finger at the application developers instead of Apple, because Apple does provide advice to the developers on how to validate purchase receipts. My take on it is different; Apple should have architected a solution for their Mac App Store that takes the onus off the software developers to do things the right way–a method that always worked, repeatably, for every application, without needing to copy and paste example code or say a magic incantation.

Information systems need an architect involved early in the process who remains engaged throughout the software development lifecycle. The architect’s role should be to ensure the functional requirements are met, the system is elegant (in other words, doesn’t make your eyes bleed), and the system is structurally sound and safe to use. If you need help architecting a system, we might be able to help.