Shutterstock is looking for experienced software engineers to join our team & help drive the future of our platform. You will be working with highly motivated & extremely talented engineers, focusing on quality, performance, & scale at every step. Our users are our number one priority, so we work hard to deliver value back to them with everything we do. We believe strongly in team ownership of systems, which includes defining the vision of the services to prioritization of projects & empowering teams & individual team members to develop the solutions that best meet the needs of everyone involved.
- Contributing to all aspects of the services under the teams ownership, which includes design, implementation, refactoring, automated testing, deployment, & uptime of the services.
- Helping other team members grow as engineers through code review, pairing, & mentoring.
- Improving internal team processes by keeping what's working, throwing away what's not.
- Collaborating on the vision of the services under the team's ownership.
- Building the technology the right way: for us, this means simple, well-tested systems that gradually grow over time, & that provides plenty of insight into production performance.
- Engineers are expected to support systems they develop in production which involves being on-call. The actual periods & frequency vary by team.
- At least 8 years of experience as a Software Engineer
- Experience programming in at least one of the following: Node.js, Java, Perl, Scala, Go, PHP, C/C++
- Strong software development fundamentals
- Experience building RESTful APIs which power multiple consumers, as well as building services which consume from RESTful APIs.
- Experience building distributed services / applications which scale elegantly
- Proficient in both relational & nonrelational databases
- Basic understanding of DevOps & Unix systems
- Comfortable with a Git & Continuous Integration/Continuous Delivery (CI/CD) workflow
- Passionate about what you do & care deeply about the things you build.
- Able to clearly communicate to technical & non-technical audiences.
- Ability to both work independently & be a team player
- Node.js experience with good knowledge of key libraries
- Experience building message-driven architecture using tools like RabbitMQ
- Familiarity with Amazon Web Services & other cloud service providers
- Experience with automated configuration tools like Puppet, Chef or Ansible
- Experience building event-driven or message-driven architecture using tools like RabbitMQ & Kafka.
- Experience with end-to-end automated testing frameworks
- Experience working in an agile environment