500px is the leading online network for photographers. Our mission is to connect the world’s photographers and provide them with opportunities to discover inspiration, get exposure and rewarded for their work, and help them learn and grow their skills. Every month, millions of people from around the world use our website and mobile apps to find and share the world’s most inspiring photography.
We take pride in the products we ship and love what we do. Our engineering culture values mentorship, ownership, collaboration, and getting stuff done.
Our technology stack includes: Java, Python, React, GraphQL, Go, MySQL, Redis, Elasticsearch, iOS (Swift), Android, and various Amazon AWS services.
***Please note that we are all currently working remotely until staff feel safe and comfortable returning to the office. Once we do, we expect to continue granting our team the flexibility of choosing to work from home or anytime from our HQ, but will confirm this once our plans are firm.
We are looking for a senior full stack developer to help us continue to improve our 500px platform. You'll have the opportunity to play a pivotal role in 500px's success as part of a passionate engineering team.
It has been a long journey since 500px started back in 2009. Though we had been continuously improving our previous backend, its fundamental design no longer fit our current scale of data and traffic. We have completed the first step in our journey by splitting our Monolith into Rest APIs, but we've only just gotten started. Now we are looking to increase efficiency by implementing protocols like GraphQL, reevaluating API design, and building new features to improve our community for our users. You’ll have ownership over the backend, and you’ll support other developers in building new services and components. You will be an advocate for performance, stability, and scalability across all of 500px, and encourage others to be as well. We are looking for a person who loves collaboration and is excited to take on new challenges.
What you'll be doing:
- Working with product managers/owners, designers, and other developers on product requirements and design
- Lead the design and technical planning of new features and projects
- Building highly scalable architecture, services, and solutions
- Implementing and maintaining high-quality code and documentation
- Coordinating and collaborating with developers across teams (including mobile and remote teams) to ensure the solution is implemented properly end-to-end
- Providing technical mentorship to other team members
- Helping to architect the 500px systems infrastructure
- Providing assessment on risks and evaluating tradeoffs in terms of performance, security, maintainability, etc.
- Participate in on-call rotation
- Demonstrate strong ownership on responsible projects and technical areas
What the ideal candidate will have:
- 3+ years experience working in Java
- 2-3 years experience with Spring framework
- Proficiency in various Java frameworks, libraries and frameworks like Spring Boot, MyBatis, Lombok, Feign
- Proficiency with Restful web services in Spring framework
- Experience integrating web service calls and/or RESTful APIs, some knowledge of GraphQL
- Hands-on experience with projects on Spring Boot on Java 11
- Experience developing Java REST Web Services (Java 11, Spring Boot, API/ Microservices Design, Maven)
- Experience working with Microservice-based architecture
- Experience with AWS based services and Docker/Kubernetes based deployments
- Solid understanding of OOP and some FP concepts
- Knowledge of design patterns (MVC, Strategy, Factory, Singleton) and general design understanding.
- Writing unit and integration tests and mocking of external services
- Proficient understanding of SCM tools and best practices (GIT, Maven, Travis CI)
- Some basic knowledge of infrastructure management tools (such as Terraform, CloudFormation, Anisible, etc)
- Some knowledge of other languages such as Go, Python or Scala
- Experience with relational databases such as MySQL, Postgres, etc.
- Some experience with a NoSql database such as MongoDB, Redis, Memcached, Elasticsearch or DynamoDB
- Experience applying those skills and knowledge to build and maintain high-traffic, consumer-focused web services
- Good architectural sense and a passion for high quality code, honed by experience
- Solid understanding of application monitoring, metrics, and performance optimization such as New Relic and DataDog
- Comfortable providing active technical guidance to other developers
Bonus points for:
- Fluency in Mandarin
- A love of photography (tell us what you shoot!)
- Being a member of the 500px community
- Experience with the photography industry
- Competitive salaries
- Flexible work hours
- Great health and dental benefits starting on day one
- HQ in downtown Toronto within walking distance of TTC and Union Station, lots of great nearby food options, and dogs are welcome
- Professional development opportunities
- Amazing coworkers from around the world (repping 20 countries and 19 languages)
- Generous time off policies for vacations, sick days, birthdays, religious observances, civil involvement, new babies or pets, emergencies, or even if you just need to recharge
- Life-friendly Zoom calls – we love to see your pets and hear your kids’ jokes!
- Phone screen: < 30 min conversation with a hiring manager
- Team interviews: 3-5 hours on Zoom where you'll e-meet multiple members of our team
We believe diverse teams perform better, and we seek to increase our overall team diversity. We make active efforts to reduce the impact of unconscious bias in our hiring process.
500px welcomes and encourages applications from people with disabilities. Accommodations are available on request for candidates taking part in all aspects of the selection process.