Sunday, April 29, 2012

My worst performance review


Recently my current company started the quarterly performance review. This reminds me my last performance review two years ago in my former company - QuickPlay Media Inc. I believe that was my worst performance review in my life, because of that reason I left that company.

The whole process was terrible, some time when I recalled it, I still feel angry, ridiculous, and nonsense. I will try to write it down because I want to remove it from my mind.

 I remembered 2 years ago in QuickPlay, my performance review  process was terrible: the review was totally depends on manager, there was no quarterly checkup, no objective metrics, each employee's performance is relies on the manager's impression. If she likes you and give you a good project, then you will get a better performance, on the other side, if you work on a project which is outside the scope of your boss, then you are doomed, because he/she did not know how you worked. This is totally unfair game, and for each employee it is the only time you have a chance to get promoted or salary increase.
 My manager's name was Donna, unfortunately I did not work on her project, and also she did not like the way I was working, I am not the guy always say YES to the boss, I have my own brain and I have my own principles. I know that I might not get a better rate, but I did not expect that my final rate was so worse.

I can feel her bad attitude at the beginning, because my meeting was cancelled and rescheduled so many time, finally it was delayed for 3 months! This was totally unprofessional for a manager, and she never show some apology to me for that.

During the performance review, I can feel she did not like me, the meeting is one way instead of 2 ways. She controlled the talking, most of the time she was talking and I was listening, actually I would say she was announcing, and did not give me any chance to explain. I prepared lots of my thoughts, but none of them were discussed. She tried to give me a low rate for every check point based on her bias, she tried to prove I am a bad developer. because I did not follow her order just once, and she wanted to punish me. It looked like she collected all my mistakes quietly in the behind, save them for one year, then presented all of them to me. Is this a good way for a manager? This is totally wrong, a manager's job is try to improve her team members, once she found an issue, she should take action right away, either criticize him or help him to realize his problem, help him to fix the problem. A manager's job is to correct developer's mistakes, not collecting mistakes. Manager is not like police, her job is just issuing an parking ticket. She need to figure out why the employee made an mistake, provide solution, and make sure the employee is improved. We are human and easy to make mistakes, that is the reason why we need managers.

The main issue she mentioned was I got negative attitude, because I report a issue of my colleagues quite angry. I agree I did not have good attitude at that moment, but so what? You should focus on the issue first.  I found very bad issues and I feel I need to stand out and want manager to fix it. I exposed the problem in the team, and this is a good chance to fix them. My manager should ask why I had a bad attitude, because she need to find the root cause and fix it, I believe the manager's job is to fix the issue among the developers. I don't think hiding/cover up the issue to your colleague is good, avoiding conflict is teamwork, and just focus on remaining the surface of agreement is a healthy team. Unfortunately my manager even did not want solve this issue, looked at what she said: "Why did you say bad to him? Because he did not say anything bad to you." What? I don't know what to say it.

It was really made me angry was for all of her comments/feedbacks, I did not know how to solve them. When I tried to analyze them and want to improve them, I found they were all no actionable, which drive me crazy. I know the solution was: follow her order, always say YES, you should not have your own ideas, just compliance, that is it!

It made me into deeper thinking: what is a good employee? Just always say YES, always nice to other people, not to stand out when finding a problem? Of course NOT.

This performance review totally lost its purpose: set goal, identify the issues and improve them; it becomes a means of manager to control her team members. It will look for compliance. It becomes a tool of governance, not for management.


I understand this would be the common issue of the command-and-control management style, the result will be always the same: mediocrity, compliance, lack of innovation.

Now I am happy in my current company, we do performance review, but quite different: we have 360 degree peer review, and quarterly review. Which are much better than before. I feel I was so lucky because I don't need to do that terrible review any more.

Wednesday, April 18, 2012

Review of my toastmaster CC#2 speech


Yesterday I finally finished my second speech, my topic is "Shu Ha Ri - The Japanese way of learning". After speech, I feel very exhausted. Because I am very nervous, and I practice it a lot. It might be easy for other people, but for me it is really difficult. Here I posted my personal review.

My Feedbacks
Positive
 - No notes
 - I looks very confident
 - The speech is clear, simple and easy to follow
 - transition is smoothly
 - The topic I choose is interesting

Constructive, I need to improve
 - Need more eye contact, I ignore the left side of the audience
 - My feet move back and forth, which is distracting, I understand it because I was nervous during the speech, and focus too much on recalling my script, so I can not cover other issues, this needs more practicing
 - more eye contact
 - need humorous
 - need quote for opening and ending.

How I choose the topic
 My criteria to choose a topic are:
  - 3-5 points
  - can be fit within 5 - 7 minutes
  - can bring value to audience

I chose Shu-Ha-Ri because it fits the above criteria: it has only 3 points, it will really new to the audience. Also it is my interest, I like to collect the learning model, Shu-Ha-Ri is the simplest one to fit the 5-7 minutes speech. And I feel it would be an interesting topic: the audience will learn some Chinese characters, and learn about martial art principles. And finally I will add examples to using this in the toastmaster learning, which will bring connection to the audience, and this topic will help them to apply it into their own learning.

Preparation
I will the hard part is preparation. It took me at least 2 weeks to prepare this speech. It is a long time, so I still don't know if it is worth doing like that. I got struggle to write the script, gradually I realize that spoken English is quite different with the written English, because when I write it down, I feel good, but when I read it, it just feel weird, so I modified a lot. Also I struggled to shrink the content to fit it into 5-7 minutes, I have to balance different situation, and cut my favourite part. Finally I realize that to fit within 7 minutes, my content has to be around 600 words. The whole process is very discomfort for me. But I will say I tried my best, because I want to bring the value to the audience.

Making the speech
Comparing to the preparation, doing speech seems lot easy. But I was still nervous before the meeting. I can feel I am still nervous during the speech, I was still not comfortable to speak in public. That was why people saw me move back and forth randomly, because I did that unconsciously. But in general they all said I looked very confident, that was because I did not use notes. Anyway this is a great experience, it seems this 7 minutes were worth all my hard works.

Summary
This speech is a great experience for me. I think I tried my best, and I delivered my message to the audience, and they like it. Also this speech exposed my ignorance for the public speech, all the issues were I never aware before. I also learned the difference between spoken English and written English. The biggest thing I want to improve next is how to shorten my preparation time, since it interrupted my so many other plans. And I really enjoy reading the evaluation from my club members. They are really helpful, I really appreciate that, I feel what I get is a lot more than I contributed. This will force me to bring excellent topic in future.

Update some more thoughts
My evaluator suggested me to use a quote to make the opening stronger, actually I thought about it, but I just could not find a good one, today I found a Chinese proverb:
Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime
So the opening like this:
A Chinese proverb says:"Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime". Today I am going to show you a different way of learning, which will help you learn more effectively.

Is that sounds better?


P.S. my notes of the speech


Shu-Ha-Ri, the Japanese way of learning


Mr. Toastmaster, fellow toastmasters and welcome guests, my name is Steve.

Today my topic is about learning. Learning is very important for us, we need to keep learning, also we need to learn how to learn, to make our learning more efficient. Now I am going to introduce you a learning model, it is called Shu-Ha-Ri.

Shu-Ha-Ri is a concept coming from Japanese martial art. It describes the 3 stages from beginner to master.

These 3 Chinese characters are used in Japanese, and pronounced as "Shu Ha Ri" in Japanese.
This is Shu, it means “to follow”
This is Ha,  it means "to break",
This Ri, it means “to transcend”.

So roughly Shu-Ha-Ri means: First follow, second break, and finally transcend.

Next I will explain this model in details, and try to show you how to apply it in our toastmaster learning.

First in Shu stage, the martial art student is a beginner, he will copy his mentor's movement, he follows the rules precisely without modification. Shu implies loyalty, which means the student should follow one instructor, stick with one path, and focus on one technique. In this stage, the student only needs the clear and detailed instructions; he does not need to learn the theory.

In terms of toastmaster learning, if you are a beginner, you are in the shu stage, you have the manual, you got a mentor.  you need to follow the manual precisely, And you need to follow your mentor, and focus on one technique each time.  For my personal example, my mentor Robert gives me lots of help, especially this time he suggested me NOT to use slides right now, I should focus more on the speech only, this is great,  I really appreciate that , thank you Robert.

The goal in Shu stage is to let the student learn the fundamentals. If he achieves this goal, then he can go to next level, which is Ha stage.

In Ha stage, the student knows the fundamentals, but he needs to go deeper, he needs to understand the principles and theory behind the rules. he starts questioning the rules, reflects everything he learned. He applies the rules to different situations, he will modify them to make adaption. He also will explore different paths, and collect different techniques.

If you are ha level toastmaster, you will do the same thing: you need to go beyond the manual, you might follow different mentors, try different paths and learn different techniques.

During Ha stage, the student will gradually transform what he learned into his own experience.  And finally he will enter the Ri stage.

 In Ri stage, the student becomes a master. He totally abandons the rules, what he learned becomes his second nature. He will follow his own instinct, he moves naturally, spontaneously. He is very creative, and he has the freedom to do anything without limitation. The biggest difference between beginner and master is that the master follows his intuition, while the beginner follows the rigid rules.

The same thing is for toastmaster. If you are ri level toastmaster, you don't rely on the manual any more, you rely on your own instinct, you speak naturally and you are fully free to express yourself.  You are the real master.

Now I want to make a quick survey,  How many of you think you are a shu level toastmaster? Please raise your hands.
Are there any ha level toastmaster?
Are there any ri level toastmaster?

Now you know about what the Shu-Ha-Ri is. It is a learning process,  It is simple and powerful, please try to apply it in your own learning.

Mr. Toastmaster

Monday, April 9, 2012

Manage java property files using Apache Common Configuration API


Recently I did some research on how to manage the java property file in a better way. I found the Apache Common Configuration API  is actually really good.

I found the following 3 features are really powerful.

1. Variable interpolation
  Like using a variable in Ant, you can use variable in a property file, and Apache Common Configuration API proivide API to expand them on the fly.
code sample


2. Include other property files in a property file
   check this link for details.
property example

Code example:

3. combine multiple property file into one property object
   details are in here.
   Property example

   Code example:

I believe above the 3 features will greatly simply the java property file management.

Wednesday, April 4, 2012

Using JIRA REST API in Groovy

Recently, I want to update my company's site using program to automatic update the issue status, adding comments, etc.
I could use JIRA Web service SOAP/XML-RPC  to access, like Jenkins JIRA plugin, but according to the JIRA document about remote API reference,  the REST API is recommended and supported.
so I decide to use JIRA REST API. I did some research, there are some possible options:
- Use JIRA Java Client library;
- Use Groovy HttpBuilder

For JIRA java client library, I get stuck with the maven, it always gives me error, and I was scared by its depencency on so many libraries.And For Groovy HttpBuilder, I have the same feeling, it depends on many 3rd party libraries.
So I decide to choose the 3rd solution. Just use Java HttpConnection object inside the Groovy script, and finally I got it works, it didn't use too many lines of codes, and Groovy 1.8 built-in support JSON parser, which is very handy.

Here I posted two groovy samples, you can easily integrate them into your own JIRA site by adding the url and account information.

Request an JIRA issue
JIRA add comment 

Note:
Note:1. JIRA URL should be like this:
    http://hostname/rest/api/2/issue/MKY-1

2. According to JIRA reference: The prefered authentication methods are HTTP Basic (when using SSL) and OAuth, in Groovy code

     ...
     def authString = "user_id:password".getBytes().encodeBase64().toString()
     conn.setRequestProperty( "Authorization", "Basic ${authString}" )

Useful resource
 JIRA REST API reference
 JIRA REST API Version 2 Tutorial