Software Development at Canonical

a.k.a. working from home

Tim Penhey / @howbazaar

But first a plug...

Code Craft

About Canonical

  • Founded in 2004 as nonameyet.com
  • Head office is in London, UK
  • Canonical has approximately 560 people
  • Over 80% of the employees work from home
  • All about Ubuntu
    • In the cloud, on machines, in IoT

About Tim

  • Work for Canonical remotely
  • Been doing this for over 12 years now
  • Enginering Director for Juju project
    • Juju is an application modelling and deployment tool
  • Team spans NZ, Australia, Dubai, Europe, and USA
  • My manager is in the USA
  • Allows you to model your complex software deployments

  • Encourages encapsulation of operations knowledge in reusable components.

  • Enables repeatability of complex deployments

  • Excels at day two operations

  • Provides portability across clouds, both public and private

  • Open Source Software

Juju

Juju

  • Core team: 14 people
  • Open source Go project
  • github.com/juju/juju ~780k lines of Go
  • Other github.com/juju/ packages ~220k lines of Go

Planning - Six monthly

  • 1 week sprint with stakeholders feature planning
  • 1 week sprint mid-cycle to check progress
  • 1 week sprint with the team

Feature Development

  • We try to be agile
  • Start with a stakeholder driven "specification"
    • what the feature is
    • how it would be used

Feature Prioritisation

  • Always more work than time
  • Agree at planning sprint as to cycle goals
  • Based on developer estimates
  • Always over-committed

Mid-cycle checkpoint

  • Another week long work meeting somewhere
  • Looks at:
    • what unplanned work was done
    • progress of agreed features
  • Agree on new targets

Developing Features

  • Break it down into codeable chunks
  • Rough estimates, most people are bad at this
  • Develop locally on your laptop
  • Always have tests
  • Code reviews

Landing code

  • All code is reviewed using github pull requests
  • Every PR must have tests supporting the change
  • Every PR must be approved by a core team member
  • No-one commits directly to master, a bot does it
  • Bot runs all core tests on ubuntu amd64

Continuous Testing

  • We have a bunch of continuous integration tests
  • Every commit triggers a CI run
  • unit tests across amd64, arm64, s390x, ppc64le, race tests, and on windows
  • runs feature tests across multiple cloud providers
    • MAAS, AWS, GCE, Azure, LXD, Joyent, Openstack
    • deployment tests, upgrade tests, migration tests

Bugs

  • All programs over a certain size have bugs
  • Ideally we don't want any
  • Need to prioritise bugs with features

Reality

  • Need "office" space
  • This is where you work most of the time
  • Flexi-time, 1.5 hour lunches for gym
  • Results driven not hours driven

My Office

Working Hours

  • Each person is expected to have predictable hours
  • Most people work 8 - 5, 9 - 6 or some variation
  • Very easy to overwork
  • Time in an office isn't all productive

Communication

  • IRC - old school, freenode and company private
  • Hangouts/Meet - 1:1 calls, and team calls
  • Twitter and Facebook for social connections
  • Phone conference when talking with customers
  • Oh, yeah, and heaps of e-mail

Normal Days

  • Meetings and email
  • Sometimes I get to fix a few bugs
  • My teams have daily stand-ups
  • Moved from manager back to more development, and back to management again (twice)

Regular Calls

  • Release call meetings
  • Weekly 30 minute 1:1 call with my manager
  • 1:1 Meetings with direct reports weekly
  • 1:1 Meetings with rest of the team biweekly
  • Meetings with stakeholder teams weekly
  • Weekly team meeting
  • Monthly calls with sabdfl

Working...

  • Calls each morning
  • Often other calls through the day
  • Keep on top of email
  • Be responsive on IRC
  • And add features or fix bugs

Master your tools

  • Whichever editor you use, learn it well
  • Know git well enough to get yourself out of trouble
  • Command line tools are worth knowing
    • e.g. find, xargs, grep

When you get stuck

Take the dog for a walk

Worth noting

Kids don't care who you are talking to

It isn't for everyone

  • Most your friends are virtual
  • Can feel lonely
  • Miss the water cooler chatter
  • Must have social life outside of work

Questions?

Software Development at Canonical

By Tim Penhey

Software Development at Canonical

  • 1,130