The nerdgeschoss Guide to the Galaxy

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.

The Why

A Short and Incomplete History of nerdgeschoss

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.

Company Values

How do we make decisions? What are our strategic movements build on? We tried to define seven core values that we want to base our decisions on.

Diversity

nerdgeschoss is safe home for people from all over the world and is honoring our differences as our biggest strength. Only a diverse look at our customers problems can have the best impact for them. There is no room for prejudice or discrimination of any kind in our company.

Transparency & Honesty

Transparency is both lived within the company and with our customers. We admit errors when they happen and help each other to solve problems to build customer trust.

Empathy

With a diverse company culture it is extremely important to listen to coworkers and customers. Appreciation of each others work and capabilities leads to a comfortable work atmosphere.

Teamwork

We work together on problems as a team, not as lone warriors. This includes regular discussions, code reviews from peers and pair programming.

Fun

While building the best software on this planet and beyond for our customers we shouldn't forget about why we are doing this: We’re passionate about building software and learning new things.

Responsability

The flat hierarchy at nerdgeschoss also leads to a distribution of responsibility. Everyone is responsible for the wellbeing of the company and therefore us - we either make it together or fail as a team.

Self Improvement

nerdgeschoss is all about helping our customers with the best technologies and practices available. We constantly keep improving our knowledge of new technologies and methods.

The How

Your First Day at nerdgeschoss

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.

Gmail / Google Calendar

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). Make sure you subscribe to the meetings calendar as it contains events that are for everyone in the company.

GitHub

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.

Slack

This is were internal communication happens. Every project has its own channel. Also make sure to subscribe to tech-office to communicate with everyone in the office. More on the slack workflow later.

Dropbox

Dropbox is used for sharing files (e.g. briefings, designs, …). You will have access to the Projekte folder which contains all files you might need. Project folders are moved to archive once they’re finished (you might want to setup selective sync here as this folders becomes quite big).

Harvest

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.

Airbrake

This is our error tracker of choice. There are clients for pretty much every language so we implement it both client- and server-side. Whenever something crashes, this is the first place to look at - and because it works so well we do not use other general logging services for now.

Heroku

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.

CircleCI

We use CircleCI for all our CI needs. Permissions are synced with GitHub, so you can access everything here that you can see on GitHub (just login with your GitHub account). We configure all projects to build pull-requests on Circle and the build status is shown on the GitHub page. In case you ever need to debug a build job: You can start a build with ssh-support and then directly access that machine via ssh to tinker around with the internals and see why certain things are failing without constantly pushing changes.

OfficeApp

The office app contains everything office related you might need at https://office.nerdgeschoss.de. You can use it to track drinks, monitor your time in the office (this is an opt-in feature) and in the future to control the lights and the door to get into the office. This app is open source and available in our GitHub account. Feel free to do pull requests to improve it.

Trello

This is where project management happens. Be sure to subscribe to our weekly Kanban board for an overview what’s happening in the company. For individual projects there might be extra boards that you can join when needed.

Other Software we are Using

1Password

Contains all passwords and software licences you might need. Ask Christian or Jens for the root password to access all of it (synced via Dropbox).

Tower
Sketch / Figma
Visual Studio Code

You got everything setup correctly? Time to get some work done!

Your Time in the Office

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.

Drinks and the Snackbar

For all employees the snack bar and drinks are free.

Wifi

For credentials to our Wifi, check 1Password.

Using the Meeting Room

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.

Where to Work

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 to not disturb the others too much.

Working in general happens at the office. Currently we do not offer remote work. If there are specific reasons why you need to work from home, just talk to Christian about it.

When to Work

At nerdgeschoss we believe in honesty and responsibility of the individual. We do not track how long you’re working and don’t do records about when you arrive or when you leave (you can enable presence tracking in the office app to get some statistics about yourself, but this is completely optional and we will not use this data). Nevertheless there are some guidelines to improve working in the team.

Core office hours are from 10:00 to 15:00. During your day you should aim to work 7.5 hours per day, which accumulates to a 37.5 hour work week. This is pure work time, any breaks (at least 30min of lunch break are mandatory!) are coming on top of this. Feel free to do as many additional breaks as you want (wanna go for a half hour nap on the couch in the afternoon? feel free to do so, no one will judge you), just keep in mind that they come on top of your usual hours.

Each day has a daily at 10:30. This shouldn’t be a problem as you are already in the office at 10:00 and you’re always on time.

The Week has Started - Now What?

Every week starts with This Weeks Prospect by Christian in the announcements channel in slack. It defines the major focus points of the week per project and asks open questions. Items from here are also transferred to the Tasks board in Trello. If those items refer to a task in another system, it’s linked in the Trello card. Usually this is accompanied by a short discussion of the whole team about taking responsibility for each task.

At the End of the Day…

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 in the office, 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 🚪.

Your Week Comes to an End

Friday afternoon we recap what we achieved during the week together (this can also be done in slack if you’re not in the office). We discuss impediments and their solutions and how to continue during the next week. This is also the moment to showcase your work, present libraries and helpers you’ve written during the week and give each other feedback.

On Friday Jens also publishes “This Week in nerdgeschoss” with a summary of what happened during the week and a short outlook.

Vacation and Time Out Of Office

Vacation

For a link to our vacation planner, check the internal version of this document.

Calling in Sick or for Personal Reasons

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).

Working on Tasks

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.

What to Work on

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, discuss your proposal with Jens or Christian and we will add it to the sprint, depending on the current projects.

Starting a new Task

Pick the card and move it to the “In Progress” column and add your avatar to it. Next up, create an empty pull request in the project. Your branch should be named feature/task_i_am_working_on. Give that pull request a descriptive name (“Bug Fix” is not descriptive!) and add either the task url from Trello 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. This is also a good time to put the link to your pull request into Trello. To simplify the process, you can also use the pull-request gem which installs a pr command.

Finishing a Task

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 “Peer 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).

Peer Review

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. Once your feature got an approving review (might take a few iterations), the task can be moved to QA.

Quality Assurance

This is the last station before your feature goes into production! Quality assurance is done by corresponding product owners (currently this is Christian or Jens). Main focus here is user experience and product vision:

At the end of this review step, the reviewer will merge your code to the master branch (usually with a squash commit) where it’s directly picked up by deployment scripts and deployed to the production servers. This also means nothing should be merged before it is finished, including translations, icons or other assets. From here your task goes either to the “Done” or “needs follow up” column, depending on the use case.