How to Become a Government Data Scientist
If you’re currently in government doing something else
This is my personal take, not an official statement from my employer.
One of the most common questions I get is how to get more technical in government. This question typically comes from early or mid-career civil servants and government contractors. They want to transition from tasks like writing, research, or data analysis in Excel to data science and machine learning while still working for the government.
I like getting this question because it's well defined, the answer might be useful, and I feel qualified to respond.
To successfully transition, you'll likely need to combine these strategies:
Doing technical things at your current job
Teaching yourself, or doing some combination of self-directed learning and formal education
Actively managing your career in terms of where you apply, what you do when you’re there, and when you decide to leave
More on all of those later. But first, a story.
My First Data Science Job
I started my first data science job just eight weeks after completing my first Python Coursera class. I didn’t have to pass a coding screen. I didn't know how to use git. I barely knew how to write a function.
However, I had a decade of data analysis experience. I’d written for and briefed senior military folks. I had a PhD in public policy and a lot of coursework in statistics. I’d switched my work tasks into Python, and I’d done a small personal project in Python as well.
The company that hired me was a big consulting firm. It was on my first project there that I actually learned to code – because, as the only data scientist around, I had to. I learned a lot of Python on this project by transitioning current workflows to Python and automating out some new ones, including writing a module which simultaneously produced an analysis in Python and wrote the code that did the same thing in that other program, so we could deliver its log files.
It was a significantly faster, less manual, and more transparent and auditable process than previously. By doing technical things at my current job, I was able to grow significantly as a data scientist. But I was also spending time on the evenings and weekends learning more Python, and I was asking developer friends about what to learn and implement.
When my project decided to go in another direction instead of Python – to stick with the specialized analytical software they’d been using – I knew I had to leave in order to continue being a data scientist. When you need technical growth and you can’t get it where you currently are, it may be time to leave.
If you want to be a data scientist in the government and you want to continue to develop technically, either for your own career or so you can access the best tools and practices for any given task, you should expect to be doing a certain amount of managing your own career.
Now let's go back to the three things that I'm suggesting you do.
Contribute at Your Current Job
If it's possible for you to get technical growth at your current job, that's the best place to get it. This is because:
You can do it during work hours, which is better for your life.
Feedback from actual stakeholders is invaluable for your specific project. So is the humbling realization that they know far more about their problems than you do, and sometimes about their data – and this is a useful take-away for future projects and jobs.
You’ll be creating value for your organization.
Employers, particularly in government, will frequently take work you do for your job more seriously than your personal projects.
This work may open up a path for you to stay at your organization in a more technical role.
How do you convince people to let you code or do other technical work at your current job?
Build stuff that's useful and show them. Automating current processes is a good candidate for this, but anywhere there's a problem, there might be an opportunity for you to fix something. Pay attention. If you have the time and the tools and you don't think you'll get in trouble, build it and then share it!
Volunteer to build stuff. If you don't have the time or the tools or you might get in trouble, you gotta ask permission. Otherwise, same as before: pay attention to the problems your organization is trying to solve and think how your current skills or the skills you want to build fit into that.
If there are people at your organization doing the kinds of things you want to do, ask them if they need help or have advice.
Teach Yourself.
Over the years, I’ve needed various skills and experiences that I couldn’t get at my job.
Learning and then coding in your spare time gives you more flexibility because you're not relying on your organization's tech or trying to solve their specific problems.
When determining what to code, I’ve found it useful to ask myself two questions:
What do I want to be doing next, and what is that employer going to look for?
What motivates me personally? What could I see myself doing at 10 PM on a Friday and enjoying?
As you build the thing, put it on GitHub. Add it to your resume. Talk about it in interviews.
I would never not hire someone for a lack of personal projects even if I were allowed to do that. But sometimes these are the only way you can get the experiences you need. And personal projects aren’t just about getting hired; they’re also about the whole range of useful connections they can provide. “Truly interested in stuff and building in their spare time” is a powerful signal to a lot of nerds, especially if you’re trying to persuade one of them to give you some of their free time or access to their network.
I also feel like as a woman, I want my nerd status to be so overdetermined that there’s zero doubt that I’m in that group. Talking about things I’ve coded for fun is the most effective way I've found to get that.
Do a good job on your personal projects. Use best practices. Even if no one at your work uses git, you should. Look at the code of people who have jobs you want, and do those things. Ask Claude or another LLM how your code could be better.
It's possible to be in a bubble – particularly in government – of bad code and bad coding practices. This, of course, is not your fault. But it helps to get an outside perspective on that bubble, because when you apply for a new job, you're not going to be graded on a curve. You’re going to be compared with applicants from other parts of government that aren’t in that bubble, as well as from applicants from industry.
What about outside classes and degree programs? These may be useful to meet the educational requirements to qualify for certain civil service positions. They may also teach you things you need to get hired, and to do your job after you’re hired. But programs vary widely, so you’ll need to do your due diligence about each one – what it teaches and whether it will benefit your career.
Where to Go and When to Leave
How do you find a civil servant or contractor job where you’ll learn a lot, work with people who are using industry-standard technical practices, and build cool and useful things?
Job postings. A USAJobs posting for a data scientist which mentions Excel is less likely to move you forward technically than one that lists PyTorch. Contractor job ads vary widely, too.
Other info. Google an agency and you'll often find articles on its platforms and projects. Go to networking events and conferences and talk to people. Ask what they're doing.
Interviews. There was a period five years ago where I was asking my interviewers what they used for version control. On one project, which otherwise sounded very cool, I got the answer “We've been thinking about doing that.” That absolutely factored into my decision to not take the job. If you have a lot of code and you're not using git, something is wrong. That was true five years ago and it’s extra true now. Ask people about their tech stack.
If your resume isn’t yet strong enough to let you be choosy about this, that's fine. Going from being in a job where you don’t code at all to one where you do is a big step forward. But continue to think outside the norms of your particular organization once you're there. Write code that's better than it needs to be. Do the things you need to do to get you the career progression you're trying to get: don’t assume it will just naturally happen for you.
What about knowing when it's time to leave? That's a hard question. You probably care about things besides technical learning and progression! And in civil service, there can be good reasons to stick something out – maybe your job will become more technical over time. Or maybe you want to go to another civil service job, it'll be easier to do that if you're still employed at your current one, and federal hiring timelines are long, so there might be a long period between when you think about leaving and when you actually leave.
Also, what about being rejected later on for job-hopping? Leaving contractor jobs at a pace of one every year or two, when your titles show growth, shouldn’t be an issue if you do it a few times. These are typically high-turnover jobs.
That said, in my last round of job interviews, I did get asked why I left a civil service position – even though I was there for two years, and in my job subsequent to that for another two years. But I explained: I wanted to keep growing technically and I needed to leave in order to do that. People got it.
In many agencies, if you’re a civil servant, it will be a happy surprise if you're able to stay somewhere and grow technically for a long time. If that happens, it's because your leadership is excellent. They have a vision and they’re fighting on behalf of you and your team because they understand this is the route to building out effective, robust, scalable tools for the government and its customers.
Conclusion
I'm incredibly grateful that I've been able to be a data scientist, largely for the federal government, for the past seven years. I've met people who were smart, technically skilled and committed to the mission, and who taught me a lot. Several of my supervisors have fought to get me tools and projects, and gave me a lot of room to go about solving problems in new and hopefully better ways.
If you’re looking at my career and you want to go down this path, I hope – and believe – that you’ll find it easier than I did in certain ways.
There are increasingly more places in government with leadership that’s both technically and politically savvy, and there's more understanding that the tools developers and data scientists say they need are actually integral to delivering on mission. You’ll probably never need your client to call up the second-in-command of a federal agency just to get you Python; you'll be able to request it normally and it will get installed. (This is not an exaggeration. I was and remain grateful!)
Nonetheless, you’ll probably have to do some active career management. You'll have to think about your own technical development and figure out how to get it, whether at your job or elsewhere. You'll have to look around at how your organization is doing things and decide if you need to put in extra work to do better. And you may, at some point, have to leave a job with great coworkers because your professional journey is taking you somewhere else.
I wish you success.