Thursday, October 15, 2009

X = X + 1 by John Lee, Senior Applications Developer

If you’re not a coder, I defy you to make sense of that equation. In fact, if you dig back to your high school algebra books, X = X + 1 is an impossibility. There is no way that X can ever equal to X + 1.

However, if you do happen to have a coding background, you will immediately recognize X = X + 1 as being a fundamental instruction; without which, no program of any complexity could operate.

What X = X + 1 illustrates is the constant challenge of communication between coders and non-coders.

When embarking upon a new project which requires custom programming, the client and the coder eventually meet to discuss project specifications. The client will outline his grandiose designs and the coder will furiously scribble notes upon her notepad hoping to make sense of it after the meeting.

What normally happens is that, the coder will relay back to the client a process or a flowchart that describes the client’s vision. The client, who is generally a “vision” person, will either pass the specifications to someone lower-level or will nod his head incomprehensibly and assume that the coder “gets it.” After all, the pages of funny symbols and arrows must be proof that the coder understands what he’s talking about. Without a lot of luck, this lack of initial understanding between the two parties will lead to a long road of frustration.

The reason why this happens is that clients and coders often speak different languages. In contrast with the imprecise language of the client, coders have to be “perfectly precise”; understanding fully the functionality of every feature, every hyperlink on the page, and the derivation of every numerical figure.

It’s been my experience, after about 15 years in the technology marketplace, that this lack of true communication is the number one reason why some projects fail to meet the needs of the client. I’m not saying that both parties need to understand every minute detail of the project before proceeding. This could be impractical for very large and complex projects. Instead what I’m saying is that each party, the client and the coder, have specific responsibilities:

The coder must step into the world of the client and fully understand the solution that he is about to create. This includes the business-specific language, the reason why such a solution is needed, and the perceived return on investment when the project is completed. The coder must also be able to speak the language of the client. There will be times where the coder will “fill in the blanks” and put in place tiny details in order not to bog the client down with the tedious minutia. This is when understanding the business process becomes vital.

The client, on the other hand, needs to exercise ownership of the project. The success of the project is not a one-way street where the coder has all the responsibility to make it happen. Instead, the project is a partnership between the client and the coder where they share equal responsibility for success. Specifically, this means that the client must share in the problem-solving when the coder outlines his struggles with a particular feature. The client must be patient when the coder explains the necessity of certain technologies or the technical reasons why a particular feature idea won’t work.

Together, both the client and the coder need to help each other understand each other’s world and to realize that both parties rarely see the same solution to the given problem. Ultimately, it will be the client’s vision that will prevail, but both parties have the responsibility to challenge each other to create a better vision.

At AtNetPlus, we try hard to enhance communications between coder and client. At other organizations, the coders are often isolated from the client creating a gap in communications leaving the coders to create solutions without the proper context. Here, the client can call the coder directly with an idea or a problem; and the coder will be there to respond directly, along with the help of the project manager. The result is that the communication is as tight as they come and the ownership is where it needs to be. We believe that the right technical talent must come with the right communicative talent for a project to have the best outcome possible.

For coders, X = X + 1 means to increment the value of X by 1. For the rest of us, it means that you have taken one step of many in a long and fruitful process.
 

Keep Connected + Keep Secure + Keep Working