Software Engineer
Jim Herold
Topics
What do software engineers do
How do I prepare to be a software engineer (my path)
Questions
Engineers write code
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');
}
}
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;
}
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 )
Engineers improve algorithms
Engineers work with customers
Engineers design systems
Engineers push new code to servers
Topics
What do software engineers do
How do I prepare to be a software engineer (my path)
What is the job market like
Questions
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
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
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.”
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
Resources
Topics
What do software engineers do
How do I prepare to be a software engineer (my path)
What is the job market like
Questions
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 |
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.”
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 |
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 |
Q&A