Chapter 4: Aspirations and Passion
Graduate School
I’m sure this is true for any field, but in computer science, the more you learn, the more you realize how much you don’t know. Four years of undergraduate study only allows you to understand the basics. Most people who study computer science continue to graduate school after completing their undergraduate degree. Wanting to leave my hometown, I decided to go to graduate school in Tokyo. When entering graduate school, you typically decide on and join a laboratory. Therefore, which laboratory you join is more important than which graduate school you attend. After researching various laboratories, I came across Professor Satoshi Matsuoka’s laboratory at Tokyo Institute of Technology. Professor Matsuoka is a leading expert in supercomputer research and is also the director and designer of TSUBAME, the supercomputer operated by Tokyo Institute of Technology. Speaking of supercomputers, this field became a topic of conversation when Renho, a Democratic Party of Japan member, asked during the DPJ administration, “Why do we need to be number one? What’s wrong with being number two?” resulting in budget cuts. Just as the Famicom evolved into the Super Famicom, a supercomputer is an evolution of a computer. Having developed an interest in supercomputers, I decided to join the Matsuoka Laboratory. Like undergraduate programs, graduate schools require entrance exams, but unlike university entrance exams, the tests only cover specialized subjects. Since I had been studying my specialized subjects out of personal interest, I passed the exam without difficulty.
So, in May 2009, I became a student in the Department of Mathematical and Computing Sciences, Graduate School of Information Science and Engineering at Tokyo Institute of Technology in Ookayama, Meguro Ward—an extremely long departmental name. It was my first time living in Tokyo since immigrating to Japan. I found an apartment near Senzoku Pond in Ota Ward, where Katsu Kaishu’s grave is located, and that’s where my graduate student life began.
Note: What is a Supercomputer?
As the name suggests, a supercomputer refers to a computer that is far more powerful than ordinary computers—a “super high-performance” computer. Supercomputers can execute calculations in minutes that would take a personal computer hundreds of years. Supercomputers are used in various fields, including weather prediction for earthquakes and typhoons, protein structure analysis, aircraft simulation, and nuclear explosion simulation. In the November 2016 TOP500 ranking1, which compares supercomputer performance, China’s “Sunway TaihuLight” was ranked first, followed by China’s “Tianhe-2” in second place, with American systems in third through fifth places, and Japan’s Fujitsu “Oakforest-PACS” and RIKEN’s “K computer” in sixth and seventh places, respectively. Competition in this field is fierce among countries, truly at a national level. Looking at the November 1996 ranking2, all of the top three positions were held by Japan, and remarkably, six of the top ten supercomputers were Japanese-made. China, which currently ranks at the top, had its highest position at 298th at that time, and even that was an IBM-made supercomputer. If you aim for second place instead of first, you’ll quickly be pushed out of the rankings altogether.
Supercomputer performance is typically measured in FLOPS. This value indicates how many floating-point calculations3 can be performed per unit of time. In 1996, the National Aerospace Laboratory’s NS system, which was the world’s fastest at the time, had a peak performance of approximately 370 gigaFLOPS. The PlayStation 3’s performance is about 2 teraFLOPS4, more than five times the performance of the NS system. As of November 2016, the world’s fastest supercomputer, “Sunway TaihuLight,” has a peak performance of 125 petaFLOPS, which is 60,000 times the performance of a PlayStation and 300,000 times that of the NS system. Given that the peak performance of the CDC6600, the world’s first supercomputer created by Seymour Cray, the father of supercomputers, in 1964 was 3 megaFLOPS5, supercomputers have increased their performance by 41 trillion times since their inception.
Whether it’s a personal computer or a supercomputer, its performance heavily depends on the performance of its brain, the CPU6. CPUs operate in sync with a signal called a clock. For example, the Sotec PC STATION M250, the first computer I bought, had a clock speed of 500 megahertz. This means that the electrical signal switches on and off 5 million times per second. In contrast, the Famicom’s CPU operated at about 2 megahertz. Increasing the clock speed simply improves CPU performance. This is very similar to how increasing an engine’s RPM makes a car go faster. The fact that higher clock speeds release more heat is also the same. Until the mid-2000s, the key to performance improvement was how much the clock speed could be increased. However, due to physical barriers such as heat dissipation issues and the speed of electrical propagation, it became increasingly difficult to push clock speeds beyond 4 gigahertz. From this point, instead of increasing the performance of a single CPU, the technology of bundling multiple CPU cores to function as a single CPU developed. This is known as multi-core CPU technology. The method of increasing the performance of a single CPU is called “scale-up,” while the method of increasing performance by combining multiple CPUs or CPU cores is called “scale-out.” The current era is all about how effectively you can scale out. Today’s supercomputers achieve performance improvements by not just using multiple CPU cores but by bundling multiple machines together. During graduate school, I was researching supercomputer scale-out.
Google can be described as a company that has successfully scaled out and grown to where it is today. In its early days, Google replaced the calculations that typical companies performed on high-performance machines with numerous inexpensive machines, keeping costs down while expanding the range of applications. What I studied in graduate school proved to be very useful after I started working.
Aspiration
Around the same time I moved to Tokyo, Iwasaki-san, who had been my senior in the undergraduate laboratory, also moved to Tokyo. After graduating from graduate school, Iwasaki-san joined Google Japan, the Japanese subsidiary of Google, as a software engineer. He was always friendly to me, and as I listened to his stories, I gradually became interested in Google. One day, I received an email from Iwasaki-san:
“There’s an internship information session on Sunday, May 17 (probably at the Tokyo office), so come if you’re interested.”
On May 17, 2009, about 30 students gathered at the Google Japan office, which was then located in Cerulean Tower in Shibuya. That day, employees gave an explanation about the internship and conducted an office tour. The colorful office had balance balls, a billiards table, games like “Densha de GO!” and didn’t look like a workplace at all. With the desire to work there firmly in my heart, I reluctantly left the Google office that day.
For the internship application, I attached an essay about my Famicom development along with my resume. After about a month since submitting my application, just when I had almost given up, I received notification that I had passed the document screening. I jumped for joy upon receiving the notification, but the real challenge was just beginning. Several interviews awaited me. Google’s software engineer interviews are very hands-on, involving solving programming problems on a whiteboard. You don’t actually use a computer; you solve problems using only the whiteboard while explaining how your program should work. Since the given problems don’t have a single correct solution, what’s evaluated is not just the correctness of your answer but how you think and arrive at your solution. This interview process is repeated 4-5 times, followed by a review by an internal hiring committee, and only then is an offer made. This process doesn’t change even for intern interviews. During the interviews, I struggled with programming on unfamiliar whiteboards. In the final interview, I was given a problem that seemed surprisingly easy, so I thought I’d do well. However, when it came time for the interviewer to ask questions, I couldn’t come up with answers for queries I hadn’t considered. The blood gradually drained from my face as I realized I had been overconfident about the simple problem. I managed to solve the problem with hints from the interviewer, who consolingly said, “It’s okay, that’s a common stumbling block.” That day, I headed home in a state close to resignation.
Internship
About a month after the interview, as I was trying to convince myself to forget about the internship application, the fateful notification arrived:
2009/07/13
Dear Mr. Nomura,
I hope this message finds you well.
Today, we decided to offer you the internship position!
We will be in touch soon to discuss details including the schedule.
This is just a brief notification for now.
〈Recruiter’s name〉
When I received this email, I was over the moon. Even though it was just an internship, I was finally going to work at Google, a place I had aspired to join.
Google’s internships take place over a long period of 2-3 months, utilizing graduate school summer vacations. During this time, interns commute to the office just like full-time employees, receive the same benefits such as health insurance and pension, and are paid a not insignificant salary. Several intern students were assigned to different teams, and each was given a research task by their supervisor. I was assigned to the Google Maps team where Iwasaki-san worked, and my supervisor was Wakasa-san, who had been my final interviewer. Google Maps is developed collaboratively by development teams spread around the world, and there’s a team in Japan as well. The teams are not divided by region where each country’s team creates maps for their own region, but rather by function. Features developed by the Google Maps team in Japan are used worldwide. Also, although it’s not an official language, the basic language for internal communication is English. Of course, conversations between Japanese colleagues are primarily in Japanese, but if even one person in a meeting doesn’t understand Japanese, the meeting is conducted in English, and minutes are written in English even if all participants are Japanese. Even emails between Japanese colleagues were basically exchanged in English. I thought, “So this is what a global company is like.” We frequently communicated with teams in America and China via video conference. Of course, there were many stories about struggles with English, and I heard this episode from someone:
When this person was on a business trip to America, they went to a restaurant. They wanted to order the 13th pizza on the menu and said, “Pizza, thirteen.” However, the waiter didn’t understand, so they repeated “thirteen” several times. Finally, the waiter understood, and they felt relieved. When the pizza was brought to the table, it was completely different from what they had ordered—it was a sardine pizza. The waiter had misunderstood “thirteen” as “sardine.”
It sounds like a joke, but it was apparently a true story.
I can’t go into detail about the feature I was working on during my internship, but it used a technology called “MapReduce.” “MapReduce” is a technology for processing so-called “big data” using thousands to tens of thousands of servers simultaneously, announced in 20047 by Jeff Dean and Sanjay Ghemawat, legendary Google engineers. Jeff, Sanjay, and many other legendary figures who appear in computer science textbooks were working at Google. Google Japan also had many prominent engineers. My fellow engineers were all brilliant, and I learned something new every time I talked with them. I became completely captivated by this stimulating environment. Originally undecided between getting a job or continuing to a doctoral program, by the end of the internship, I had completely lost interest in continuing my studies and was thinking about joining Google. After the internship ended, I received a job offer from Google after going through several more interviews. While others were struggling, I was fortunate enough to avoid job hunting altogether.
The Last Year as a Student
In 2010, I became a second-year graduate student, entering my final year as a student. This year was fulfilling both in terms of study and play.
Since entering graduate school, my main companions had been international students. The circle expanded from international students in my laboratory to those in other laboratories, and eventually, I began hanging out with international students from other schools. My English, which had been poor to begin with, gradually improved as I spent time with international students. Thanks to this, I rarely had problems with English after starting my job.
As for my studies, my research topic was “An automatic parallelization framework for large-scale GPU clusters targeting stencil computation.” In simple terms, it was research on efficient scientific computation on supercomputers. With the help of Assistant Professor Maruyama, who was my advisor, I completed a master’s thesis of about 100 pages and successfully graduated. After my master’s thesis presentation, as a final commemoration of my student days, I decided to travel alone around Europe for about three weeks. In a short time, I visited Moscow in Russia, Istanbul in Turkey, Athens in Greece, Barcelona and Madrid in Spain, and Reggio Calabria in Italy, guided by friends who were living in these places.
On March 11, I was in Athens. After finishing the day’s sightseeing, I returned to my 20-euro (about 2,500 yen) per night accommodation and opened my laptop as usual. While checking the internet news, all the headlines were about the Great East Japan Earthquake. At first, I didn’t think it was that serious, but as I read more news, I gradually came to understand the severity of the situation. I felt terror at the videos being shared one after another showing houses, cars, and people being swept away by the tsunami. After calling my family and friends via the internet, I was relieved to learn that everyone was safe. Since my return to Japan was still two weeks away, and I knew that transportation in Tokyo was paralyzed, I decided to continue my journey. I regularly checked the situation in Japan on the internet. I was encouraged by the sight of Japanese people maintaining order despite the major disaster, with commuters walking home due to stopped public transportation and people forming long lines at convenience stores to buy food.
After completing the rest of my itinerary, I missed my final return flight and spent the night on a bench at Malpensa Airport in Milan, Italy, returning to Japan on March 31. My 16-year student life came to an end on this day.
English Learning Method
My ability to now lead teams and give presentations in English daily is largely thanks to the study methods I practiced during my university and graduate school years. This study method can be divided into four major steps.
First, speaking. It may seem contradictory to speak when you don’t know English, but that’s not the case. No matter how poor your English is, living in Japan surrounded by katakana, you should have unconsciously acquired many English words. During my university days, I often approached international students and foreign professors with my broken English. Of course, my grammar was wrong, and I lacked vocabulary. However, I found that even without speaking correct English, just stringing words together could convey meaning. If you speak earnestly, the other person will try to understand you and ask, “Is this what you’re trying to say?” allowing you to learn live English. It’s exactly the same as when we try to understand foreigners speaking broken Japanese to us. No one ridicules someone for speaking poor Japanese. So, I made it a point to speak English without hesitation, even if it was incorrect. Especially after entering graduate school, since almost all my companions were international students, I gradually improved my English skills by speaking poor English daily.
Second, watching movies. I liked movies and watched various films. During graduate school, I watched the same movies repeatedly to study English. The key here is to watch movies you already know the content of with English audio and English subtitles. Each time an unknown word appeared, I would pause and note down that word. Since I already knew the content of the movie, I could often guess the meaning of unknown words from context. At first, I had to pause repeatedly, so the movie wouldn’t progress much, but if I persevered, the number of pauses would decrease as I moved towards the latter half. By continuing this several times with one movie and repeating it until I memorized the lines, I could make the expressions used in that movie my own. Please try this with any movie you like, as long as it’s in English.
Third, reading books. Besides movies, I read English novels. Since books take time, unlike with movies, I skipped over unknown words. Even if you don’t understand everything, if you continue reading forcefully, you’ll somewhat understand the story. During this time, I read Sidney Sheldon’s “Master of the Game” and “The Other Side of Midnight,” John Verdon’s “Think of a Number,” Louis Sachar’s “Holes,” and various short stories by Philip K. Dick. By reading several novels like this, I increased my vocabulary.
Fourth, learning grammar. Around the time I became able to speak English to some extent on a daily basis, after being surrounded by international students in graduate school, I suddenly realized that the grammar of the English I was speaking was completely wrong. Thinking this wouldn’t do, I bought an English grammar book. I can’t remember which grammar book it was now, but I bought a thin, affordable one available at the bookstore. Since this grammar book was in a workbook format, I solved the problems repeatedly many times. Since I was speaking English daily, I could immediately apply what I learned to practice. By the time I had solved the same problems three or four times, I intuitively knew that I had become able to speak correct English.
Of course, everyone should practice a study method that suits them, but if you want to speak English and don’t know where to start, please consider my study method as a reference. The first step, “speaking,” is the most important. In this day and age, even if there’s no one around you who speaks English, you should be able to find plenty of people using the internet. “Having something you want to talk about” becomes the motivation for studying. Don’t worry about incorrect English; it’s not something to be embarrassed about—on the contrary, making mistakes is the fastest way to improve.
Following Your Passion
Throughout my university and graduate school years, I didn’t focus much on the future. I hadn’t decided on whether to get a job or pursue further education. Rather, I was simply passionate about whatever I was immersed in at that moment. This was true for studying logic circuits, and building a Famicom was also a result of following my interests. I entered graduate school because I wanted to learn more about computers, and supercomputers seemed very interesting. I never considered whether studying a certain subject would be advantageous for employment or how much my future salary would be. The fact that I can continue doing what I love even now is partly due to good fortune, I believe, but the other half is because I always seriously engaged with what was in front of me. If you’re worried about your future, I think it’s important to first find what you love and pour your heart into it. I believe there will come a day when that effort connects to your future.
-
From the TOP500 project’s official homepage (https://www.top500.org/lists/2016/11) ↩
-
From the TOP500 project’s official homepage (https://www.top500.org/list/1996/11) ↩
-
Floating-point calculations… More precisely, the number of floating-point operations ↩
-
From Sony Interactive Entertainment Inc.’s official homepage (http://www.jp.playstation.com/info/release/nr_20050517_ps3.html) ↩
-
From Encyclopedia Britannica’s official homepage (https://www.britannica.com/topic/CDC-6600) ↩
-
The brain, the CPU… Sometimes the GPU in some cases ↩
-
J.Dean, S. Ghemawat (2004) MapReduce: Simplified Data Processing on Large Clusters ↩