"This article has been contributed by one of the ace programmers at Clarion and the sentiments are shared by all the other programmers."
I was a couple of weeks old within the organization when my team leader walked into my cubicle and asked me to join him for a meeting. I thought it was just another team meeting but surprisingly my manager, before entering the meeting room, told me that I was going to be a part of a client meeting. Being a programmer and also being relatively new within the organization, the last thing that I expected was to be a part of a client meeting. “Who asks a newbie to be in a client meeting?” my mind screamed. My body, however, nodded to what my manager was saying and dutifully followed him to the meeting room for my first client interaction. This is where my journey as a Clarion programmer began. Until that day, I thought I was a good programmer. But after that experience that followed, I realized that I became an even better programmer, some might even call me (and I say this with extreme humility) great!
When it comes to programmers, there are many things that come to mind. Brilliant coders, great debugging skills, technology expertise, problem-solving skills, etc. are just a few of them. Customer interfacing does not necessarily come on this list. In fact, in software product development, other than a project manager or a business analyst, there are very few instances where programmers come in contact with the customer. In most cases, we are handed over a requirement list and develop a product based on that. However, at Clarion, the developers are in the front line with customers to make the development process more seamless and ensure timely deliverables. But my experience added one more thing to the list. Increasing customer contact also helped in making me a better programmer!
I had worked in conventional development environments before I joined Clarion and had noticed that there was a fair amount of information leakage. This leakage usually took place since there was one person, either the project manager or a business analyst, who would gather and pass on all the relevant project requirement information to the programmers. In Clarion, I saw that since my team and I were interacting directly with the client, we received first-hand information regarding the project which reduced information ambiguity and leakage to a bare minimum. I also realized that if I had any queries regarding the project idea, I could clarify those proactively and directly with the client. This helped me save time and also improved my confidence not only in my abilities as a programmer but also at a personal level.
Since I was talking to the customer directly, I also felt an increased sense of ownership towards the project. I was more visible and hence more accountable. Though I had the complete support of my manager and my team being a relatively new member of the Clarion family, I felt that I got the freedom to explore and bounce off new ideas and features with my team. This interaction made sure that I used my faculties and pushed myself as an individual to my intellectual limits. In the course of just one project, I realized that there was so much more that I could do. The best thing was that what I had to say was being heard. My voice was not drowned in the noise of the cut-throat corporate jungle. In fact, it was here that I realized that being a programmer was more than just coding. But this was just the beginning.
I felt that I had got an amazing opportunity to make a difference to the project. Since we the programmers were interacting with the client, we were able to identify better project estimations. I felt that this helped me at a personal level greatly as it fine-tuned my time management and projection skills. I understood how important it was to make the right timeline commitment to the client and then stick to it. You see, when you, yourself are making a commitment to a client, you are more likely to stick to it than when your manager does it for you. I realized that finally, I had to think like a manager when it came to giving my story point estimations, something that I had always wondered how to do effectively. At Clarion, I found that I was at the deep end of the pool and though I had a life jacket and a lifeguard closely watching me, I had to learn to swim on my own. It was a great feeling! I had never felt more liberated at work. It was exciting to learn something new every day.
I also realized that the client interactions gave me the opportunity to make new discoveries and come up with ideas to make the project better. Quite obviously, this meant that if I knew that something could work better if implemented in a different technology, I had to compound that. This led me to brush up on my technology knowledge. Thankfully, I had access to great resources within the company (we have regular training on new technologies and have a phenomenal library). I realized that the more I read and increased my technology knowledge, the more ideas I had. In Clarion, we have a concept called the ‘Ideas Diary’. Each developer working on a project has to come with at least one or two new ideas to make the project better. The ideas that are good and show quantifiable benefits are then presented to the client for approval. Now if that is not a motivator to do great work, I don’t know what is!
Another great thing that happened when I started working closely with clients is that, I started understanding the customer domain better. The language and terminology used by the client no longer remained mysterious. This knowledge helped me understand their business and come up with ideas that ensured that I took a holistic approach to development. My focus was not just developing a great UI, my objective was to develop a great ‘product’. I could filter what the client requirement was, assess the requirement and offer improvements to the product. I noticed that because of these interactions, the product that came out was far superior to what the brief demanded.
It has been many years from that first day when I was invited to join a client meeting. But every day since that day has been a learning. Every interaction has enriched me and motivated me. Every meeting has pushed me to try out something new. Every day I have inched towards becoming a better programmer.