Explore Careers: What does a Software Engineer do? Discussion with an Engineer at Google

With all the hype around Silicon Valley and Tech, Team Learn Educate Discover , met up with a current Software Engineer Google Developers, to try and understand what an engineer’s job is all about. His name is Naresh Rapolu and we had a very informative discussion with him!

Here are our notes from our discussion with Naresh (listen to the podcast below if you prefer audio instead)

So tell me, what is your favorite perk at Google?

For me, free food is definitely the best. I’ve been struggling to cook something, which caused me to eat outside which then causes me to gain weight. So now that I get free and healthy food I don’t have to worry about any cooking. There are around 25 cafes in Mountain View, all serving different cuisines. So one can go and choose whatever they want to eat that day.

Could you tell us a little bit about yourself?

I was born and brought up in Hyderabad, South India. I’ve always been more interested in academics over sports. Even from high school, I’ve always been interested in maths and sciences. I started writing my first codes in classes XI­-XII onwards. I pursued my bachelors in Computer Science and Engineering. After 4 years, I decided I wanted to explore this field a little more. So I pursued a PhD in Computer Science from Purdue University where I worked on large scale storage systems. Companies like Microsoft, Google etc. collect a lot of data. They need to have data centers with thousands of computers for storing this data. Systems that are used to maintain, synchronize the data and make it accessible are fairly complex. There’s an entire science around distributed centres which is developed around this, which is what I did. After my PhD, I joined Google and I’m having a great time!

Is your profile the typical profile for a software engineer at Googler?

So while I would not say that a research background is extremely necessary, typically most software engineers would have a bachelors degree. Research is fairly optional mostly because software engineering is an extremely diverse field. Research helps if you’re developing something new. It helps you figure out what has been done, why a particular software stack behaves the way it does and how it could it be improved. So it gives you a better idea about things, but it isn’t mandatory.

So could you tell us what a software engineer really does?

In the most generic sense, a software engineer writes code to make software. However, any small piece of code can be called a software making its definition extrmely vague. There is one side of software called system software, which interacts with low level hardware, such as CPUs and embedded systems. The other side is called application development, which is where most of the engineers lie. Here, there is typically a user and there are some requirements as to how a user should interact with a particular system. The software is then written which plugs in the system software into what the user wants. Even building a website is more of an application development rather than core system software. Most of the work is in engineering software. Like with any design, when you are building a software there are a number of things which need to be done well in order for the software to function well. That is where software engineering comes in.

Another aspect of software engineering is that If I leave my job and someone else comes in to take over, he/she should be able to take over from me. This is called code maintenance.

Could you describe the kind of problems you solve everyday?

Let’s say you have a web service, which is basically a software which is available online through a website, for instance -­ Google Search. Now, search has a software behind it controlling what it actually does. Such a software will have 2 major challenges.The first will be around the system side of it -­ Google search for instance will get millions of visits every minute. People therefore expect that the functionality is available at all times. The amount of data that needs to be processed to obtain a search result is also huge because of which every search request takes a lot of machines working in the back end. Therefore, there are a host of software services which need to ensure that these machines are always running. Keeping such back-­end services running is one of the most pressing issues for software engineering today.

The other kind of problems is around making life easier for consumers, in companies such as­ Uber for instance. The concept of a taxi service has existed since times immemorial. But now, with technology, this service has become accessible on a mobile phone. Similarly, Google Search makes it possible to access the entire world’s information on a website or a phone. So a software engineer in such cases tries to identify how life for humans can be improved using technology.

Can you describe the kind of activities you do on a typical day?

I’m currently working on the shopping search and express teams. Here, we’re trying to work on two things. One is making the shopping search results more useful for the product. If the system can understand that the person using the system is a teenager, then it can tailor the search results to those of search which is the human aspect of it. First is searching for the product among a number of products. The second is the product with the least cost. The other part of this is the shopping express team which looks at cases where a consumer buys something but the product is placed far away from where the person lives. Google Express helps in shipping that to the person’s home. Therefore, we’re trying to understand human needs and then finding ways to solve for them.

Most of the day goes into meetings, where we’re typically brainstorming on how we can improve existing software so that people find the product more useful. A large part of the day also goes in implementation of whatever we have thought of. Thirdly, we also spend a fair bit of time in ensuring that the product that we have written works and is actually helpful for users over and above existing software.

What kind of people do you work with in terms of their roles and functions?

There are two aspects to this. One is understanding people and their mindset to understand what is out there in the market, what is missing and what do people need. These people are generally called as business operations with whom we regularly keep in touch with. However, typically most of the people that we work with are software engineers. We also work with the marketing team given that finally our product needs to be sold to customers.

What are your working hours like?

So the great thing about software engineering is that you only need to have your laptop to work. With video conferencing, it is also very simple to attend meetings over the laptop. ­It typically doesn’t matter where you attend the meeting from. I generally stay in office from 10AM to 5PM, after which I retain the flexibility to either stay in office or go home. A number of software engineers, especially the ones with families, tend to go home and spend only 6 ­-7 hours in office.

To learn more, you can listen to the full podcast below:

iTunes

SoundCloud

Stitcher

Hope you found the discussion helpful! If you have any questions for Naresh or for LED, you can email us at learneducatediscover@gmail.com or find us on Twitter Learn Educate Discover

Thanks for listening!