Better Developer Experience
via Building for Slack

The guy on stage

That's Bence

Software Platform Lead @ Kiwi.com

Platform Team

Better software, faster

So what's the deal with Slack?

Better communication, faster

Intermission
Worse communication, slower

The least productive,
yet most impressive thing we have on Slack

Better communication, faster

Strategy 1: The Info Hub

Bringing structure and automation to announcements

When to bring in structure

Questions to ask yourself

What types do people announce?


            class LunchAnnouncement:
                location: Restaurant
                leaving_at: datetime
                going_with: List[User]
          

            class Restaurant:
                menu: List[Meal]
          

Which types are…

  • …complex?
  • …frequently used?
  • …most interacted with?
  • …most important to have accurate?

Just think and talk about it

(No spreadsheets needed)

Our examples

Releases

github.com/kiwicom/crane

Downtimes

Elements of a good Info Hub

  • Coverage
  • Links
  • Directing Attention
  • Notifying

Coverage Directing Attention Links Notifying

What's having a deployment? Are we reverting something? Where can I see the logs? Where is the container running? Where can I contact the releaser? Is the deployment done? Where are the metrics? What changes are going live? Who can I ask about these changes? Where are we deploying to? How do I access that testing API? Where can I find the code? Where's the Docker image? When did the deployment happen? Was the deployment successful? Where are the error logs? Where do I ask questions? What was discussed about this release? Are we deploying master or some test branch?

Questions answered

19

Okay, fine, 2… per release

So 100 per day + Directing Attention + Notifying + …?

Intermission
The Silliest Hack

Architecture of an integration

Run jobs in task runner
11:47am job for deploy
12:33pm job for revert
4:04pm job for re-deploy


Post messages to Slack


Store deployment data in database
PostgreSQL? MySQL? Redis? S3?

Architecture of an integration

Run jobs in task runner
11:47am job for deploy
12:33pm job for revert
4:04pm job for re-deploy


Post messages to Slack


Store deployment data in Slack PostgreSQL? MySQL? Redis? S3?

            <https://google.com|Google!>
          
            <https://google.com| >
          
            <https://google.com| >
          
            <https://anything.com| >
          
            <https://{
           "deploy_id": 1782633,
           "commit_hash": "6a18ff2"
         }.com| >
          

Strategy 2: The Thoughtful Helper

Augmenting user messages with context

Where to use this approach

Sorry, no formula. Keep your eyes open.

How do you react to messages?

Are there any patterns?

Our First Example

https://gitlab.skypicker.com/platform/crane/issues/42

When someone posts a link to an issue

I open it to check the title

Everyone does

Our Second Example

enabling full LiveTraffic data feed (50MCC, partially unique content, starting with US POS only, validated using IBP trx via new WSAP Kiwi OID CZ POS)

When someone posts an announcement like this

I Google half of the words

Everyone does

✨ A note on polish ✨

Delight your users




Delight eases adoption

adoption impacts culture

So 100 questions per day
+ Directing Attention
+ Notifying
+ Improving Culture

Recap

Build info hubs
to structure your announcements

Build thoughtful helpers
to provide useful context

Join the Platform Team @ Kiwi.com

Thank you!

This was a talk by @underyx.