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.


Sunday, June 8, 2014

Best learning background is a fear free environment.

"Best learning background is a fear free environment" this is something came to my mind when I attend the speech craft program at Exilesoft. The same idea was proved by the British Council English  Course I attended at the office, few months back.

As I understood; these are few things which helps to make a fear free environment;
  1. Friendly relationship between teacher and students
    If teacher act as the king in class room and he expect all students to treat him as the king then a big unseen barrier will create between the students and teacher. Sometimes teachers might think to build respect from this behavior. But it will never be a respect but a big fear to the teacher. Students' creativity goes down if they are afraid of the teacher. Also if they have anything doubtful to clarify they won't speak at the class room. This is what happen in most of the government school class rooms and that's why it's famous that Sri Lankan's usually don't raise questions in public seminars even after they grown up.
  2. Teacher is nearby to every student
    If a class has hundreds of students and teacher has only 1 * 2 feet area in front of the class room then students don't get chances to reach to the teacher. They never get chances to be friendly with teacher or at least to talk with him/her. But of course if students get more chances to talk with the teacher and if he is a friendly one then it will be a great fear free environment to learn.
  3. Less number of students in the class
    Number of participants of the class also has impact to the individual's interaction to lessons. Every one in the class room may become good friends easily if it is only few students. This may never happen in a situation with hundreds of students. Students are not afraid to ask questions or clarifications among friends. So the environment become fear free. And the other hand each and every student get more attention when the number of them are few.
  4. Willingness to learn from mistakes
    It is said that "The best lessons are learned from mistakes". And also class room is a place that everyone can learn. So there should not be any reason to be afraid to make mistakes at the class room. This is some thing that I personally experienced at my English course. Some times I wrote the wrong answer which was doubtful to me even if I knew the correct answer. Then teacher explained why it was wrong. If I wrote the correct answer at that time, I would never get a chance to learn why that doubtful answer was wrong. Unfortunately that attitude is not spread among the students. Many of the teachers expect correct answers always. So students are afraid to make mistakes to learn from them. But learning will be more successful in an environment where mistakes are encouraged.
  5. Improved self- esteem
    I believe creativity works at it's best when some one works with high self- esteem. If teacher gives close attention to every one and makes them feel he/she is important to the class then it will be a place that can learn with self confidence and fearlessly.
These are the things I found as the specialties in my class compared to the many of classes I attended from my child hood. I felt this is all about learning in fear free environment with self confidence.  I experienced that learning environment helped to learn effectively. What I can say at last is, if you want to gain 100% in learning then find fear free environment.

Monday, December 30, 2013

Guide to Improve Eye Contact in Presentations


Having done my first presentation at office speech craft program, I was advised to improve the Eye-Contact. As a result I glanced each and everyone in the audience at my second speech. But again comments included that I need to improve my eye contact. But I didn't have any idea how. 

Luckily I got a chance to participate Business English Course at office conducted by British Council and it had a good practical session on improving presentation skills, specially eye contact. I felt that I improved my self a lot by following those guidelines. I'm sharing it here.Try yourself and be surprised with your improvements.

Eye Contact Technique
Target one person for one small sentence. If your sentence is too long, then break it into meaningful parts (you can do this from your mind). Look at one person when you say one portion and when you deliver the next part of that sentence look at another person. Remember to cover entire audience.

Lets take an example;
If you are going to say.... Hi, I'm (your Name). I work at (Your Company). My hobbies are watching movies, reading books and playing video games. Let's think if your audience has three columns. Then you can pick one person from each column and deliver one sentence to each of them. You can cover entire audience by following this method. Below image brief the whole idea.


If you have a long sentence like... I previously worked at XYZ Company, the world famous auto mobile manufacturer who invented ABC car model.  When we present this sentence we can identify three different parts as
  •  I previously worked at XYZ Company...
  • The world famous auto mobile manufacturer...
  • Who invented ABC car model.
Then you can deliver one part to one person each.

Practicing this straightly in the presentation is not that much easy. Hence we practiced this in the class room. First we wrote a paragraph with small sentences and practiced reading it loudly in front of the audience, balancing the eye contact. Then we prepared a small paragraph with long sentences and practiced the same way.

It was really easy to maintain  and balance the eye contact in the presentation after practicing it with the method explained above. You can try it by yourself, but if you don't have a class room or audience to practice it, try in front of a mirror imagining you have a big audience. ENJOY!!!

Wednesday, February 27, 2013

Too busy chopping wood to sharpen the axe?

This is the article I supplied to Exilesoft magazine last time. Hope it will help someone.

He, who wanted to start his life as a wood cutter, bought an Axe and went to the jungle. He earned money by selling trees that he cuts. He wanted to be rich, so he worked hard to achieve his goal.

When days turned to weeks and weeks to months, his productivity went down. The amount of wood he collected each day started to decrease day by day. But he worked more hours till his hands hurt but he was barely able to achieve his margin. He couldn’t collect as much wood as he did in the beginning.



One day he thought, “If I continue like this, I won’t be able to achieve my goal”. Then he sat on a fallen tree and wondered what had gone wrong. Aha... His enemy was right in front of him. His productivity was low due to his own fault. He realized that he was only concerned about his output. He hadn’t spared a thought for the tools he used in his work. He quickly sharpened the axe and started to cut the trees. He realized that productivity was not based on his effort alone but also on the improvement he made.

You may have heard of this story but have you taken this lesson to heart? Do you act in a similar manner in your own career? Think about it.
1. Are you always busy with your job, completing your tasks?
2. Do you also complain you don’t have time to improve your career?
If so you could end up being less productive. It’s true we all have plenty of work each and every day. But be wise enough to manage your work while spending few minutes to develop your skills. If not you will become a person with obsolete knowledge. On that day even your employer will not acknowledge the work you did. They will blame you for your redundant knowledge. 


Let’s say you are given 86 400 rupees every day. If you spend it all without saving any, at the end you will have nothing left. Imagine this 86 400 as seconds you are blessed with every day. If you just waste it without doing anything for your career, you are not investing in your future.

Just think about it and spare few minutes every day to enhance yourself.
Be a person who contributes something towards your career every day.

Thursday, December 6, 2012

How I started Blogging

It was nearly two years back, in February 2011, I was working on a SharePoint project. We had a special member in our team, who was very good with SQL but knew very little about SharePoint. As he was new to the project I had to work with him most of the time to transfer the knowledge about the domain and technology. When I explain the things, specially about technical, sometimes he pause me and asked few minutes to take screen shots and update the things in a particular web page. I just let him do his task and waited. Since I didn't have started blogging I didn't realize that he was drafting a blog post with the content we were discussing.

After few days he asked me "Do you know what am I doing?”. I said "No". Then he explained... I'm drafting major points to a blog post. Do you know why I'm doing this? I said no… without even thinking. Because I wanted to know his answer. These are few points which may help you to understand why blogging is important.
  • If we think about this SharePoint project, we have lots of configurations and customizations. We do it today but after few days we probably forget it. If I note it somewhere I can find it easily later when I want it.
  • You can keep a note book and write those notes. But surely it will misplace after some time. You can keep documents or note in your computer, but those are also not permanent. But if you write them in a blog it will be there and you can access from everywhere if you have internet.
  • In this IT world not only you who meet the same issue you met. So if you publish the answer found by you in the internet then it will help others to make their job easier.
  • Also you can improve your written skills.
  • When you get matured with writing posts, you might write the most useful and popular things and you will be followed by many people in the industry. It will help you to be in touch with the people.
Yeh...Everything was true. I wanted to try blogging. I created a blog address for me and was thinking what to write. Spending lot of time… Finally, I completed the 1st blog post. Wow what a feeling. You should experience it if you haven't felt it yet. Not only for the 1st post but for the every post I write, I get so motivated, that feeling is not easy to describe but everyone should feel by themselves.

p.s. Big Thank should goes to Gogula (Who was mentioned above) for motivating me to start blogging.

Wednesday, November 28, 2012

Forget the Weaknesses, Use your Strengths to find Opportunities.

It's true everybody has ups and downs in their career. I had few identified weaknesses on myself with regard to the career. I wanted to discuss them with some one having more experiences in their career than me and who can guide me to overcome them.
 
Luckily I met Kosala after a long time and got a chance to discuss about the weaknesses I mentioned above. This is not actually to tell what were the problems I discussed or the solutions he gave. But to highlight something I found very important when we talk.

Me:       I feel I'm not good at these kind of things in my career, Do you have any advices to improve myself?
Kosala: Why you are thinking too much on your negative things?
Me:       When I find the solutions I can improve myself.
Kosala:  Have you ever thought about your strengths?
Me:       hmm...No.
Kosala: See... You should have so many strengths with you, but even you haven't identify them yet. If you don't want to identify your strengths, who else will? It's sure that there will be people who will point at you on the things you are not good at. See now you also have joined with them.
            Before think about your negative points, just start to identify your strengths. Thinking about negatives will put you down. So find your strengths and try to find opportunities from them.
Later you can think about the things you want to improve and then you can work on it. Otherwise you are worrying about the things you don't have while you are having lot of things to be happy. You can use them to go higher in your career.

 Yes... It's true. What is the point of worrying about the things which we don't have while we are having lot to value?

Wednesday, March 14, 2012

Always be Smart with your answers


Suddenly your boss might give some ideas to a project and ask you how many days will it take to implement.  At the moment you hear the words "How many days" you may tend to give your answer with a number. In that case you will guess a number and give him a answer. But later you and your boss may realize that the estimation was wrong.

In most cases it goes wrong since you just guess and answered. Both you and your boss knows that giving even a rough estimation for a software project is not easy without going deep to the scenario.

Then why did you give exact answer? Since your boss asked the question with the phrase "How many days". But you don't need to answer this question by a number as he asked. Be smart and share the reality that you want to study the scenario and take your time to give correct answer.

You don't need to give exact answer for most of the questions asked by you in your life. Just take your time and give smart answers.