Salary charts & Projection tool
Some quick background, I am putting together a non-profit whose goal is to provide objective, rational career guidance to high school/college students, with the aim to solve what I see as a pretty big problem in the American educational system: our current career guidance is more focused on how to get a job on your chosen field, rather than what field should you choose in the first place?
Mid-ranged goals involve setting up programs where students can “shadow” people who work in a field they are interested in so that they can see what those types of jobs actually entail. Short-term, the goal is to put together some informational resources that students can use to help guide their decision a little more rationally.
One of these information resources is a database that uses data pulled from the Bureau of Labor and Statistics, to tell you
What range of salaries can you expect in a given career?
What salary you can expect at any given age in a career.
How many jobs are actually out there in any given career?
Is there any additional information you would find useful when trying to determine a career?
Are there any careers/categories of careers that you can’t seem to find on this list?
Is any part of this information confusing or poorly explained?
Anything else you can think that might improve this.
Are you familiar with 80,000 Hours, which provides career guidance with an emphasis on earning power?
The two seem to serve different purposes. I experienced some frustration with 80,000 Hours because I really just wanted to see numerical salary distributions but got lots of words and blog posts instead. I could have set up an advising session, but it felt 1) Cumbersome because I’d need to set up an appt, follow up, etc. and 2) Awkward because I wouldn’t trust their judgments to a great extant; they hadn’t provided sufficient evidence of their expertise for me to trust their opinions, but I would have trusted them to accurately report data that they had compiled.
Edited to remove word salad.
I haven’t heard of them before but that looks like good stuff.
There’s also Cognito Mentoring, a project Jonah Sinick and Vipul Naik worked on for a while, plus its associated wiki. You can read about why they chose to move on from the project. One idea would be to revive their project and fill gaps in their existing knowledge base with cool tools like this one.
There is a pretty big issue here in that your statistical data is backward-looking and the choices of the high school students will matter 10-20-30 years in the future when the employment (and salary) landscape might look very different.
Maybe the Bureau of Labor Statistics’s dataset includes data for past years. If Nanashi’s tool allowed users to flick between the (inflation-adjusted?) data for different years, that’d illustrate vividly how salary trajectories can fluctuate over time.
Two obvious downsides: this would of course make more work for Nanashi, and past fluctuations are unlikely to be representative of future fluctuations.
I don’t think colleges put anywhere near enough time and resources into, as you say, “how to get a job on your chosen field.” Professors don’t have the background to really help job-seeking students who don’t want to be professors. Just telling students the basics of networking could be of great value to many of them. Summer internships are a huge deal now for students who want to go into business. Work visa issues can be a big deal for many international students. I’m an econ professor at Smith College.
I’m thinking more at the high school level, but I think you are correct.
In the United States the kind of job you can get is strongly correlated with the college you graduate from and to a lesser extend your college grades, so high school students (especially before they determine what college they will go to) face enormous uncertainty over their future job market value.
I would be very curious about the average and quartile SAT scores (on percentile basis) for each job and job category. This may also let high schoolers predict their future earning potential and job fitness at an earlier age.
In my experience, at the under-grad level, the college you go to doesn’t really matter (and especially your grades). I know that when I am hiring, I personally spend exactly 2 seconds looking at what school someone went to (and exactly 0 seconds looking at their grades).
It may be different at the post-graduate level though.
Yes, I suspect the elite-college job premium comes less from that mechanism and more from (1) more-skilled students applying to higher-ranked colleges, (2) unofficial/semi-official cumulative advantage processes whereby current students at elite colleges benefit from past elite-college graduates becoming elites in external social networks, and (3) elite colleges having better official career services like interview practice sessions, job databases, and careers fairs.
I think the undergrad college matters, but on a three-bucket basis :-) The buckets are (1) the top tier; (2) the very large middle; (3) the bottom of the barrel.
I like the graph that shows salary progression at every age. Often career advice just gives you the average entry figure and the average and peak senior figures, which kinda seems predicated upon the ‘Career for life’ mentality which locks people into professions they dislike. Suggestions, to do or not do with as you see fit, no reply necessary:
Ability to compare multiple jobs simultaneously. Make a note saying the graph will appear once you pick a job, or have it pop up by default on a default job. Center the numerical figures in their cells.
Make the list of jobs and/or the list of categories searchable and associate search keywords to jobs. For example, if I want to find ‘Professor’, it seems to come under postsecondary teachers, which wouldn’t have been something I would have thought of without trawling the list of educators, but I would have found it if I could search by ‘Professor’ and get the result returned.
‘Actuaries’, ‘Statisticians’, ‘Mathematicians’ seem to have a duplicate entries. Check database for other duplicates by querying for where job names coincide. Have the graph update to say which job you’re currently looking at, so the user can be sure it’s updated. When hovering on the graph, have the box say e.g. ‘Age 40’ rather than just ’40′ to make it obvious what ‘40’ refers to. When hovering on the graph, have the order of the figures in the box correspond to the order on the graph, i.e. give the upper, then median, then bottom figures rather than opposite as it currently is. Track down the figures where you don’t have data, or establish that there is not enough data, and let the user know which is the case so they know the provenance of researched or omitted figures.
In general, I think a lot of the time the user will want to come in from an angle of having relatively specific jobs in mind and going from there, rather than working from broad categories to increasingly specific jobs. I’m not immediately sure if or how this should cash out into specific suggestions, though. But maybe something to bear in mind while you’re developing the product. Perhaps you could have a mode like the current one and a ‘wandering’ mode where you start with a specific job then have it compared and linked to related or similar jobs (where the relational and similarity data would have to be put into the database somehow). Maybe a graph interface with nodes?
One thing I was thinking about on this note was, comparing the “true cost of post-graduate education”, in other words, you choose a job that will require X years of post-grad, and then you choose a job that doesn’t. And it will compare lifetime earnings.
Good idea.
Good catch. From looking it seems like the BLS statistics (which is what this polls from) has duplicate entries that have the same info but separate ID codes. Government efficiency right there. I’ll rewrite the script to scrub these out.
What specifically did you mean here?
I think the big problem with trying to determine “related jobs” is that, more often than not, in the actual job market, the relationship between similar jobs is in name only. If I’m trying to hire someone for sales, someone who has a lot of marketing experience probably isn’t going to be a great candidate, even though “sales” and “marketing” seem to go hand-in-hand.
What I mean is if you have the resources (time, energy, etc.) to do so, consider trying to get the data where the script returned ‘0’ values because the source you used didn’t have that bit of data. But make it clear that you’ve done independent research where you find the figures yourself, so that the user realises it’s not from the same dataset. And failing that, e.g. if there just isn’t enough info out there to put a figure, state that you looked into it but there isn’t enough data. (This lets the user distinguish between ‘maybe the data just wasn’t in the dataset’ versus ’this info doesn’t even exist so I shouldn’t bother looking for it.)
Sure it would again be more resource-intensive, but I was thinking you could figure out yourself which careers are actually related, or ask people in those fields what they actually think are the core parts of their job and which others jobs they’d relate it to.
Nanashi, this actually looks really cool. I initially thought that the entire functionality of the tool was contained within the “Job Categories” table and didn’t click on the blue links until I had written the below because I expected them to be from Wikipedia or something similarly useless. My top bit of feedback is to make the functionality of the links clear (so at least people know to click on one!) I’m preserving my original thoughts for reference below the dashed line. Current thoughts:
Quartiles are good; I would be curious about deciles as well.
When I mouseover a line on the salary vs. age graph, the numbers are shown with the lowest salary on top. This is visually disconcerting as the lowest salary line is the bottom-most one on the graph.
My point about how many years the data is drawn from (see more detail below) is still relevant.
It’s a bit confusing that the y-axis on the salary vs. age graph rescales to the occupation, especially since the lines are shown “rising up” from the x-axis. If I see the lines go up, it unintuitively does not mean that the salary is higher.
There seem to be lots of duplicate categories at the “Individual Job” level, so less unique rows fit on a screen. Might be an easy way to filter these out.
I’m confused whether “entry level” means “no degree” and “post-grad” means “bachelors”, or whether entry level is bachelors and post-grad is if one has a graduate or doctorate. (I have seen many jobs that require a bachelors referred to as “entry level”.
It would be nice to have a link on the “Individual Jobs” level to the definition of each job category used by the Bureau of Labor Statistics. (For example, I don’t see why Chief Executives get paid lots more than Top Executives, and a description may resolve my confusion.)
Overall, great work and thanks.
Thanks for doing this; some thoughts:
How many years are you taking this from? Larger n makes things more robust but makes the data less relevant to the current job market. Larger n also necessitates inflation adjustment. May want to say if you’ve done this or not. Fine either way, but good to know so someone doesn’t double-adjust or fail to adjust.
I’d like to know the salaries of the top and bottom deciles for each job. Yes, data is harder to get, but would be nice to be able to convert competence-delta (relative to others in similar jobs) into an income delta. Perhaps especially useful for people with spiky competence profiles.
I don’t really know why i would care about the Category ID. It seems to be an unnecessary column. It is also confusing that it starts at 11 (not 1) when I sort in descending order.
I initially misinterpreted the “Entry Level Jobs” and “Post-Grad Jobs” as salaries (for long enough that i wondered whether something had gone screwy with your tool.) I don’t know if the failure mode of not reading header text is common or not; if so, may want to display units or something in the table for clarity.
Thanks for the feedback! Some specific notes:
I’ve gotten a few pieces of feedback on this. This is the default for how the chart generator API I’m using creates the legend. I’ll have to go in and update the code on that to reverse them.
Do you mean like when you are looking at Job A, and then move over to look at Job B? If so, would it be more useful if the graph just consistently showed, say, $20,000 a year as the minimum and, say, $200,000 a year as the maximum, regardless of occupation? (Or any other arbitrary min/max)
This is an annoying quirk of how the BLS quantifies different positions (i.e. many positions have two separate ID codes but the same underlying data.) Version 2 will purge any redundancies like this.
I could be more clear on this. “Entry level” means “no degree or bachelor” and “post-grad” means “masters or doctorate or equivalent”.
This has been updated. See below for further explanation:
This currently pulls from 2014 data. Version two will have the option to pull from several years and also will include a timeline to show whether salaries for a job are trending up or down.
The “High Salary” and “Low Salary” from the individual job breakdown is actually the 90th decile and 10th decile, respectively. I just didn’t scale those according to age in the chart itself.
Good point. At one point I had intended to use the category ID to link to the BLS’s definition of the job. But then I forgot! I have updated this. I should probably have the field itself be something more useful than the ID though.
I’ve updated that to be more clear
Just wanted to give you a shoutout. This is a great idea! And yes, has valuable non-overlap with 80k.
edit 1: forgot to say—if you can find data on the effect of a entering a job, that may be particularly useful. I have yet to come across such a data set, but look for one occasionally. For example, a highschool student may see your data and say wow, an Estimator has it good. Yet, estimators often have to have experience in other construction occupations first. So, if there is data from which you can select the population of high school students who have entered jobs, you can control for those factors.
Cool, glad to hear of the improvements.
Yes, and I think that would work.
I was planning on doing similar work for my next, next project. I love what you’re doing and agree with the mission (although, I think both the “which career” and the “how to get the career” are about equally taught, and horribly so).
As far as this specific implementation goes, I can tell you what I’d like for my clients. I’d rather have them start with a target income, then only consider jobs above that income… I believe BLS has ways to filter by the salary number, rather than job title, and I think it’s essential for what you’re trying to do.
If you click the Average Salary column, you can sort in ascending and descending order.
It’s funny you mention that, that feature is actually built into the tool, it’s just I hadn’t written a user interface for it yet. I got your message as well, let’s set up some time to talk.
The roadblock I came up against was how to return results that are useful. Many desirable-at-face-value careers (e.g. Artists, actors, etc.) have pretty high 90th percentile salaries but low average salaries. Is it useful to show people something that’s possible albeit unlikely? One implementation I had toyed with was showing the number of people at that position actually making that kind of money.
What if you calculated the expected value for each position? That seems like the most accurate representation of what you’re actually trying to capture.
Iff you have a uniform prior over your earning potential relative to those of others in the same job or job category.