Senior Programmer

Pageflow / Codevise Solutions GmbH

We are the small team behind the open-source web storytelling tool Pageflow and its commercial counterpart Hosted Pageflow. After steadily growing Hosted Pageflow as a bootstrapped SaaS side by side with our agency business, we are ready to build a team to focus exclusively on product work.

From broadcasters and newspapers to scientific publishers and educational institutions to brands and NPOs, our customers come from a wide variety of backgrounds. Join us in helping them tell engaging stories!

About the job
We’re looking for an experienced developer to work closely with Tim (that’s me, the lead maintainer of the Pageflow project) to take a front-row seat in our product’s future development. You’ll see projects through from early concept to final rollout, including:
  • Writing and collaborating on pitches/shaping documents to flesh out ideas and form shared understanding.
  • Working on pull requests for the open-source project and the SaaS application with a high bar for code quality and test automation.
  • Finding and honing solutions in remote pair programming sessions and via mutual code review.
  • Improving CI workflows to test and deploy our applications.
  • Working with support to investigate issues reported by customers.
We recently started transitioning towards a scaled-down version of Basecamp’s Shape Up methodology. We believe that developing software is an iterative, discovery-driven process. “Fixed time, variable scope” is what keeps us in control of product development.

Pageflow is a Ruby on Rails engine with most of the frontend written in React. You’ll be building fully integrated features taking ownership of both frontend and backend parts of the codebase.

Here are some examples of recent projects we worked on to give you a better idea of what the work will look like:
  • In a major restructuring of the code base, we introduced different types of Pageflow stories and built a purely React-based frontend that features inline text editing and improves user experience on mobile devices while preserving support for stories built with previous Pageflow versions.
  • Migrated all of the core JavaScript to Webpacker and Jest.
  • Created opt-in flows to ensure GDPR compliance of our analytics and third-party integrations.
  • Built a deployment pipeline based on Docker and Helm and migrated to a Rancher-managed Kubernetes cluster.
And here are some projects that we consider starting later this year that you might then be involved in:
  • Develop additional interactive story elements for data visualization or social media embeds.
  • Introduce new ways for editors to create themes and customize their stories’ appearance by adjusting colors, fonts, and other settings.
  • Let agencies aggregate different accounts under a single contract to consolidate billing.
 
About you
Collaboration in a remote setting hinges on self-organization and effective asynchronous communication. From concept documents to commit messages to code review discussions, a lot of the work will be written. You believe in writing things down.

You have extensive experience with an MVC framework (ideally Rails) or frontend libraries (ideally React), but, even more importantly, enjoy learning new things. We value practical experience over college degrees, problem-solving skills over specific technical knowledge.

You agree that tests should be first-class citizens in every code base and build features with testability and maintainability in mind. You have an eye for good design and enjoy tackling challenging UI/UX problems.

Why you might want to work with us
  • We’re a tiny team. You can have a huge impact here.
  • Large parts of your work will happen in public repositories and become part of your portfolio.
  • We value uninterrupted time to be able to do deep work. We default to asynchronous communication and rarely have meetings.
 
Why you might not want to work with us
  • We’re a tiny team. Often there won’t be many others who can take things off our plates.
  • This is not a green-field project. While our extensive test coverage and overall focus on design have safely guided us through some different project incarnations and Rails major versions, making progress will require digging into the history of why things are the way they are.
 
Pay and benefits
This is a full-time position (40 hours per week) with flexible hours. We work at a sustainable pace. This means a workweek should not have more than 40 hours regularly. Your typical workday should have at least 4 hours overlap with 8am-5pm CET, though.

You can work from wherever you want. We do have an office in Cologne that you are free to use. But since I will also be working remotely, there will be a level playing field if you don’t. We will buy the technical equipment you need and pay for a desk at a coworking space should you decide to rent one.

The salary for the position is between €60k and €70k based on your experience. Tax and social security deductions will depend on your place of residence. The position includes 25 days of paid time off in addition to local holidays.

For legal reasons, we are only able to hire EU citizens.

How to apply
To apply, please write something specifically for this position. Tell us why you’d be a great fit and what you envision your role in our team to be. Tell us about previous projects in which you were able to gain relevant experience.

While most of our team members are currently located in Germany, most of our written communication takes place in English. We, therefore, ask that your application be written in English as well.

You’ll hear from us within two weeks after sending in your application about advancement to an interview round. The interview will be remote and mainly serve as a chance to get to know each other and answer your questions.

The final candidates will be asked to propose three example projects from which I will choose one for the two of us to work on in a remote pair programming session. Ideally, the projects should involve some technology that we both do not yet know well to make it resemble as much as possible an actual work situation where we need to tackle a new problem together.