Dev.Chan64's Blog

Go Home
Show Cover Slide Show Cover Slide

"The Changing Role of Code Conventions and the Shift to a Design-First Development Culture"

gpt-4-turbo has translated this article into English.


1. Code Conventions, Are They Still Important?

Indentation, bracket placement, variable names.
Are you still reviewing these aspects?

For a long time, we have regarded code conventions as an important standard for collaboration order.
Unifying style and enhancing code readability have been considered virtues in developer collaboration.

However, we now find ourselves asking again.
Is this truly the core issue we need to agree upon?

Automatic formatters align most styles automatically,
and AI generates code without specifications.
The focus of collaboration is shifting from code to API specifications, diagrams, and documentation.

In this flow, I have come to realize that code conventions are gradually losing their central role.

So, what standards should we focus on for collaboration moving forward?

This article follows the flow below:

It is time to redefine our philosophy.
Now, we must be able to explain “why we made it this way” rather than just “how we wrote the code.”


2. Code Convention, API-First, Design-First — Concepts and Background

The three concepts discussed in this article are all practical strategies that have emerged as collaboration methods have evolved.
Each term is not just a simple trend, but a response to the increasing complexity of the development environment.

Code Convention

→ Currently, the area has transitioned to a level handled automatically by tools.

API-First

Design-First

Category Core Question Collaboration Focus Reason for Transition
Code Convention How was it written? Style Replaced by automation
API-First What is to be made? Interface Demand for parallel development
Design-First Why was it made this way? Structure and Intent Need to address complexity

This flow demonstrates the evolution of collaboration units from code → interface → design decisions.


3. How is the Structure of Collaboration Changing?

Past collaboration centered around the code itself.
Aligning on which style to write in, how to format and name, was seen as a symbol and essential condition of teamwork.

However, today, the structure of collaboration is gradually losing its focus.

This change is moving the standards of collaboration from code style to interface specifications, and even more fundamentally, to design structure and decision-making.

Collaboration is now evolving into a structure where understanding and sharing “why it was made this way” is more critical than “how it was written.”

Code-centric collaboration is fading,
and now a structure that shares the flow of judgments and design is necessary.


4. API-First: Technical Standardization of Communication

As collaboration scales and systems become more complex,
developers can no longer maintain efficient collaboration simply by “writing code first and aligning later.”

This problem led to the emergence of the API-First approach.
This involves defining interface specifications first before feature implementation, and developing in parallel based on these specifications.

Changes Brought by API-First

Interfaces Become Contracts

Using specification formats like OpenAPI, GraphQL, gRPC provides consistent collaboration standards.

Development Becomes Parallel

Clients and servers can work independently based on specifications.
Tools like Mock servers, automated documentation, and test stub generation support this.

Communication Shifts to Center Around Specifications

Instead of discussing based on implemented code like in the past, decisions are made around specifications and design standards.

This method has brought clear improvements in efficiency and productivity.
However, it also has an important limitation.

While API specifications can describe “what to make,”
they fail to explain “why it was made this way.”

Most of the basis for these decisions exists outside the specifications and can be unshared, forgotten, or undocumented.

Thus, we feel the need to move beyond specification-centered collaboration,
to a structure that shares the flow and judgments of design.


5. Design-Centered Development: A Strategic Flow to Address Complexity

As domains become more complex, what’s needed in collaboration goes beyond simple code sharing or interface specifications.

As features increase,
teams diversify,
and services separate,
developers feel the necessity to share not just code, but structure and the flow of decisions.

The practice being implemented in this context is
design-centered development,
often called ‘Design-First,’ though recently it has been divided into more specific practices.

Key Elements in Design-Centered Development

Design-centered development means more than just defining APIs first.
It involves describing the structure in a way that is understandable and ensuring that the entire team shares this understanding.

The implementation through code is merely the result of a structure that has already been decided.

More important than “what was made”
is the “why it was made this way” that can be explained through structure.


6. How Should Our Culture Change Moving Forward?

As the development environment becomes more complex and the entities involved in collaboration diversify, what we need is not a culture of aligning code styles but one of sharing a discernable structure and the flow of decision-making.

The way we collaborate has changed.
Now, a transition to a corresponding development culture is necessary.

Collaboration Methods We Need to Develop

We can no longer afford to work in a collaboration style that involves:

Moving forward, we need a system that can explain “why it was made this way” rather than just “what was made.”

Design is now the starting point for collaboration,
and a culture that shares that design is directly linked to the team’s scalability and maintainability.


7. What Should We Agree Upon?

Code convention has long been an important tool for creating order in collaboration.
And it still functions as a valid norm today.

However, I increasingly feel that many teams are now centering their collaboration around
the structure and flow of design judgments rather than just code style.

Automated formatters,
AI-based code generation,
and development methods centered on API specifications
are shifting the standards of collaboration from code to specifications,
and from specifications to design.

What we need to agree upon moving forward is not just consistently written code.

I have been talking about the importance of structure.
I have been saying that Design-First is necessary.

It is still a time of unfamiliar thinking.

That’s why I write this article again.
Because I believe it is time to continue spreading and persuading these ideas.

Code conventions have been replaced by tools.
What we truly need to agree upon is
not code, but structure, and not implementation, but a flow of discernible design decisions.


Attachment: Historical Overview of Code Convention, API-First, Design-First

Code Convention

Year Event/Trend
1968 Edsger Dijkstra advocates structured programming (“Go To Statement Considered Harmful”)
1974 Kernighan & Plauger publish “The Elements of Programming Style”
1978 Emergence of K&R C style, followed by conventions for various languages
1990s Spread of language-centric style guides for Java, C++, Python, etc.
2010s Introduction of automated linters/formatters like ESLint, PEP8, gofmt
2020s~ Establishment of tool-centered automatic formatting with Prettier, Black, clang-format

→ Conventions are increasingly being maintained by tools rather than people.

API-First

Year Event/Trend
Early 2000s Emergence of SOAP/XML-based web APIs (Salesforce, eBay, Amazon, etc.)
2011 Swagger (later OpenAPI) released: Start of specification-based API development
2014~2017 Publication of corporate standards like Google Cloud API Design Guide, Microsoft REST Guidelines
2016 Swagger reestablished as OpenAPI under the Linux Foundation’s management
2018~ Spread of API design/documentation tools like Stoplight, Postman, Pact

→ API specifications become contracts for collaboration and the basis for parallel development.

Design-First

Year Event/Trend
Early 2010s Discussions on system structure design culture alongside Domain-Driven Design (DDD)
2015 Spread of ADR (Architecture Decision Record) culture (Michael Nygard et al.)
2016~2017 Use of the term “Design-First” starts in API design tools like Stoplight, SwaggerHub
  Specifying ‘design prioritization’ as a concept extending beyond API-First development
2016~2020 Demand for “records of intent and design” rises within the API-First flow
2020s Establishment of practice-oriented tools like RFC-based collaboration, domain modeling, design visualization

→ Establishing a culture of “structural consensus before API specifications.”

These three concepts have all evolved in response to increasing complexity in the development environment and changes in the units of collaboration.


Attachment: What is an RFC (Request for Comments)?

RFC (Request for Comments) is a document written within a team or organization to propose new designs, policies, or structural changes and receive feedback.

Purpose

This is not just a simple idea memo but a document-based communication method for consensus-based design within an organization.

Typical Uses

Example Format

RFCs are not just documents; they are tools that explicitly manage the team’s judgments and design processes.


Attachment: What is an ADR (Architecture Decision Record)?

ADR (Architecture Decision Record) is a document that clearly records the background, reasons, and alternatives for specific decisions made during the design or configuration of a software system.

Purpose

This helps understand the intent of the design even as time passes.

Typical Uses

Example Format

ADRs help the team explain “why it was made this way” by serving as a recording device.
They ensure that technical decisions remain not just in personal memory but as an asset of the organization.


Go Home
Tags: Design Philosophy