本文发表在 rolia.net/zh 相约加拿大网上社区枫下论坛
I have met a lot of archiects in my short programmer career. Most of them are dummies---they have many years of experiences but their skill sets are obsolete. These architects are actually managers. They don't do architecture things. They might choose Java technology simply because other companies are using Java. In the team led by such architects, the design things may be done by some lower-level persons without an architect title, or by a consultant from the outside. However, these people are good at playing with buzz words such as scalability, maintainability, reusability, turn-key solution, web-enabled, Java-enabled, .....you name it. Such persons are very superficial but they are there. In comparison to them, our weakpoints are too purtruding. Because of our lack of a good commanding of the English language, we cannot follow these people's examples.
In some sense, an architect should be a person who can be placed on any positions. Of course, an architect takes the responsibility to conjecture the whole architecture. In any project, however, there are some hard bones and the archiect should be able to lead the people to work on them. Reading the gang of four book, playing with Rational Rose, and getting a Sun or Microsoft certificate are very helpful and even necessary. However, it's still far away from being an architect. An archietct needs some hands-on skills and good coding ability, otherwise he is doing guessing work. The question is: Who gives you the first opportunity? Usually, some architects grow up from a programmer. They were good programmers and they earned their manager's trust and then got their first try.
An architect needs to possess a character of leadership, otherwise his teammembers won't respect and follow him. Simply creating some class diagrams and documentation does not work. In a team, there are various kinds of people. Some people may think they are better than you, can do better jobs than you, and even try to overturn you. Under my wing, there are some very experienced people. For instance, one of my Oracle developers are very savvy in PL/SQL programming (My PL/SQL skill is not good). He thinks he can do anything well and he is as proud as a peacock. He even told me that he is a threat to all the other people where he is about. What I need to do is to handle him and make sure he follows my instruction.
An architect needs to have a very good communication skills, otherwise he cannot survive the corporate politics and make his developer understand his idea. Clients' business requirement are not always reasonable, implementable. In such a case, an architect should be able to communicate with the clients or users, suggest new ideas and help the clients out. This task is by no means a piece of cake. Some clients are very, very stubborn but you need be able to do business with them. Some people are very good at C++, or PL/SQL programming, but they cannot be an architect. The reason is that they cannot communicate with the business owver. If you think you have to use technology jargons as you talk, you cannot be an architect. Business owners are interested in business only, and they cannot understand your technology terms such as RequestDispatcher, materialized view, and ....
My present title is archiect. I, along with our lead developer, lead a team of 9 people. I am the third one that my CTO hired. I may say I helped to establish the whole team. I have very strong influence on my CTO. Without my recommendation, no one can join our team. I don't want to see very far. Of course, we need to face a cruel fact---- we are getting older. Sometimes I have a very bad feeling. I give you an example. I have beening hiring and am continuing to hire people (Sorry, I am in USA and I cannot hire people from Canada because of corporate policy). As I screen those job candidats, I relentlessly throw away those
old guy's resumes. I have ever asked mmyself: Am I a reasonable person? Is it fair to do so? After a thought, my answer is yes. My reasoning is: If I were at those people's position, nobody would show sympathy on me. There is no job security in this market. What I can tell you is: If I lose my job now, I don't know how much time it's going to take me to get a new one. Another thing I want to tell you is that I have been tired of being an architect. I prefer to be a developer---fewer responsibily and easier life. Since the beginning of October, I have worked 10-16 hours everyday,.... this is why I have stopped posting my English notes.
It's never too late for us to learn. We should keep learning until we give up. It is very important for an archiect to have a big picture, because he/she cannot command all the technical details. You should have some experiences and knowledge in the following fields: data modeling, performance theory, testing theory, uml, design patterns, software life-cycles.....
It is a good idea for you to try to become an architect. However, archiect is only a title, not a profession. In my humble opinion, an architect is just a special type of programmer and he/she has more qualifications and responsibilities. If you get an opportunity to be an architect, go ahead and do it. If you don't get it, be a programmer and be happy! If you have been in Canada not for a long time, please be patient and observe the world. There is no short-cut for you to become an archiet. Taking Sun's architect test does not help much.
Java is not dying. It is still there. But it is no longer overheating. I think Java is a very good technology for creating web pages. I have more reservations for EJB technology. C++ is still there. It won't die very soon. I dare not overlook C# and .Net. Microsoft has strong marketing momentum and it can succeed if it pay attention to an IT sector). I don't think .Net will completely defeat Java and J2EE. The life has come back to its true status--- no technology should be as overheated as Java 2 years ago.
更多精彩文章及讨论，请光临枫下论坛. 网址: rolia.net/zh