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.

Sources

  • Blogs of Prof. John Vu, Carnegie Mellon University