Skip to main content
  1. Posts/

The New Development Planning Process: Bridging the Gap Between Backend and Frontend Engineers

· loading · loading ·
Jared Lynskey
Author
Jared Lynskey
Emerging leader and software engineer based in Seoul, South Korea
Table of Contents

Introduction
#

In any application development process, achieving a seamless coordination between backend and frontend developers is paramount. This not only ensures efficient delivery of the project but also minimizes misunderstandings, reduces development time, and enhances product quality. The proposed development planning process addresses the need for better synchronization between these two critical roles.

Background and Motivation
#

The Retrospec feedback highlighted a significant gap in the visibility and planning of APIs. With rapid technological advancements, there’s an increased need for dynamic and adaptable systems. The proposed method will incorporate both backend and frontend engineers in the planning phase, aiming to ensure clarity and alignment from the get-go.

The Proposed Process
#

1. Selection of Representatives:
#

Each week, one backend and one frontend engineer will be chosen. These representatives will take the responsibility of understanding the sprint’s requirements and aligning them with the current planning OpenAPI schema.

2. Review and Revision:
#

The selected engineers will collaboratively review the OpenAPI configuration. They will ensure it aligns with the requirements and make revisions where necessary. This collaboration ensures that both sides have a clear understanding of what needs to be achieved.

3. Commitment and Generation:
#

After revisions, the changes to the OpenAPI configuration will be committed to the respective repository. Following this, the CI/CD will generate the mock-API using the provided yaml.

4. Sprint Completion:
#

Upon completion of a sprint, a new yaml will be generated. This yaml will encapsulate the next sprint’s API requirements.

Tools and Management:
#

  • Visualization of YAML: An online tool, found at Swagger Editor, can be utilized to upload and visualize the yaml as a Swagger document.

  • OpenAPI Document Management: It’s essential to understand that this proposed process is purely for the planning stage. Once the API is deployed, the respective service should generate its openapi.json. This JSON can then be downloaded and reused for further planning.

  • CI/CD Role: The CI/CD pipeline will play a pivotal role. It should be designed to accept a yaml file and deploy a mock server based on the specifications. A tool like openapi-mock can be considered for this purpose.

Why This Process is Beneficial:
#

  1. Enhanced Communication: By including both backend and frontend engineers in the planning process, there’s a direct line of communication established. This minimizes misunderstandings and ambiguities, resulting in a more streamlined development process.

  2. Improved Alignment: Both teams can have a clear understanding and agreement on the API requirements and functionalities. This means less back-and-forth during the development phase.

  3. Efficiency: With a mock server deployed based on specifications, developers can begin their work without delays, leading to faster product releases.

  4. Quality Assurance: When both backend and frontend developers are involved from the beginning, the chances of overlooking critical requirements diminish. This results in a more robust and well-functioning final product.

Conclusion
#

The proposed development planning process emphasizes collaboration between backend and frontend engineers. With tools like Swagger for visualization and openapi-mock for mock server deployments, the process not only bridges the communication gap but also ensures that the developed APIs align perfectly with the requirements. As technology continues to evolve, it’s processes like these that will ensure teams can keep up with demands while maintaining product quality.

Appendix A - yaml example
#

openapi: 3.1.0
info:
  title: PKY Sprint 3
  description: |-
    PKY Sprint 3 Development Schema    
  termsOfService:
  contact:
    email: jared@lynskey.co.nz
  license:
    name: None
    url: 
  version: 1.0.11
externalDocs:
  description:
  url: 
servers:
  - url: https://api-mock.com/api/v3
tags:
  - name: curation
    description: PKY-1081 Curated Lists Feature
    externalDocs:
      description: Jira Epic
      url: https://pickydev.atlassian.net/browse/PKY-1081
paths:
  /curations:
    get:
      tags:
        - curation
      summary: Return the curations created by users
      description: Returns a map of status codes to quantities
      operationId: getCurations
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: integer
                  format: int32
      security:
        - api_key: []
  /curations/{curationId}:
    get:
      tags:
        - curation
      summary: Find purchase order by ID
      description: For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions.
      operationId: getOrderById
      parameters:
        - name: orderId
          in: path
          description: ID of order that needs to be fetched
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
            application/xml:
              schema:
                $ref: '#/components/schemas/Order'
        '400':
          description: Invalid ID supplied
        '404':
          description: Order not found
    delete:
      tags:
        - curation
      summary: Delete purchase order by ID
      description: For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
      operationId: deleteOrder
      parameters:
        - name: orderId
          in: path
          description: ID of the order that needs to be deleted
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '400':
          description: Invalid ID supplied
        '404':
          description: Order not found
components:
  schemas:
    Curation:
      type: object
      properties:
        id:
          type: integer
          format: int64
          examples: [10]
        curationId:
          type: integer
          format: int64
          examples: [198772]
        quantity:
          type: integer
          format: int32
          examples: [7]
        status:
          type: string
          description: Order Status
          examples: [approved]
          enum:
            - placed
            - approved
            - delivered
        complete:
          type: boolean
      xml:
        name: order
    ApiResponse:
      type: object
      properties:
        code:
          type: integer
          format: int32
        type:
          type: string
        message:
          type: string
      xml:
        name: '##default'
  requestBodies:
    Curation:
      description: Curation object that needs to be added
      content:
        application/json:
          schema:
            $ref: 
        application/xml:
          schema:
            $ref:
  securitySchemes:
    petstore_auth:
      type: oauth2
      flows:
        implicit:
          authorizationUrl:
          scopes:
            write:curations: modify curations in your account
            read:curations: read your curations
    api_key:
      type: apiKey
      name: api_key
      in: header