Frontend Engineer (EU)
We are looking for a salaried full time Frontend Engineer to work remotely from within Europe or from our London office. You will be be joining an existing team of 18 to work on our server monitoring and cloud management service, Server Density.
Server Density is a SaaS product for monitoring servers and websites. We're backed by a number of leading investors with connections all around the world - UK, Europe, the US and Japan. We’ve been around since 2009 and we help our customers stay online, giving teams the right information at the right time so they can solve performance problems, and keep their systems running!
Our product helps the NHS run the 999 emergency systems for ambulance response, it helps organisations like Greenpeace run effective campaigns and helps startups launch without embarrassment. Monitoring might be behind the scenes, but it has a real impact!
What will you be working on
- Frontend engineering: You will be working on our product UI with React, Redux and CoffeeScript, as well as some legacy Backbone code (which is gradually being migrated to React). You’ll be designing, building and usability testing new functionality and improving existing features.
- Feature development: We have a long roadmap and you will get to work on major new functionality. This isn't internal work - everything will be customer facing.
- Customer development: You'll get to see how our customers use the product on a daily basis so you can help fix bugs and improve existing functionality based on real feedback. We work closely together with customer support and aim at fixing problems quickly whenever possible.
- Writing for a large audience: You will have the opportunity to tell people about the interesting fix you made and why it worked so well, a tricky problem you were able to solve or teach our subscribers an improvement you were able to implement. Here are some recent examples from the frontend team:
- Our Stack: The UI communicates with the rest of our system through REST APIs. The backend is a collection of cloud-hosted microservices and uses Python, MongoDB, Kafka and Apache Storm. The monitoring agent that runs on our customers’ systems is written in Python, and is available under a BSD license. This is a Frontend position, so you won’t be expected to work on any of these.
We assume the following will be helpful to be successful and happy in this position:
- Practical experience in modern frontend web development with any of the major frameworks. We will ask you to solve a small programming task with React later in the application process because it’s what we use every day. If you haven’t worked with React/Redux but are experienced enough to learn it quickly, we will support you in any way we can. Frontend web technologies change fast, and for us the ability to adapt and learn is more important than in-depth knowledge of a specific technology when you start.
- Affinity for well-designed user interfaces. This is not a Design position, but we are a small team, and many tasks touch aspects of design and user experience.
- Pleasure in working with, and continuously improving, a non-trivial code base. This includes refactoring, increasing our test coverage, and keeping an eye on the overall quality of the code.
- Empathy and kindness -- for our users, but also your colleagues across the company. See for example how we run our code reviews.
- Willingness to adapt to working in a fully remote engineering team. (We explain what that means in practice in more detail below.) If you have worked in any other area of software development, testing and/or operations, please let us know! We are striving to be a diverse team not only in demographics, but also in experience. If your experience is just in frontend development, that’s totally fine as well.
Working at Server Density
You will be part of a frontend team of 3 people and reporting to the frontend tech lead. The frontend team is part of the engineering department consisting of 8 people
The engineering department is fully remote, working from different parts of Europe. We use GitHub for source control and code reviews, Slack and Basecamp for written communication, Google Hangouts for video chat, and JIRA to track bugs and programming tasks. As code reviews are central to our development process, we have described how we do them in detail on our blog.
We have a short stand-up meeting in the frontend team at the beginning of the week, and a longer round-up with the whole company on Fridays. You will also have regular 1-1 meetings with your tech lead, the engineering manager and the CEO every few weeks. All meetings are conducted through video chat. Roughly every 6 months, the whole company meets in our London office for a complete week.
We structure our work in development cycles that are 2-3 weeks long. The whole engineering department, as well as support and operations, are involved in the planning meeting for each cycle. Following a clearly defined process, these meetings take about 30 minutes. During a cycle, every developer individually chooses what they wish to work on from the list of available tasks.
We share on-call responsibility throughout the team. After your onboarding, you will be on-call for frontend issues approximately every three weeks. For handling incidents out of hours, you will automatically get the next day off work You can see how we handle on-call in more detail on our blog.
If you join Server Density, this is how your start period will look:
- You will meet with the rest of the frontend team in our London office for your first week:
- You will set up your work laptop and development environment together with us, and commit your first bugfix.
- We will teach you as much as possible about the code base and how everything works together.
- You will do your first code review, merge, and deploy to production.
- We will prepare a list of smaller tasks for you to work on and learn your way around the product. These will get more complex the more you know, but you will work on production code from the beginning.
- You will have a dedicated mentor who you can (and should) ask everything, any time.
- You will have frequent 1-1 meetings over video chat, mostly with your tech lead, to make sure that you are happy and not blocked by any problems. These meetings will get less frequent over time.
After the dedicated onboarding period (which lasts 3 months), you will be counted as a “full” developer for development planning, and take part in the planning meetings as well as the on-call rotation for frontend issues.
Every two weeks, the frontend team comes together for tech talks: everybody spends 1-2 hours watching talks or reading articles about front-end development, design, computer science, soft skills or other topics. We then meet to discuss what we’ve learned, share our knowledge and just geek out together.
Every 2 months you will have a complete week to work on anything you want: we call this random week. Past projects have included re-writing parts of the codebase, replacing build tools, reading up on a particular topic, open-sourcing areas of the codebase and drawing new designs for our mascot.
You will be able to expense learning materials like books or online courses and you will be able to attend conferences at the company’s expense.
How to apply
- Fill out this application with a short cover note. If you have a blog, a github profile, or anything else online that you are proud of, make sure to include it!
- In your cover note pick 5 tasks for each of the following criteria, ordered by importance
- You’d like to work on, and are confident taking on soon after onboarding.
- You would love to learn more about in the future.
Here are the tasks:
- Implement React components from scratch, following design mockups and a functional specification
- Adapt Redux code to work with a new or changed backend API
- Maintain or refactor legacy Backbone parts of the UI
- Improve the visual design of the application through your understanding of concepts like grids, design consistency, colors, typography, user experience.
- Improve our tooling (webpack, grunt, node.js scripts)
- Improve our testing (Jasmine, Karma)
- Improve our CSS so that it is easier to maintain.
- Improve load and render time performance of the UI
- Implement a smart caching system and optimise the performance of Redux code.
- Improve our codebase so that components are easier to reuse and/or test.
- Implement tooling for integration tests
- Review & improve the specifications for a new backend API
- Review & improve the architecture for a new UI feature
- Architect & plan a feature end to end
- Investigate how we could move from CoffeeScript to ES6
- Something important to you that’s not on this list: please add it!
During the application process, we will give you two small tasks to solve (not from the above list) which will be evaluated in an anonymized way by your future colleagues. In total, these two tasks should not take more than 5 hours of your time.