Recently I tried to create a proof of concept on integrating an IDE (VS Code), Version Control System (git, github) & a team communication platform (slack).

The problem statement might sound more of a first world problem or possibly not even that:

Say a group of software engineers are working on a project and the team is geographically distributed (or even not). So frequently an engineer E1 would be blocked on E2 for some implementation or knowledge. Similarly E1 could be blocked on UX engineer U1 (I really don’t know if UX folks are called engineers, but let it be). So the way we unblock ourselves is we use IMs, emails or go to their desk. If they are working from different timezone we wait and ping and wait and ping again. Once the person is available we point the file, line of code, the issue to which they suggest solution. Too much work right :D. Then if the other person is decent enough we’d get a solution else we have our devil StackOverFlow to aid.

So I created  a proof of concept of how this could be simplified using an Visual Studio Code, Github & Slack.

Screenshot for the POC

Screenshot for the POC

Source Code: https://github.com/todofy/todofy-live-help

WTF is this? So if E1 has a doubt and is blocked on E2, E1 would add a simple code comment with the issue description and tag it to Github handle of E1 and create a request. Something like this:

Code Comment with help info & tagged user

Code Comment with help info & tagged user – sorry for the potato here

Now they can go for single line comment or may be multi line comment. But for the POC any line can be triggered if it has @help:<username> structure, the extension will process it, strip it off the comment symbols “//” and send it to middle-ware server which will send it to configured slack channel.

So what now? This message is processed by middle-ware server which you don’t need to know. It’s then forwarded to the channel as configured. It’d look something like this in slack:

Message recieved at slack

Message received at slack

AND? Now if our most helpful leader mebjas is free and in a good mood, will reply to the question with the given code. I guess this can be modified with more interactive options like “Do you wish to reply to this question, send a fuck you or politely ignore it (which is more or less a fuck you).  But it’s a POC & I have a life, so we reply with a GUID. Trust me this is the second easiest hack I could have gone for, I could have routed any reply back the the caller – but that’d be cheating.

So we can simply send a text back on slack with further information on this, maybe a solution, link & not an image or attachment. I don’t even know how the tool would behave in such situation. So the bot will receive the response and send it back to correct recipient. And on the IDE side the response will be shown as a popup.

Response :)

Response 🙂

See so much easier. So I shared this with couple of folks from my team at Microsoft and some college friends and it turned out some things are missing:

  • Why Slack (why not MS Teams :D) – Ok not this, we could remove slack all together and have a IDE -> IDE communication with maybe slack as a communication history store.
  • Questions and Answers should persist, again SLACK could be used as a free data store here, but yeah would need processing each time.
  • Why VS Code, well because I wrote the scripts, my choice. STFU!

So if I get a lot of time, and my manager is out of office, I’ll write the POC for IDE <-> IDE thing.