2008年10月31日 星期五

How to Build a Strong Software Team In Taiwan

I was a software director for a Taiwan grown 32 bit microprocessor company initiated by the Executive Yuan Development Fund which now owns about 44.5 % stake of the company and the rest control lies in Farady, Mediatek, other IC companies directly or indirectly associated with the UMC conglomerate, and a few tycoons of the IT industry in Taiwan. I am also an assistant professor of applied English at Kainan University in Taoyuan.
Before I returned o Taiwan last summer, I have been a professional consultant as well as a software engineer in the U.S. serving over 26 companies in more than 28 years. Furthermore, I am the founder and a school principal, 14 years from 1994 to 1997, for a weekend Chinese school dedicating to the nurture and enrichment of Chinese and Taiwan culture for the children of oversea Chinese and Taiwanese in Dallas. My students and their family have served in the nursing home since November 1995 on a monthly basis. We have brought love, and care and joyfulness to the disabled senior people. We learn what diabetic patients can and can't eat and how to comfort kidney dialysis patients and how to chat with residents plagued by Alzheimer disease. Thanks for the English teaching experience with my students , I got the university job in late August last year when I badly need one to stay in Taiwan to take care my ailing wife and old mother.
From experience of close interaction with students and the community, I firmly believe that we can bring hope and capability to others so they can have a life with confidence and respect.
Lately, I have talked to my former colleague Jserv and a few other colleagues about how to build a strong software team for the land and the people we love- Taiwan. I opted this idea to Joy and Andew of LXDE last Tuesday in a forum hosted by the Digitimes.

The worldwide economic tsunami is a crisis for every country in the world but it can be managed to be an opportunity for Taiwan if we can have a vision to build a strong software team of 30,000 to 50,000 engineers.
As everyone knows that Taiwan has a very strong hardware oriented industry: IC foundry, IC design of digital, analog and mix signals, and an encompassing consumer electronics industry including every major component for PC but the microprocessor. We have dominated ICs for digital entertainment and ICs for wireless communications and the fundamental connection components for Internet connection: devices and equipments inclusive. The list can grow much longer to present the involvement of Taiwan's hardware talents and firmware's capability in the world.
However, the achievement of our software accomplishment is rather anemic. There are many reasons for this deficiency. The major one is that we have a lot of device driver engineers but few system level engineers capable of carrying software products from specification inception to final system integration and deployment. This insufficiency is not caused by an innate disability but by lack of opportunities. The projection and reality of our software engineers' English proficiency also limited our international opportunities.
India literally built its software empire from ground zero. Can we duplicate India's success and can we provide hopes and prosperity to hundreds and thousands talented people in Taiwan so that everyone member can have a productive life and a happy family? I think we can based own my vision and imagination and experiences. You will be invited to contribute to this great effort.
After I returned to Taiwan last summer, I found grueling pain for what I observed: talents are wasted. Even more, talents are buried.
Software engineering is a very lucrative business. It takes much less to assemble a team of a thousand engineers than the expense to build a 12 inch fab. The problem is that this one thousand member team draw salary quickly. Without a sustainable business, it won't last. However, once it can establish itself, it is sustainable.
The Ma Administration has been mired in coping with the unemployment issue in addition to other problems. Layoff has been rampant lately and unemployment is high. Many highly educated people can't find a place to grind their brain productively. This is devastating to the unemployed victim, family members around her or him, and eventually our society as a whole. For those who still hang in with their jobs, there are fears.
There are private institutes as well as government-affiliated organizations providing remedial courses or supplementary courses to help a limited few people capable of affording the high expenses- most of the training courses will charge over NT$100,000 to complete a certain instruction session. Many non-IT majored or math oriented people will never have the thought to even attempt this career change. More potential talents will never be known.
I was agricultural chemistry major before I left Taiwan and earned a doctoral degree in Educational Administration and five master degrees including biology, mathematics, computer science, and electrical engineering,an education. I have been changing my majors and knew very well how it can be done smoothly.
I think decision makers in the Ma Administration may interest in the proposal offered here. The goal of this approach is to save more families and to instill dignity by giving people hope in using their knowledge and capability. Other industries in Taiwan can also copy or follow the principle and spirit enlightened in this message to help more people.
The proposal goes in the following ways:

1. To recruit capable students of joining this training project:
The qualification for participating in this project is not just for IT majored students. It comes from talent application and search. All the applicant has to do is to show in writing how he or she has ever put in thought of something to complete a task. SAT math score of 600 out of 800 is all it requires to be a software engineer.
2. The applicant has to go through an interview process to show that his or her oral presentation is at lest succinct and understandable.
3. The applicant has to have a mental characteristic that is to be a person with a sense of gratitude. This temperament is crucial because without such a property it will be very hard for him or her to willingly share the knowledge with others in the future and the investment return on this type of person is relative small.
4. How to judge an applicant is endowed with a sense of appreciation is highly debatable. But once we state that we might need a letter of recommendation from the teachers of the elementary school or junior high school, we can artificially create a movement to induce applicants to visit those who have taught them. If the memory of the past teachers turn out to be unpleasant, we can also encourage the applicants to visit or contact those who have helped him or her. Willingness to give or having the potential to be induced to do more for others is also the key ingredient of this project because major software resources will be from open source and the initial starter instructors will also likely be from this community. Certainly, it doesn't mean that instructors or professors from the college or the graduate school will count nothing. It matters heavily.
5. We can create a better society by addressing the essentials of how to be a better person at the beginning. Sharing is fun and giving is joyful but constantly remembering who has donated their time and brain juice to enable the beneficiary to subsequently feedback the appreciation to carry on the torch is even more important.
6. After identifying the applicant's personal propensity and minimum requirement for being a person capable to logic thinking, we can group the applicants into several groups from the beginning level to the group of power users who then have the opportunity to be instructor or project leader.
7. For the beginner team, we can cover essential of software design by showing them how to present their thoughts verbally and how a computer can understand by going through studying simple programs. Reading and analyzing a good size of high qualify but short programs before they write the first one will be part of the approach for teaching and learning. The students are required to present their understanding verbally about how the program works and how the flow goes. We will create an atmosphere so receiving critic and participating in code review is ingrained in them without any negative emotion.
8. We will show how to properly take notes and how to present thoughts in a computer assisted way professionally.
9. We will introduce concept of software management and the cycle of software development.
10. Opensource approaches will be introduced and the students will be shown how to follow the latest development in this field.
11. To assemble a team of willing and highly qualified instructors to cover topics of C, C++, Java, Linux system, Google Development system, and Windows development systems in a semi-crash course way. We also provide counselors to closely work with students to receive their feedback about teaching, instruction, materials, equipments, assignments, class room interaction, and learning efficiency. And if test cheating was attempted or exercised, we need to know whom and why. We are not to identify the culprits to punish them, we want to know why this is even attempted so we can improve. Why enthusiasm and love can't change certain behaviors?
12. For more advanced groups, we can provide some screening based upon threshold established by the domain experts yet to be recruited.
13. We will cover how to study specifications (RFCs and many others) and how to translate specifications into system design: bootcode support, BSP requirement, process modeling, kernel requirements, thread modeling, data exchange protocol handling, data sharing and data access approaches, profiling and debugging techniques etc.
14. We will spend a good portion of the training on technical English to enable the participating members to acquire the capability to write succinctly in English.
15. We will also recruit a team of technical writers so they can share their knowledge with the students and help package proposals to international companies for outsourcing opportunities.
16. We will also form teams to trace major opensource development projects so we can catch up with the world and learn how to contribute to the flows: initially with bug fix patches and then with feature enhancements like LXDE has been done, which is just a very promising beginning. If we can have a thousand team like this one in Taiwan, we will be different.
16. What the government can do to help this initiatives?
1. Provide funding to support this initiatives
2. Launch a few large scale opensource like software projects to allow the participating students to have solid goals to do software development.
3. During the process, all software development cycles and component code and design will be closely monitored and reviewed by all the membering students and instructors and management team. Everybody learns and involves.
3. Providing information and funding support and guarantees so we can start to get outsource jobs if they still exist. Government talks to international renown companies to encourage them to give us projects.
17. Once we can graduate students from this training session and keep them updated with the latest development, we can help our domestic companies by providing them a firmware capable, system oriented, English fluent software developer who has the knowledge to command specification, software management, and idea presentation. His productivity will be extremely high and can help the company to attempt certain things they wouldn't try before.

I think we need to build a large software team for the future of IT industry in Taiwan. We need to have a piece of pie India has enjoyed. We are not inferior to Eastern Indians or engineers in east Europe. It is only a perspective. I think we can change that for a better Taiwan.

I will keep on refining the ideas and your feedback is highly appreciated.


Dr. Wang