
Tools for Remote Software Development and Pair Programming - davidjnelson
https://zapier.com/engineering/remote-dev-tools/
======
snarf21
I used to think there was a lot of value in the concept of pair programming
but I think the Pull Request and Code Review model is simply superior. It
allows for a lot of the benefits of pair programming but with lower costs.
I've always found that even looking over someone's shoulder to help debug
something slows to a crawl. It takes more discipline than most engineers have
to keep it truly paired.

~~~
rexpop
> a lot of the benefits of pair programming

So much of the work I do as a programmer does not go into the repository.

Yeah, that's not ideal, but so much of the work I do is in the technique. In
the keyboard shortcut, the ~/.bashrc, the discipline of red-green-refactor, of
pomodoro.

None of that stuff goes into the pull request, and yet all of it is something
my programming pair can experience and learn from. And when I enter an area
that's bizarre to me — when I am picking up a new language, a new tool or
paradigm — a partner is 1000x more productive than my incessant slacking of
code snippets when her explanations easily become demonstrations, and not
least of all because it means that helping me is not an interruption to your
KPIs.

None of that comes across in a pull request.

Maybe if your work exists entirely within code, within languages that you
know, with build toolchains that are done changing, and you're entirely
satisfied with your development environment, habits, and methods. In that
case, yeah, CI and a little PR review are probably all you need.

Meanwhile, pair programming actually decreases the discipline you need to be a
good engineer.

~~~
snarf21
I agrer that these things have value too but some places do Developer Share
Sessions where one developer does a short presentation on a complicated
subsystem or tools they use or a new api that needs integrated.

~~~
rexpop
That sounds terribly dull. Unlike during a programming exercise, there's no
forcing function during a presentation that impels me to try and put this
information in the right place in my mind. Certain note-taking strategies
attempt to fabricate such a forcing function, but it's ersatz.

Most of my notes during presentations or long-winded meetings boil down to
"what motivated this presenter to speak?" or "why do I have to sit through
this?"

------
aantix
How did they fail to mention Floobits?

[https://floobits.com](https://floobits.com)

 _Real-time collaborative editing with text editors and IDEs._

Supports Sublime Text, Atom, Neovim, Emacs and IntelliJ IDEA (which includes
the family of editors, e.g. PhpStorm WebStorm PyCharm RubyMine, etc)

It can be pretty interesting to watch two people code in one of the public
workspaces..

[https://floobits.com/active](https://floobits.com/active)

~~~
vdm
NET::ERR_CERT_REVOKED Issuer: StartCom Class 2 IV Server CA

~~~
aantix
Where do see this? Generally Chrome will provide me a warning in such
situations. And I'm not receiving any warnings.

~~~
vdm
It was in Chrome at the time I wrote that. But it works OK now; CA seems to
have changed to RapidSSL? <shrug>

------
W0lf
I've used a shared tmux session over ssh in the past, which worked quite
nicely without installing any extra software (besides tmux obviously)

~~~
caiob
Is Wemux
([https://github.com/zolrath/wemux](https://github.com/zolrath/wemux)) still
relevant?

~~~
mikekchar
Not the OP, but as a frequent tmux pair programmer, I've never found wemux to
be particularly relevant. It's useful if you don't know how to use the
advanced features of tmux. Everything in wemux can be done in tmux -- you just
need to know how to do it. Having said that, reading the tmux manual is
something that might occupy you for more time than you would like to spend :-)

~~~
goerz
Yeah, tmux is pretty powerful all by itself, and perfectly suited for pair-
programming, assuming ssh is set up. I wrote a little wrapper script a while
ago to handle the setup of the ssh keys on a temporary basis (the partner's
SSH key is allowed to attach to the appropriate tmux session only and is
removed when disconnected):
[https://github.com/goerz/tmuxpair](https://github.com/goerz/tmuxpair)

~~~
mikekchar
I do something similar. I set up a "pair" user on the system whose login shell
is just a script that attaches to the tmux session. The script that starts the
tmux session, sets the group permissions on the socket to "pair". This means
that even though the "pair" user has their ssh key in pair's authorised_keys
file, they can't log in unless there is an ssh session with the appropriately
shared socket. Also, they are never logged in as your user (though, sharing
the session, they can do whatever you can do -- only you are guaranteed to be
able to see it).

------
danellis
What about a shared whiteboard, though? That's the one thing I'm missing at
the moment. Using one of those with a couple of nice graphics tablets would be
great.

~~~
macintux
I have lamented the lack of a good online whiteboard experience for decades
now. I think the real problem is that for a proper whiteboard, we need
obscenely large and high-resolution displays.

Analog is much better than digital in this particular.

~~~
seanp2k2
You might be interested in
[https://gsuite.google.com/products/jamboard/](https://gsuite.google.com/products/jamboard/)
though I doubt your company would pay for each of you to have one at home.
It's more of an office to office type of thing, I think.

~~~
macintux
Not nearly big enough, but a step in the right direction.

------
brightball
The system that Slack bought was the best I've seen. Can't remember the name
of it though.

~~~
rekwah
Guessing you're talking about Screenhero.

[https://screenhero.com/](https://screenhero.com/)

~~~
brightball
That's it. That system was fantastic.

~~~
patrick_haply
Was? Are you saying you don't hold that opinion anymore, or do you just not
use it?

~~~
notpeter
Signups have been closed for 2.5 years since they were acquired by Slack.

[http://blog.screenhero.com/post/109337923751/screenhero-
join...](http://blog.screenhero.com/post/109337923751/screenhero-joins-slack)

~~~
brightball
Yep. That's what I was talking about.

------
roblabla
At my current place (team of 5), we set up Zerotier[0] to create a LAN between
all of our computers and servers. This lets us directly ssh into each-other's
machine, simplifies file sharing to an rsync, etc...

I find this works really well, as when someone has a bug and needs help, we
can all access [http://<hisip>:8000](http://<hisip>:8000) to access the
instance he's working on, and ssh into the machine to get access to the logs
to try and help figure out what's wrong.

Disclaimer : just a happy Zerotier user.

[0]: [https://www.zerotier.com/](https://www.zerotier.com/)

------
npstr
I find [https://localhost.run](https://localhost.run) to be a great tool when
you need a tunnel to your machine to show things. Just a line of ssh, works
everywhere.

~~~
gardnr
Works better for me without https

[http://localhost.run/](http://localhost.run/)

------
jweir
If you are developing with Vagrant boxes -- Vagrant's built in share (and
tmux) working pretty well for pairing or reviewing.

[https://www.vagrantup.com/docs/share/](https://www.vagrantup.com/docs/share/)

------
tscolari
Annoying website forces you to have cookies enabled... I refuse to open this.

------
danielhunter
I'm surprised this wasn't mentioned, I've used it before with great results.

[https://atom.io/packages/atom-pair](https://atom.io/packages/atom-pair)

------
MarkMc
I used to use TeamViewer for remote pair programming - even forking out $700
for a licence - until I discovered it had a huge security hole:
[https://www.optiv.com/blog/teamviewer-authentication-
protoco...](https://www.optiv.com/blog/teamviewer-authentication-protocol-
part-3-of-3)

Won't trust them again.

------
welder
I find a private leaderboard keeps me updated on my remote friend's
programming and helps me feel connected to what they are working on:

[https://wakatime.com/features#leaderboards](https://wakatime.com/features#leaderboards)

------
Gonzih
I use appear.in and/or vnc nowadays a lot for pair programming.

~~~
seanp2k2
How's the latency with VNC these days? I haven't used it in probably 10 years,
but it was pretty bad back then and basically only useful for emergencies in
my experience.

Edit: IIRC VNC being awful was why Citrix became so popular way back when.
Something something thin client something proprietary compression algorithm.
Is that ringing any bells?

------
segmondy
I've always used tmate.io inside a linux container. The only downside is the
person I'm pairing with must be comfortable with command line interface.

------
coolbreeze
Hangouts and tmate

