What it's like working at NASA Jet Propulsion Laboratory
There's a ton of buzz around what it's like working at big tech companies but not much on gems such as NASA Jet Propulsion Laboratory (JPL). For most folks, they're swooned to work for a place because of the "amazing" perks such as free food and ping pong tables. At NASA JPL, the people are not there for the perks, they're there because they're truly passionate about understanding what's out there in space and here on Earth. This results in a culture that prioritizes ingenuity and exploration.
I'm currently working at JPL on the Advanced Multi-Mission Operations System doing frontend work and was a former intern. With this post, I hope to excite you about working with space technologies.
JPL is a research facility in La Cañada Flintridge, California, that carries out Space and Earth science missions. A few notable achievements are: developing the US' first Earth-orbiting science satellite, developing the first interplanetary spacecraft, and sending robots to other planets!
JPL is a federally funded research and development center (FFRDC) managed by Caltech for NASA. This puts JPL in a unique position compared to the other NASA centers because it allows JPL to drive innovation outside of the scope of NASA. When you work at JPL, you're not a civil servant, you're a private employee of Caltech.
The history of JPL is really fascinating and I encourage you to look more into it.
There is a breadth of work being done here. It ranges from graphic design, artificial intelligence, mixed reality to origami. You don't have to be a rocket scientist to work here. During a recent event, I met Elizabeth Landau who's official title is "Senior Storyteller", that's so cool!
The rest of this post will be written from the point of view of a frontend engineer.
You can think of Missions at JPL as products at traditional tech firms. Missions go through a product lifecycle from ideation to implementation. Each mission will have requirements which are fulfilled by bespoke services or extend multi-mission services. Recently there has been a big push to build more multi-mission services which can save current and future missions a lot of time from reimplementing and testing shared services.
We use Git/GitHub for version control and most missions are moving to monorepos.
A lot of the software for missions have moved from desktop applications to web applications.
- Angular, React with Typescript (No need to support IE so we get to play with the latest browser features!)
- D3 and Canvas for visualizations
- Jest and Jasmine for unit tests
- Selenium for E2E tests
- Java Spring, Express with Typescript
- JUnit for Java tests and Mocha/Chai for Typescript tests
- Docker (most services deployed on *nix OS')
- MongoDB, MySQL, ArangoDB, Dgraph
- Windows/Mac/*nix machines
There's a ton of tools being used across the lab which are not mentioned above. A great thing about the team dynamics here is if you can put together an argument on why X tool is useful, then you can use it.
When you join JPL, you join a team for a specific function. For example, there's a Data Services team, User Interface team, and Artificial Intelligence team. Members of these teams are then recruited for missions. As an individual contributor, you can spend 100% of your time on a single mission or split your time between multiple.
Switching teams/missions is pretty straightforward. You can meet supervisors of other teams or project leads for missions. Once you've found an accepting team/mission, you can work with your current obligations for a smooth handoff.
Depending on the team you're on, you can be seated in individual offices, cubicles, or open-space.
The lab has tons of clubs for all interests. Some of my favorites are the wellness club, bike club, and gardening club.
There isn't a uniform interview process at JPL. If a team really like you, you can be hired on the spot. Below is the suggested process:
- Apply online for a specific position or get a referral
- Phone interview with HR (behavioral)
- A round of phone/video interviews with the team/mission leads (behavioral/technical)
- On-site interview (behavioral/culture/technical)
- Decision emailed/phoned
| | | | :------ | -----------------------------------------: | | 8:00AM | Wake Up | | 8:20AM | Breakfast | | 8:45AM | Leave for Work | | 9:00AM | Arrive at Work | | 9:15AM | Catch up on Emails/Slack | | 9:30AM | Standup | | 10:00AM | Development Time | | 12:00PM | Lunch/Presentation by lab or guest speaker | | 1:00PM | Development Time | | 2:00PM | Meeting/Sprint Planning/ Retrospectives | | 3:30PM | Development Time | | 5:00PM | Gym at Caltech | | 6:00PM | Home |
- You can opt into a Regular Day Off work schedule which gives you every other Friday off!
- Subsidized lunch
- Remote work friendly
- Access to Caltech resources such as the gym, lectures, and equipment rentals
- Weekly lectures by guests or other employees on projects or misc. topics
Working here has been a blast (no pun intended). The people are brilliant and meeting new people is a Slack message away (the lab encourages you to meet people by matching up folks every 2 weeks to go out for coffee). It's a definite change from working at big tech but the impact you make here is visible all the way up in space.
~~If you find yourself in Southern California and would like to check out the lab, feel free to hit me up! It's an exciting time for the lab as the Mars 2020 rover is being built here.~~ I don't work here anymore.