Hello and welcome to nerdgeschoss GmbH. This document is here to help you find you way around the company, gives you all needed contact data and a general overview on how we work.
How do we make decisions? What are our strategic movements build on? We tried to define six core values that we want to base our decisions on.
We strive to create awesome work that we can be proud of and others look up to. We never stop improving ourselves.
All heroes need guides. Help others achieve their goals. Empathise, care and challenge.
Don’t create solutions for problems that do not exist. Ask better questions, listen and repeat.
Honesty is the foundation of good communication. Show trust and respect for each other by always choosing transparency over secrecy.
What makes you weird and special makes you memorable. And not only that, it makes you authentic and original. This is your superpower.
nerdgeschoss GmbH was founded in 2013 as a legal entity as a project of Christian and Jens. Before they worked as colleagues in a design agency called nulleins. From the beginning on we had a focus on apps, mobile and ux while the term responsive design wasn’t even a buzzword yet. During the first years we focused on native and hybrid apps (iOS, Mac, Android) while spending the majority of time wrestling with Wordpress. In 2014 we joined a Startup called MyLane, trying to disrupt the point of sale of german local retail with iOS based point of sale systems. As it turned out this was quite a nice idea (as Square proved a bit later), but failed quite badly for us. Recovering from this fail nerdgeschoss pivoted back to the initial idea: Doing serious applications instead of Wordpress pages and startups. We started taking Ruby on Rails as our main stack and extended it in 2017 to use React on the frontend, targeting companies from startups to bigger corporates. This is where our technical mission statement came from: Build solid and maintainable software that is focused on helping and delighting the end user.
You arrived at the office, signed your contract and probably already had your first coffee. Now the fun can start! After receiving your new MacBook and other hardware, you will get access to a lot of web based tools we use for collaboration.
The first thing that will happen. You get a Gmail invite for you personal [email protected] address. From now on please use this email account for all business related signups and conversations. This is an email account to document your work, so we reserve the right to have a look into it if we urgently need any info from it (just store your vacation bookings and loveletters in a private account, please 💁♀️). This invite also includes a google calendar. All calendars in the company are connected and public to each other. If you’re interested, you can add others from the web interface to your view (this also translates to Calendar on Mac/iOS).
n.U.T.S. stands for nerdgeschoss Unified Tech Stack, our common architecture for Rails applications. You can find out all about it here.
All collaboration happens in GitHub. We have a company account for both private repos for our customers and public open source repositories. You will be added to the developer team and therefore will have admin access to all repositories (this is intentional - waiting for an admin should never be a thing). More on how we use Git later.
This is were internal communication happens. Every project has its own channel. Also make sure to subscribe to
#office to communicate with everyone in the office. More on the slack workflow later.
Our time tracker. Most of our projects are billed by time and material to our customers, therefore it’s important to track your time every day. We do not use the time tracker to check how many hours you spend in the office, but just to bill our clients (so please don’t make up numbers here to look like you’re working more - we won’t see it anyway). You might want to install Harvest for Mac which allows you to start time tracking via hotkeys.
If you survived the job application process you probably already touched Heroku. In our experience it is the easiest and most stable hosting solution we tried so far. We use it for everything from simple Wordpress to microservice-backend-apps. Have a look at Heroku Review Apps if you need more arguments for it. We use Heroku Flow as a development style. The rule is simple: Whenever you don’t have an explicit reason not to go for Heroku, always go for Heroku and don’t host it yourself.
The nerdgeschoss app contains everything company related you might need at https://app.nerdgeschoss.de. Here you can check on your paychecks, remaining holidays or sprint performances. This app is open source and available in our GitHub account. Feel free to do pull requests to improve it.
This is where project management happens. There is an All Projects board that contains everything that is currently in worked on with filters for each project. More about columns below.
Contains all passwords and software licences you might need. Ask Christian or Jens for access. You can get the current version here.
You got everything setup correctly? Time to get some work done!
We’re here to help you grow and get the best work possible done. If we can support you in any way with that just let us know. This includes everything from drinks to software licences you might want to use or additional hardware.
For all employees the snack bar and drinks are free.
For credentials to our Wifi, check 1Password.
There is no calendar for the meeting room as of now, so it’s used on a first-come-first-serve basis. If you need to reserve the room for specific meetings, just let the others know via slack.
The meeting room has a 55inch 4k TV with an attached ChromeCast, so you can mirror your screen or individual windows and tabs without installing additional software (assuming you have chrome installed). On the other side of the room you will find a magnetic whiteboard and markers. If you use the board, please clean it after the meeting. Those markers have the nasty habit of becoming quite permanent over night and are super hard to remove the next day.
We pride ourselves on not only being remote-friendly, but remote-first. All processes are designed to support an asynchronous workflow across timezones that should help you to adapt work to your life - and not the other way around. There are no minimum office days, you can individually decide where to work.
Feel free to work remotely as much as you want; there is no minimum of days in the office. We have some recommendations for you though:
Feel free to switch between tables whenever you want. We try to keep all tables equipped with the same hardware so it’s easy to switch. If you feel like it, you can also work in the kitchen, on the couch or on the balcony. If you have long phone calls, it might be a good idea to switch to the meeting room or the phone booth to not disturb the others too much.
Work at nerdgeschoss happens asynchronously, there are no fixed working times. We believe that work should adapt to your life and not the other way around.
Nevertheless we have some rules to make working (especially across timezones) easier:
To simplify the planning of required team meetings, there is a Core Meeting Time from 10:00 to 12:00 (Berlin time). Do not schedule any other appointments and make sure that you are available during this time. This also includes any private meetings or doctor appointments (these can usually be scheduled to a later hour or if it's really urgent you of course can take a day of sick leave). This way we can schedule company wide meetings without having to schedule with each person individually.
You’ve done your best for today and it’s time to head back home and enjoy some time away from the keyboard. Before you leave please check some things:
After you left, don’t bother with work. Your free time is yours, so you don’t have to answer slack messages or emails (if we manically call you for 15 times and leave hundreds of slack messages pinging you, it might be worth checking in with us though 🙄).
Over hours are neither expected nor seen as a good thing. Focus on the time during work, work efficient during the day and use your free time to restore your energy. And if you still stay in the office we might kick you out at some time 🚪.
Every second friday during Review we recap what we achieved during the sprint together. We discuss impediments and their solutions and how to continue during the next sprint. This is also the moment to showcase your work, present libraries and helpers you’ve written during the week and give each other feedback.
Vacations and sick days are managed via the nerdgeschoss app.
As we’re all not machines, unforeseen things can happen. First things first: If you’re sick, stay home and take care of yourself. No one will be happy if you get worse by forcing yourself to the office - or worse: make your coworkers sick too. So stay in bed and take care of your health.
Nevertheless there are some legal/organisational parts to this too: If you are sick, tell us before the core office hours. If you’re sick for more than one day, we need a notice about this from your doctor from the second day.
Visiting doctors or related services during work times depends on the severity of your condition: You have fever and can’t breath? Probably you shouldn’t be in the office in the first place. You’re going to your quarterly health checkup or yearly dentist appointment? Do this outside of work hours. We offer quite flexible core working hours, so it should be possible to shift your appointment accordingly. Keep in mind that time at the doctor is not working time (unless he writes you sick, in that case it’s part of the sick time).
The following are guidelines to help you coordinate your work with your team. They are just general ideas and can always be adapted to specific project needs.
Any ideas and customer requests go first to the Shaping status of Jira and stay there until all external factors are determined and all open questions are resolved. This usually involves talking to the customer, creating mockups or doing user research. During this time we might assign a Shaper to the story who is responsible for coordination and making a plan how to implement this. Once a feature is clear and decided to be worked on, we estimate it together as a team in story points. You have any ideas what you would like to change about a project? Throw it into the "Shaping" status.
Estimated stories will get unassigned and move to Todo. We use this column to fill our 2-week sprints (always from Monday to Friday one week later).
All tasks in the task board in the “Todo” column that are not assigned to a specific person can be worked on. If there is a task marked as “important”, you should consider taking this one first. Also make sure to check if you can help your peers in a peer review before starting new work. If you find something you want or need to work on that is not on the task board, create a task in the backlog and advocate to get it into the next sprint.
Pick the card and move it to the In Progress column and assign yourself. Next up, create an empty pull request (in status draft if possible) in the project. Your branch should be named
feature/KS-123_task_i_am_working_on - make sure to include the issue number. Give that pull request a descriptive name (“Bug Fix” is not descriptive!) and add either the ticket number and link from Jira or a proper description to this pull request (again, “fixing a bug in cards” is not descriptive!). The early pull request is there for your team to see what you’re working on and prevent duplicate work. If you create a pull request with the Jira number in the title, a bot will automatically move the ticket to "In Progress". To simplify the process, you can also use the pull-request gem which installs a
Your work is done, now it’s time to integrate it into the project. Have a look at your pull request in GitHub and check the following:
If you’re happy with your work, now move the corresponding task to Review and mark your pull request as ready for review. If you think that some specific coworker would be good for a review, request a review directly from him/her (you can use the GitHub feature to request a review). Do not request a review like that on every PR from each coworker - you don't want to spam their inboxes.
Peer Review and QA happen in parallel.
This state is designed to have your code reviewed on a technical level. We use GitHub’s review feature to leave comments directly in the changed code. If you request a change, move the issue back into the Todo column.
Things to look out for as a reviewer:
Once you're done and everything is fine, approve the PR in GitHub.
QA means testing the feature once more before the end users see it. This happens in parallel with code review to not block each other.
Once you're done and everything is fine, approve the PR in GitHub.
When the pull request reaches the Peer and QA approvals, it is time to merge. The last person to approve a PR is responsible for merging into the main branch (usually with a squash commit) where it’s directly picked up by deployment scripts and deployed to staging/production servers. This also means nothing should be merged before it is finished, including translations, icons or other assets. Once the feature is released, move the issue to Done.
To create an inclusive work environment and reduce bias in salaries, we use the nerdgeschoss Human Growth Framework to determine salaries.