If you're seeing this message, it means we're having trouble loading external resources on our website.

If you're behind a web filter, please make sure that the domains *.kastatic.org and *.kasandbox.org are unblocked.

Main content

Senior software engineer: How I got my job and where I'm going

Ram talks about the interview process for software engineers and some of the differences between working at small versus large companies.

Want to join the conversation?

Video transcript

I feel like I had a pretty late start to programming compared to other people I met in college, for example. I was really into math. When I was in high school, I did a lot of math competitions, and I really enjoyed that, and Chess and things like that. I really only got into programming when I started college, so I was kind of a late bloomer, but I feel like as long as you spend the time in college to really learn the material, it doesn't mean that you're behind in any way. To become a software engineer, I would say 95% of the people who are software engineers have a degree in computer science currently. Maybe with the advent of boot camps and such, maybe that number will go down, but it's definitely highly recommended that, if you can, that you major in computer science, yeah, in college. In terms of getting a job, I would say there's two hurdles. The first hurdle is just getting an interview. In terms of that, it really helps to have a name like Caltech on your resume. It opens a lot of doors in that way. You can get interviews fairly quickly. If you don't have a big name college on your resume, or like a big accomplishment on your resume, my advice would be to reach out to contacts who are in the software engineering field because it's a lot easier to get a job if you get a referral through someone. So, that's the first step, right, getting the interview. The second step is actually passing the interview, and the interview is kind of interesting. It's not really exactly like what you study in college by any means. It's often times, kind of common set of problem-solving questions that you can solve within a half hour, and it's usually, you write code on a whiteboard, and you kind of talk about your approaches to a problem to the interviewer. I think it's definitely something that preparation makes a huge deal, like, there's plenty of books, for example, one book is Cracking the Coding Interview. There's plenty of other resources online, and I definitely recommend that you prepare for interviews before you do them because it really does go a long way towards getting the job. After college, I started my first job at Oracle. I was there for two and a half years. I feel like it was largely a beneficial experience for me 'cause, you know, it's my first job. Oracle's a pretty safe place to work in terms of like, you're able to get good experience, but I found that after a while, working at a large company, it's a little bit limiting on your growth just because projects move more slowly, and ultimately as an engineer, you want to work on fast-moving things, so that way you get the experience. Another disadvantage of a big company is that usually a big company has maybe one or two really big revenue streams, so, for example, Oracle would be like databases, and ultimately, you want to work on high-impact projects, and there's only so many spots to work on those high-impact projects at big companies. Whereas, if you work at a smaller company, often times you're going to be working on mission critical stuff, and I think it's important to work on stuff like that, at least to get that exposure, because then that basically challenges you to write really good code that doesn't break in production, and you start to experience all the different failures that can potentially happen out in the wild, and that experience is very valuable, and that allows you to continue to build more challenging things with other companies, or even start your own company. I think ultimately I want to just continue working as an engineer 'cause I really enjoy writing code, but I would say up to this point, my primary focus in terms of like picking my jobs has been purely just monetary, which it makes a lot of sense 'cause when you are coming out of college, you want to make sure you have enough savings and all of that to support your family and all that. So ideally, my next and possibly future jobs I would like to write code for companies or causes that really seek to kind of improve people's lives, basically. It's a powerful profession because you're able to do something and make something automated, and in effect that can kind of do the work of many people, basically. So, if you're in high school, I think, yeah, just any idea that you have, just feel free to just code it. Just translate ideas into code. I think I can't emphasize that enough. So for example, let's say you're into poker or something like that. Then why not just build a poker app, and if you're interested in the various strategies of poker, you could build the app and maybe kind of think about how you could automate your own way of playing poker, like you're own strategy, like would you maybe like 50% of the time fold or raise? Just start thinking about how you would automate things basically, and just go through the mental exercise of thinking about how you would do it, and then, for the projects you really care about, just go ahead and just code it.