Fullstack JavaScript Engineer

  • SumUp
  • Berlin, Germany
  • Jul 28, 2017
Full time Developer JAVA

Job Description

About SumUp

The people of SumUp have brought the best way to accept card payments to 15 countries so far, but we won’t stop there. Headquartered in London, SumUp's major offices are in Berlin, Sofia and São Paulo. The Berlin office alone comprises more than 100 people from 24 countries. We recently launched a brand new contactless device, which makes paying by card easier than ever before.

Why work with us?

SumUp could be interesting for you as an engineer in part because we cover so many platforms: we have physical hardware (made right here in Berlin), our own proprietary payment processing platform, mobile apps on iOS and Android, SDKs and APIs supporting third-party integration, and of course (the main star, in this team's humble opinion) a merchant-facing web app.

We do things differently. We build our own payment solution end-to-end so that we can always offer the best value & service. We know how vital payment is to small business, so we use our technology to solve their problems. We believe in open and transparent communication, not strict rules and hierarchies. If you’re looking for the chance to innovate, and disrupt the payment industry – join us.

What we're looking for

A web developer with Javascript expertise, who will be able to contribute to and benefit from our team's ambition to improve our app, our code, and our technical abilities every day.

To us, fullstack means you are comfortable working with the machine on all the levels most meaningful for web today: you're familiar with Node, you're comfortable with Unix as it relates to your work, you're familiar with developing frontend apps in JavaScript, as well as making them look decent with HTML/(S)CSS based on specs provided by designers.

This position is frontend heavy in its day-to-day responsibilities, but requires a thorough knowledge of the full stack to operate efficiently.

You'll fit in perfectly to our team if:

  • You not only love coding, but also take the time to reflect on the benefits and drawbacks of your tools, be they frameworks, languages, or processes.
  • You strive for clean code, but also know how to make your "shortcuts" easy to delete in a crunch.
  • You know what to test, why to test it, and how to write flexible tests that won't break with minor changes.
  • You're comfortable with Linux and know how to get things done on the command line, including on remote servers.
  • You have experience with or interest in Functional Programming techniques.
  • You're not afraid to use Google or ask for help when something is beyond your grasp.
  • You care about user interaction, usability, and of course – making the interface beautiful.
  • In general, technology excites you and you strive to learn something on a daily basis!

Our tech stack and projects

Dashboard: A modern Angular 1.5 application helping merchants keep track of their revenue and manage their accounts. Our core features include sales analytics, a transaction overview, and account management. Right now we're working on integrating AWS to power document upload and re-thinking our shop. Our Angular codebase uses a modern component approach and pure services supported by Jasmine unit tests. Apart from that, we heavily use JavaScript libraries like Lodash, Moment.js, and d3 and rely on Gulp and Webpack for our build and deployment tasks. Naturally, our codebase is in ES6.

Website: Our website uses Jekyll and is served by a Node server (using Koa, the spiritual successor to Express) that's largely powered by a headless CMS (which we don't maintain, win!). The Javascript is microscopic, organized into components, bundled with webpack, and uses jQuery and Lodash for convenience. We're keen on SEO and optimizing the merchant's very first impressions of our product.

On our roadmap: We're always looking at what's happening in the ever-changing web development space. We're currently investigating React as an alternative to Angular, moving to Webpack 2, and adding a type system like Flow or TypeScript.

The backend that powers SumUp is a constellation of microservices, mostly written in Ruby but with an increasing number powered by Node. If you're interested in the nitty gritty of the complex domain of card payments, there's space for you to expand your responsibilities to the backend.

Your impact at SumUp

You'll shape some of the core experiences of our merchants: from their first impression on our website, to the web-based features that make them loyal to our platform.

In the first few weeks, you'll dive into the code and learn how to create clean, composable components in our codebase. You'll use this knowledge to start developing and refining features. You'll learn how we write tests, how we manage application state, and how we keep performance tip-top. You'll also pitch in on our Jekyll site to enable sales and marketing to reach hundreds of thousands of visitors every month.

In the first three months, you'll develop major features that impact our merchant base. You'll work closely with product and design departments to build features that are maintainable, usable, and beautiful. You'll help us re-think problems we've solved before in a different way as requirements evolve. You'll also leave your mark on the SumUp web experience by conducting A/B tests on the Jeykll site as well as during onboarding in the web app.

In one year, you'll have a wealth of knowledge about our complex problem domain, as well as its implications in the interface and in the backend – and how to manage it in a clean way. You'll have launched numerous features on the Dashboard, as well as contributed to side projects and initiatives that gave you an opportunity to diversify your skills and learn something new.


Required qualifications:

  • Computer Science fundamentals (e.g., data structures, data transformation, function composition, etc.)
  • 2+ years frontend development experience
  • Strong foundation in Linux (command line expertise in Git is a must)
  • Experience building a non-trivial Single Page Application (SPA) (Angular or React preferable)
  • Proficient using the debugger and the REPL
  • Ability to implement design specs precisely with CSS
  • Ability to communicate fluently about technical topics in English

A strong candidate will also have:

  • Experience in at least one server-side programming language besides Javascript (especially Ruby)
  • Exposure to working with Node. Nginx is an added bonus.
  • Experience implementing SPAs using a component-based architecture
  • Implemented a REST API him/herself in the past
  • Comfort with relational databases such as Postgres

If you are just starting out in Javascript, but would consider yourself highly proficient in another language (e.g. Ruby or Python), we are definitely open to considering your application. The key requirement is a solid grasp of fundamental programming concepts, so we can work together to get to the next level.


More reasons to work at SumUp

  • Your immediate team: you'll be with people who care about mutual learning, keeping our technical knowledge up to date, and discussing ideas (on a technical, design, and product level) that contribute to not only the company's success but keeping everyone well-rounded and hands-on.
  • Our regular meetings are infrequent – most days you'll do a standup and get to work.
  • Our office is a close community; we get together regularly for brunches, cocktail nights, football, and yoga.
  • Convenient location in the heart of Mitte at U-bahn Oranienburger Tor.
  • Opportunity to attend tech meetups and conferences with the team (especially if you're giving a talk!). Last year we went to Angular Connect in London, and this year we'll be attending BerlinJS as a team.
  • All the startup swag you expect: kicker table, beer in the fridge, and a shiny MacBook Pro.

Apply now!

We're looking forward to meeting our next teammate! You'll be asked to provide the following information when you apply:

  • Why you think you'd be a good fit for this position
  • One of your favorite coding challenges you encountered in the last two years: what was it about, how you tackled it, and what you learned. Technical details encouraged!

You can also choose whether to include a CV, a link to your Xing/LinkedIn, a link to your github, tech blog, or portfolio – whatever you think will give us the complete picture!