← All sheets
GL-E-023Sheet 023RECORDE · ENGINEERING

You're not porting an app. You're rebuilding for 3G.

SCHEDULE OF CONSTRAINTS · MULTIVENDOR MARKETPLACE · LAGOS

Drawing sheet 023: You're not porting an app. You're rebuilding for 3G.

General notes

  1. 01Building for Lagos meant throwing out what a US app gets for free: steady networks, recent phones, a card on file.
  2. 02Each constraint became a design decision, written down before the feature. The table is the record.

Schedule of constraintsConstraint → decision

RefConstraintDecision
C1Flaky 3G, expensive dataPush notifications for real-time, not open sockets
C2Retries on every requestClient-generated IDs, so a retry is the same order
C3Slow round tripsOptimistic UI, reconcile later, server is final
C4Cash on delivery cultureOrder states that survive a rider holding cash
C5Riders gaming locationServer-side speed and distance checks

As posted

The first thing I threw out when I designed a marketplace for Lagos was every assumption a San Francisco app gets for free.

Steady networks. Recent phones. A card on file. Those are not defaults where the customers were. So each constraint became a design decision, and the decisions turned out to be more interesting than the features.

Networks are flaky and data is expensive. Real-time over open sockets burned battery and money, so real-time moved to push notifications.

Requests get retried, by the app and by the user. Every order carries an ID the client generates, so a retry is the same order, not a second one.

Round trips are slow. The interface says yes first and reconciles later. Optimistic everywhere, with the server as the final word.

Cash on delivery is normal. Order states had to survive a rider holding cash for an hour, and a customer who is not home.

Riders game location. Speed and distance are checked server-side, against coordinates the server stored, not the ones the phone claims.

None of this is exotic engineering. It is the discipline of writing the constraint down before writing the feature, and then letting the constraint win the argument.

Sheet 023. Verified on site.

Read with

  • Sheet 003 · The rider billed 50 km. The trip was 2 km. Nothing crashed.
  • Sheet 016 · Inflation shipped faster than our release cycle.