Wednesday, July 8, 2015

The Value of an On-Site Visit to a Software Engineer

The majority of Software Engineers in Sri Lanka code for foreign clients, as most of the Sri Lankan Software companies engage with software offshoring.  But few developers get a chance to travel overseas, meet their clients and see how a real business is running. These fewer opportunities might be due to security, travel cost or any other business specific reasons.
Luckily I got that rare chance to visit my client a few months back. After spending a few weeks at the client’s office, I found the importance of a client visit to a Software Engineer as listed below. These are my personal views with regards to my client. Your views may differ: 
  1. I understood the importance of their business to the world other than my business
                      

Software Engineers who works with computers inside an office, with other IT people (developers, managers, QA and UI Engineers, etc.) tend to consider the world from a software perspective, due to our lack of knowledge and experience on how other businesses are running. We think all business issues are the same as the issues in software projects.

Until I saw how my client operated their business I used to think our business (providing software solutions) is “THE BUSINESS”. But once I saw client, I realized that my job helps them just to ease their work. Actually we provide them only a tool to support their business. I realized that they can continue their business even if we stop coding. They might have some difficulties but they can still continue. But if my client stops his business then there might be a big gap in entire service chain of the country or even in the world. It depends on how big and unique the client is. I felt my client was a giant in this world.

  1. I saw the importance of my business to the client
                                              

As software developers, the ultimate goal of our project is to provide a software solution to make our client’s job easy. But when it comes to short term, the goal becomes to provide a solution for a specific user story, task or an issue. When the task is assigned to a developer, his whole focus is on completing the task to the deadline. This is according to my experience. But when a programmer continues his job with such a mindset he fails to realise the importance of that task to the client and how it helps their business.

Once we visit the customer’s office, we can see that how people work there; the concerns they have; their relationship with their customers. Sometimes we may even see the challenges they face when using our software.  Then we get a better grasp of what they’re doing and how we can help them. Now when I start coding, my experience makes me think of how it will help the client’s business. . That thinking pattern helps to supply better solutions without major issues or silly bugs.

  1. I got a better understanding of their business domain
                             

Most of the time when we receive the requirements from our client we also gain some domain related knowledge. This ‘knowledge transfer’ can take place in several ways. It could be an explanation from someone who knows the system, or the BA; or sometimes a document which explains the logic and business; or just a document detailing what is expected. In the above scenarios we rarely get a chance to talk with real users. Even with the agile method most of the time our client only introduces someone who has some domain knowledge to provide the requirements to the developers, not real system users. We rarely hear from real customers when we are in the developing stage.

But if we are on-site then we may get an opportunity to chat with real system users. It may not be a professionally scheduled meeting, but a little chat in the lunch room or when we have a coffee. But that ten minutes would be enough to understand their work. There is no better source than a discussion with real users to gain an understanding of their business.

A better understanding of the domain means, the developer does not require each and every requirement for example like formatting and validation. He can add those kind of things by himself. When the developer has enough domain knowledge, he\she can use their creativity to suggest better solutions for their client.

  1. The visit helped to build a strong relationship with the client
            

Communication is not always easy. When it comes to communication the client must explains what is required in a manner the developer   understands.  When there’s  no good  relationship between the client and developer the communication become tough. However if  the client and the developer share a good relationship as friends then the communication (sometimes referred to as the most difficult part of Software Development life cycle)  is easier. Client visit provides many opportunities to build such a relationship.

  1. ‘On-Site’ visit added value to the career
            

As professionals in a software industry, we all care about our career. One of our major goal is continuous career improvement. I believe this was another opportunity to add value to mine.

Visiting a client offers a different kind of experience to an individual .We deal with professionals and adapt to new cultures. It also indicates the level of confidence and trust the company places on you. It's beneficial when searching for a new job, especially in an agile context.

I hope this article has encouraged you to visit your own clients more often. The value of visiting a client to a software engineer is not limited to what I have mentioned. Find out more during your own visit.