Forem

Jen Chang
Jen Chang

Posted on • Originally published at Medium on

4

Best Practices for iOS Development I’ve Seen is at GRUBHUB

Best Development Practices for iOS Development I’ve Seen is at GrubHub

Photo by rawpixel on Unsplash

Given that GRUBHUB is the first technology company I’ve worked at, some of the practices that I’m sharing may be limited. Prior to joining GRUBHUB, I worked at corporate companies where there is usually a split between business and technology practices. They didn’t necessarily align with each other. More often than not, businesses have a bigger say because they control the financial aspects of the company. So I enjoy working in a technology-driven company. This is also my first time experiencing true agile development processes. The following sections from my experiences as a developer.

Team Structure

In order for the process to work, everyone has to be on the same page. Stakeholders in our case include developers, product owners, analytics representatives, and QA engineers. Sometimes, the designers are involved on a need basis. At GRUBHUB, we have a strong emphasis on the quality of the product. Therefore, we choose to implement less number of features with higher quality.

Product Management

At GRUBHUB, we work closely with the product owners. Product owners manage the priority of their tickets, which we groom together as a team. The grooming process takes place once a week for 30 minutes and with occasional ad-hoc meetings to groom additional tickets that need to be completed urgently. During the meeting, developers identify any gaps in the requirements and add any unit tests and functional tests into the mix because developers are also responsible for implementing the automation tests, both unit tests and functional tests. Our QA team does more of the exploration manual tests to check the health of the entire application. They have a more holistic view. This is a reason the QA team is involved in the grooming process. They help ensure that the tickets include use cases that need to be automated by the developers. Product owners are responsible for providing sufficient details including acceptance criteria, design mockups, API requests, flows, and test data.

During planning, the leads of the development team will grab the tickets for the sprint based on the prioritized backlog by the product owners and assign them accordingly. At this point, any tickets that are groomed and available for planning will have all the details for the developers to work on. Since our sprint cycles are roughly two weeks, we are all on board to ensure that the tickets have sufficient information to be completed within a short development cycle of one week.

Development Management

No pull requests are created unless unit tests/functional tests are included and passing for the code changes. In order for the development team to achieve this, we have design reviews before work begins, coding style guides, a continuous integration system, and code review processes.

Developers work from their individual branches and are responsible to create temporary builds from their branches to complete any verification before merging into the main branch. Verification includes any visual QA testing with the designers and functional testing with the responsible product owner.

Other additional tasks that developers need to complete include experiment set up on the staging environment. One important key to note is that we have a blocked chunk of time to focus on development without any interruptions. Any meetings are scheduled before 12pm and after 4pm. So anything in between those times are dedicated for development.

Release Management

Our release cycle is every two weeks, so release meetings take place on a daily basis to triage any new defects and check on the status of the release. Folks involved in the meeting include QA team and developer leads. During this time, they also prioritize any critical bugs that need to be resolved. Anything that is raised that is out of scope including additional changes that product owners desire, they are put into the backlog for prioritization into future sprints.

Our goal is to eventually bring the release cycle down to one week and as we are perfecting the processes above, we will be able to achieve this and publish to the app store more frequently. Our processes are predictable, provide some stability for developers to complete their work, and delivery on time and on schedule.

Where to go from here?

Have you experienced similar best practices in your teams? Are there others that you found valuable in delivering quality.

Originally published at How To Do It In Swift.

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read more

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay