Google software engineer shares what it takes to be a programmer


Iman Suleman

Google software engineer Ebby Daniels describes his Google interview experience as grueling and tedious. Daniels warns Computer Science club members of the four-month-long interview process, but how it can prove advantageous during salary negotiations.

Ebby Daniels, a software engineer at Google, spoke at the Computer Science club meeting on Oct. 6 in Room 1618 to discuss what it takes to become a programmer.
One aspect of being a programmer, during the interviewing process and during the beginning stages of your career, is that the assigned tasks won’t be groundbreaking or innovative, but rather practical and more in the realm of debugging.
“There’s a few things you have to do, except answer a bunch of technical questions that are pretty irrelevant to actual programming,” Daniels said. “So programming as a skill is mostly deciphering code that’s already in an existing code base, and determining what problems exist and how to implement new code.”
One resource Daniels stressed as very important in gaining efficiency in problem-solving was the book Cracking the Coding Interview by Gayle Laakmann McDowell. The book is filled with programming problems and their solutions designed to prepare you for any programming job interview.
“It’s 189 programming problems from start to finish,” Daniels said. “It’s just a slew of problems. You have to learn how to do complicated string manipulation of data structures, and then come up with the algorithm to solve them. It’s just a slew of problems.”
Daniels emphasized the importance of the interview process, and how there’s a sharp difference between interviews at Google and other companies.
“One thing that is vastly different is that it’s extremely long and extremely tedious,” Daniels said. “I started interacting with recruiters at Google on May 26. So from June to August, I was going through just the technical interview portion. And then in September, I was doing my salary negotiation. So about four months you have to spend just interviewing, and you’re not getting paid.”
Not all interviews are as difficult as Google’s, though; simple interview processes also occur, especially when it comes to lower-level positions such as internships.
“I just graduated college, and I got paid $10 an hour to work as a public domain intern,” Daniels said. “I went into that interview, I was in a suit, I was all prepared, I thought it was going to be hard. Then the CEO walks in the office, this dude’s wearing a Hawaiian T-shirt and shorts. And I walked out after about five minutes. He did not care at all, because he knew I was gonna be useless.”

Google software engineer Ebby Daniels describes a time when he used programming to solve a problem outside of work. Daniels was struggling to find an apartment because the apartment prices changed every day. Daniels was able to program a solution in three hours to find an affordable apartment, rather than do six hours of research every day.
(Iman Suleman)

Salary negotiations are also an important part of the interview process in which you have the advantage, especially after a long period of time being interviewed.
“So now, in the Google interview, you’re at the end of the three-month period,” Daniels said. “On the flip side, they’ve also gone through three months of interviewing, so they’re sick of interviewing just as much as you are. You can almost always, at the end of this process, negotiate the highest. They’re gonna lowball you. They won’t just say, ‘Let’s forget this guy and go through another three-month process with some other guy.’ It’s not gonna happen. Always negotiate at the end. Let me extend that further and say always negotiate everything. There’s never been a time where I’ve not achieved a higher salary by at least 10%. The only possible exception is if you’re an intern.”
After the interviewing process, Daniels said that doing lots of menial, repetitive tasks is something to get used to as a programmer, especially in the beginning stages of your career.
“I was doing an internship, I got really, really lucky with the internship,” Daniels said. “They basically sandboxed me and said, ‘Okay, this is a brand new portable system that we want to make. It’s basically stress testing. We want to bombard our server with a bunch of requests as quickly as you can.’ I had to come up with essentially the entire structure. And most importantly, I had to figure out how it interacts with the current system. It turns out, they didn’t use any of it. Like I said, everything you do is pretty much useless.”

However, Daniels said there is still something to gain from the experience, and from the people around you, even if your work isn’t recognized.
“But that was particularly beneficial for me because I got to see design a lot,” Daniels said. “The best thing I can tell you is that you’re gonna have to just annoy your senior developer. Just annoy him all the time. But also space it out. Don’t totally bombard him, but do one annoying day, and one not annoying day.”
If you’re interested in working at Google, there’s a variety of programming languages used for different purposes including C++ for search engines, Java for more updated systems, Python which acts as a glue between all the other systems and is used for small, extremely simple systems, and C#.
“C# is your best bet,” Daniels said. “If you’re planning on working in oil and gas, almost all of them exclusively use Microsoft Stacks.”The problems that can be solved with programming are endless, from improving traffic management to sequencing DNA to fight genetic diseases. Daniels used programming to find a new apartment, bringing the amount of time it would take to find an apartment from six hours of research every day down to zero.

“I had an idea of all the apartments I wanted to check out,” Daniels said. “But every day for the next three months, they’d update the prices. If you go to downtown Houston, and search for apartments, almost all of them use the same underlying system; the same API. In three hours, I had made a system that will go through and check 12 apartments every morning and find the lowest price.”Daniels encourages students and any aspiring programmer to create their own coding projects and get creative in their free time, since on-the-job programming is mainly technical, tedious debugging and problem-solving.
“Stop thinking of programming as like a job,” Daniels said. “Think of it as a way to do less work. Whenever you find something that you find annoying and terrible, in the back of your mind think, ‘Can I program this problem away?’ And you probably can.”