But first a plug...
Code Craft
- We meet in Dunedin the first Tuesday of the month.
- Meetings are organised on meetup.com.
- The mailing list is hosted on
groups.google.com/group/codecraft-dunedin. - Let us know what you want to hear about.
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