1 of 12

Challenges Scaling Core Development Work

Marc Johnson

| www.folio.org

1

2 of 12

Goal

How can we sustain (and improve) the quality of work as we scale out the teams involved?

| www.folio.org

2

3 of 12

Context

  • Multiple development teams working on core work
    • Core Functional
    • Core Platform
    • Vega
    • Concorde
  • Focus on modules with high concentration of changes

| www.folio.org

3

4 of 12

Challenges

  • Planning
  • Code Reviews
  • Design and Architecture

| www.folio.org

4

5 of 12

Planning Challenges

  • Coordination between teams
    • Deciding which team take on a feature
    • Integrating overlapping changes
  • Sources of feedback on work
    • Reviewing a story prior to development
    • Questions from developers during development
    • Code review
    • PO / tester review
    • Bugfest / ad-hoc testing

| www.folio.org

5

6 of 12

Code Review Challenges

  • Most reviews seem to generate very little feedback
  • Sufficient understanding to conduct reviews
    • Of the behaviour expected in the change
    • Of the design of the module
    • Of the architecture of the system
  • Sufficient capacity to conduct reviews
    • Core functional team has very limited capacity

| www.folio.org

6

7 of 12

Technical Challenges - Circulation

  • Internal module design
    • Hasn’t kept pace with development
    • Needs better separation between contexts
    • Needs to be better explained
  • Architectural decisions
    • Difficult to split the module due to bi-directional dependencies
      • Check in / check out depend upon loans and requests
      • Due date calculation depends upon requests
      • Requests can depend upon the presence of loans

| www.folio.org

7

8 of 12

Suggestions

| www.folio.org

8

9 of 12

Increasing the capacity for code reviews

  • Decide which teams can review changes
  • Decide who can review changes
    • Automate the requesting of reviews
  • Dedicate time to reviews

| www.folio.org

9

10 of 12

Increasing the quality of code reviews

  • Support for people to improve their reviewing
    • Feedback written on pull request for visibility
    • Feedback on the review itself?
  • Better guidance on what is expected
    • Should they include feedback on behaviour?
  • Reduce the size of pull requests
    • Refactor before behaviour changes
    • Smaller increments of behaviour
    • Refactor after behaviour changes

| www.folio.org

10

11 of 12

Improving the internal design of circulation

  • Document the design intent
    • How workflows are divided up in asynchronous tasks
    • How to handle failure
  • Invest in modelling the domain
    • Separate the domain from the infrastructure
    • Split the module internally into contexts
    • Introduce explicit boundaries between contexts

| www.folio.org

11

12 of 12

Splitting circulation up into smaller modules

  • Separate the current interface
    • Also improves dependency management
  • Architecture changes
    • How do we accomodate or avoid bi-directional dependencies?
      • Messaging or event based communication
    • May need process changes
      • Split processes into stages handled by different contexts
        • For example, split creating a request and applying impact to loan
      • How do we synchronise all of the steps expected by the UI?

| www.folio.org

12