Full Stack Engineer

Skip to the job details if you have already read our general introduction

Who are we, and what do we do?

At Solar Monkey, our goal is to enable solar to be the world’s leading power supply, and we accomplish that with software that makes solar power systems more affordable, secure and reliable. We do so in a very open and warm environment, where everybody can have his or her say on company values, structure, and policies.

Our main product is our design software, where our users can quickly design all kinds of solar panel systems, and get a highly accurate yield calculation. We base our predictions on climate data, system specifications and advanced shadow analysis. Our application is an advanced piece of software, that extracts information from GIS data, runs distributed over a dozen of servers and uses the latest HTML5 canvas to facilitate simple to use Geospatial editing tools for the end user.

Solar Monkey currently consists of 28 full-timers, of which 12 are in the product team, and we always have a couple of awesome interns. We have the intention and capital to grow our team steadily in the coming year, so that is where you come in!

On diversity

While you wouldn’t say we’re very diverse when you look at our team photo, we do have people from very different backgrounds and we definitely aren’t just a bunch of tech nerds. If you are excited about this role, but don’t think you meet everything single thing listed, we still encourage you to apply. We hope you can bring a different perspective. At Solar Monkey we strive to build an inclusive workplace where you can excel and feel at home.

How do we work?

We combine in-person and online communication (through Basecamp & Zoom) – where it might not surprise you that the business side leans toward the former and the development team leans a bit toward the latter form of communication. This enables a very flexible working place. Nobody tells you where or when to work, trusting that you know best how to build on your own strengths. This also means that working remote or part-time remote is common. Most of our developers work a few days a week in the office and the rest from elsewhere.

We recently started to follow Basecamp’s 6-week cycles as layed out in their Shape Up book. We currently run two such cycles in parallel, as we have two product teams (besides Infra & Research). Our CTO & Head of Product “shape up” the work in advance of the cycle, together with others from the company to form a cross-functional shaping team. So far that is working quite well for us!

Our stack

Nowadays we have almost a full continuous delivery pipeline running. Everything we do runs in Docker containers. We’ve written a small helper app that uses Hashicorp’s Nomad to schedule those containers in our production and test environments. We are slowly expanding this into a commit-to-deploy trunk-based integration strategy.

Our app consists of multiple single page applications written in React. We use Redux for our main logic combined with redux-saga for all side effects and asynchronous calls. The main part is what we call the “editor”, where the systems are designed. Its core is a Fabric layer on top of a Leaflet map. End-to-end testing is getting in shape, which is done with help of Cypress.

The backend is a Django application, in Python 3. We make use of django-rest-framework to ease the endpoint development, and Celery is our current (but contested) queue runner. We leverage the GEOS capabilities of PostGIS for raster data (height maps) as well as vector data (for meta data on images and buildings).

We are looking for ways to decouple too tightly coupled parts of our system, and have been working on implementing the Domain Driven Design approach in new code and code we touch where this makes sense. Typing – both in the front- and backend – are being added.

We use Hashicorp’s tools for deployment, together with some (Python) wrappers and scripts to run all of the above in the Google Cloud. Where possible we use managed solutions like for our database or for some utilities we can offload to Cloud Functions.

Do know that nothing is set in stone, and we strive to optimize for developer friendliness. Do let us know what that would mean for you in your application!

What we offer

  • Lots of impact on our product, our culture and the solar world!
  • Lots of freedom in terms of when and where you work, and how you solve problems. This means we accept fully remote people, as long as you can work in reasonable overlap with our normal (Dutch) business hours. It also means options for 4-day work weeks or shifting around your schedule because the kindergarten is not helping out. (Or just because it get’s too hot in the afternoon ;).
  • A healthy workplace where you regularly work the number of hours you signed up for, and where you are able to get 8+ hours of sleep.
  • A fun team that values long-term thinking and self-empowerment and that is eager to continouosly improve.
  • We’re a scale-up and can offer a competitive salary for Dutch market standards, depending on your skills and experience of course.. In addition to that we offer Stock Appreciation Rights, so that you can benefit from the growth of the company as well!
  • The chance to learn exciting new things, whether that’s new patterns, picking up a different language, GIS systems or server infrastructure!
  • A study budget of 4% of your base salary
  • We facilitate your pension plan. (We don’t yet match your own contribution, which is something we do want to instate in the future.)
  • 5% Days! A day per month or so we work on whatever we want as developers, and try out new libraries, approaches or other things.
  • We can arrange a visa if you want to come to The Netherlands and fall into the “highly-skilled migrant” category.

About the job

Initially the person in this position will spend a fair amount of time on the frontend. We are building lots of new and exciting features that need either completely new pages or sections in our app, or that need some rework to fit in. This will be in close collaboration with Casper, our Head of Product who is responsible for UX and UI design.

You will be in a team of 2 or 3 people working on a project for the forementioned 6 weeks. In such a team we strive to balance front and backend work of course and thus we see most value and fun in people that can switch between the two where necessary. It just makes your life easier if you don’t depend on someone else to make changes to an endpoint when you need more data, hence the full-stackyness of this position.

What you will work on is diverse. Not only do we have 2 main products each with different areas and relations to solar systems, we also have multiple different user groups! Our applications have touch points for both business users that use our software daily, as well as consumers that are usually actually customers of those businesses.

About you

Well, you can write Javascript for starters. As important as coding itself however is your attitude towards colleagues and learning. We are looking for someone who is eager to improve, not too shy to ask any type of question and who can communicate well in writing. The reason for this is that we work remotely a lot (we did quite so before corona, but now practially 100%).

Back to the coding part, we don’t expect a decade of experience, but we do like to see someone who has some experience overseeing a bit more than just a todo application. Once you get up to speed you will “own” a part of our app (together with a buddy) to keep it in good shape and improve it.

Required skills

  • You can write Javascript for the front- and backend.
  • You are well versed with HTML & CSS.
  • You have at least some professional experience in another programming language.
  • You are eager to learn Python if you don’t know it yet.
  • You can clearly outline your thoughts about a technical solution in written form (and diagrams are always a bonus!)
  • You actively engage with others to optimize processes and reduce bottlenecks.

Nice to have skills

  • You might have experience with interactive (3d) graphics, possibly using WebGL.
  • You might have experience with Geographic Information Systems.
  • You might have experience with TypeScript.

The application process

Applying

Please apply here with a cover letter that describes: - Who you are. - Why you? What will you bring to Solar Monkey? - Why this job post and not another? - What relevant (for us) work you have done. Preferably something you are excited about.

Please limit it to 500 words or so.

Phone screen

If your application is clear and seems to match what we have in mind, Marieke will call you for a short (20m) phone call. If it isn’t, we will let you know by email, if possible with some helpful feedback about the reason of rejection.

1 hour take home exercise

Whilst we don’t like to throw up too many hoops for candidates, we do feel the need to see you write some simple Javascript. These are 2 simple kata-style exercises that shouldn’t take you more than 1 hour, and hopefully are fun!

1 hour interview

This is a remote interview with two developers from our side. We will discuss your background, the exercise and leave some room for questions from your side.

Larger take home exercise

In preparation for the final interview we ask you to spend a maximum of 4 hours on an exercise that a) gives us more insight into how you approach a bit more advanced problem. And how you communicate about your solution. It also serves as the content to work on in the following 2 hour pairing session.

2 hour pairing session

In this (real-life or remote) session you will pair program with two Monkeys, on improving and extending the results of your previous exercise.

Agreement

Already after the 1 hour interview we will share with you our possible offer, in order to prevent the case where you do pass the interviews but in the end we cannot agree on the terms of working together. This potentially can prevent both of us from waisting time if we are far apart on the details. We will finalize this after the last 2 hour pairing session.