1 of 22

Software Engineer

Jim Herold

2 of 22

Topics

What do software engineers do

How do I prepare to be a software engineer (my path)

Questions

3 of 22

Engineers write code

4 of 22

Engineers solve problems

import java.io.*;

import java.math.*;

import java.util.*;

class GFG {

static void towerOfHanoi(

int n, char from_rod, char to_rod, char aux_rod)

{

if (n == 0) {

return;

}

towerOfHanoi(

n - 1, from_rod, aux_rod, to_rod);

System.out.println(

"Move disk " + n + " from rod "

+ from_rod + " to rod "

+ to_rod);

towerOfHanoi(

n - 1, aux_rod, to_rod, from_rod);

}

public static void main(String args[])

{

int N = 2;

towerOfHanoi(N, 'A', 'C', 'B');

}

}

5 of 22

Engineers solve problems

boolean solveNQueens(int[][] board, int col)

{

if (col == N) {

for (int[] row : board)

System.out.println(Arrays.toString(row));

System.out.println();

return true;

}

for (int i = 0; i < N; i++) {

if (isSafe(board, i, col)) {

board[i][col] = 1; // place the queen

if (solveNQueens(board, col + 1))

return true;

board[i][col] = 0;

}

}

return false;

}

6 of 22

Engineers create algorithms

Given a list (possibly big) of numbers, create a list of steps to put them in sorted order.

First Pass

( 5 1 4 2 8 ) → ( 1 5 4 2 8 )

( 1 5 4 2 8 ) → ( 1 4 5 2 8 )

( 1 4 5 2 8 ) → ( 1 4 2 5 8 )

( 1 4 2 5 8 ) → ( 1 4 2 5 8 )

Second Pass

( 1 4 2 5 8 ) → ( 1 4 2 5 8 )

( 1 4 2 5 8 ) → ( 1 2 4 5 8 )

( 1 2 4 5 8 ) → ( 1 2 4 5 8 )

( 1 2 4 5 8 ) → ( 1 2 4 5 8 )

7 of 22

Engineers improve algorithms

8 of 22

Engineers work with customers

9 of 22

Engineers design systems

10 of 22

Engineers push new code to servers

11 of 22

Topics

What do software engineers do

How do I prepare to be a software engineer (my path)

What is the job market like

Questions

12 of 22

How to prepare to be a software engineer

Sample programming languages and get a feel for coding

Take undergraduate courses

Get an internship or research experience

13 of 22

Sample programming languages

Find a book or website and learn a new programming language

Get a feel for what programming is like and how learning new things in this space works

I took my first programming class in High School and got a D

14 of 22

Take undergraduate courses

Core courses: Intro to programming, Data structures, Algorithms

These classes will kick your butt and some professors can be tough

I had legendary Prof. Laszlo

“Careful. To anyone taking any of his classes, tread lightly. This is a teacher who feels it is your duty to learn the material and not his duty to teach. His lectures are disorganized and sometimes hard to follow. Simple concepts can easily be muddled and confused... and that is if you read the book. Otherwise, you will be completely lost. He does not hesitate to give confusing questions (sometimes strangely worded) that often do not coincide with similar, yet vastly different questions in the book. He is hard and yet seems deceptively easy. He will insult the entire class if the class does not perform to his expectations. This can be very discouraging to the point of completely dropping out of a CS major. Tread lightly, do your best, and may God have mercy on you.”

15 of 22

Get an internship or research experience

Learn what being a software engineer is actually like (when I was in undergrad I thought I wanted to build video games)

Grow your skills, resume, and social network

I did an unpaid internship at JPL for a year

I did a summer research session at Harvey Mudd

16 of 22

Resources

17 of 22

Topics

What do software engineers do

How do I prepare to be a software engineer (my path)

What is the job market like

Questions

18 of 22

Software Engineering Career

BLS has an annual outlook on all kinds of different careers like Software Developer.

Quick Facts: Software Developers, Quality Assurance Analysts, and Testers

$130,160 per year

$62.58 per hour

Bachelor's degree

None

None

1,897,100

17% (Much faster than average)

327,900

19 of 22

Software Engineering Career

“Software developers, … typically need a bachelor's degree in computer and information technology or a related field, such as engineering or mathematics. Computer and information technology degree programs cover a broad range of topics. Students may gain experience in software development by completing an internship, such as at a software company, while in college. For some software developer positions, employers may prefer that applicants have a master’s degree.”

20 of 22

Software Engineering Career

There are signs of concern right now that don’t align with the BLS outlook.

“Once heavily wooed and fought over by companies, tech talent is now wrestling for scarcer positions. The stark reversal of fortunes for a group long in the driver’s seat signals more than temporary discomfort. It’s a reset in an industry that is fundamentally readjusting its labor needs and pushing some workers out.”

Occupational Title

SOC Code

Employment, 2023

Projected Employment, 2033

Change, 2023-33

Employment by

Industry

Percent

Numeric

Software developers, quality assurance analysts, and testers

1,897,100

2,225,000

17

327,900

Software developers

15-1252

1,692,100

1,995,700

18

303,700

Software quality assurance analysts and testers

15-1253

205,000

229,200

12

24,200

21 of 22

Metropolitan area

Employment per thousand jobs

Location quotient (9)

Annual mean wage (2)

84.60

7.75

$ 199,800

40.31

3.69

$ 182,650

36.54

3.35

$ 164,130

34.65

3.18

$ 181,220

28.96

2.65

$ 120,260

23.29

2.13

$ 148,480

22.99

2.11

$ 132,300

22.12

2.03

$ 125,970

22.07

2.02

$ 141,390

21.74

1.99

$ 132,500

22 of 22

Q&A