12 Jan, 2021
Lời khuyên cho năm mới-1
Khi các sinh viên phần mềm mới tốt nghiệp và bắt đầu làm việc trong công nghiệp, họ sẽ thấy rằng có nhiều điều nữa cần học hơn là họ tưởng.
Có những thứ họ cần biết nhưng không được dạy trong trường bởi vì có khác biệt giữa quan điểm hàn lâm và quan điểm công nghiệp về cái gì sinh viên cần biết. Cho nên vào lúc bước sang năm mới, tôi muốn bắt đầu bằng vài lời khuyên cho sinh viên, những người sẽ tốt nghiệp năm nay:
Để thành công trong công nghiệp, bạn cần biết về kinh doanh của công ti bạn đang làm việc. Bạn cần hiểu cách kinh doanh được tiến hành và cách điều này ảnh hưởng tới quyết định quản lí. Bạn cũng cần hiểu khía cạnh tài chính của công ti và cách nó ảnh hưởng tới mọi người trong công ti. Tất nhiên, lời khuyên này dường như không khớp với người kĩ thuật như bạn và phần lớn các đại học không dạy cho sinh viên kĩ thuật điều gì về kinh doanh cả. Tôi nghĩ đây là điểm yếu của quan điểm hàn lâm. Ngày nay nhiều người quản lí phần mềm chỉ tập trung vào khía cạnh kĩ thuật mà không vào khía cạnh kinh doanh cho nên nhiều dự án phần mềm có vấn đề với chi phí quá mức. Nếu họ hiểu rõ kinh doanh, nhiều sai lầm này có thể được tránh.
Điều cũng quan trọng với bạn là hiểu rằng công ti đang làm kinh doanh để thu lợi nhuận. Công ti sẽ mất kinh doanh nếu nó không làm ra tiền. Lợi nhuận là dấu hiệu cho mạnh khoẻ của công ti; do đó, bạn phải hiểu rằng người quản lí bao giờ cũng điều chỉnh mọi người và làm việc để đáp ứng cho các mục đích sinh lời được. Trong cuộc khủng hoảng tài chính này, khi khó kiếm được tiền, công ti phải giảm người và điều đó có thể là bạn. Điều quan trọng với bạn là tự chuẩn bị cho mình nhiều giá trị hơn để giảm thiểu rủi ro của việc bị thất nghiệp, cho nên bạn phải học về giới hạn ngân sách và lịch biểu. Đây là một môn không được dạy trong đại học nhưng một ngày nào đó bạn sẽ chịu trách nhiệm quản lí chúng cho nên bạn cần hiểu cách ngân sách và lịch biểu vận hành.
Dù bạn sẵn sàng hay không, hôm nay bạn là một phần của thế giới kinh doanh toàn cầu. Trong thế giới này, kinh doanh được tiến hành ngang qua các biên giới và công việc có thể được thực hiện ở bất kì nước nào. Thế giới chúng ta đang sống hôm nay là rất khác với điều nó đã là mười năm trước đây cho nên bạn phải được chuẩn bị. Bởi vì kinh doanh là toàn cầu nên việc làm sẽ đi tới các vị trí nơi chi phí thấp hơn hay nơi tri thức và kĩ năng dễ kiếm được. Điều này yêu cầu bạn làm việc với mọi người từ các văn hoá khác nhau, nói các ngôn ngữ khác nhau và sống ở các múi giờ khác nhau. Do đó bạn phải có tri thức về toàn cầu hoá và hành động khác đi khi làm việc với các thành viên tổ, những người tới từ văn hoá khác. Ngày nay đại học không dạy kiểu quan niệm này; nhiều giáo sư thoải mái với môi trường hàn lâm của họ và hiếm khi đi ra ngoài nước họ. Họ có thể không có gì mấy để nói về các nền văn hoá khác và cách làm việc ở các nơi chỗ toàn cầu. Tuy nhiên, điều quan trọng với bạn là cải thiện tri thức của bạn về toàn cầu hoá bằng việc đọc, học nhiều nhất có thể được và đây mới chỉ là bắt đầu. (Tôi đề nghị mọi sinh viên nên đọc cuốn sách “Thế giới phẳng” của Thomas Friedman như một nhập môn vào toàn cầu hoá.) Chung cuộc, nhiều người trong các bạn sẽ làm việc ở hải ngoại hoặc cộng tác với tổ các kĩ sư từ các nước khác và không được chuẩn bị, bạn có thể không thành công.
Toàn cầu hoá không phải chỉ về làm kinh doanh ở hải ngoại mà còn về thu nhận kĩ năng ở bất kì chỗ nào cần thiết. Nhiều công ti bây giờ thuê người làm việc trên toàn cầu, cho nên rất có thể là bạn phải du hành tới các nước nào đó để làm việc và điều quan trọng là bạn học tiếng nước ngoài. Tôi tận tình khuyên rằng mọi kĩ sư phần mềm đều phải thành thạo ít nhất một hay hai ngoại ngữ. Với kĩ năng giao tiếp tốt, bạn có thể làm việc gần như ở mọi nơi trên thế giới vì các công ti toàn cầu trả nhiều hơn cho các công nhân linh động và có thể du hành dễ dàng. Vài năm trước, tôi đã làm việc với một tổ ở châu Âu cho nên tôi phải học tiếng Pháp và tiếng Đức mặc dầu nhiều người trong số họ có nói tiếng Anh nhưng ngôn ngữ khác đã giúp rất nhiều cho tôi trong thảo luận với họ bằng tiếng mẹ đẻ của họ. Bây giờ tôi có nhiều dự án ở châu Á, tôi cũng học tiếng Nhật và tiếng Trung Quốc. Vì tôi nói nhiều thứ tiếng, tôi có nhiều cơ hội hơn để du hành và được giao nhiều việc quốc tế mà người khác không thể có được vì họ không biết ngoại ngữ.
Khi các bạn tiến lên trong nghề nghiệp của mình, vấn đề mà bạn đối diện sẽ phức tạp hơn nhiều so với điều bạn học trong nhà trường. Là kĩ sư phần mềm, bạn phải rút ra nhiều tri thức kĩ thuật và phi kĩ thuật để giải quyết chúng. Ở trường, sinh viên bao giờ cũng làm việc bên trong các ràng buộc lịch biểu hàn lâm và thời gian trên lớp cho nên các bài tập và bài kiểm tra được thiết kế để được giải theo cách làm trong vài giờ hay vài ngày và do đó không thể chứa nhiều phức tạp như bạn phải giải quyết trong công nghiệp. Tôi gợi ý rằng bạn mở rộng tri thức của mình qua nhiều khu vực nhất có thể được đi. Đại học Carnegie Mellon là duy nhất vì nó bao giờ cũng cho sinh viên kinh nghiệm trong khu vực này qua các kịch bản và học qua việc làm bài tập và những công việc này yêu cầu loại tư duy sẽ giúp hữu hiệu cho bạn trong công nghiệp.
Tất nhiên, không ai biết mọi thứ cho nên khi bạn gặp phải vấn đề khác với điều bạn đã được dạy, bạn có cơ hội học những điều mới bởi vì nó buộc bạn phải đánh giá lại, học sự kiện mới, ý niệm mới và có lẽ thậm chí làm thay đổi cách bạn giải quyết vấn đề. Đó là điều học cả đời tất cả là gì; bạn bao giờ cũng học những điều mới và phải không bao giờ dừng học, dù bạn già đến đâu. Vì đại học cho phép sinh viên bắt đầu cái gì đó mới vào từng học kì hay từng niên khoá và bạn có thể quên điều bạn đã học trước đây nhưng đừng bao giờ quên cách bạn học chúng. “Cách học” là rất quan trọng và bạn phải giữ thói quen liên tục học bởi vì công nghệ bao giờ cũng thay đổi.
Trong đại học, bài tập trong lớp học được cấu trúc để cho phép bản thân bạn làm việc nhưng trong công nghiệp bạn không thể hoàn thành được chỉ bằng nỗ lực của bản thân mình. Bạn sẽ cần làm việc trong tổ để đi tới giải pháp khả dĩ tốt nhất. Nhiều kĩ sư phần mềm hiểu giá trị của việc họ nhưng chưa đánh giá đúng giá trị của chia sẻ thông tin giữa những người có mối quan tâm chung. Phải mất thời gian và nỗ lực để làm việc cùng nhau như một tổ, học lẫn nhau, chia sẻ thông tin với nhau nhưng nếu bạn dồn nỗ lực vào, bạn sẽ thu hoạch được phần thưởng về cuối. Mặc dầu đại học tạo ra cách làm việc tổ trong các sinh viên, điều thúc đẩy thảo luận để giải quyết vấn đề, nhưng điều đó thường được tiến hành giữa những người trong cùng lĩnh vực nghiên cứu. Tuy nhiên, trong công việc thực, tổ có thể bao gồm những người có các kĩ năng khác nhau trrong các khu vực kĩ thuật khác nhau. Làm việc với những người khác nhau với các nhu cầu xung đột vừa là kích động và là thách thức nhưng bạn phải học cách vận hành tốt trong nó. Chẳng hạn, người thiết kế phần cứng muốn xây dựng thiết bị nào đó, người kĩ sư phần mềm ưa thích viết một ứng dụng thay cho cái đó, và người quản lí kinh doanh muốn cái gì đó nhanh và rẻ, còn người quản lí tài chính nói hệ thống quá phức tạp và quá tốn kém. Làm sao bạn đạt tới thoả thuận với một nhóm như thế? Đó là lí do tại sao bạn cần học nhiều hơn và bạn sẽ tiến bộ khi bạn học bởi vì cuộc sống là về học những điều mới.
Là kĩ sư chuyên nghiệp, bạn sẽ phải làm tài liệu công việc của bạn trong các báo cáo, tài liệu thiết kế và emails. Bạn sẽ phải làm việc trình bày và thảo luận mọi thứ với thành viên tổ, hay người quản lí và khách hàng, v.v. Bạn phải giỏi trong đọc, viết, trao đổi và nếu bạn KHÔNG giỏi thì điều đó sẽ ngăn cản bạn không tiến lên được trong nghề nghiệp của mình. Người thành công phải có mức nghị lực cao và nhiệt tình với công việc của mình. Họ phải có khả năng động viên người khác hướng tới các mục đích chung. Họ phải ra quyết định mạnh bạo và chuyển giao theo lời hứa của mình. Đây là những kĩ năng tới cùng kinh nghiệm và học tập cho nên bạn học khi bạn tiến bộ trong nghề nghiệp của mình, bạn sẽ phạm phải sai lầm nhưng chừng nào bạn còn học, mọi sai lầm đều là bài học tốt để cho bạn không sợ phạm phải sai lầm. Chìa khoá là điều bạn đã học được từ đó.
—-English version—-
An advice for the New year – 1
As software students graduate and begin to work in the industry, they will see that there are so many things more to learn than they thought. There are things they need to know but were not taught in school because there are differences between the academic view and the industry view of what students need to know. So as the New Year starts, I would also like to start with a few advises to students who will graduate this year:
To succeed in the industry, you need to know about the business of the company that you work for. You need to understand how the business is being conducted and how this affects management decisions. You also need to understand the financial aspect of the company and how it affects everybody in the company. Of course, this advice does not seem to fit a technical person like you and most universities do not teach technical students anything about business. I think this is a weakness of the academic view. Today many software managers are only focusing on the technical aspect but not the business aspect so many software projects have problems with costs overrun. If they understand the business well, many of these mistakes could be avoided.
It is also important for you to understand that company is in business to make a profit. Company will go out of business if it doesn’t make money. Profits are a sign of the health of a company; therefore, you must understand that managers always adjust people and works to meet profitable goals. In this financial crisis, when money is hard to get, company may have to reduce people and that could be you. It is important for you to prepare to make yourself more valuable to minimizing the risk of being unemployed so you must learn about budget and schedule limitation. This is a discipline that is not taught in university but someday you will be responsible for managing them so you need to understand how budget and schedule work.
Whether you are ready or not, today you are part of the global business world. In this world, business is conducted across borders and works could be done in any country. The world we live today is very different from what it was ten years ago so you must be prepared. Because business is global so jobs are going to locations where costs are lower or where knowledge and skills are easily obtained. This may require you to work with people from different cultures, speak different languages and located in different time zones. Therefore you must have knowledge of globalization and think and act differently when working with teams members who come from different culture. Today universities do not teach this kind of concept; many professors are comfortable with their academic environment and rarely travel outside of their country. They may not have much to say about other cultures and how to work in the global places. However, it is important for you to improve your knowledge about globalization by reading, learning as much as possible and this is just the beginning. (I recommend every student to read the book “The World is flat” by Thomas Friedman as an introduction to globalization) Eventually, many of you will work oversea or collaborate with team of engineers from other countries and without preparation, you may not be successful.
Globalization is not about doing business oversea but also about acquiring skills wherever necessary. Many companies are now hiring people to work globally, so it is very likely that you may have to travel to some countries to work and it is important that you study a foreign language. I strongly advise that all software engineers be proficient in at least one or two foreign languages. With good communication skills, you can work almost anywhere in the world as global companies pay much more for workers who are flexible and can travel easily. Few years ago, I worked with a team in Europe so I had to learn French and German although many of them did speak English but having another language helped me a great deal in the discussion with them in their native languages. Now that I have several projects in Asia, I am also learning Japanese and Chinese. Since I do speak several languages, I have more chances to travel and have several international assignments that others could not because they do not know foreign languages.
As you advancing your career, the problems that you face will be much more complex than those that you learn in school. As software engineers, you must draw on many technical and non-technical knowledge to solve them. In school, students always work within the constraints of academic schedule and classroom time so exercises and tests are designed to be solved in a matter of few hours or few days and therefore cannot contain much of the complexity as you must solve in the industry. I suggest that you broaden your knowledge across many areas as much as you can. Carnegie Mellon University is unique as it always gives students experiences in this area through scenarios and learning by doing exercises and these works require the kind of thinking that will help you well in industry.
Of course, nobody know everything so when you encounter issue that is different from what you are taught, you have a chance to learn new things because it forces you to re-evaluate, learn new facts, new concepts and perhaps even change the way you solve problems. That is what lifelong learning is all about; you always learn new things and should never stop learning, no matter how old you are. As university allow student to start something new each semester or each school year and you may forget what you learned previously but never forget how you learn them. “How to learn” is very important and you must keep a habit of continuously learning because technology always changes.
In university, classroom assignments are structured to allow you to work by yourself but in industry you can not accomplish much by yourself. You will need to work in teams to come up with the best solution possible. Many software engineers understand the value of learning but do not yet appreciate the value of sharing information among people that have common interest. It takes time and effort to work together as a team, to learn from each others, to share information with each others but if you put in the effort, you will reap the rewards in the end. Although university creates teamwork among students that promotes discussion to solve problems but it is usually conducted among people with the same field of study. However, in real work, a team may consist of people with different skills in different technical areas. Working with different people with conflicting needs is both exciting and challenging but you must learn to function well in it. For example, the hardware designer wants to build certain equipments, the software engineer prefers to write an application instead, and the business manager wants something fast and cheap, the finance manager says the system is too complex and too expensive. How do you reach an agreement with a group like that? That is why you need to learn more and you will make progress as you learn because life is about learning new things.
As professional engineer, you will have to document your work in reports, design document and emails. You will have to make presentations and discuss things with team members, or managers and customers, etc. You must be good in readings, writing, communicating and if you are NOT good then it will prevent you from any advancing in your career. Successful people must have high energy levels and enthusiasm for their work. They must have the ability to motivate others toward common goals. They must make tough decisions and deliver on their promises. These are skills that come with experiences and learning so you learn as you are progressing in your career, you will make mistakes but as long as you learn, every mistake is a good lesson for you so do not be afraid of making mistake. The key is what have you learn from that.