Remote Software Development Hivemind Technologies AG About Hivemind Technologies AG

Small software consultancy from Cologne, Germany A distributed, diverse & multi-cultural team Work 100% remotely since 2018 Focus on scalable, in the cloud Provide consulting, development & training What's in it for you?

In this workshop we want to share with you our successes & failures from over two years of working remotely:

Lessons learnt & techniques to overcome the communication hurdle Less-known tools beyond slack & zoom to boost productivity Effective workflows of remote development Structure

The workshop lasts 8h (1h break) and will be held remotely via Zoom, Google Meet or Slack.

We believe that interactive workshops result in a better learning experiences & more fun. That's why we will do multiple, diverse exercises in this workshop.

Up-front we will ask you for some info to adapt the workshop to your particular tech stack & process.

We speak Outline

Remote is the new black Remote coding tools & techniques Conflict handling Agile workflows Zen level of remote working Summary Remote is the new black

A short introduction on why we love remote, why we never want to go back to on-site, and what benefits we draw from it apart from being able to work in underwear Remote coding tools & techniques

Works on my machine!

How to set up reproducible development environments that make your co-workers happy and get them up-and-running instantly.

Exercises:

Setting up a dev environment for your Enhancing the setup with 3rd party services Remote coding tools & techniques

Live is life

Avoid the "can you type x at line y" video calls and live-code instead.

Exercises:

Live coding of a small webservice Remote coding tools & techniques

Pairs & mobs

How to code together.

Exercises:

Pair & mob programming session Remote coding tools & techniques

Boy, that escalated quickly!

How to perform friendly code reviews.

Exercise:

Perform a code review Discuss typical code review situations Remote coding & techniques

Blame it on the boogie

How to avoid the blame game by keeping record of your decisions.

Exercises:

Discuss a decision record Write a decision record Conflict handling

Your ego is not your amigo

Do's & Don'ts of team communication Deescalation techniques

Exercises:

Role play of conflict situations Discussion of common scenarios Agile workflows

How to move your Scrum/Kanban process online

Exercises:

Perform an interactive retro Zen level of remote working

The different levels of remote working. How to become truly asynchronous. How to choose the right tools for the right job. Example content Remote coding tools & techniques A polyglot world

Software development is becoming increasingly polyglot:

Programming languages, e.g JavaScript, Purescript, Elm for UI Haskell, Scala, F# for backend Kotlin, Swift for apps Rust, Go for systems level programming HCL, Typescript for IaC A polyglot world

Third party services to interact with Different databases for different needs (SQL, document stores, key-value stores, ...) Queues for message/event driven architectures Monitoring, logging services External Rest, GraphQL, gRPC (saas-)services Cloud infrastructure & services Working development environments

A working development environment is ever more important, especially in the context of remote working. It should:

contain everything needed be reproducible & isolated have minimal complexity

Wouldn't it be cool if I could just check out a project repository and simply start working? Batteries included

Microsoft's introduced a new concept called dev containers that allow to develop within a container.

At Hivemind we have become big supporters of dev containers and use them extensively throughout our projects.

They allow us to easily share complete and fully-functional dev environments. How it works

Visual Studio Code documentation on 2020-05-12 Requirements

Install Visual Studio Code from https://code.visualstudio.com/ Install the Remote Development Extensions Dev container structure

# VS Code configuration (ide extensions, container to use) .devcontainer.json # Container configuration (compiler, tools, dependencies) Dockerfile # Other services docker-compose.yml Let's start! Exercise 1:

Create a dev container set up for your programming language.