Skip to main content Scroll Top

Hire PHP Developers

Updated September 2026 · Written and maintained by the Progression Agency strategy team

“PHP developer” describes four jobs that barely overlap — WordPress, modern frameworks, legacy maintenance and integration work — and hiring for the wrong one is the usual cause of a disappointing engagement. This page covers how to tell which you need, the version question to ask before anything else, how to screen without being technical, and what you must own when the work ends.

The short answerName the job before writing the brief: WordPress, framework, legacy or integration work are different specialties. Ask what PHP version you are running and what its support status is — a developer who cannot answer quickly is telling you something. Screen by asking about a production incident they caused or inherited. And make sure the repository, hosting and deployment process would survive that developer disappearing tomorrow.

Deciding which PHP specialty you actually need

“PHP developer” is four different jobs

The commonest hiring mistake in this category is treating PHP as one skill. It is a language shared by several ecosystems that barely overlap in practice, and a developer who is excellent in one can be genuinely weak in another.

A WordPress developer works inside a plugin and theme architecture with its own conventions and an enormous installed base of third-party code. A Laravel or Symfony developer works in a modern framework with dependency injection, migrations and a test suite. A legacy maintainer works in procedural code written before any of that existed, often without version control. And an integration developer mostly writes glue between systems and rarely touches a front end at all.

Hiring for the wrong one is the usual cause of a disappointing engagement, and it is entirely avoidable by naming the job before writing the brief.

Four PHP jobs and how to tell which one you need
The jobWhat the code looks likeRight whenWrong hire looks like
WordPress developerThemes, plugins, hooks, a large third-party surfaceYour site is WordPress and you need it extended safelyA framework purist who rewrites rather than works within it
Framework developer (Laravel / Symfony)MVC, migrations, DI container, testsYou are building an application, not a websiteA WordPress specialist learning the framework on your budget
Legacy maintainerProcedural code, mixed HTML and SQL, little toolingYou have a system that works and must keep workingSomeone who proposes a rewrite in week one
Integration developerAPIs, queues, transforms, no front endSystems need to talk and nobody owns the middleA front-end-heavy generalist

WordPress is a specialty, not a lesser skill

It powers a very large share of the web, and working safely inside it — hooks rather than core edits, update-survivable customization, an awareness of what a plugin update can break — is a genuine discipline. A developer who dismisses it will produce code that does not survive the next update. The platform’s own requirements page is the baseline for what it expects to run on.

Framework work is application development

If you are building something with users, roles, state and business logic, you want framework experience and a test suite. Building that inside a content-management system is possible and is usually a decision people regret.

Legacy maintenance is undervalued and hard

Reading someone else’s undocumented code and changing it without breaking a working business is a real skill. Candidates who lead with a rewrite proposal are describing the job they want rather than the job you have.

Integration work needs different questions

Ask about idempotency, retries and what happens when the third-party API is down. Those answers separate people who have run integrations in production from people who have written one.

The version question you should ask before anything else

PHP releases follow a predictable lifecycle — roughly two years of active support followed by a further period of security-only fixes, after which a version receives nothing at all. The current status of every branch is published on php.net’s supported versions page, and it is worth checking before you hire rather than after.

This matters commercially because an application running on an end-of-life version is accumulating unpatched vulnerabilities every month, and because the upgrade gets harder the longer it is deferred. It is also the single most useful screening question you can ask a candidate or an agency: what version are we on, what is its support status, and what would it take to move.

A developer who cannot answer that quickly is telling you something. So is an agency that quotes a feature roadmap without mentioning it.

Find out what runs — Nobody usually knows. And the answer is older than expected..
Check support status — php.net publishes it. Active, security-only, or nothing at all..
Budget as a project — Not a sprint task. Staging environment and rollback plan..
Audit dependencies — Where upgrades break. Rarely your own code; usually a package..
Watch abandoned extensions — Maintainer stopped. Replace or vendor it deliberately..
Control the host — Neither default is safe. Silent upgrades and never upgrading both hurt..

Find out what you are actually running

Frequently nobody knows, and the answer is older than anyone expects. Hosting control panels report it; so does a one-line script.

Budget the upgrade as its own project

Version upgrades are not features and should not be squeezed into a feature sprint. They need a staging environment and a rollback plan.

Watch for the extension trap

Upgrades usually break on a dependency or an abandoned extension rather than on your own code. That audit is the real work.

Do not let hosting decide it for you

A host that silently upgrades PHP can take a site down without warning; one that never upgrades leaves you exposed. Neither default is acceptable.

Contractor, agency or employee

All three work and they fail differently. A contractor is the best value for well-specified work and carries genuine single-point-of-failure risk. An agency buys continuity and process at a higher rate. An employee makes sense above a threshold of steady work and is expensive below it, because a developer waiting on other people’s decisions is the most costly way to buy code.

The honest test is how much work you genuinely have. Under roughly a day a week, a contractor or a small agency is almost always right. Above a steady three or four days a week with a real backlog, hiring starts to make sense — and the fully loaded cost is considerably more than the salary.

Which arrangement fits which situation
ArrangementRight whenReal riskWhat to insist on
Individual contractorDefined project, clear specAvailability and bus factorCode in your repository from day one
Small agencyOngoing work, needs continuityJunior substitution after the pitchNamed people, not a capabilities deck
EmployeeSteady backlog, institutional knowledge mattersHiring cost and rampA second person who can review the code
Offshore teamWell-specified execution at volumeSpecification overhead is on youWritten acceptance criteria per task
Nobody, for nowThe system works and needs littleSilent security driftA monitored update and backup routine anyway
Contractor — Best value, specified work. Ask about availability, seriously..
Small agency — Continuity and process. Ask who delivers, by name..
Employee — Above a steady backlog. Fully loaded cost exceeds the salary..
Offshore — Execution at volume. Specification burden moves to you..
Nobody for now — If it works and needs little. Still fund updates and backups..
Two heads minimum — Anything business-critical. One person is a single point of failure..

How to screen a PHP developer without being technical yourself

You do not need to read code to run a useful screen. You need to ask questions whose answers reveal how someone works, and to notice whether the answers are specific or generic.

The most informative question is about something that went wrong. Ask a candidate to describe a production incident they caused or inherited, what the impact was, and what they changed afterwards. People who have genuinely operated systems answer this readily and in detail. People who have not will generalize.

A production incident — The best single question. Specific answers separate operators..
What they would not do — Reveals opinions. Or reveals there are none..
How they test — Deliberate or accidental. Manual is fine if it is chosen..
Unavailability plan — Every contractor needs one. Its absence is the risk..
A small paid task — Beats any interview. And is fair to the candidate..
Reading someone else's code — The actual daily job. Rewrite proposals are a warning..

Ask what they would not do

A developer who cannot name an approach they consider a mistake has either not formed opinions or is telling you what you want to hear.

Ask how they test

“Manually” is an acceptable answer for a small site and a warning sign for an application. The question is whether the answer is deliberate.

Ask what happens when they are unavailable

Every contractor should have an answer. The absence of one is the risk you are actually buying.

Give a small paid task before a large one

A short paid piece of real work tells you more than any interview, and it is fair to the candidate.

Security is the part that gets skipped and then costs the most

PHP applications are among the most attacked targets on the web, mostly through predictable routes: outdated dependencies, injection through unvalidated input, weak session handling and file upload flaws. None of it is exotic and almost all of it appears on the OWASP Top Ten, which is the reference worth handing a developer.

The commercial framing is what usually lands: the cheapest hour anyone spends on your codebase is the one that keeps dependencies current, and the most expensive is the incident response you buy by not doing it. That is an ongoing budget line, not a one-off task.

Where PHP applications actually get compromised
RouteWhat it looks likeThe unglamorous fix
Outdated dependenciesA known vulnerability in a package nobody updatedA scheduled update routine with a staging environment
Abandoned plugins or librariesCode whose maintainer stopped years agoAn inventory, and a decision to replace or vendor it
Unvalidated inputInjection through a form or query parameterParameterized queries and validation at the boundary
File upload handlingUploads stored and served without checksType validation, storage outside the web root
End-of-life PHPNo security patches at all, for anythingUpgrade as a scheduled project with rollback
Credentials in codeKeys committed to the repositoryEnvironment variables and a secret scan on the repo

What PHP work costs, and why quotes vary so much

Rates vary more by what you are buying than by geography. A WordPress fix priced hourly, a framework build priced per sprint and a legacy rescue priced as a retainer are three different commercial arrangements, and comparing their headline rates tells you very little.

The variable that actually predicts cost is specification quality. Well-specified work is cheap in any arrangement because the developer is not absorbing your indecision. Vague work is expensive everywhere, and the expense arrives as scope disputes rather than as a higher rate.

Specify outcomes, not implementations

Say what must be true when it is done. Prescribing how to build it removes the expertise you are paying for.

Separate discovery from delivery

A short paid discovery that produces a real spec is almost always cheaper than a fixed-price quote against a vague brief.

Beware the cheapest fixed price

On a vague brief it is a bid on the narrowest possible reading, and the difference arrives as change requests.

What you should own when the work ends

Everything, and it should be true continuously rather than arranged at the end. The repository in your organization, the hosting and domain in your accounts, the environment variables documented, and the deployment process written down somewhere other than in one person’s head.

The test is simple and worth applying before you need it: if this developer stopped answering tomorrow, could another one take over? If the honest answer is no, that is the risk you are carrying, regardless of how well the relationship is going.

The repository — Your organization. Not their personal account..
Hosting and domain — Your billing. The commonest hostage situation..
Environment variables — Documented. Not in one person's memory..
Deployment process — Written down. The step most often undocumented..
Backups — Tested, not assumed. An untested backup is a hope..
The takeover test — Could someone else start?. If no, that is your real risk..

Where PHP work most often goes wrong after launch

The failures that cost most are rarely in the original build. They arrive months later, when nobody owns the system, dependencies drift, and the person who understood it has moved on. Every one of these is predictable and cheap to prevent at the start.

The pattern is consistent enough to plan against: the site works, so maintenance is deferred; a dependency goes stale; an update eventually becomes mandatory and now breaks three things at once; and the developer who could have fixed it in an hour left eighteen months ago.

Post-launch failure modes and what prevents each
FailureHow it startsCost when it landsCheap prevention
Dependency driftUpdates deferred because nothing is brokenA forced upgrade that breaks several things at onceA scheduled monthly update window
Knowledge lossOne developer held it all in their headWeeks of rediscovery, or a rewriteA written deployment and environment doc
Silent backup failureBackups configured once, never testedDiscovered only during an actual incidentOne restore test per quarter
Host-forced PHP upgradeThe host moves versions without warningAn unplanned outage at their scheduleOwn the version decision; use staging
Plugin abandonmentA maintainer stops publishing updatesAn unpatched vulnerability you cannot fixAn inventory with owners and review dates
Credential sprawlKeys shared informally over timeNo way to revoke access when someone leavesA secret manager and a joiner/leaver routine

The maintenance conversation worth having before the build

Ask who owns the system after launch, what the monthly update routine is, and what happens when a dependency needs a breaking change. A supplier with real answers will have them ready. A supplier who treats maintenance as an afterthought is quoting you a lower number by leaving the expensive part out.

What Progression does and does not do here

We build and maintain PHP applications and WordPress sites where the work has to keep running — version upgrades, dependency hygiene, integrations and the documentation that makes the next person’s job possible.

We are not a staffing agency and we do not place contractors. If what you need is a developer embedded in your team on a day rate, that is a different supplier and we will say so.

Where we would tell you not to hire us

If you have a large, healthy engineering team and need one more pair of hands, a contractor is cheaper and faster than an agency relationship.

What we are weakest at

We do not do high-volume mobile application work. PHP back ends that serve mobile clients, yes; native app development, no.

What to establish before you hire PHP developers

Businesses arrive at the decision to hire PHP developers from two very different directions, and the right answer differs sharply between them. One is building something new and choosing a stack. The other has inherited a working PHP application and needs someone who can safely change it. The second is far more common and far less well served by generic job descriptions.

If you are maintaining an existing system, the framework and version matter more than general language skill. A PHP web developer fluent in Laravel is not automatically productive in a legacy codebase with no framework, and a developer comfortable on PHP 8 may be slowed considerably by a PHP 5 application that cannot be upgraded quickly. Ask about the specific situation rather than the language.

If you are building new, the more useful question is what else the work touches. Most projects that need a PHP developer also need database design, front-end work, and deployment. Whether you hire a PHP website developer who covers that range or assemble specialists changes both the cost and how long the project takes to start moving.

Marketing expense

A definitional question with accounting consequences.

What is marketing expense: the cost of activities intended to promote and sell products, recorded as an operating expense in the period incurred rather than capitalized. It covers advertising media, agency and contractor fees, marketing salaries, events, production of promotional material, martech subscriptions and market research.

Two boundaries cause most of the confusion. Advertising costs are generally expensed as incurred under US accounting standards rather than spread across the periods the advertising is expected to benefit, which is why a large campaign lands in one quarter. And website development costs are treated differently again: some development is capitalized as software while the content and promotional elements are expensed, which is worth agreeing with finance before a large build.

Reference videos

Technical and measurement fundamentals relevant to the work described above.

Websites and design

Frequently asked questions

Is ‘PHP developer’ one skill?
No. WordPress, modern frameworks such as Laravel or Symfony, legacy maintenance and integration work are four jobs that barely overlap in practice. Hiring for the wrong one is the usual cause of a disappointing engagement.
Is WordPress development a lesser skill than framework development?
No, it is a different one. Working safely inside hooks, keeping customization update-survivable and knowing what a plugin update can break is a real discipline. A developer who dismisses it writes code that does not survive the next update.
Should I build an application in WordPress?
If it has users, roles, state and real business logic, usually not. It is possible and it is the decision people most often regret. A framework with a test suite is the better fit.
What PHP version should we be on?
A currently supported one. Releases get roughly two years of active support then a period of security-only fixes, after which they receive nothing. Check php.net’s supported versions page for current status before hiring, not after.
What happens if we stay on an end-of-life version?
You accumulate unpatched vulnerabilities every month and the eventual upgrade gets harder. It is the clearest example of a deferred cost that grows while you defer it.
How hard is a PHP version upgrade?
The work is usually in dependencies and abandoned extensions rather than your own code. Budget it as its own project with a staging environment and a rollback plan, not as a task inside a feature sprint.
What is the best screening question for a PHP developer?
Ask them to describe a production incident they caused or inherited, the impact, and what they changed afterwards. People who have operated systems answer readily and specifically; people who have not will generalize.
Can I screen a developer without being technical?
Yes. You are assessing how someone works, not reading their code. Ask what they would not do, how they test, and what happens when they are unavailable.
Contractor, agency or employee?
Under roughly a day a week of work, a contractor or small agency is almost always right. Above a steady three or four days with a real backlog, hiring starts to make sense — and the fully loaded cost is well above the salary.
What is the real risk with a solo contractor?
Availability. Every contractor should have an answer for what happens if they are unavailable for a month; the absence of one is the risk you are buying.
Should I use a trial task?
A short paid piece of real work tells you more than any interview and is fair to the candidate. Unpaid multi-day exercises mostly filter for people with spare time.
How do PHP applications actually get compromised?
Predictably: outdated dependencies, abandoned plugins, unvalidated input, file upload handling, end-of-life PHP and credentials committed to a repository. Almost all of it appears on the OWASP Top Ten.
How much should we budget for security maintenance?
Treat it as an ongoing line rather than a project. The cheapest hour spent on a codebase keeps dependencies current; the most expensive is incident response bought by not doing it.
Why do PHP quotes vary so much?
Because specification quality varies more than skill does. Well-specified work is cheap in any arrangement; vague work is expensive everywhere, and the expense arrives as change requests rather than as a higher rate.
Should I take the cheapest fixed price?
On a vague brief, the cheapest fixed price is a bid on the narrowest possible reading of it. The difference reappears as scope disputes.
Should I specify how the work is built?
Specify outcomes — what must be true when it is done. Prescribing implementation removes the expertise you are paying for.
What should I own at the end of an engagement?
The repository in your organization, hosting and domain in your accounts, environment variables documented and the deployment process written down. Continuously, not arranged at the end.
How do I know if I am too dependent on one developer?
Ask whether another developer could take over tomorrow if this one stopped answering. If the honest answer is no, that is the risk you are carrying regardless of how well things are going.
Is offshore PHP development a false economy?
Not for well-specified execution, where the cost advantage is real and output is checkable. It is a false economy for vague work, because the specification burden moves to you.
Do we need automated tests?
For a small site, a deliberate manual routine is acceptable. For an application with business logic, the absence of tests is what makes every future change expensive and risky.
What should I look for when I hire a PHP developer?
Match the specifics rather than the language. Framework (Laravel, Symfony, WordPress or none), PHP version, and whether the work is greenfield or maintenance of an existing application predict productivity far better than years of general experience.
Is it better to hire PHP web developers as contractors or employees?
Contractors suit defined projects with a clear finish line and let you match the exact framework experience needed. Employees suit continuous product work where accumulated knowledge of the codebase compounds. Maintenance of a business-critical application usually argues for continuity.
How do I evaluate PHP developers without a technical background?
Ask each candidate to describe a change they made to an existing system and what they did to avoid breaking something else. The answer reveals whether they work defensively, which matters far more on inherited code than raw speed. A developer you hire as a PHP website developer who cannot explain their testing approach in plain language is a risk regardless of technical skill.
Should I hire a PHP website developer or a full-stack team?
If the work is confined to an existing PHP application, a specialist is faster and cheaper. If it touches database design, front-end and deployment, a team avoids the coordination cost of assembling specialists yourself — which is usually underestimated.

Get a free marketing proposal

Tell us what you are trying to grow and we will come back with a plan, not a pitch deck. Same-day reply on weekdays.

Privacy Preferences
When you visit our website, it may store information through your browser from specific services, usually in form of cookies. Here you can change your privacy preferences. Please note that blocking some types of cookies may impact your experience on our website and the services we offer.
Contact Us
0