A standardized software development lifecycle (SDLC) workflow aligns managers, developers, and QA engineers around a predictable delivery rhythm. It eliminates communication silos, enforces code quality gates before deployment, and ensures traceability from ticket creation to production release.
Role Key
To clarify responsibilities across each phase of the lifecycle, actions are marked by role:
- π‘ Managers & Engineering Leads β Prioritization, estimation review, scope, and process alignment.
- π΅ Developers β Implementation, branch hygiene, testing, and PR management.
- π’ QA & Reviewers β Manual testing, acceptance criteria validation, and peer review.
Workflow Lifecycle Overview
[ 1. Jira Ticket ] β βΌ[ 2. Estimation & Due Date ] (Story Points) β βΌ[ 3. Git Branch Creation ] (feat-xxx / bug-xxx from dev) β βΌ[ 4. Implementation ] (Clean code, modular functions) β βΌ[ 5. Commit & Reassign ] (Conventional commits with ticket IDs) β βΌ[ 6. Pull Request (PR) ] (Linked to Jira & shared to Slack) β βΌ[ 7. CI / Automated Tests ] (Linting, static analysis, unit tests) β βΌ[ 8. Code Review ] (Peer review & feedback loop) β βΌ[ 9. Deploy to Dev/Staging] (Automated post-merge deployment) β βΌ[ 10. QA Verification ] (Reproduction steps & edge cases) β βΌ[ 11. Ticket Closed & Clean](Delete remote branch)Phase 1: Planning & Ticket Setup
Step 1: Create the Jira Ticket π‘ π΅
Every task starts with a well-scoped ticket in your issue tracker (Jira, Linear, GitHub Issues):
- Summary: Concise and descriptive (e.g.,
feat: Add Google OAuth2 login flow). - Description: Include user stories, expected behavior, edge cases, and design/Figma links.
- Attachments: Provide annotated screenshots or screen recordings where applicable.
- Initial Status: Tickets default to the Backlog or To-Do column.
Issue Type: Story / Bug / TaskSummary: [Auth] Implement session-based token refreshDescription: - As a user, I want my token refreshed seamlessly without logging me out. - Acceptance Criteria: 1. Interceptor catches 401 Unauthorized responses. 2. Background request fetches new JWT using refresh token. 3. Failed refresh redirects user to /login.Step 2: Story Point Estimation & Due Dates π‘
Story Point: An abstract unit of effort, complexity, and risk required to deliver a task.
- Review requirements with the assigned developer.
- Estimate points during sprint planning or grooming.
- Agree on achievable deadlines and due dates.
- Set explicit ticket priority (P0 Blocker, P1 High, P2 Medium, P3 Low).
Phase 2: Branching & Development
Step 3: Branch Creation from dev π΅
Before writing any code:
- Move the Jira ticket from To-Do to In Progress.
- Break down complex stories into subtasks if multiple team members are contributing.
- Create a dedicated feature or bugfix branch originating from the latest
dev(ordevelop) branch:
# Ensure local dev branch is up-to-dategit checkout devgit pull origin dev
# Create feature or bugfix branchgit checkout -b feat-878-auth-session# or for bug fixes:git checkout -b bug-122-navbar-shadowBranch Naming Standard:
feat-<ticket-id>-<short-description>bug-<ticket-id>-<short-description>chore-<ticket-id>-<short-description>
Step 4: Writing Production-Grade Code π΅
Maintain consistent engineering hygiene throughout the codebase:
- Self-Documenting Code: Write clear, expressive function and variable names instead of relying on redundant comments.
- Remove Debug Logs: Strip out temporary
console.log(),print_r(), ordump()statements before staging changes. - Consistent Indentation & Formatting: Enforce Prettier, ESLint, or language formatters on pre-commit hooks.
- File Length Discipline: Keep individual source files under 100β150 lines wherever possible by extracting reusable components and utility helpers.
- Accessibility: Always provide descriptive
altattributes on image elements and semantic HTML landmark tags.
Additional Backend Guidelines (e.g. Laravel / Node / Spring):
- Database Migrations: Always use versioned migrations; never execute manual raw SQL schema alterations in shared environments.
- Form Request Validation: Authorize and validate request payloads in dedicated Form Request or DTO classes prior to controller execution.
- Standardized API Responses: Return consistent JSON response envelopes with HTTP status codes (
200 OK,201 Created,400 Bad Request,403 Forbidden,404 Not Found). - Environment Isolation: Never hardcode secrets, access keys, or third-party endpoints; strictly read them through
.envconfigurations. - Single Responsibility Principle (SRP): Keep controller handlers lean (20β30 lines max), delegating complex business orchestration to Service or Repository layers.
Phase 3: Commits & Pull Requests
Step 5: Committing Changes π΅
Follow Conventional Commits with ticket references embedded in each commit message:
feat: 878-implement-session-token-refreshfix: 122-resolve-navbar-elevation-shadowrefactor: 405-extract-user-permission-servicegit add .git commit -m "feat: 878 implement token refresh interceptor
- Adds Axios interceptor to catch 401 responses- Automatically issues refresh token call before retrying original request- Jira: https://company.atlassian.net/browse/PROJ-878"Step 6: Create the Pull Request (PR) π΅
- Push your branch to the remote origin:
terminal git push -u origin feat-878-auth-session - Open a Pull Request targeting the
devbranch. - Include the Jira ticket link in the PR description, and paste the PR link as a comment in the Jira ticket.
- Verify diffs locally to confirm no unintended configuration files, secrets, or temporary files were staged.
Step 7: Announce in Pull-Request Channel π΅
Post the PR link into your teamβs designated review channel (e.g., #dev-pull-requests on Slack):
π Ready for Review: [PROJ-878] Implement Session Token RefreshPR: https://github.com/org/repo/pull/142Ticket: https://company.atlassian.net/browse/PROJ-878Reviewers: @lead-dev @qa-teamPhase 4: CI, Review & Deployment
Step 8: Automated CI Checks π΅ π‘
Continuous Integration pipelines should automatically trigger on PR submission:
- Linter checks (e.g., ESLint, Stylelint, PHP CS Fixer).
- Type checking (
tsc,astro check). - Automated unit and integration test suites.
Step 9 & 10: Peer Code Review & Feedback Loop π‘
- The supervisor or designated reviewer inspects code architecture, security implications, database query performance (e.g. N+1 queries), and test coverage.
- Reviewers leave constructive, inline comments on GitHub/GitLab.
- The developer resolves requested changes with follow-up commits.
- Approval requires green lights from both automated tests and peer reviewers.
Step 11 & 12: Merge & Dev Server Deployment π‘ π΅
- The reviewer merges the PR using squash-and-merge or merge commits based on repository policy.
- Continuous Deployment (CD) triggers an automatic deploy to the development/staging environment.
- The developer verifies that the feature works in the live staging environment.
- Mark the PR as complete in Slack (e.g., with a :white_check_mark: reaction).
Phase 5: QA Testing & Ticket Closure
Step 13: QA Verification π’ π‘
- Move the Jira ticket to In QA / Testing.
- The QA tester conducts manual and end-to-end verification against the ticketβs Acceptance Criteria.
- If an anomaly is discovered:
- Provide reproduction steps, browser/device specs, logs, and screenshots.
- Reopen the ticket or return it to In Progress.
- If a disagreement arises regarding expected behavior, review the ticket specifications with the Product Manager / Engineering Lead.
Step 14 & 15: Closure & Branch Cleanup π‘ π΅
- Once QA approves, move the Jira ticket to Closed / Done.
- Branch Cleanup: The developer deletes the merged remote and local branch to prevent repository clutter:
# Switch back to local devgit checkout devgit pull origin dev
# Delete local feature branchgit branch -d feat-878-auth-session
# Prune stale tracking referencesgit fetch -pReporting Ad-Hoc Issues & Bugs π΅ π‘
If a team member discovers a bug or potential improvement outside the current sprint scope:
- Create a standalone Jira ticket categorized under Bug or Improvement.
- Link it as an issue related to the relevant Epic or Story ticket.
- Notify the engineering supervisor during daily standup for sprint triage and prioritization.
Questions or Feedback?
Have suggestions or refinements for team workflow standards? Feel free to connect via email at kashifwahaj@gmail.com.