Can you tell us a bit about yourself?
Hello! I am William Edward Bailey, III, or WEB3 for short (yes, I chose the right career for my name). I was born in Atlanta, Georgia, and grew up in a small town outside the city called Douglasville. In 2012, I traveled up the East Coast to study in New Haven, Connecticut, at Yale University. I graduated class of 2016, with a combined Bachelor and Master of Computer Science. I now work as a Software Engineer (SWE) at Google under the Search Infrastructure division.
As for hobbies, I enjoy playing video games (Legend of Zelda and Smash Bros), hiking, and talking with friends. I like superhero movies (Marvel) and cheering my favorite sports team (Go Falcons!). Recently, I've become a fan of travelling and taking pictures of my various journeys across the country.
I accepted Jesus Christ as my Lord and Savior when I was 12. Christianity has been a large part of my life since.
What’s your role at Google?
I have worked on a few projects here at Google. In 2013, I interned with the Engineering Practicum (EP) program and worked under AdSpam Engineering Productivity. My manager was developing a release script to automate the process of pushing our binary to production. I wrote some unit tests to ensure the correctness of the tool and then developed a fault injection tool that could simulate several errors and prove an additional level of correctness.
In 2014, I interned as a general SWE intern under the Access and Energy division. I worked on a team that was developing cloud-managed wifi routers. My task was to integrate this service with another product at Google. I worked as a full stack engineer developing the code to request data from the backend, pipe the data through our server, and display the data in our frontend.
I currently work as a Software Engineer on the Search UI Infrastructure team in Mountain View, CA. Our team is responsible for maintaining the Google Web Server (GWS for short). GWS is responsible for processing search requests that come into Google. When we get a request, GWS contacts our backends to retrieve relevant search results, renders the results into an html page, and returns the response to our users. My team focuses on the infrastructure of the server ensuring that latency is low and it is easier for developers to build upon the platform.
One thing that I like most about Google is the breadth of projects. There's something here for almost everyone. If you like Operating Systems, you can work on the Android OS. If you like frontend work, you can develop UIs for our desktop and mobile applications. You can work on web browsers (Chrome), iOS apps, or Android apps. You can work on large, established code bases like Search or newer teams like Assistant. In many ways, it can feel like working at a different company all within Google.
What inspires you to come in every day?
Projects and people are the two words that would describe why I like working at Google.
Within Search, I work on a code base that is massive in scale (~19 years in the making) and continually evolving. The improvements made can affect the lives of billions of our users. Google gives software engineers autonomy of execution and the opportunity to work on meaningful projects. Engineers are empowered to develop ownership over portions of code, spec out design docs, and plan how they execute to accomplish their goals. For example, my team has been working on improving a part of the html rendering system, so that we can decrease CPU cost for rendering and reduce latency for our end users.
Teams here at Google are collaborative and organized around solving problems. My manager and several other members of the team have been extremely supportive, particularly as I was starting out. Whether it was debugging issues together, volunteering to help out with portions of a project I was leading, or explaining the history behind our code base, I have been helped greatly by my peers. My team members are friendly, knowledgeable of the system, and have a passion for coding. All of which makes the team a great environment to work in.
Lastly, I enjoy performing various outreach programs in my 20% time. I have been working with a university specialist to perform Google recruiting back at my Alma Mater. I've been able to go back three times thus far! I enjoy getting a chance to meet students and share my experiences (I'd be happy to chat if you are a student reading this post :). As an alumni
of CSSI, I have enjoyed TA-ing the program and meeting the next generation of CSSI-ers (you may see me if you attend the Mountain View session). As a former intern, I have volunteered with the intern program by mentoring a few interns last summer. I enjoy forming personal connections and am glad that Google has provided a space for me to pursue these opportunities.
Can you tell us about your decision to enter the process?
For most of my life, computer science wasn't on my radar. My dad worked in a security and information management role, so I was well-versed in computers from an early age. However, I enjoyed writing, debating, and public speaking. All throughout high school, my plan was to major in business in college and then go on to law school. During my senior year, I needed a fine arts requirement. I could not take music theory at the time since I didn't know how to read music. However, the Christian private school I was attending counted Computer Science as a fine arts. I took the course and fell in love with the subject. After I got accepted to Yale, I decided to switch my major to Computer Science.
During the summer before college started, I participated in CSSI in Mountain View. It was my first time visiting California and my first exposure to life at Google. Throughout the three-week program, I learned about python and web development. For the last week, I worked on a team to build a calendar web app and presented it to a group of Google engineers.
The program was extremely influential in my career path in three ways. First, it gave me a better sense of how vast Computer Science is. It can be applied to numerous disciplines, from economics to political science to traditional consumer apps. Seeing what Computer Science could be like helped keep me motivated through classes I didn't like as much. Second, it sparked in me a desire to work at Google. Seeing all the free food and engineers made me want to come back next summer for an internship. Third, it gave me greater confidence that I wanted to pursue Computer Science as a major. Because of this, I decided to take several CS courses my freshman year. CSSI gave me greater confidence that I could handle these courses well.
I hope these stories encourage those reading this post who are new to Computer Science, nervous about entering college, or possibly intimidated by peers who have more experience. In my case, the vast majority of my CS experience came in college. Now is the perfect time for you to begin! Focus on doing your best and working hard to develop the foundation and core skills. Opportunities will come in time.
How did the recruitment process go for you?
Through CSSI, I was encouraged to apply for the
Engineering Practicum program for my freshman summer. I got into the program and worked under Engineering Productivity for AdSpam. I received a return offer for sophomore summer to work as a general SWE intern in the Access and Energy Division. For my junior summer, I interned at a different company. I re-joined Google full time after my senior year.
In my case, much of the recruiting process for my full-time position occurred during the internships. Since I worked at Google for two summers, I was able to show my ability to work as a Google engineer. CSSI was extremely helpful in building connections at Google and gaining an idea of what skills I should cultivate in school.
I will share this fun story about how I joined my current team. During the internship of my freshman summer, I attended a Bible study at Google (Google has many different extracurricular activities similar to college). Two of the Googlers who attended were going to be working in a new division at Google. One of the guys told me that he would be interested in having me as an intern if I ever came back. When I returned sophomore summer for my second internship, I joined their team and worked under Access and Energy. After I left, my intern host left the team and came to work under Search Infrastructure. When I applied for a full time position, I initially elected to return to my former team under Access and Energy. My former intern host reached out to me and asked whether I wanted to join him in Search. I agreed and have been working under Search since I came on full time. Although I didn't realize it at the time, my path to Google Search began during my freshman summer!
I like this story because it highlights a lot of what I love about the people here at Google. They look out for each other and are eager to provide opportunities for growth, especially to those who are young and starting out their careers.
What do you wish you’d known when you started the process?
Through CSSI and internships, I was fortunate to have been coached through the process early on. Hence, I didn't have too many major bumps in the recruiting process. However, I can talk about lessons I learned more broadly about interviewing/recruiting.
A friend of mine said it best: Prepare for the interviews as if you were preparing for the SAT. Study. Practice. Study. Then, practice again. Keep working through problems until you are familiar with the general questions that may be asked and have an idea of good strategies for tackling problems. When solving the problems, practice writing solutions on a whiteboard (chalkboards were my favorite alternative). Make sure you plan out your solution before coding. Spend some time explaining your solution, thinking of edge cases, and then write the code. Make sure to test the solution afterwards. Most of all, don't forget to talk to the interviewer! Speak out loud so the interviewer knows what you are thinking and how you are approaching the problem.
Getting people to refer you can help tremendously. Google gets a lot of applicants, so getting a referral helps set your application apart (but you don’t need a referral). If you know someone who can speak to your skills, have them refer you. Also, don't be shy about contacting recruiters to ask about the status of your application.
Side projects are helpful, particularly if you can publish your code on GitHub. It helps to have working examples to show how well you can code. However, don't be too concerned if you don't have time for side projects or hackathons. As I loved to say in school, classes were my hackathons; I spent most of my programming efforts on courses. If you can choose challenging courses that have extensive projects and can get internship experience over the summer, that can help you develop the skills you need.
Lastly, apply early. The recruiting season starts in August/September (depending on region).
Can you tell us about the resources you used to prepare for your interview or role?
Cracking the Coding Interview and the Programming Interview Exposed are two good books for interviewing. In applying to various places, I've seen some of the questions in those books asked.
I also want to stress the importance of classes. They are extremely valuable in teaching you how to code and in learning the fundamentals of Computer Science. Don't skimp on those. I will use an analogy. When you first start off your college career, you are attempting to build a house. Your introductory and intermediate courses are the foundation of that house. You want to make sure that you master the fundamentals and have a strong foundation. If not, your house will be shaky when you build upon it later. Make sure you have the time not just to complete your assignments, but to do well in them. Make sure you understand the concepts in class. Most of all, read your books. Yes, read the textbooks. Don't listen to anyone who would tell you otherwise. Doing the readings was extremely helpful for me in mastering the material that was taught. This is particularly true for history courses, but that would be for another blog post... :)
After you have mastered the fundamentals, consider taking harder courses like Operating Systems, Computer Networks, Compilers, or Databases. Even if you don't plan on working in these areas long-term, it is good to have a breadth of knowledge and to understand systems that you use. If you can handle the math, theoretical courses are a good way to further expand your knowledge.
Do you have any tips you’d like to share with aspiring Googlers?
- Apply to CSSI. It is an amazing program!
- Master the fundamentals. Ensure you have enough time to excel in your CS courses.
- Seek support and guidance. Talk with your advisers. Forge relationships with professors.
- Apply early and get referrals if you can.
I'll end with two pieces of encouragement:
First, there may be many of you about to head off to college far away from home. For myself, I traveled from Georgia to Connecticut and then to California. I was very homesick in the midst of adjusting to new environments, regions, and cultures. As time went on, I became more settled, knew what I was doing and where all the buildings were, and began to build deeper friendships with people. After four years of college, I was sad to say goodbye and leave a place I had come to call home. Know that it will take time for you to get adjusted to college. Be encouraged even during times when things may be difficult.
Lastly, take time to enjoy the journey. Don't be in such a rush to land a job that you miss the incredible opportunity you have in front of you. College is an excellent time to learn new things and meet new people. Yes, work hard. But, also have time to enjoy the resources available at your college and get to know your fellow classmates. Don't worry: Those four years will pass by quickly and you'll be an alumni like me wondering where the time went. While you are there, make the most of it.
Best of luck and enjoy the journey! Perhaps, we'll get a chance to meet one day at Google.
Interested in CSSI? Head to the
CSSI site to learn more and apply today!