Overview
In April 2025, transferred to Sansan, Inc.'s Eight division and joined, mid-way through,
the rebuild project for the Eight business card app on iOS. The project aims to rebuild
a 13+ year-old, heavily complexified iOS codebase from scratch, under the principle of
how to build features that are easy to discard. Over this year, I sharpened
two capabilities: driving development from design documents and
weaponizing generative AI and MCP to raise development productivity.
Description
From April 2025 to April 2026, as a member of a team of 8+ iOS engineers in Sansan,
Inc.'s Eight division, worked on the rebuild project. Primarily took responsibility for
three areas:
design-document-driven feature development,
migrating to the new design (VIPER) and deciding on Swift Concurrency adoption, and operating development with generative AI and MCP built in.
For design-document-driven feature development, authored 10-20 design
documents for the onboarding, search, settings, and cross-cutting foundation areas, and
implemented features end-to-end along those documents. The distinguishing practice was
the discipline of writing the design document before writing code, and drawing module
boundaries at the unit of each design document. By splitting modules at the feature
level, I kept the architecture in a shape where each feature can be discarded in the
future, and by deciding responsibility boundaries before starting implementation, I left
no ambiguity. Documents captured not only conclusions but also the decision made and the
alternatives considered, so that members joining later could understand the background
of each decision. Furthermore, as a quality bar for the design document itself, I
evaluated each document against
does a reader feel no friction reading it top to bottom? and
does each diagram convey its meaning at a glance?.
For
migrating to the new design (VIPER) and deciding on Swift Concurrency adoption, while taking advantage of the greenfield environment, I held firm on the stance of
not making technology an end in itself. Even when tempted to fully adopt Swift
Concurrency or SwiftUI, I deliberately chose conventional technologies when the
trade-offs — significantly reduced readability or
additional implementation required solely to use the API — led to a
different conclusion. A representative example is the policy of keeping UIKit at the
center of screen implementation. By consistently holding the position that "the design
document comes first, and the most appropriate technology is selected for that design,"
I achieved a structure where old and new technologies combine as a design-driven
necessity.
For operating development with generative AI and MCP built in, integrated
generative AI tools — Claude Code, Codex, and Cursor — into daily development and
pursued operational practices that stabilize output quality at a production-grade level.
As a personal OSS that reinforces this approach, I designed and implemented
SwiftGuidelinesMCP, an MCP server that lets generative AI reference Apple's
official Swift API Design Guidelines, and published it on GitHub. I continuously improve
it while using it heavily in my own daily development, and it serves as a practical
foundation for stabilizing generative AI output quality. For the team, I contributed to
formulating and sharing generative AI usage guidelines.
What runs through all of the above is the principle of
how to build features that are easy to discard. As the foundation that
supports this practice, I deeply studied two books —
Writing Skills for Scientists and Engineers and
The Art of Readable Code — and applied them across both prose and naming.
This effort not only contributed to building "discardable features" but also functioned
as improving the accuracy of generative AI output and a defense against ambiguous
generative AI results, creating a state where writing, code, and generative AI usage can
all be driven by the same principles.
Key Words
Swift, SwiftUI, UIKit, Swift Concurrency, VIPER, SwiftPM, XCTest, Swift Testing, CI/CD, Vibe Engineering, Claude Code, Codex, Cursor, MCP (Model Context Protocol), Technical Writing, Design Documentation, Productivity