Engineering Intern - Summer 2017

If you are up to the challenge of building new and cutting edge large scale applications used by millions of people around the world on a daily basis to earn a living and improve their lives, we want to hear from you. Upwork’s Engineering team is looking for a passionate, hard-working, and talented Software Engineer Intern to design and develop innovative software solutions that connect clients and freelancers on our platform.

As an Engineering Intern, you will be working on building a core part of our business application using a Java based distributed services architecture. You will have the opportunity to work with world class product managers, designers and engineers and be responsible for providing a delightful product to our clients in collaboration with them.. You will be part of a fast moving distributed team working in three different continents.
In this role, you will:

  • Build micro services using the latest open source tools and technologies (we use Dropwizard/Hystrix/Jetty/Kafka and more).
  • Be responsible for the architecture and design of your service (with support from another member of the team).
  • Ensure that these services meet high standards for scalability and availability.
  • Work on some older (Perl) and many current & exciting technologies (Java 1.8, DynamoDB, ElasticSearch, PostgreSQL etc.)
  • Work with the QA and DevOps teams to ensure smooth deployments and quick (and automated) rollbacks.
  • Collaborate with a world class team of engineers, product managers and designers.

To win in this role, you need:  

  • Be able to communicate and work with a globally distributed team.
  • Understand micro services and the trade-offs between when to use them or not.
  • Understand and have opinions on how to build distributed systems.
  • Understand fault tolerance, resiliency, eventual consistency and how they intertwine into the development of a scalable and highly available system.
  • Understand how to write RESTful APIs and maintain the contracts they expose while adding features, improving performance etc.
  • Experience with SQL (PostgreSQL) & NoSQL databases such as DynamoDB, Cassandra or MongoDB.
  • Comfortable working with (reading and writing) large and diverse Java based web applications.
  • Have used as many of the following tools as possible: Java (1.8), PostgreSQL, DynamoDB, Kafka, ElasticSearch/CloudSearch, AWS Lambda, DynamoDB Streams, AWS Data Pipeline, Eureka, Hystrix, Git, PHP, Perl.

Come change how the world works.

At Upwork you’ll make a real difference in the world, rolling up your sleeves to help reinvent how the world works. As a major player in one of the most exciting and fastest growing markets on the planet, you’ll join a team that’s leading the charge in online work – creating new freedom and opportunity for businesses and freelancers alike. In short, you’ll change lives, which will do wonders for your career, self-esteem and karma.

Along the way you’ll enjoy a bona-fide work-life balance (we practice what we preach), with all of the perks you expect from a thriving tech leader (think free breakfast and lunch, happy hours, team outings and the like). Plus every Wednesday is a work from home day for many teams, although our main offices in Mountain View, San Francisco and Oslo are warm and inviting. Naturally you’ll also draw a nice paycheck and enjoy some meaty benefits. So join us as we work wonders creating the future of work.

Back to top