2010 Presidential Management Fellowship Program
Are you a graduate student in your last year of school? Are you wondering how to capitalize on that expensive graduate degree, or even how you are going to pay off the loans? Does the economy have you looking over your shoulder wondering when the next round of layoffs will be? Why not work for the federal government? Your country needs you! Use your education and skills, get a better job, and serve your country in the process! Oh, and while you’re at it, maybe you can get the government to pay off some or all of your loans, pay moving expenses, and lots more. Interested? Read on!
What is it?
The PMF program is a highly competitive and highly prestigious leadership program that recruits outstanding gradutes students for a two year, full time, paid federal internship. Its purpose is to source the federal government’s future leaders from the top graduate students in the country.
What are the benefits?
- Good pay: as a PMF, you start off somewhere between the GS-9 and GS-12 pay levels, which in 2009 can be anywhere from about $46,000 to $79,000 depending on where you live.
- Federal benefits: federal agencies offer a wide variety of benefits; each agency offers different things, but you can count on good health insurance at the least. Also, some agencies pay for relocation expenses, pay back student loans, and may offer starting bonuses.
- Accelerated promotion: Typical promotion path could be appointment at GS-9, one year promotion to GS-11, and promotion at 2 years to GS-12.
- Developmental rotations: PMFs go on at least one 4-6 month rotation, often outside their hiring agencies, to pursue special interests and fulfill specific career enhancement goals.
- Individualized training: PMFs are mandated at least 80 hours of training per year; courses will be dependent on the needs of the agency, but can be tailored to an individual’s long term career goals as well.
Who are PMFs?
PMFs are graduate students who will complete a graduate degree sometime in the application year (September 1 to August 31 of the application year). What this normally means is that you should be graduating in the Fall or Spring semesters of the academic year in which you intend to apply. PMFs have a wide array of academic backgrounds and work experience, although in 2009 about 2/3 of the finalists got their degrees in Law, Public Affairs, and Public Administration. What this means for you is that, if your background is something besides those three, you have a great chance of landing a position without too much competition. Academic background is important, but work experience and your own interests are even more so. You should note that becoming a finalist is not a guaranteed job, but if you are diligent and open-minded, you will find something.
What kinds of jobs are there, anyway?
The jobs agencies fill are very diverse and depend largely on the agencies that participate, but you might be surprised at where you might fit in. As you can imagine, budget plays a big role in the federal government, so finance and accounting are always in style. IT, especially in the Gov 2.0 climate, is increasingly important, and the government is always in need of those with good business, project management, organizational leadership, and human resources to keep the government doing what it does. Some agencies use the program every year and recruit large numbers of finalists, and some agencies will try it out for the first time. It’s always worth talking to agency PMF Coordinators ahead of time to see if they are interested or participating.
How do I apply?
To get started, logon to USAJOBS and follow the application instructions for the PMF vacancy announcement. Make sure to print out the nomination form so you can take it to your school. Then contact your school. Your school will collect the applications and screen for basic qualifications, then forward its list of nominees to the PMF Program Office. How easy is that? Oh, and if you’re a preference-eligible veteran, make sure you let the university know; the school has to nominate anyone with a veteran’s preference. The vacancy announcement will be open from October 1 to October 15, and the school has to have the nominations in by October 31, 2009.
What happens next?
Once the nomination deadline passes, nominees are notified (sometime in November) of their status and invited to take the PMF assessment in January or February at one of the testing centers around the country. The exam covers critical thinking, writing, and life experiences. The exam is what determines finalist status, so it is very important to do well. The number of finalists chosen from the nominees is largely determined by cutoff scores, but veteran’s preference can affect the assessment score. Sometime in February or March, those selected as finalists are notified of their status and may begin seeking out federal jobs. A job fair scheduled for the end of March or beginning of April allows finalists to interview with the agencies one on one, and it is not unusual for finalists to have an offer in hand before they leave the job fair (but don’t count on it!).
Where can I find out more?
Visit the official PMF web site. On it you can find more detailed application information and instructions, available PMF positions for finalists, rotational and training opportunities, and lots more. Also, I have collected a great deal of information, anecdotal and otherwise, here on my blog (look for the PMF tag for posts specific to the program).
What if my university doesn’t know about the program?
Start with whoever works with scholarships and fellowships for your university or school, then follow up with the director of your program or dean to get things moving. Many schools have never participated, and they may not know about the program at all; you can help them out by pointing them to this PDF.
Rocking PMF Finalist Data with Google Labs Fusion Tables
I’ve been meaning for a while to show some pretty pictures on the PMF Program, but hadn’t gotten around to actually making the visuals. When I saw the Fusion Tables application in Google Labs, I thought that would be a perfect way to show everyone what the program looks like analytically.
I started this project with one burning question: what kinds of people become PMF finalists and ultimately secure a job? That’s not exactly a quantitative kind of question, so I have to phrase that in more quantifiable ways. First, from where do PMF finalists come, geographically (and by that, I really mean by school)? Second, what are the most common fields of study for PMF finalists? Third, of the 786 finalists that were identified this year, how many will (or have) secure an appointment? Fourth, what are the backgrounds (schools/fields) of those who do secure an appointment? From this list, I can currently answer the first two questions. The other two I can do on a rolling basis, but as there’s still a good deal of time left for the remaining unappointed finalists to find a job, that won’t tell us too much (unless one of the questions has to do with how quickly finalists secure a position…).
Where did finalists come from?
In answering this question, it is almost enough just to know what school the finalists went to. However, we all know that where one goes to school is not always the same as where one was born and raised, but as the public data only includes the nominating university, that will have to suffice. It is instructive anyway, as most college students tend toward schools that aren’t too far from home, plus the distribution looks pretty obvious once you think about it.
To construct the intensity map for this data, I filtered out the schools that had fewer than five finalists (there were lots of these, including my own, St. Edward’s). I did that because the resulting map was a little clearer. Also, I centered on the US even though a number of finalists came from universities overseas. Again, this doesn’t really diminish the result, as you can clearly see a trend in the image below (click it for the public table).
As we might expect, the greatest concentration of PMF finalists originates from an area pretty close to Washington, DC. There are lots of schools in the area that produce federal employees, so this result probably isn’t that surprising.
What did finalists study?
With 50+ distinct programs listed in the public data, I had to prune things down a bit. What I found is that most of the programs had less than a handful of applicants, so I decided to list the top 10. Click on the image below if you want the aggregate data for this pie chart.
Again, this only confirms my earlier-related anecdote about Law and Public Affairs accounting for the largest numbers of PMF finalists. What would be even more useful is the data that I don’t have access to, which is if the top 10 fields of study for applicants is the same as the top 10 for finalists. Regardless, it will be useful in ascertaining whether all those JDs can end up getting a job (some I know already have).
What’s next?
If I get a chance, I will try to make pretty maps and graphs of appointees by nominating university and top 10 appointee fields of study. It might also be interesting to see what I can do with the 98 finalists holding a Veterans Preference, and what the data looks like between participating agencies, schools, and fields of study.
A note on the data and its preparation.
The data I am using is publicly available from the PMF web site at http://www.pmf.opm.gov/FFinalist.aspx. I merely tidied it up for better presentation in Google Labs Tables. As far as I know, it is safe to use as public information.
In preparing the data, I did some cleanup of the university names, since my goal was to let Google geocode them. I realize that many universities make pronounced distinctions between some of the colleges and schools of which they are comprised, but for purposes of geocoding, it should be enough to list Harvard University as encompassing all other Harvard entities that appear in the table (for instance, Harvard Law School). I endeavored to preserve the distinction of campuses in different towns, but I will admit I could have merged two geographically separate schools into one listing. If, after looking at the underlying data from the PMF web site, you feel that I have somehow misrepresented your university, feel free to let me know by posting a comment below.
Walk Score Command Update
Mozilla recently updated Ubiquity (a Firefox extension) to 0.5, and the changes were sufficient to break my walkscore command. So I did what anyone would do: I updated it. The new walkscore command is available at:
If you have Ubiquity installed already (and if not, why not!?!?!?), then just follow the link above and it should prompt you with an offer to subscribe.
PMF RSS Redux
When I wrote the original RSS feed for the Projected Position System a few days ago, I was not satisfied with it. It had a number of limitations that I suggested would only be fixed if I did the parsing myself. Well, after a good deal of time figuring out how to do just that, I have created a new RSS feed that works better. I still used Yahoo! Pipes to serve it up, but it’s coming from my home server (incidentally, I would love to have a mirror for this if anyone is interested).
Enjoy: http://pipes.yahoo.com/aaronhelton/pmfrss
Oh, and for anyone who is interested in my parser, read on.
Parsing the PMF’s PPS Site
For things like this, I use ruby more often than not. It is very powerful and yet concise, plus it has a ton of third party libraries (gems) that make a number of tasks easier.
I had tried screen-scraping the PPS before, but had met with errors due to some badly-written HTML. In the header HTML, for example, there was a closing STYLE tag with no opening STYLE tag. Further down I found an illegal SPAN tag within a TABLE element tag. These two issues caused me a great deal of grief. In the case of the first, it meant that very strict parsers were unable to process the document; in the second case it made finding the desired elements very difficult (as you will see below).
After some effort getting the right set of parsing tools for the job, I settled on Hpricot, since I really didn’t need to interact with the page in any meaningful way. My basic search looks like this (including the beginning of the file):
require 'rubygems'
require 'open-uri'
require 'hpricot'
url = "https://www.pmf.opm.gov/JobSearch/results.aspx"
jobList = Array.new
doc = Hpricot(open(url))
doc.search("//span[@id='lblJobsList']").remove
list = doc.search("//font[@SIZE='-2']../../../tr")
That snippet is sufficient to open the PPS page, sort through the HTML, and return the section of the document that includes the job listings. From there it was a matter of limiting the output (20 rows), cleaning up the data, and grabbing the elements that would appear in the RSS feed. I have it set to run every hour from my home machine. With any luck, it will run there for a while, but with even MORE luck, PMF will obviate this with their own.
If you want the code for yourself: http://heltons.mooo.com/pmf/pmf.rb.txt
Adding RSS to the PMF PPS
[Update: I had to revise the feed links below since I could not rename the improved Pipes feed.]
I decided to take matters into my own hands and drag some portion of the PMF program kicking and screaming into the 21st Century: I made an RSS feed for the Projected Positions System. OK, so that’s a link to the Yahoo! Pipes application, but it does have its own feed.
What follows is my reasoning and methodology, the feed’s limitations (due to technical constraints), and a how-to on RSS for those who aren’t familiar.
Reasoning
I puzzled over (well, ranted about) what I considered missing functionality in my recent PMF Thoughts posting: the lack of RSS for the Projected Position System. It seems that the federal government is only now getting the idea when it comes to providing data that can be consumed in a variety of ways, and the PPS is far behind any modern technology for job listing. It is cumbersome to have to visit the PMF web site and go through their search options just to get a list of newly posted jobs; this is even more tedious when you are actually looking at specific agencies, but my tool doesn’t really address this directly.
What I set out to create was a simple RSS feed of the jobs that had been posted in the PPS to date. The nature of RSS is that new postings show up at the top of the list in whatever program you have that reads the items (see the quick RSS primer at the end of this post if you haven’t used feeds before), and it updates the list by periodically polling for changes. That means you no longer have to visit the site just to see if something new is there; you just point a feed reader at it and let it do the checking for you.
Methodology
My first impulse back in mid-March was to build a screen scraper that would load the positions page and parse out all the listings. Of course, there is nothing technically limiting me from taking this approach (time notwithstanding), but my initial attempts did meet with some technology hurdles that I never really felt motivated to overcome. So I let the project sit around a while, until someone mentioned Yahoo! Pipes.
I had come across Yahoo! Pipes shortly after its initial launch in 2007, but I just regarded it as a plaything that didn’t look very useful. When I looked at it again yesterday, however, I immediately thought of what I could try with it. Pipes has a function that lets you parse regular web pages for content, then use that to build RSS (or other output type) feeds. I tried to use it, but it does not include a way to manipulate page elements (like clicking buttons and submitting forms).
Then I tried something: by going to the plain old job results page directly, bypassing the search filters, I got the ENTIRE listing. But I still ran into a problem. The Pipes module that fetches an HTML page is limited to 200KB, and the results page is over 400KB. Nothing I tried could knock that down in a way that Pipes would accept, and so for a bit I believed the whole thing would be impossible.
I don’t give up easily though. Some searching around turned up another screen to data service that ended up working: Dapper. Dapper allowed me to load the entire page, then select the elements I was looking to include in my feed, name each one, and pass it out into a data format of my choice. Right up front, though, I noticed some limitations (all of these are detailed below), such as feed items that consisted entirely of part of an agency name, some jumbled and munged links, and the sort.
I wasn’t entirely satisfied with the output from Dapper, but I knew I could use Dapper’s output as input to Pipes, so I went back to work. Initially, I chose CSV for Dapper’s output, thinking that CSV would be easy for Pipes to work with. When that proved fruitless, I went home and thought about it some more, hopped on this morning, and decided to try RSS for the Dapper output. Bingo!
With RSS out from Dapper, I could use Pipes to parse the feed and Filter certain items, such as those with no post dates (that is, I wanted to get rid of the orphaned items that included only the pre-linefeed portions of the agency names). I did this by looking to see if the feed’s posted date included either AM or PM, since all of the posted positions included a time. That seemed to work, and what we have is the output you see if you follow the above link.
Limitations
The feed is not without limitations. I worked around as many as I could, but without writing a custom script to parse this, there’s really no way I can fix the feed.
- Missing Agency Names: Some of the agency names were cut off due to the presence of newline or linefeed characters in between the agency and sub-agency names. So, for instance, “Department of the Interior [line break] Bureau of Land Management” shows up in the feed as “Bureau of Land Management.” In most cases, I think this is a minor issue.
- Bad Job Title Links: In cases where the feed title contains multiple job title listings, the feed item link does not work correctly. This is a result of (3), where some positions were merged together in the parsing (it could be missing or improperly-terminated HTML elements for all I know). The links in the body of these feed items do work, however.
- Merged Job Postings: Again, this could have a number of causes, but without writing my own parsing script, I can’t fix it. One of the side effects of this, incidentally, is that a few of the job postings have been lumped together under the wrong agency. I would consider this the most severe of the three issues, but any confusion can be cleared up by following that job title’s link back to the PPS.
RSS Primer
In case you aren’t familiar with RSS, let me provide a bit of info. RSS is a syndication format that pipes machine-readable data around the Web. What it’s really good for (so far) is providing lists of updates to frequently updated sites, such as news sites, blogs, and the like. RSS is an XML format that is readable by programs known as feed readers. There are many readers available, but my favorite is Netvibes (technically Netvibes is not a reader all by itself, it just contains a way to gather feeds into separate feed-reading widgets). You can also use iGoogle if you are so inclined. Anyway, the beauty of RSS is that the feed reader tells you when you have something new, usually by making unread items appear in bold face; it knows the items are new because all items have a posted date that should correspond with the actual publication date of the items in question.
Each feed reader has its own method of adding feeds to check, so you would have to try them out to understand the steps for that particular reader. I haven’t found RSS very difficult once you have a feed address.

