What does a reddit software engineer do on a day-to-day basis?
A reddit software engineer is responsible for the front-end development of reddit.com. They are primarily focused on helping make all the products that make up reddit more performant and responsive. For example, they work on optimizing performance and using caching to reduce load time, as well as finding ways to improve the quality of submissions submitted by users so that content’s not being marked down due to outages in user experience. They also take part in product launches and other special projects as needed. They’ll also occasionally be taking on small platform support/development work, such as helping make sure the codebase can handle any future applications or making sure that new features are accessible to people with disabilities.
I work with a team of 5 other engineers, and we each have our own areas of specialty. One works on performance and scalability; another works on the main reddit.com website, as well as reddit’s mobile apps; another works on special projects; and two work on backend development.
In terms of job requirements, it’s important to be familiar with C++ and Python. You’ll be working in Linux environments and probably some type of virtual machine such as Vagrant or EC2. You’ll need to be comfortable writing both unit tests and end-to-end tests.
What is the most challenging part of the job?
The most difficult part of the job is a constant balancing act of listening to people’s gripes and giving the engineers that are working on reddit.com what they need to make reddit better. The point at which the needs of the product and its users truly intersect, however, is one of the most rewarding parts of this position. It’s one thing (in my opinion) to design a website/app/etc that catches user preferences but doesn’t break them just because you think it would be cool. I’ve seen a couple cases where companies do that and the users complain, but the company doesn’t listen because they’re too proud of their product. It’s quite another thing to design something that has an excellent user experience, but requires a lot of money/time/etc to implement (and maybe even break other stuff in order to implement) because you know it’s a better solution.
As a software engineer, the most challenging part of the job is making sure the engineers have what they need to build a successful product. The point at which engineering and product design intersect is really satisfying for me, although I don’t always get to work in that area very often. Engineers spend most of their time and energy trying to make code that makes users happy but sometimes they don’t realize how certain design decisions will affect users (and sometimes they just need more support).
In a perfect world, the engineers and product designers are on the same page when it comes to the features of their app/website. However, engineers need to work in deadlines and budget constraints. Engineers typically have a more limited understanding of UI/UX concepts and experience than product designers. The contract between engineers and product designers is typically one-sided which makes it harder to make sure they understand each other’s needs and desires.
The most challenging part of the job is ensuring people have a good experience on reddit and working with engineers to understand users and their needs while also meeting project deadlines, staying on budget and building products that are high quality. The intersection of these three is where the best work happens. It’s a balance of competing interests, which may sound obvious but is easier said than done.
What is the most rewarding part of the job?
The most rewarding part of the job is when your efforts result in a feature that makes reddit better. When you see users really responding to what you’re trying to do, it’s pretty great. Being involved in a project that you know is going to have a positive impact on people’s lives and the world is really, really motivating.
I also really enjoy the challenge of working on a problem that’s difficult but solvable. Users are very clever, and it’s our job to be smarter.
“reddit software engineer”: “What was your inspiration for joining reddit?”
I heard about reddit while it was getting started, around 2005 or so. I thought it sounded interesting, but more importantly I knew that getting involved in something like reddit would help me learn how to program better. At the time I was working at a company that made peer-to-peer (P2P) file sharing software. I wanted to learn more about networking and distributed systems, so I jumped at the chance to work on reddit.
How did you get interested in software engineering, and what made you decide to pursue it as a career?
I grew up tinkering with computers and electronics, and I joined the robotics team in middle school because I was the only person I knew who was interested in it. Making things just seemed like something that a lot of people did. Then I had one of those “I’m never going to get out of this town/city” kind of a moment. I knew that the world would be better off with one more programmer, so I decided to learn to code and make it my job.
If you’re in high school and interested in programming, join a robotics team (you can find more on the competition’s homepage).
My high school robotics team, circa 2008. We competed in a competition called FRC every year. I started out as the only programmer on my team and became captain my senior year. I was inspired by one of two seniors who were really passionate about our team. The other senior was our captain and I can honestly say he was a great leader. He always encouraged us to follow our dreams and never let anything hold us back. He’s currently a software engineer at Microsoft on their Cognitive Services Team.
For more information about FRC, check out the website at: https://www.usfirst.org/robotics/frc/
Do you have any advice for aspiring software engineers who are just starting out in their careers?
Know that you’re not going to get rich – and you’re not even going to work at a place that makes hundreds of millions of dollars. If you can comfortably afford to survive and have time for hobbies, then go for it. You’ll always be able to find a job somewhere that pays better or has more benefits. All you’re buying into is the chance to work on stuff that actually matters. If you like that idea, then go for it!
Study Computer Science
Learn how to write code. Make sure you like it, because it’s the only thing that’ll be on your resume.
Get Lots of Experience. Anywhere. Anyhow.
Don’t focus on gaining experience at a single company, or even in a single field. If you work at a game development company, then work on the engine or tools instead of making games (even if you like games). If you work at a web development company, work on the framework instead of the site. If you’re at a game development company, then build an AI that plays games in your free time.