Wednesday, July 13, 2016

Introducing Upwork Engineering

Photo illustration of crowds of people seen from above assembled in the shape of two interlocking gears

Hi, my name is Han, and together with Stratis (co-founder of oDesk), we lead engineering at Upwork. I’m here to kick off a series of regular blog posts written by Upwork engineers to give you a glimpse of what goes on behind the scenes. In this first article, I’ll talk about some of the technical challenges we’re facing as a company and a bit about the team of engineers you’ll be hearing from in future posts.

For some background, Upwork is the world’s largest freelancer marketplace by transaction volume, enabling over $1B of work annually. In any given week, over 1M hours are billed through our platform. In plain terms, clients rely on Upwork to get work done, and freelancers rely on Upwork to make a living. This means that every engineer who works at Upwork carries a lot of responsibility. Millions of people count on us to build and maintain the best freelancer platform possible. It has to be easy to use, fast, and stable.

The Upwork platform today is composed of two main parts: the core foundation of oDesk, which was launched in 2003, and the company’s new microservices-based platform, which we started to integrate in 2015. Like many early-2000 era Internet companies, oDesk was a monolithic system based on a three-tier architecture.

One of the fundamental limitations of such a system is the dependencies it can create between teams. Because of the interwoven nature of the solution, monolithic systems have a tendency to couple concerns between modules and ultimately between teams. As more teams become coupled, the overhead of coordination increases. In turn, this decreases developer productivity and ultimately impacts a business’s ability to remain nimble and stable. In the event that problems occur, it can be challenging to recover the site because of the cross-team dependencies.

For these reasons and many more, Upwork began its transition from a legacy system to one that is service oriented. Our journey so far hasn’t been smooth, but it’s a rite of passage that many companies go through.

Another big shift is our migration from a physical data center to the cloud. We’re confident that our approach is sound, as other large companies, such as Netflix, chose a similar approach when faced with the same dilemma.

The talented engineers at Upwork are making all this possible. I joined Upwork a year ago, well into the company’s platform transition effort. As an engineer, I was attracted by the once-in-a-lifetime challenge to be part of a site modernization effort for a company that had already achieved billion-dollar transactional scale. And to be part of the company’s incredible mission to create an online workplace for the world. I knew that there would be ups and downs along the way, so it was important to me that I joined an amazing team to tackle this challenge.

Time, scope, and engineering resources are three factors that limit the projects of most companies. Shockingly in my year at Upwork, I’ve discovered those rules don’t always apply to us. Unlike a traditional company that employs on-premise engineers only, we use a hybrid approach, with on-site and remote engineers. We’re headquartered in Silicon Valley, with offices in Mountain View and San Francisco. Our location, which is home to other large tech companies, allows us to source some of the best local engineers.

We also use the Upwork platform to source top remote talent. By combining local and remote workers, we defy the physics of a traditional hiring approach. Instead of spending months looking for engineers, we have the capability to burst our team out and fill roles within days. As a result, the Upwork engineering team is composed of over 350 engineers. Of which, 270 are remote, hailing from 40 countries around the world.

Does this sound like something you’d like to be part of? If it does, take a look at our engineering openings both on the Upwork platform and on our Careers page.

If you’re happy where you are, you can use the Upwork platform yourself to add quality talent to your team and hire faster than your competitors.

In future articles, you’ll hear from engineers at Upwork who will discuss how we maintain a cohesive engineering team when part of the work is done remotely, the technical details behind our modernization journey, and our contributions to the open-source community.

Stay tuned,
Han

The post Introducing Upwork Engineering appeared first on Upwork Blog.



from Upwork Blog http://ift.tt/29He1Qq

No comments:

Post a Comment