My dream work environment

These are some of the things I’d love to have. I’ll explain further.

  1. Everything that I have to actually DO lives in Github: assigned tasks, conversations about approaches, code review, EVERYTHING.
  2. Comms with the team is through Slack. Seriously, half the internet is salivating over it, with 110% of the people who actually use it.
  3. Remote working environment.

Github

I’ve been using both Github and Bitbucket for work. Github for Ghost and other various tiny little projects I have running, Bitbucket for my $dayjob. While both of them use git as the underlying version control system, ultimately I like Github a whole lot more than BB. BB is just... cumbersome. It feels like a walled garden, it’s missing a whole lot of features that GH has, and it’s just generally not nice.

As an addendum to that, a place that uses Github for its collaborative work will probably have people who know how to use git and GH. There’s not much use of using either if members of your team “forget” to use these, or can’t use them properly, or just genuinely can’t be arsed.

On Ghost we use pretty much everything that comes with GH or can be attached to it: milestones, issues galore, feature branches, proper write access to the repository (no one can push to TryGhost/Ghost save for... um... 6 people I think), code reviews. All I really need to do is jump on GH, read the unread notifications to catch up what happened, filter the issues to see what’s assigned to me, and done. I know exactly what needs doing.

github example

I’ll be talking about this on Oneshot Conference in Budapest on 21st November too. Come along, if you’re free, it’s gonna be awesome!

Slack

It’s basically a fancy chat. Much the same as the iPhone was a fancy phone in 2007. Yes, I did just compare these two. There are alternatives: HipChat, IRC, Skype, emails, but Slack is just delightful to work with. It’s THERE, one place, and it replaces intra-company emails, Skype, everything. You can hook it up to everything: Travis, Github, Twitter, whatever has an API. And if you’re doing something custom, you can write your own thing for it.

slack example

Remote

There have been countless articles about why remote working is awesome and the definitive handbook Remote by Jason Freid and David Heinemeier Hansson is a must read for everyone.

Granted, not every company can transition itself into working remotely. A local shop for example would have a hard time with no people in the actual shop. However as a developer, my job is perfectly available to be transformed into remote. If face-to-face meeting is required with the client, I can always travel (paid expenses, of course). This might sound incredibly arrogant, but if the client hires ME, specifically (or the agency I work for), then there’s a reason for that, and we can either solve whatever we need through Slack / email / Skype, or they’ll be able to pay for my travels. Otherwise they’d have looked for someone closer.

The other question though, is “can companies measure the output of a developer”? Butts in seats is very industrial, it’s not like I need to stand next to a conveyor belt putting together nuts and bolts. In that case my output would be proportional to my time spent next to the belt. With code, I’ve written a huge feature in less than an hour between 1am and 2am, I’ve also bikeshedded between 9am and 5pm. Where I am and when I am there has absolutely no bearing on how much work I actually do, it’s do with my choice. (Yes, I am somewhat required at my $dayjob to choose to write code between normal office hours :) ).

In Ghost, I measure my input on this screen:

closed PRs

You might notice that all you need is an internet connection for this.

Oh, as a side effect of remote working: there is no more ”office“, I could be travelling the world WHILE working. It really doesn’t matter where I am, does it?

These are just some of my favourite things.