How we work

How we work

Basics

We strive for a positive team culture, a relaxed atmosphere, and a bright and friendly workplace. This includes:

  • Fair behaviour and open communication within the team
  • The avoidance of time-consuming meetings and other nonsense
  • Short decision paths and co-creation
  • Asynchronous communication using collaborative tools to support the different ways of working that different people need
  • Last but not least: fair contracts

We are not always perfect, but we try to do our best and learn from our mistakes. 😉

Our Team

Currently (as of July 2018) we are a team of 10, all working on PicDrop.

From left to right: Senait (marketing), Tobias (co-founder, interface-designer & frontend developer), Uwe (backend developer and overall magic), Tino (frontend developer), Johannes (backend developer), Paula (support, joining the photoshoot remotely), Katharina (support), Franziska (assistant to the management), Luise (frontend developer), Andreas (co-founder, marketing)

Our team

Work as a team

PicDrop is not the place for stubborn, egoistic solo fighters. Instead we are trying to help each other to find and understand mistakes, to find even better solutions and to become better together. As communication is key, you can find our communication guide here. Furthermore, through our regular all hands meetings, we try to find out how we can work better and how we can do better as a team.

Late hours, overtime & other nonsense

We don’t like to work overtime or do all-nighters and so we won’t ask you to do so. In the rare case, you do work overtime, because you want or need to finish something, please make sure to compensate for that time within the next days and weeks. We don’t want you to burn out, so please take your time. Also, make sure to discuss within your team how your colleagues can help you to avoid working overtime in the future.

Also, we won’t contact you on holiday or during weekends. That seems reasonable to you? Same here!

Home office

PicDrop is home-office-friendly. Even though we have that nice office, we believe that the work from home has the same value as working in our office.

And when we say “home-office-friendly” we actually mean remote work in general. You are super excited to join our team but don’t want to move to Berlin? No problem! Feel free to work from Cologne, Munich, Buxtehude or whereever you live. (But still Germany, for now.) Just make sure you find the right space to get your work done and let us know if we can support you in any way.

Even though we are still learning how to implement remote work into our team we invite you to teach, help and learn with us!

Working part-time

We support working part-time. Just talk to us.

How we plan

Our goal is to publish one new user-facing feature at the end of every month. The decision on which feature will be built next is based on user feedback and long-term strategies. The scope of the feature should be realizable within one month. That gives us a chance to try new features fast and to see how they work and if they are accepted before we blow them up “needlessly”.

We discuss all aspects of the planned feature in our team - from Development to Marketing and Support. That’s why it’s important that the details need to be communicated comprehensibly to the whole team.

We try to spent 50% of our time on new features and work on these features in monthly projects. The other half of our time we use for anything else. That may be performance updates, backend stuff, security measures, internal stuff, etc… There’s always more than enough things to do.

At the end of the planning phase we have a couple of user stories to design and implement and put them into our ticket systems (Asana & Jira).

How we design

Based on the user stories an overall concept for the given feature is created. This concept holds all aspects of the feature including those that are not visually expressable.

From then on the different granularities of the design such as wireframes, prototypes or pixel perfect visualizations are iterated and discussed with the stakeholder of the feature and/or the development team.

If necessary the design system will be adapted to new UI Elements and the final visualizations are included in the concept which is finally passed to the development team.

How we develop

When implementing new features or maintaining existing code, we try to find practical solutions between hacks and textbook solutions. We are always on the lookout for new technologies. But we use them to solve our problems, not just because they are the new hip thing. Not to say we never try new stuff and fail from time to time (see Mistakes).

Our review process makes sure all changes are working as intended, the written code is clear to other team-mates and our guidelines (code style, etc.) are followed. We also use the review process to learn from each other and personal development.

Currently we use the Jetbrains IDEs for development. Local development is done using Docker and the code is hosted by GitLab.

Our technologies and infrastructure

Currently we use a mixture of server templates and pure JavaScript views in the frontend. We write our markup in HTML5, style in SASS and script in JavaScript with support from WebPack, Babel and for the time being still jQuery.

In the backend we use PHP with our own framework and different microservices in different languages (Java, Go).

We use… MacOS, JetBrains IDEs, Docker, GitLab, Slack, Confluence, Jira, Asana, the Adobe Suite, Sketch, HelpScout, Terminal and Mailchimp.

Challenges

With PicDrop we develop a WebApp that runs in a browser. It must be able to keep up with native apps in look and feel with the advantage that neither download nor installation is necessary. So in the development phase we are dealing more with larger software structures than with building a website. In concrete terms, this means that enormous amounts of data have to be processed and moved live in the backend, while nothing of this should be noticeable in the frontend.

Meetings

There are only two fixed, non-optional team meetings per month They each usually last no longer than one hour. Both take place on the first Tuesday:

  • 10am: team breakfast: A start into the day as a team. Just be there if you want, we will take care of the breakfast. This is optional.
  • 11am, all hands numbers meeting: Here we discuss the latest numbers (revenue, signups, marketing) and give every team a chance to show what they learned last month and plan for the next months. Here it is more than welcomed to ask questions and exchange ideas on all topics, even if they are completely unrelated to your own work.
  • 5pm, all hands goalsetting meeting: Here we look into the future, think about the next steps together and become visionaries. Beer may help bringing up great ideas.

Some of our teams still have a weekly standup meeting at Mondays of Fridays, but that varies from team to team. All other meetings are optional and it is up to you whether you invite individual colleagues to quick meetings or accept meetings. In the best case no further meetings are necessary.

How to avoid meeting hell (aka “Our Meeting Rules”)

Of course, we also know that sometimes there is nothing like brainstorming or discussing things together. It is pretty easy to keep meetings bearable, short and effective if you just follow some rules. Once you see the benefits of these many, many rules, you will love it!

Prepare and let other people do the same

  • Avoid as many meetings as possible. 😇 Only ask for a meeting if you exactly know why and can’t discuss the topic using our tools for asynchronous communication.
  • Before inviting anyone to a meeting, always prepare a Confluence page that sums up all topics in an agenda that you want to talk about. Attach the document link to your calendar invite and make sure every participant gets that document at least 24 hours before the meeting. 📆
  • If you are invited to a meeting: Read the document and read it in time with enough time to think about it before you attend the meeting. Don’t read it 5 minutes before the meeting starts.
  • If you feel like someone in a meeting is not prepared at all but you still need his/her opinion, please consider cancelling or rescheduling the meeting if possible. It makes no sense to talk about things which not all the people involved have been able to think about in detail.

Scheduling a meeting 🗓️

  • Make meetings as short as possible and ask for permission and the best time and date before adding the meeting to your colleague’s calendars.
  • When scheduling a meeting, invite all people involved via Google calendar, block one of our conference rooms and set a reminder. Make the meeting as short as possible and always ask for permission and the best time and date before adding the meeting to your colleagues’ calendars.
  • Always make sure a Google Meet conference call is added to the invitation, no matter what the meeting is about or if you think every participant will be in the office. (Google should do this automatically, but please double-check.) Plans may change and we want people to be able to join any meeting remotely.
  • Try not to invite more than 2, max 3 people to a meeting if possible.

During the meeting

  • Always be on time. Even arrive a little earlier for a little warm-up chat before jumping directly into the meeting. Also, … ⏰
  • … don’t wait for late people. Start on time.
  • If you know you can’t make it to a meeting on time, let other participants know early, also cancel using Google calendar. The meeting should nevertheless start on time, even without you, unless your opinion is essential for the success of the meeting.
  • Please keep your phone in your pocket and turn off any alarm (sound and vibration) on any of the devices you bring along. Please also ignore the telephone that may be ringing on your desk. You can call back later.
  • Before starting a meeting make sure to decide who will lead the meeting and who is in charge of ensuring that the agreed time is not exceeded. Also, decide who is responsible for the written summary of the meeting. Make sure this person will send the summary to every participant afterwards on the same day. 🗒️
  • Let others speak, before you speak. Listen actively. 👂
  • Always try to stick to the topic during the meeting. ⌛ If an additional important topic arises, note it down and either discuss it at the end (if time is left and it make sense to discuss the topic spontaneously) or schedule a new meeting to discuss it. Often there is no point in discussing issues that are not on the agenda since no one could prepare for them.
  • Don’t waste people’s ears - if an issue arises during a meeting, identify the involved people, separate the issue and give the issue the space to get solved in a separate meeting.
  • Every action you decide on must have a task owner and a date. The person that is responsible for the protocol is also responsible to create the follow up tasks for every participant in Asana/Jira right after the meeting. The assigned person is responsible for moving the new task in the belonging project and/or the own todo list. No owner/date on a task means: This will never happen. We’ve been there. 🤕

Notably for the All Hands Meeting:

  • Unless you are not the moderator of the meeting or you need to present something on your computer, no computers are allowed. Please bring pen and paper for all your notes. 🖊️
  • Hand in your talking points at least 24 hours before the meeting (Monday at 10am) by updating the protocol in Confluence. Franziska will then update the presentation.
  • You get a time slot, which usually is 10-15 minutes per team. Make sure it’s enough time for your presentation. Either shorten the information you need to provide or ask Franziska to extend your time slot.

Our (video) call conference best practice

For all calls and video conferences, we use Google Meet. Basically the same rules apply as for “real” meetings, sometimes meetings consist of both - people in a conference room plus remote colleagues. So keep in mind:

  • Check your equipment and software before the meeting starts.
  • To ensure that no echo is occurring, use headphones with an integrated microphone. 🎧 A mix of simple headphones (without a mic) and your Macbook microphone also works surprisingly good, if not even better. In case you don’t have headphones, lower the speakers on your Macbook so other participants won’t hear themselves.
  • Don’t arrive on point - log in a few seconds earlier to make sure your computer works.
  • Try not to talk simultaneously. 🤫 What works without problems if you are in one room often ends in a chaotic and inaudible call for your remote colleagues.
  • Try not to make loud noises that unnecessarily confuse the microphones and are amplified at the other end. (Putting bottles on the table etc.) Use the mute function if needed.
  • Pay special attention to how you say things, to the words you use and that you are always clear. Always keep in mind: Space for interpretation creates space for misunderstandings.
  • If agreed on a video conference, make sure everyone has the camera switched on - It’s hard to communicate properly if you don’t see each other.

Feel useless? Great!

If you’re in a meeting and feel like you don’t belong there, kindly ask if your opinion is actually needed. If not, leave and enjoy! Don’t waste your time, even if your team lead invited you.

Mistakes

Of course, no one likes mistakes. We are no different. But we also strongly believe that only a place where you don’t get judged for making a mistake encourages a culture of exploration and finding exciting new ways to solve problems. Also, we are humans. Humans make mistakes. So we try to be open about any mistake we make, get over it quickly, find a way to avoid making that mistake a second time, and continue.


Read the next page: How we communicate