DEV Community

Cover image for Here are a few options, from most direct to most developer-focused: **Option 1 (Direct & Punchy):** Solved: How I Got Played...
Darian Vance
Darian Vance

Posted on • Originally published at wp.me

Here are a few options, from most direct to most developer-focused: **Option 1 (Direct & Punchy):** Solved: How I Got Played...

🚀 Executive Summary

TL;DR: IT professionals often face exploitation from high-profile clients promising ‘exposure’ or ‘equity’ instead of concrete payment, leading to vague scopes, unpaid work, and loss of control over deliverables. To counter this, implement robust legal frameworks like detailed Statements of Work and clear IP clauses, establish technical guardrails such as VCS ownership and controlled CI/CD pipelines, and secure financial safeguards like escrow services or milestone-based payments.

🎯 Key Takeaways

  • Always initiate and maintain administrative ownership of the primary code repository (e.g., GitHub, GitLab) and grant clients limited, appropriate access with branch protection rules.
  • Rigorously control CI/CD pipelines by owning their configurations and implementing manual approval steps for production deployments, potentially leveraging feature flags to manage access to unpaid features.
  • For cloud infrastructure, ensure Infrastructure-as-Code (IaC) lives in your controlled VCS and clarify cloud account ownership, ideally having the client own the account with you granted least-privilege, role-based access.

Navigating high-profile projects can be thrilling, but promises of “exposure” or future equity can quickly turn into a nightmare of unpaid work and professional embarrassment. This post outlines how IT professionals can protect themselves from exploitative business arrangements.

Symptoms: When Promises Outweigh Payments

As IT professionals, our expertise is our currency. When engaging with new clients, especially those with high-visibility connections, it’s easy to get swept up in the potential for rapid growth or impressive portfolio additions. However, the signs of a potentially exploitative arrangement often begin subtly and escalate.

  • Vague Scope and Deliverables: Projects start without a clearly defined Statement of Work (SOW), relying instead on verbal agreements or loose “we’ll figure it out as we go” attitudes.
  • Unpaid “Trial” or “Proof of Concept” Work: Requests for significant work with the promise of future payment or a larger contract, often extending beyond reasonable initial explorations.
  • “Equity” or “Exposure” as Primary Compensation: Offers to forgo immediate payment in exchange for a percentage of a nebulous future profit, or the vague benefit of being associated with an influencer.
  • Lack of Formal Agreements: Absence of written contracts, Non-Disclosure Agreements (NDAs), or clear intellectual property (IP) clauses, leaving your work vulnerable.
  • Pressure to Over-Deliver: Constant requests for additional features or services beyond initial (often unwritten) agreements, without discussion of additional compensation or timeline adjustments.
  • Limited Control Over Your Own Work: Losing administrative control over code repositories, cloud infrastructure, or deployed applications that you developed, making it difficult to cease services or retrieve your work if disputes arise.

Recognizing these symptoms early is crucial. The emotional and financial toll of being “played” can be significant, impacting not only your current earnings but also your professional reputation and future opportunities.

Solution 1: Legal Fortification & Contract Management

The first line of defense is a robust legal framework. Treat every engagement, no matter how small or promising, as a formal business relationship. This isn’t about being adversarial; it’s about mutual clarity and protection.

The Ironclad Statement of Work (SOW)

A detailed SOW is your project blueprint. It must clearly define:

  • Scope of Work: What exactly will be built, configured, or delivered? Use concrete, measurable terms.
  • Deliverables: Specific outputs (e.g., “Deployed Kubernetes cluster,” “Automated CI/CD pipeline,” “Cloud infrastructure as code repository”).
  • Milestones: Key stages of the project with associated deliverables and, crucially, payment triggers.
  • Timelines: Realistic start and end dates for each milestone and the overall project.
  • Exclusions: Explicitly state what is NOT included in the scope. This prevents scope creep.
  • Change Order Process: How will scope changes be requested, approved, and compensated?

Crucially, ensure the SOW is signed by all parties BEFORE any work begins.

Intellectual Property (IP) Ownership

Clarify who owns the code, configurations, and documentation you create. Unless explicitly stated, many jurisdictions consider work-for-hire to transfer IP to the client. If you’re contributing to a product where “equity” is promised, ensure your IP contribution is recognized and valued. If you’re building a unique tool or framework that could benefit your future work, ensure you retain rights to it, or at least a perpetual license for your own use.

// Example clause for a contract (consult your legal counsel)
// Intellectual Property Rights
// All intellectual property rights, including but not limited to copyrights, patents,
// trade secrets, and trademarks, in all materials, code, configurations, documentation,
// and deliverables created by [Your Company Name] under this Agreement ("Work Product")
// shall remain the exclusive property of [Your Company Name] unless otherwise specified herein.
// Upon full and timely payment for services rendered, [Your Company Name] grants to Client
// a non-exclusive, perpetual, irrevocable, worldwide, royalty-free license to use,
// reproduce, distribute, and display the Work Product solely for Client's internal
// business operations. This license does not include the right to sublicense, sell,
// or otherwise transfer the Work Product to any third party without the express written
// consent of [Your Company Name].
Enter fullscreen mode Exit fullscreen mode

Payment Terms and Exit Clauses

Define clear payment schedules (e.g., 20% upfront, 30% at milestone 1, 50% upon final delivery) and methods. Include clauses for late payments, non-payment, and mechanisms for terminating the agreement, including what happens to unfinished work and how outstanding payments will be handled.

Solution 2: Technical Guardrails & Scope Enforcement

Beyond legal documents, your technical practices can provide powerful safeguards. This involves maintaining control over your work product and the environments where it lives.

Version Control System (VCS) Ownership and Access Control

Always initiate and maintain ownership of the primary code repository (e.g., GitHub, GitLab, Bitbucket). Grant clients appropriate access, but retain administrative control.

  • Your Account, Your Repo: Create the repository under your organization’s account.
  • Branch Protection Rules: For critical branches (e.g., main, production), enforce rules requiring pull request reviews, status checks, and prevent direct pushes. This ensures all changes are reviewed.
  • Limited Client Access: Grant clients reporter or guest access initially. Elevate to developer only when necessary and with clear guidelines. Prevent client direct pushes to main.
# Example of setting branch protection via GitHub CLI (requires gh cli installed and authenticated)

# Protect the 'main' branch in your repository
# This example requires at least 1 approving review and prohibits force pushes.
gh api \
  --method PUT \
  -H "Accept: application/vnd.github.v3+json" \
  /repos/YOUR_ORG/YOUR_REPO/branches/main/protection \
  -f - <<OF
{
  "required_pull_request_reviews": {
    "required_approving_review_count": 1
  },
  "enforce_admins": true,
  "restrictions": null,
  "required_linear_history": false,
  "allow_force_pushes": false,
  "allow_deletions": false,
  "block_creations": false,
  "required_conversation_resolution": true
}
EOF
Enter fullscreen mode Exit fullscreen mode

CI/CD Pipeline Control and Deployment Gates

Your Continuous Integration/Continuous Deployment (CI/CD) pipelines are the gates to production. Control them rigorously.

  • Own the Pipeline Configuration: Keep pipeline definitions (e.g., Jenkinsfile, .gitlab-ci.yml, .github/workflows/\*.yml) in your owned repository.
  • Manual Approval Steps: Implement manual approval steps for deployments to production environments. This allows you to pause deployments if payment issues arise or scope is violated.
  • Feature Flags: Use feature flags extensively. This allows you to deploy code for new features that are not yet enabled for users. If a client fails to pay for a specific feature, you can disable it remotely without rolling back the entire application.
// Example: GitHub Actions with manual approval
name: Deploy to Production

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3
      - name: Build application
        run: echo "Building application..."
        # ... build steps ...

  deploy_to_staging:
    needs: build
    runs-on: ubuntu-latest
    environment:
      name: Staging
      url: https://staging.example.com
    steps:
      - name: Deploy to Staging
        run: echo "Deploying to Staging..."
        # ... deployment commands ...

  deploy_to_production:
    needs: deploy_to_staging
    runs-on: ubuntu-latest
    environment:
      name: Production
      url: https://prod.example.com
    steps:
      - name: Request Manual Approval for Production Deployment
        run: |
          echo "Please review the Staging deployment before proceeding to Production."
          echo "Run: gh workflow run deploy-to-production.yml -F environment=Production -F approve=true"
          # This is a placeholder. Real-world solutions use proper approval gates in CI/CD platforms.
          # For GitHub Actions, you'd use 'environment' with 'required_reviewers'.
      - name: Deploy to Production
        run: echo "Deploying to Production..."
        # ... actual deployment commands ...
Enter fullscreen mode Exit fullscreen mode

Note on the GitHub Actions example: For real production approval gates, you would define an environment and use the required\_reviewers property within it, rather than a manual run command as shown above. This ensures proper UI-driven approval flows within GitHub.

Infrastructure-as-Code (IaC) and Cloud Account Ownership

If you’re provisioning cloud infrastructure, ensure the IaC (Terraform, CloudFormation, Ansible) lives in your controlled VCS. Also, carefully consider who owns the cloud accounts.

  • Client Owns Cloud Account: Ideally, the client owns the cloud account, and you are granted temporary, role-based access with least privilege. This prevents you from being stuck paying for client resources.
  • Your Account, Client Pays: If you must use your account, ensure billing is set up to automatically charge the client, or that you receive upfront payment covering estimated costs.
  • Terraform State Management: Store Terraform state in a remote backend (e.g., S3, Azure Blob Storage, GCS) that you control or that is securely managed by the client under your guidance.

Solution 3: Financial Safeguards & Engagement Models

Monetary protection is paramount. Don’t rely on vague future promises. Establish clear financial terms from the outset.

Escrow Services

For significant projects, consider using an escrow service. The client deposits the full project fee (or a substantial portion) into a neutral third-party account. Funds are released to you based on agreed-upon milestones or upon final project completion. This protects both parties: the client knows the funds are available, and you know you’ll be paid for completed work.

Milestone-Based Payments

Break down the project into distinct, measurable milestones. Define a payment for each completed milestone. This provides a steady cash flow and aligns payment with progress. It also allows either party to disengage with minimal loss if the relationship sours early.

Retainer Agreements

For ongoing support, maintenance, or advisory roles, a retainer is an excellent model. The client pays a fixed fee regularly (e.g., monthly) for a set amount of your time or availability. This guarantees consistent income and ensures you prioritize that client.

Comparison of Engagement Models

Model Description Pros for IT Professional Cons for IT Professional Best For
Fixed-Price Project Client pays a single, agreed-upon price for a defined scope. Predictable revenue if scope is managed; high potential profit if efficient. High risk of scope creep; less flexible to changes; requires meticulous SOW. Well-defined projects with clear deliverables and minimal anticipated changes.
Time & Materials (T&M) Client pays for actual hours worked and materials used, at an agreed-upon rate. Flexible to scope changes; lower risk of under-pricing; fair compensation for effort. Less predictable revenue; requires meticulous time tracking; client may scrutinize hours. Projects with evolving requirements, R&D, or long-term consulting.
Retainer Client pays a regular, fixed fee for a guaranteed block of time or availability over a period. Highly predictable recurring revenue; stable client relationship; reduced sales effort. Requires continuous value demonstration; potential for “idle” time if not fully utilized. Ongoing support, maintenance, advisory services, or long-term strategic partnerships.
Equity/Revenue Share Compensation tied to future company valuation or revenue; often combined with reduced cash payment. High upside potential if the venture succeeds; deep partnership feel. Very high risk of zero or minimal return; difficult to value; lack of immediate cash. Early-stage startups where you are a co-founder or critical early employee taking significant risk. Only with clear legal documentation.

Conclusion: Value Your Expertise

The allure of working with “huge influencers” or high-profile businesses can be tempting. However, your technical skills and time are valuable assets that deserve concrete compensation and clear terms. By implementing robust contracts, establishing technical controls, and choosing appropriate financial safeguards, you can protect yourself from exploitation, mitigate risks, and ensure that your hard work translates into tangible rewards, not just empty promises.

Always remember: a handshake deal is not a contract, and “exposure” doesn’t pay the bills. Be professional, be vigilant, and prioritize your own financial and intellectual security.


Darian Vance

👉 Read the original article on TechResolve.blog

Top comments (0)