Djangocon: survival tricks and tools for remote developers - Alessio Bragadini

Tags: djangocon, django, python

(One of my summaries of a talk at the 2018 European djangocon.)

He works in a company that has many remote workers. He is one of them. The core question for him: “how do I manage to work remotely in an effective way without much stress”.

There is a difference between a remote-friendly company and a remote-first company. Remote-friendly is a company that still has an office. But you’re allowed to work from home and you don’t have strict work hours. Remote-first changes the entire structure/culture.

Can agile help?

  • Test driven development. First you make the tests. That’s handy for remote teams. It sets strict boundaries where you can take over the work in a way that you do not have when sitting behind the same keyboard.

  • No code ownership. Anybody can work on everything all the time.

  • Shared “visual backlog” (boards and so).

But… “agile” also says that teams that work face-to-face are more efficient in conveying information. But note that the agile manifesto is many years old now.

Face-to-face means proximity, but also truthfulness. So: no documents that can mean anything, but truthful conversation. Eh: we are now used to slack, skype, whatsapp. This is 99% of what face-to-face means. (You still miss body language, though, and the pleasure to be near to each other).

And, what is information? Discussion about the project, about code or design. Information about what moves forward: commits, tasks. Info about what moves backwards: bugs, regressions. All these things can be done online. Some of these can even be done better online.

The more you use these online communication channels, the more you become remote-first. Being in the office is almost accidental. The online channels become stronger if you have your machines post feedback there (“failed test!”). Perhaps even automate tasks that you can start via messages in your channel…

You need a shared repository that is accessible everywhere. A channel to communicate on. Automatic testing. CI. Etc.

Some comments:

  • There are some agile “ceremonies” like a daily standup and a sprint review. Do that, but online.

  • Explain what you’re going to do and what you’ve done. Don’t work in an invisible way.

  • Establish “work hours” even if you are not in a proper office. This is perhaps counter-intuitive to working remotely.

  • Important: keep the chat hannel open during work hours.

  • Do meet face-to-face from time to time.

  • Learn from companies that do remote-first: automattic, balsamiq.

Some tools they use:

  • Test driven development (unittests, selenium).

  • Infrastructure as code (VMs, docker).

  • In-house Gitlab as their git repository and project center.

  • Continuous integrations (with pipelines on gitlab). Due to the automated pipelines, no one has to do those tasks. Otherwise you often have a single person that has to do those kinds of tasks so that he feels a bit separated from the rest. Automate it away instead so that everybody can code.

  • Slack channel with integrations with gitlab and sentry. (via a Chatbot)

  • Gitlab boards, some trello boards.

  • Skype for “agile ceremonies” including the daily standup.

  • Google docs.

(He mentioned an article by Lee Bryant about slack, I guess this is it, but I’m not sure).

Update: here is the correct link

https://farm1.staticflickr.com/893/41406715105_8ce5b7b93a_z_d.jpg

Photo explanation: station signs on the way from Utrecht (NL) to Heidelberg (DE).

 
vanrees.org logo

Reinout van Rees

My name is Reinout van Rees and I program in Python, I live in the Netherlands, I cycle recumbent bikes and I have a model railway.

Weblog feeds

Most of my website content is in my weblog. You can keep up to date by subscribing to the automatic feeds (for instance with Google reader):