Intro to Software Engineering

Software engineering refers to the field of using computer science concepts to build softwares and applications. It's an evolving industry with a ton of new ideas and exciting problems, and there's no better way to learn about the industry than to start coding!

Jeff Xu

8/5/2021

Key Roles

Software Engineer - write, debug, maintain, and test software to perform certain tasks in order to solve a problem outlined by current project or company goals.

Data Scientist - responsible for the collection, cleaning, and analyzing of data. Duties vary according to the industry/company and may include experimental frameworks for product development and machine learning with the aim to lay a strong data foundation for robust analytics to be performed.

Security Engineer - responsible for planning, implementing, managing, monitoring, and upgrading security measures for the protection of the organization's data, systems, and networks.

Product Manager - responsible for guiding the success of a product and leading the cross-functional team that is responsible for improving it. They play a managerial role and is the person responsible for defining the why, when, and what of the product that the engineering team builds.

Job Search

Companies

Almost all companies have a need for software engineers. Here are some of the biggest employers of college graduates:

  • Amazon
  • Google
  • Facebook
  • Microsoft
  • Apple
  • Capital One
  • Adobe
  • Hulu
  • IBM

There are many other companies in the field looking for software engineers. Be sure to turn on your job alert in LinkedIn and check sites like Glassdoor frequently.

Recruiting

Software engineering internship and new grad recruiting typically start around late August/early September, and last until January/February of the following year, with some jobs still open in March or April.

The first step in a software engineering application is to submit an online application with your resume and (sometimes) portfolio. Be sure to do personal projects or participate in hackathons to fill out your portfolio. After the application is received, most companies will send you a coding challenge. These are timed challenges with basic to intermediate coding problems meant to test a candidate's basic competency. If you pass the coding challenge, the final step in the process is to participate in 1 or more rounds of interviews. These interviews are typically conducted by an engineer at the company, and you could be asked to write code on a whiteboard or even make fully functional software.

Read more about the software engineering recruiting process with:

Cracking the Coding Interview: 150 Programming Questions and Solutions

What Should You Know?

In the job, you'll need these skills everyday:

  • Git (every day)
  • Programming Language (C, C++, Python etc.) (every day)
  • Google (look up things you don't know)
  • Manuals of programming languages and frameworks
  • Comfortable asking smart questions

Career Mobility

New hires stay in starting SWE role for ~2 years

From there they have a couple of options:

  • Switch to a different team within the company
  • Become a Senior Engineer, a mentor to other engineers
  • May also start spearheading projects
  • Become a Manager, in charge of making decisions for your team’s product/service
  • Become Product Manager, a client-facing position to decide and drive products based on customer response

Frontend vs. Backend

If you've been lurking around the job sites, you may notice posts for jobs like "Frontend Developer" or "Backend Engineer Intern." Here's what they mean:

Frontend

You can think of frontend as everything the users see. You will be working on websites and application interfaces that users can interact with. Some of the key frontend technologies include:

  • HTML
  • CSS
  • Javascript
  • React
  • Angular

Backend

You can think of backend as everything that the users don't see, but make the application work correctly. You will be working on the logics and models of the application. Some of the key backend technologies include

  • Node.js
  • Ruby on Rails
  • Django
  • Flask

Full Stack

You may also see roles labeled "Full Stack." This means you will be working with both frontend and backend technologies.

A Typical Day

8:00 AM: Wake up

8:20 AM: Commute to office

8:40 AM: Check Calendar For Meetings

9:00 AM: Report to Stand-up

9:10 AM: View team tickets and uncompleted tickets from day before

9:20 AM: Choose a Ticket and begin coding for the day

12:00 PM: Order lunch or eat catered lunch by company

1:00 PM: One on One with Manager

4:00 PM: Push code to repo for peer review.

4:30 PM: Close any tickets that were completed for the day

5:00 PM: Head Home