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, functional programming 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 programming language 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 Visual Studio Code 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.