Software Engineer - Infrastructure
Flickr's back-end engineering team is responsible for the software that keeps Flickr 99.99% available for tens of thousands of requests per second across our site, apps and APIs. The work encompasses infrastructure components for data access, replication, search, queueing, caching, image processing, storage, data mining, data management and site integrity/abuse.
We are looking for candidates that share our passion for engineering systems that scale smoothly and that share our passion for Flickr and the web. Because we are proud to count the number of registered users per engineer in the millions, your work will have a proportionally larger impact that just about any other site we know of. This is a job you will be proud of for the rest of your life.
We have a track record of innovation to build on and a strong desire to radically improve Flickr, both for new users and casual visitors as well as the power users who form the core of the community. If you've ever wanted to a chance to have a big impact (Flickr has 80+ million users and 7+ billion photos), this is it.
What you'll do:
- Write code. We're looking for really good systems programmers. You should know at least one language very well and have experience with several.
- Solve site scaling and availability challenges across multiple colos
- Design, code and maintain high performance infrastructure for distributed applications
- Find and fix performance and reliability issues
- Work with other team members to plan for capacity, coordinate with partners and API consumers through documentation and discussion
- Contribute to the continual improvement of our development and continuous deployment process
You should have:
- Strong compsci fundamentals: data structures, algorithms, programming languages, distributed systems and information retrieval.
- An excellent understanding of networking, blocking and non-blocking I/O, and Linux or some other Unix™
- Extensive experience with systems programming in C/C++ or Java (SE)
- An understanding of the performance, capacity and availability issues surrounding databases
- Experience implementing performance-sensitive elements of a distributed system
- Academic background in engineering, computer science, math, physics or other science.
- Experience with replication and sharding
- Experience with any of the follwing: MySQL, Redis, netty.io, node.js
- Experience building and maintaining a large scale, high volume system
- Experience with Flickr and online photo sharing (send us a link to your photostream!)
This position is a regular/full time position and based in our San Francisco office.