Contractor Management Made Easy

Share this article

On the face of it, outsourcing seems simple enough. You work out what skills you need, search elance or place a job ad in the local paper, and contract the talent for a specific job.

For the small or solo business person who wants to expand without the burden (and risk!) of increased overheads, outsourcing can be ideal. Not only does it provide the business with greater flexibility and extended capabilities, it can help land contracts you wouldn’t otherwise have been able to win.

But is outsourcing really that simple? Of course not! In fact, it can be fraught with danger.

The Problems

SitePoint Community member hstraf recently faced this issue. As his business grew, he took on two freelancers, and this expansion allowed him to focus on researching and pursuing new clients and segments of the market.

Yet he wasn’t entirely comfortable with the situation. hstraf listed his concerns:

  1. “Fear of the contractor deciding to “run away” with my client. We had one situation recently where the client paid almost $20,000 for a project. After the project was finished, one of the graphic contractors (a guy whom I had hired several times before without any problem) decided to contact my client directly and offer his services to do some extra work. He told my client that he was the one who’d done the work, and that he could provide additional design services without needing to involve my company!
  • “Worry that the contractor might accidentally use their own email address when communicating with the client, thus showing my client that the person creating their Website is independent [of my company]. Sometimes the contractor’s Website will even have [their] rates posted, and I’ve had two occasions when a client of mine went and found out that I was charging them a 25% markup.
  • “How is it best to manage the communication with the client? Is it better to be the “sole contact” with the client and act as a “go between” for the contractor? Or is it best to let the client deal directly with the contractor?
  • “How can I manage having eight different projects on the go at once?”
  • The SitePoint Community pooled their experience to come up with tips for hstraf. In the process, they developed a list of tecnhiques that any small business could better handle the outsourcing of Web work.

    Option 1 – Use a Project Management System

    Sketch advocates the use of a project management product.

    “Communication with the client should be done through the system. That way, the contractor doesn’t know the client’s email address (as it’s masked within the system), and the client doesn’t know you’re using contractors because the emails come straight from the Project Management System.”

    Adds johntabita, “If you don’t allow the contractor to have client contact in the first place, it’s not so easy for them to establish credibility with your client.” No credibility means there’s no opportunity to usurp your own position as owner of the relationship — so you keep a firm grip on the client.

    This solution also prevents the client from finding out that you’re using a contractor (and that you’re potentially marking up their rates as you on-sell their skills to the client). It can also help avoid the situation where the contractor decides to contact the client directly and try to poach them, as they are never sure who they’re actually dealing with.

    SitePoint Community members recommended PHProjekt, Phpcollab and Groove Workspace project management software products for the task.

    However, problems with this solution arise when you really need the contractor to have personal interaction with the client. Perhaps you’ve hired a designer to create a site design, and they need to meet with the client to take a brief, present concepts, discuss amendments, and more. How can you avoid the potential for poaching in this case?

    Option 2 – Use a Project Manager

    johntabita has contracted a Project Manager to… er… manage his contractors!

    A Project Manager is trained in project management, and they have the skills (and responsibility) to successfully act as middleman in the relationship. In this scenario, you as the business owner might establish the relationship, pitch to, and land the client. You then introduce your Project Manager, whose job it is to effectively liaise between yourself, the client, and any contracted staff to get the job done on time and on budget.

    Says johntabita, “As far as owning the client relationship, having the Project Manager as your point of contact should reduce the risk of your sub-contractors stealing clients. Just find someone who doesn’t do Web development so there’s no conflict.”

    He mentioned that, in addition to the anticipated benefits of contracting a Project Manager, the person he’d contracted “has also helped us break our workflow into phases, developed a workflow methodology, and tweaked our task tracking software so that it’s more like PM software.”

    LeoWebDesign, however, points out a potential pitfall with this solution.

    “The sub-contracting of the project management …would give the client a primary point of contact and free up more time for you. [But] if you really want to be completely in tune with your business and clients, then you really need to be the contact. Otherwise, you’re just a sales person. I would think it would be hard to build an ongoing relationship that way.

    “It is important to check in regularly with the client so they know that you are the one “heading up the project”. Keeping in touch on a regular basis is necessary to build a relationship and resolve any issues for the client ASAP.”

    One solution he tabled was to take a per-job approach to delegating client management. “You could also decide to maintain total control for all the larger clients and allow contractors more direct contact for the smaller stuff. I know this actually seems backwards because the larger projects require much more dialogue, but it does free up some time for you, while reducing the risk that you’ll lose the big money.”

    johntabita supported this, adding, “Spend 90% of your time selling and getting more business, and 10% following up with the clients and your Project Manager to ensure everything is going well. That way, your clients will not perceive you just as the sales guy, but rather as the head of a company that is concerned with their well-being and satisfaction.”

    And of course, if you’re uncomfortable with outsourcing the Project Management role, you could always consider hiring a staff member to take on this position.

    Option 3 – Hire Contractors Your Can Trust

    The Community also believed the problem could be addressed with a careful contractor selection process and stringent proving period.

    As LeoWebDesign says, if you can’t trust your contractors with your clients, you may “have trust and confidentiality issues, not necessarily “management” issues.

    “It is important to try to find someone that you trust. This isn’t easy. I would try to develop a relationship with a contractor slowly. Don’t throw part of a $20,000 job to a new guy if you can help it. Start a new guy out with something smaller to test the waters. Give him part of a job from someone that isn’t one of your best clients. That way if you lose the client it isn’t as big of a deal and you can cut the contractor off before a major loss occurs. A good test is to let the contractor “accidentally” know the client’s details to see if they contact the client.”

    LeoWebDesign also highlights the importance of establishing the ground rules up-front in any contractor relationship. “If you supply [the contractor] a decent amount of work, you might want to let them know upfront that if there is breach of trust then the workflow will stop.”

    Trust is essential to any partnership, especially when your livelihood is at stake! Working hard to source that trustworthy person is only part of the equation. Test them and allow them the opportunity to earn your trust over time — this is crucial to the relationship’s success.

    Option 4 – Protect Yourself

    Altima provides a number of tactics the burgeoning business can use to protect itself from shady contractors who might try to poach your clients.

    “[The] usage of offshore sub-contractors can reduce the risk of having them steal your clients. …The client is much [less likely to use a] contractor from other side of globe. Of course, offshore outsourcing requires a stronger communication effort, but [also] has price benefits.

    “Ask for a reference. If you [plan] to work with a company or person who constantly does outsourcing work, you can ask them to provide references from past clients [to whom they’ve contracted their skills].” This is a good way to check not just the quality of the contractor’s work, but to confirm their integrity.

    “Indeed, we sign non-compete and non-disclosure agreement with most clients,” Altima adds, which is certainly a good way to make your expectations as the hiring party clear up-front. It also allows you to discuss with the contractor what might otherwise be a touchy subject, and gives you the opportunity to set the foundations for a solid, trusting business partnership.

    Sharky explains, “I lock all my employees into a contract. I have used contractors in the past, and have also used contracts with [them]. I’ve spent the money to have an attorney write the contracts out correctly and [make them] air tight.”

    Needless to say, signing legally-binding contracts at the commencement of a business relationship helps set a professional tone for the partnership, and establishes expectations in the contractors’ mind.

    While many Community members felt, or had discovered through bitter experience, that contracts can cost more to legally enforce than the average business owner could afford, the fact that they’ve signed a legally-binding contract can simultaneously deter would-be poachers, and provide you with leverage if things get ugly.

    Option 5 – Give Contractors a Good Deal

    Once you find good contractors, you’ll want to hang onto them! But being a good employer can help you ensure that even brand new contracting partnerships have a better chance of success.

    dhecker has some pointers.

    “It’s up to you to ensure that you provide your contractors a better revenue stream than they would [gain] by stealing a single client and sacrificing their relationship with you. My programmers know that they could easily steal one of my clients and make some cash, but they also know that I’ve been paying their bills for years and no one client will offer them the steady work that I do.

    “Professional contractors who are advanced in their career and have a reputation to uphold will probably not steal your clients. If you’re worried about this, you need better contractors, a better contract, and a better deal for the contractors themselves.”

    Creating successful relationships with your contractors can only benefit your business. Good relationships mean happy contractors (who are more likely to refer other excellent colleagues to you should you need to contract further staff in future), happy clients, and an easy working relationship. Treating contractors well is the first step in the process.

    Protect Your Assets

    Your clients put bread on the table, which is why the relationships you establish with them must be your top priority. Expanding your business should not see you sacrifice the level of service or the closeness of the working relationship you have with clients. So take the time to explore your options, and aim to trial and review closely any systems or processes you use to manage contractors and clients.

    These pointers may help you avoid having clients poached, and any ensuing law suits. Take a moment to see if and how you could work them into your expansion strategy. A dhecker says, “It’s up to you to make sure your contractors don’t want to steal your clients. Treat them well and protect yourself!”

    SitePoint CommunitySitePoint Community
    View Author

    Visit the SitePoint Forums today.

    Share this article
    Read Next
    How to Deploy Apache Airflow on Vultr Using Anaconda
    How to Deploy Apache Airflow on Vultr Using Anaconda
    Vultr
    Cloud Native: How Ampere Is Improving Nightly Arm64 Builds
    Cloud Native: How Ampere Is Improving Nightly Arm64 Builds
    Dave NearyAaron Williams
    How to Create Content in WordPress with AI
    How to Create Content in WordPress with AI
    Çağdaş Dağ
    A Beginner’s Guide to Setting Up a Project in Laravel
    A Beginner’s Guide to Setting Up a Project in Laravel
    Claudio Ribeiro
    Enhancing DevSecOps Workflows with Generative AI: A Comprehensive Guide
    Enhancing DevSecOps Workflows with Generative AI: A Comprehensive Guide
    Gitlab
    Creating Fluid Typography with the CSS clamp() Function
    Creating Fluid Typography with the CSS clamp() Function
    Daine Mawer
    Comparing Full Stack and Headless CMS Platforms
    Comparing Full Stack and Headless CMS Platforms
    Vultr
    7 Easy Ways to Make a Magento 2 Website Faster
    7 Easy Ways to Make a Magento 2 Website Faster
    Konstantin Gerasimov
    Powerful React Form Builders to Consider in 2024
    Powerful React Form Builders to Consider in 2024
    Femi Akinyemi
    Quick Tip: How to Animate Text Gradients and Patterns in CSS
    Quick Tip: How to Animate Text Gradients and Patterns in CSS
    Ralph Mason
    Sending Email Using Node.js
    Sending Email Using Node.js
    Craig Buckler
    Creating a Navbar in React
    Creating a Navbar in React
    Vidura Senevirathne
    A Complete Guide to CSS Logical Properties, with Cheat Sheet
    A Complete Guide to CSS Logical Properties, with Cheat Sheet
    Ralph Mason
    Using JSON Web Tokens with Node.js
    Using JSON Web Tokens with Node.js
    Lakindu Hewawasam
    How to Build a Simple Web Server with Node.js
    How to Build a Simple Web Server with Node.js
    Chameera Dulanga
    Building a Digital Fortress: How to Strengthen DNS Against DDoS Attacks?
    Building a Digital Fortress: How to Strengthen DNS Against DDoS Attacks?
    Beloslava Petrova
    Crafting Interactive Scatter Plots with Plotly
    Crafting Interactive Scatter Plots with Plotly
    Binara Prabhanga
    GenAI: How to Reduce Cost with Prompt Compression Techniques
    GenAI: How to Reduce Cost with Prompt Compression Techniques
    Suvoraj Biswas
    How to Use jQuery’s ajax() Function for Asynchronous HTTP Requests
    How to Use jQuery’s ajax() Function for Asynchronous HTTP Requests
    Aurelio De RosaMaria Antonietta Perna
    Quick Tip: How to Align Column Rows with CSS Subgrid
    Quick Tip: How to Align Column Rows with CSS Subgrid
    Ralph Mason
    15 Top Web Design Tools & Resources To Try in 2024
    15 Top Web Design Tools & Resources To Try in 2024
    SitePoint Sponsors
    7 Simple Rules for Better Data Visualization
    7 Simple Rules for Better Data Visualization
    Mariia Merkulova
    Cloudways Autonomous: Fully-Managed Scalable WordPress Hosting
    Cloudways Autonomous: Fully-Managed Scalable WordPress Hosting
    SitePoint Team
    Best Programming Language for AI
    Best Programming Language for AI
    Lucero del Alba
    Quick Tip: How to Add Gradient Effects and Patterns to Text
    Quick Tip: How to Add Gradient Effects and Patterns to Text
    Ralph Mason
    Logging Made Easy: A Beginner’s Guide to Winston in Node.js
    Logging Made Easy: A Beginner’s Guide to Winston in Node.js
    Vultr
    How to Optimize Website Content for Featured Snippets
    How to Optimize Website Content for Featured Snippets
    Dipen Visavadiya
    Psychology and UX: Decoding the Science Behind User Clicks
    Psychology and UX: Decoding the Science Behind User Clicks
    Tanya Kumari
    Build a Full-stack App with Node.js and htmx
    Build a Full-stack App with Node.js and htmx
    James Hibbard
    Digital Transformation with AI: The Benefits and Challenges
    Digital Transformation with AI: The Benefits and Challenges
    Priyanka Prajapat
    Quick Tip: Creating a Date Picker in React
    Quick Tip: Creating a Date Picker in React
    Dianne Pena
    How to Create Interactive Animations Using React Spring
    How to Create Interactive Animations Using React Spring
    Yemi Ojedapo
    10 Reasons to Love Google Docs
    10 Reasons to Love Google Docs
    Joshua KrausZain Zaidi
    How to Use Magento 2 for International Ecommerce Success
    How to Use Magento 2 for International Ecommerce Success
    Mitul Patel
    5 Exciting New JavaScript Features in 2024
    5 Exciting New JavaScript Features in 2024
    Olivia GibsonDarren Jones
    Tools and Strategies for Efficient Web Project Management
    Tools and Strategies for Efficient Web Project Management
    Juliet Ofoegbu
    Choosing the Best WordPress CRM Plugin for Your Business
    Choosing the Best WordPress CRM Plugin for Your Business
    Neve Wilkinson
    ChatGPT Plugins for Marketing Success
    ChatGPT Plugins for Marketing Success
    Neil Jordan
    Managing Static Files in Django: A Comprehensive Guide
    Managing Static Files in Django: A Comprehensive Guide
    Kabaki Antony
    The Ultimate Guide to Choosing the Best React Website Builder
    The Ultimate Guide to Choosing the Best React Website Builder
    Dianne Pena
    Exploring the Creative Power of CSS Filters and Blending
    Exploring the Creative Power of CSS Filters and Blending
    Joan Ayebola
    How to Use WebSockets in Node.js to Create Real-time Apps
    How to Use WebSockets in Node.js to Create Real-time Apps
    Craig Buckler
    Best Node.js Framework Choices for Modern App Development
    Best Node.js Framework Choices for Modern App Development
    Dianne Pena
    SaaS Boilerplates: What They Are, And 10 of the Best
    SaaS Boilerplates: What They Are, And 10 of the Best
    Zain Zaidi
    Understanding Cookies and Sessions in React
    Understanding Cookies and Sessions in React
    Blessing Ene Anyebe
    Enhanced Internationalization (i18n) in Next.js 14
    Enhanced Internationalization (i18n) in Next.js 14
    Emmanuel Onyeyaforo
    Essential React Native Performance Tips and Tricks
    Essential React Native Performance Tips and Tricks
    Shaik Mukthahar
    How to Use Server-sent Events in Node.js
    How to Use Server-sent Events in Node.js
    Craig Buckler
    Five Simple Ways to Boost a WooCommerce Site’s Performance
    Five Simple Ways to Boost a WooCommerce Site’s Performance
    Palash Ghosh
    Elevate Your Online Store with Top WooCommerce Plugins
    Elevate Your Online Store with Top WooCommerce Plugins
    Dianne Pena
    Unleash Your Website’s Potential: Top 5 SEO Tools of 2024
    Unleash Your Website’s Potential: Top 5 SEO Tools of 2024
    Dianne Pena
    How to Build a Chat Interface using Gradio & Vultr Cloud GPU
    How to Build a Chat Interface using Gradio & Vultr Cloud GPU
    Vultr
    Enhance Your React Apps with ShadCn Utilities and Components
    Enhance Your React Apps with ShadCn Utilities and Components
    David Jaja
    10 Best Create React App Alternatives for Different Use Cases
    10 Best Create React App Alternatives for Different Use Cases
    Zain Zaidi
    Control Lazy Load, Infinite Scroll and Animations in React
    Control Lazy Load, Infinite Scroll and Animations in React
    Blessing Ene Anyebe
    Building a Research Assistant Tool with AI and JavaScript
    Building a Research Assistant Tool with AI and JavaScript
    Mahmud Adeleye
    Understanding React useEffect
    Understanding React useEffect
    Dianne Pena
    Web Design Trends to Watch in 2024
    Web Design Trends to Watch in 2024
    Juliet Ofoegbu
    Building a 3D Card Flip Animation with CSS Houdini
    Building a 3D Card Flip Animation with CSS Houdini
    Fred Zugs
    How to Use ChatGPT in an Unavailable Country
    How to Use ChatGPT in an Unavailable Country
    Dianne Pena
    An Introduction to Node.js Multithreading
    An Introduction to Node.js Multithreading
    Craig Buckler
    How to Boost WordPress Security and Protect Your SEO Ranking
    How to Boost WordPress Security and Protect Your SEO Ranking
    Jaya Iyer
    Understanding How ChatGPT Maintains Context
    Understanding How ChatGPT Maintains Context
    Dianne Pena
    Building Interactive Data Visualizations with D3.js and React
    Building Interactive Data Visualizations with D3.js and React
    Oluwabusayo Jacobs
    JavaScript vs Python: Which One Should You Learn First?
    JavaScript vs Python: Which One Should You Learn First?
    Olivia GibsonDarren Jones
    13 Best Books, Courses and Communities for Learning React
    13 Best Books, Courses and Communities for Learning React
    Zain Zaidi
    5 jQuery.each() Function Examples
    5 jQuery.each() Function Examples
    Florian RapplJames Hibbard
    Implementing User Authentication in React Apps with Appwrite
    Implementing User Authentication in React Apps with Appwrite
    Yemi Ojedapo
    AI-Powered Search Engine With Milvus Vector Database on Vultr
    AI-Powered Search Engine With Milvus Vector Database on Vultr
    Vultr
    Understanding Signals in Django
    Understanding Signals in Django
    Kabaki Antony
    Why React Icons May Be the Only Icon Library You Need
    Why React Icons May Be the Only Icon Library You Need
    Zain Zaidi
    View Transitions in Astro
    View Transitions in Astro
    Tamas Piros
    Getting Started with Content Collections in Astro
    Getting Started with Content Collections in Astro
    Tamas Piros
    What Does the Java Virtual Machine Do All Day?
    What Does the Java Virtual Machine Do All Day?
    Peter Kessler
    Become a Freelance Web Developer on Fiverr: Ultimate Guide
    Become a Freelance Web Developer on Fiverr: Ultimate Guide
    Mayank Singh
    Layouts in Astro
    Layouts in Astro
    Tamas Piros
    .NET 8: Blazor Render Modes Explained
    .NET 8: Blazor Render Modes Explained
    Peter De Tender
    Mastering Node CSV
    Mastering Node CSV
    Dianne Pena
    A Beginner’s Guide to SvelteKit
    A Beginner’s Guide to SvelteKit
    Erik KückelheimSimon Holthausen
    Brighten Up Your Astro Site with KwesForms and Rive
    Brighten Up Your Astro Site with KwesForms and Rive
    Paul Scanlon
    Which Programming Language Should I Learn First in 2024?
    Which Programming Language Should I Learn First in 2024?
    Joel Falconer
    Managing PHP Versions with Laravel Herd
    Managing PHP Versions with Laravel Herd
    Dianne Pena
    Accelerating the Cloud: The Final Steps
    Accelerating the Cloud: The Final Steps
    Dave Neary
    An Alphebetized List of MIME Types
    An Alphebetized List of MIME Types
    Dianne Pena
    The Best PHP Frameworks for 2024
    The Best PHP Frameworks for 2024
    Claudio Ribeiro
    11 Best WordPress Themes for Developers & Designers in 2024
    11 Best WordPress Themes for Developers & Designers in 2024
    SitePoint Sponsors
    Top 10 Best WordPress AI Plugins of 2024
    Top 10 Best WordPress AI Plugins of 2024
    Dianne Pena
    20+ Tools for Node.js Development in 2024
    20+ Tools for Node.js Development in 2024
    Dianne Pena
    The Best Figma Plugins to Enhance Your Design Workflow in 2024
    The Best Figma Plugins to Enhance Your Design Workflow in 2024
    Dianne Pena
    Harnessing the Power of Zenserp for Advanced Search Engine Parsing
    Harnessing the Power of Zenserp for Advanced Search Engine Parsing
    Christopher Collins
    Build Your Own AI Tools in Python Using the OpenAI API
    Build Your Own AI Tools in Python Using the OpenAI API
    Zain Zaidi
    The Best React Chart Libraries for Data Visualization in 2024
    The Best React Chart Libraries for Data Visualization in 2024
    Dianne Pena
    7 Free AI Logo Generators to Get Started
    7 Free AI Logo Generators to Get Started
    Zain Zaidi
    Turn Your Vue App into an Offline-ready Progressive Web App
    Turn Your Vue App into an Offline-ready Progressive Web App
    Imran Alam
    Clean Architecture: Theming with Tailwind and CSS Variables
    Clean Architecture: Theming with Tailwind and CSS Variables
    Emmanuel Onyeyaforo
    How to Analyze Large Text Datasets with LangChain and Python
    How to Analyze Large Text Datasets with LangChain and Python
    Matt Nikonorov
    6 Techniques for Conditional Rendering in React, with Examples
    6 Techniques for Conditional Rendering in React, with Examples
    Yemi Ojedapo
    Introducing STRICH: Barcode Scanning for Web Apps
    Introducing STRICH: Barcode Scanning for Web Apps
    Alex Suzuki
    Using Nodemon and Watch in Node.js for Live Restarts
    Using Nodemon and Watch in Node.js for Live Restarts
    Craig Buckler
    Task Automation and Debugging with AI-Powered Tools
    Task Automation and Debugging with AI-Powered Tools
    Timi Omoyeni
    Get the freshest news and resources for developers, designers and digital creators in your inbox each week