idiosyncracies into account. Eﬀect: Devs didn't need to ask questions about how something should work on iOS vs. Android. Lesson: Think through how diﬀerent platform conventions aﬀect the user ﬂow at design time.
features at the same time. Eﬀect: Each team was able to tell the other about potential land mines in that feature before building. Lesson: If you're building in parallel, don't always have all teams building the same thing.
the current version, Android had to support Gingerbread. Eﬀect: The same feature on Android 2.3 would take multiples of the eﬀort it took to build on iOS 6. Lesson: Think hard about eﬀort to support a platform vs. # of customers using that platform.
car from their phone and pay/tip with a credit card. —Notiﬁes valets when a car has been requested. —Notiﬁes users when their car has been brought around. —Gives users a cashless valet experience —Users don't wait for their car in the rain / cold.
schedule for initial iOS build, APIs were well-documented Eﬀect: I rarely ran out of stuﬀ to do and was almost never blocked by backend issues Lesson: App dev is hard without a working backend. Get your BE team ahead as far as possible.
driven tests for iOS were written Eﬀect: Test names/comments could be lifted to start tests on Android, saving even more time. Lesson: Having the 1st app tested makes it easier to ensure later apps are testing/doing the same thing
had to relearn and how much had changed in Android dev Eﬀect: A lot of gains from the things that went well were cashed in on rewriting functionality and tests. Lesson: Either get a specialist, or add signiﬁcant padding to account for ramp-up on a platform.
before we started building due to budget concerns. Eﬀect: Users, especially Valets, had very diﬀerent ideas of required functionality than we had, causing a lot of rework. Lesson: Don't wait to reach out to your user base.
anymore! —Get user feedback before you start building —Get backend development as far ahead of client app development as possible —Functional/Behavior tests are far easier to repeat across platforms —Communicate early and often