Thursday, March 22, 2012

My ice breaker speech in Toastmaster club

This Tuesday, I finished my Ice-Breaker speech in the toastmaster club. I was inspired by Dr. Nick's blog post - "How to stop killing people with your public speeches".  The club I joined is club No. 4780, Markham Village club. In my first club, I talked about myself, and career and why I want to join the club.

Following is the text of my speech.

My Journey to Mastery

Mr. Chair, fellow toastmasters and welcome guests. 
My name is Steve. This is my first speech in the club. I feel so excited, since it means I will start a new journey, a journey of challenging myself and improving myself.
I would like to talk about myself, about my career, and why I am standing here.

I came from China. I was born in a province called Inner Mongolia. It is in the north part of China. I stayed there until I was 18 years old, then I went to Beijing for college, after graduation, I worked in Beijing until I moved to Canada later. My first job was working for China Aerospace Corporation as an engineer, now I am still really proud of having this experience in my life. And also I met my wife during that time.

Seven years ago my wife and I immigrated to Canada. Last year we got our first kid, my son Andy was born, now he is 14 months old, he give us so much fun, I love him so much.

About my career, I am a software developer; currently I develop applications for mobile phones. I’ve been a programmer for almost 20 years. When I look back, I will say for my first 10 years, I was an average developer; since my second 10 years, I started to know about the software craftsmanship movement. That really changed my self. It is about how to become a professional developer; it is about raising the bar of your job: not only write working code, but also write well-crafted code. It has principles, strategies and disciplines. Programming is like martial art, you need constantly to improve your skills; you need to keep practicing your skills. I really love this idea and I started to follow that philosophy, I learned a lot, gradually I can feel I get changed, change from an average developer to a professional developer, but I know there is a still a long way to go to become a master. I set my career goal to be a master; my career path will continue focus on technology.

But my mindset was changed due to my failure in my former company. About 3 years ago, I realized that the company has lots of issues: too many defects, projects always delayed, people always have to work over time. I got tired of working like that way, so I decided to stand out and push some changes: I talked to my manager, lobbied my colleagues, trying to bring the concept of craftsmanship and new methodology to the company. To my surprise, none of my suggestions was accepted; I did not get many positive feedbacks. I was frustrated because I thought those good ideas inspired me and should inspire others as well. But reality is totally different. I got stuck because I don't know what I need to do next. I realized that my vision was different with them, so I left the company 2 years ago.

Since then I tried to figure out why it is so hard to make people change. I started to understand that only have the good information is not enough; more important is delivering the message. You need to find a strategy, in some cases you need to be a good translator, transform the message to your audience in their languages. Based on my failure, I realize the importance of inspiring people, so I adjust my career goal: along my journey to become a master, I also want to be a coach, I want to tell other people their are better ways to develop software, I want to inspire more and more developers to follow the software craftsmanship. I believe this will be more valuable and more meaningful.

Based on the new goal, I realize I do have blind spots: my communication skill needs to be improved. I need to know how to inspire people, motivate people, and influence people. This is the reason why I am standing here.

Now I start my journey to become a toastmaster, I believe this journey is part of my long journey – the journey to become a master and a coach, I hope the toastmaster club will help me moving toward my final goal.



Saturday, March 10, 2012

Presentation note - Continuous Integration in the Mobile World

Yesterday I watched the presentation  Continuous Integration in the Mobile World by Godfrey Nolan in InfoQ. It is a very informative, the author covers the Jenkins CI server, Version Control and test tools for ios and Android mobile platform, and the author tells us how he integrates those tools in his company's mobile application development.  Most of those tools he mentioned are first time for me. We use Jenkins, but I haven't realize that there are so  many good tools available for you.

Here I just summarize the tools which are mentioned in the presentation.

Jenkins Plugins
- Android Emulator Plugin
- Xcode Plugin

Test tools
-  Perfecto mobile,  test real mobile device via the cloud,  I feel it is quite similar with DeviceAnyWhere.
- TestFligh App,  ios beta test on the fly.
- FoneMonkey,  Functional test tool for ios and Android
- Robotium,  like Selenium, it is for Android UI test framework
- OCUnit, Objective C unit test framework
- OCUnit2junit,  a ruby script to convert OCUnit to Junit, which allows Jenkins to run the OCUnit.

I need to do more research on those tools, I really appreciate Godfrey provide such a informative and inspiring presentation.