Back to Blog

What Kind of Talent Does Microsoft Engineering Academy Seek?

#Microsoft#Testing#Product#SoftwareTesting#ProjectManagement#Career

What Kind of Talent Does Microsoft Engineering Academy Seek?

"Programmer" magazine

Recently, a news report about Microsoft Asia Engineering Academy struggling to recruit suitable developers sparked a significant reaction. After the report was published online, many people viewed it as a sign of Microsoft's arrogance. In fact, as a reporter who happened to be at the interview site, I can say that beyond the author of that news piece overly embellishing figures, its mass media positioning also prevented it from delving deeper into the reasons that President Zhang Hongjiang valued more.

As a newly established Microsoft Asia Engineering Academy, more than a dozen new projects and product developments have already been put on the agenda, requiring a rapid expansion of personnel to over a hundred within a short period. Zhang Hongjiang stated: "Over the past five months, our management team has spent most of its time on recruitment, hoping to attract more outstanding software talent to join us."

Meanwhile, Trend Micro China R&D Center in Nanjing also faced recruitment challenges. On the train from Shanghai to Nanjing, Trend Micro's CTO, Chen Yifen, agreed to double the number of R&D personnel at the Nanjing R&D Center. Facing such an opportunity, Lu Jianfeng, the head of the R&D Center, was both excited and anxious, as recruiting so many excellent talents in a short time presented considerable pressure. To this end, he specifically invited several Senior VPs of R&D and Amy Ma, Global Product User Interface Director, from headquarters to boost morale and share their experience.

Many people were puzzled by this: With so many developers in China, couldn't they find just a few dozen suitable candidates?

Of course, the pickiness of these international large companies is a significant factor, as they all adhere to the principle of "better to have nothing than to have something inferior." However, once we understand the demands of these companies, you'll find that many people aren't failing due to the "Microsoft interview questions" widely circulated online, which supposedly test IQ, but rather because of a lack of many obvious fundamental knowledge points. Taking a moment to analyze this carefully might reveal a better path for self-improvement for one's future.

Solid Fundamental Knowledge is Crucial; There's a Vast Difference Between Knowing How to Code and Understanding Coding

Consider this: Can you differentiate between programming in C# and understanding C# programming?

In fact, there's a considerable difference between being able to write C code and truly writing a C program. This isn't to say that the programmer's code is buggy or won't run, but rather that the overall architecture of the program is flawed. A software design engineer should clearly understand the caching requirements of the code they write, and the demands it places on the CPU and GPU, all of which should be very clear in their mind when they are writing the program. If one doesn't have a thorough understanding of the entire system, they won't be able to answer many interview questions. Zhang Hongjiang said: "Many people simply use a language purely as a tool, but the qualities required for product development extend far beyond that."

Current university computer science curricula are too fragmented, failing to deliver knowledge to students in a systematic way. Therefore, these courses need to be integrated in teaching. Learning computer science should be like learning mathematics, with each concept building upon the last, clarifying the entire system, and treating software development as a discipline rather than just a tool. Of course, training engineers using methods meant for scientists can also lead to problems; some might lean towards abstract concepts and disdain things like memory management. Zhang Hongjiang said: "I've seen many masters at Microsoft, and their brilliance lies in their understanding of systems, which is why they can write such elegant programs." Therefore, Zhang Hongjiang suggests that current students should systematically study computer science courses, integrate various concepts through understanding, and even practice scattered knowledge from textbooks through projects.

Strengthen the Software Engineering Mindset

When software engineering is mentioned, different people have different ideas. For product-development-centric organizations like R&D centers, software engineering is not just academic terms like CMM or quality system certifications, but rather an engineered development process. This means software designers need to understand how to transform software requirements into software features, how to further break down features into modules, and how to estimate the time and priority required for developing each module. They need to be very clear about which features are essential – without which a product cannot be called a product; which characteristics are particularly appealing to users; and which must be abandoned under tight deadlines.

Liang Guoping, Global Executive Vice President of Engineering and Information at Trend Micro, stated that there are specialized management processes within their global R&D system. An idea must first be transformed into a market requirements document, the overall market share and Trend Micro's proportion must be evaluated, product specifications must be determined, project managers create project plans, product design plans, and test plans, and an evaluation is conducted after product development is complete. Throughout this entire process, coding time only accounts for about 1/6 of the project duration.

Zhang Hongjiang said: "Today's product development involves large-scale engineering; it's impossible for one person to have a complete grasp of the entire program. Therefore, it should be approached with a software engineering mindset. Every software designer not only needs to know what they need to do but also understand their role in the overall software development process, how to collaborate with colleagues, and jointly solve problems. The concept of an 'architect' should be integrated into the entire process at the appropriate time."

Cultivate Teamwork Awareness

During interviews, interviewers intentionally probe candidates' evaluations of their surroundings and people, from which their teamwork awareness can be discerned. Microsoft Research Asia once encountered an incident during its early recruitment: a superior and a subordinate from the same company applied simultaneously. Without either knowing the other was there, the interviewers separately asked them to evaluate each other. The superior heavily criticized the employee, and the employee heavily criticized the boss. Ultimately, the superior was rejected, and the employee was hired, primarily due to an urgent need for talent. However, this employee later encountered problems collaborating with other team members and eventually resigned.

For students fresh out of school, this awareness is often weak. Some software development experts have created many standalone software applications in school, but this often showcases individual heroism. In a company, however, collaboration with others is essential. R&D centers highly value whether an individual's personality is too strong to cooperate with others. For example, if someone offers a suggestion on something they designed, they might perceive it as criticism, which undoubtedly increases the difficulty of collaboration. Lu Jianfeng said: "Students entering a company need to strengthen their team spirit. Trend Micro's upcoming Million Program Contest requires teams of 3-5 students to participate for this very reason."

It's important to emphasize that excessive self-confidence can also lead to a decline in teamwork ability. Lu Jianfeng shared an anecdote: several software engineering master's graduates joined the R&D center, brimming with self-confidence. During projects, even when they found some tasks difficult and were still learning many things, they didn't communicate with their manager. Consequently, they failed to complete the work, causing project delays, which is also a manifestation of a lack of teamwork ability.

Teamwork also encompasses communication skills. Especially for software R&D centers of multinational corporations, multi-regional collaborative development is not uncommon. Trend Micro Nanjing once co-developed a product with an R&D center in the United States. Due to time differences, both sides could develop in shifts, potentially halving the development time if things went smoothly. However, the most critical factor is communication; if a single issue isn't communicated effectively, one party might end up wasting an entire day.

Excellent Project Managers and Test Engineers Are Hard to Find

In the recruitment efforts of these R&D centers, many vacancies are not for development engineers, but rather for project managers and test engineers.

Due to the scarcity of standardized product development companies in China, competent project managers are few and far between. For developers, managing people isn't inherently difficult, but Chinese developers are more accustomed to taking direction from superiors. For project managers who don't have HR authority, leading a development team becomes a significant challenge. Currently, many project managers at Microsoft Asia Engineering Academy are experienced Chinese professionals who have returned from Microsoft's headquarters in the United States.

The shortage of testing personnel also frustrates many R&D centers. In China, software test managers are almost negligible in number. Furthermore, programmers haven't fully embraced software testing as a profession; they generally perceive testing as merely following a set procedure to find bugs. In reality, that's just the test execution phase. A true test engineer must be able to design various testing tools and use them to test the developed software. "Test personnel at Microsoft Engineering Academy face work that is absolutely interesting and very challenging," said Zhang Hongjiang.

In fact, many large companies are looking for test engineers. If development engineers can successfully transition, their future career prospects are very promising. The acting manager of Trend Micro China R&D Center's testing department, who previously served as a development department manager, stated that development eventually involves a lot of repetitive work, and what one learns is often just more APIs or network protocols. In contrast, testing offers no fixed procedures or processes to follow, providing greater room for growth. Testing a program without a certain level of development expertise makes it very difficult to identify problems. To address this, Trend Micro China R&D Center has collaborated with Nanjing University's School of Software to compile their experience into textbooks and establish a specialization in software testing.

Seize Opportunities and Improve Capabilities

In fact, this issue should be viewed within a broader context: with the development of global industrial integration, China's software industry is presented with increasing opportunities, and the demand for senior software talent is growing. Concurrently, domestic R&D centers will also proliferate, and Microsoft's investment in product development naturally goes without saying. Lu Jianfeng also stated: "R&D holds a high position at Trend Micro; our CEO, Steve Chang, himself says he spoils engineers, and our annual R&D budget of several million US dollars is rarely cut."

Looking ahead, for China's software industry to develop, it must excel in software product development, which requires a large number of programmers adapted to product development. Not only are Chinese software companies expanding their recruitment,