You Don't Need
More Developers
PHP COMMUNITY SUMMIT | AUG 21, 2021 @afilina
Slide 2
Slide 2 text
"We need to hire more developers,
but we can't find any!"
You generally don't need more devs. Let's find the
underlying problem to the shortage and solve it.
Slide 3
Slide 3 text
Anna Filina
• Coding since 1997
• PHP since 2003
• Legacy archaeology
• Test automation
• Public speaking
• Mentorship
• YouTube videos
Slide 4
Slide 4 text
Dig For the
Root Cause
Slide 5
Slide 5 text
Why do we need
more developers?
We struggle to keep
up with all the work.
Why?
Because things take
a long time to do.
Why?
Umm…
Ask "why" like a kid until you get the root causes.
Slide 6
Slide 6 text
Because we have a heavy
development process
Because we need to wait for the
testers to catch up
Because most tasks can't be
delegated to the junior devs
Because this code is hard to
debug.
Slide 7
Slide 7 text
Code is Hard
to Debug
You can spend the majority of your time debugging. It
usually takes more time to debug the code than to write it.
Slide 8
Slide 8 text
"Every hour spent
on defect prevention
will reduce repair time
by 3-10 hours."
- Jones, Capers.
Assessment and control of software risks.
Slide 9
Slide 9 text
5 x 3 = 15
15 – 5 = 10
1 hour each day x 3 hours saved on
debugging – initial investment
Slide 10
Slide 10 text
5 x 3 = 15
15 – 5 = 10
5 x 10 = 50
50 – 5 = 45
Same, but with 10 hours saved per invested hour.
Equivalent of doubling the team size.
Slide 11
Slide 11 text
Clean code has fewer defects.
Slide 12
Slide 12 text
This is great!
I don't know what clean
code is.
Slide 13
Slide 13 text
• Easy to reason about
• Testable and tested
• Easy to modify
If you need to modify 10 classes to add a tiny feature,
then you're potentially introducing more defects.
Slide 14
Slide 14 text
Writing clean code
doesn't take longer.
It appears longer because it takes
time to learn clean code.
Slide 15
Slide 15 text
That looks interesting.
Where can I learn this?
Slide 16
Slide 16 text
Pair programming.
Slide 17
Slide 17 text
Order devs by skill level.
Knowledge gap can be intimidating.
Slide 18
Slide 18 text
One shares their screen and both
work on the same problem.
Slide 19
Slide 19 text
Most of our time
is spent thinking, not typing.
Slide 20
Slide 20 text
Better code means fewer defects.
Learning better code compounds over time.
Slide 21
Slide 21 text
Knowledge travels between team members. Add new knowledge
with conferences, pair programming with outside dev, etc.
Slide 22
Slide 22 text
But all of this is
expensive!
Not really. Let's calculate
Slide 23
Slide 23 text
Average PHP dev salary:
R$7.400 / month
According to Glassdoor.
Slide 24
Slide 24 text
PHP Community Summit:
R$100
You can afford to send every single
developer every year, and then some.
Slide 25
Slide 25 text
Time saved affords books and even
time to read them at work.
Slide 26
Slide 26 text
Wait for Testers
to Catch Up
Wait for Testers to
Catch Up
Slide 27
Slide 27 text
A fully automated test suite gives the confidence
to ship straight to production
Slide 28
Slide 28 text
Typical non-automated QA process:
I wait 3 months for tester to get to my code.
Slide 29
Slide 29 text
Bug found in code I wrote 3 months ago.
Slide 30
Slide 30 text
I now need to switch context.
Slide 31
Slide 31 text
I don't remember what that feature was all
about, since I did so many things in that time.
Slide 32
Slide 32 text
Switch context back.
Slide 33
Slide 33 text
Long feedback loop.
Even if it's not three months, manual testing takes long
enough for you to switch contexts and kill productivity.
Slide 34
Slide 34 text
Automated tests shorten the feedback loop.
Slide 35
Slide 35 text
Wait for Testers
to Catch Up
Can't Delegate
to Juniors
The whole notion of delegating work to
junior developers is misguided.
Slide 36
Slide 36 text
1 2 3
Task 1 is easiest. Task 3 is hardest. We
tend to delegate easy stuff to juniors.
Slide 37
Slide 37 text
1
2
3
We then let them work alone, in the hopes that
somehow, they will acquire new knowledge over time.
Slide 38
Slide 38 text
1 2 3
Hoping that they'll be able to suddenly work on harder tasks
is inefficient, and doesn't guarantee best practices.
Slide 39
Slide 39 text
Pair programming makes juniors useful today,
and speeds up their road to senior.
Slide 40
Slide 40 text
Pair programming also prevents
the pipeline from drying up.
Slide 41
Slide 41 text
✗ ✗
Senior devs will retire, start their own companies, or move
to other roles. More pressure on remaining senior devs.
Slide 42
Slide 42 text
Wait for Testers
to Catch Up
Heavy
Development
Process
Slide 43
Slide 43 text
Communication specs through docs is
inefficient and error-prone.
Slide 44
Slide 44 text
Behat / Codeception
* Or anything using Gherkin.
Slide 45
Slide 45 text
Scenario: User can subscribe with a credit card
Given I selected a subscription level
When I enter valid credit card details
Then I should see a payment receipt
Business people can understand the requirement at a glance.
There's no chance at ambiguity. It's always up-to-date.
Slide 46
Slide 46 text
Too many meetings.
Slide 47
Slide 47 text
A few people talk, the rest listen to
things that don't concern them.
Invite as few people as possible.
Take notes and share if needed.
Slide 48
Slide 48 text
Fewer people make meetings more productive:
more focus, more opportunity to speak.
Slide 49
Slide 49 text
No-meeting
day
Declare recurring no-meeting days.
Slide 50
Slide 50 text
No-meeting
day
No-meeting
morning
No-meeting
morning
You can also ensure that devs have several
consecutive hours to focus on other days.
Slide 51
Slide 51 text
Build teams.
Stop assigning one developer per project.
Teams are where the magic happens.
Slide 52
Slide 52 text
Real world example: 6 projects / 4 devs = everything on fire.
Slide 53
Slide 53 text
Build a team and keep the
other projects in backlog.
Slide 54
Slide 54 text
You can also build several teams.
Just don't start all projects at once.
Slide 55
Slide 55 text
"Capable of dealing with
competing priorities."
Biggest warning sign in job descriptions.
Translation: we're always on fire.
Slide 56
Slide 56 text
Better tooling.
Slide 57
Slide 57 text
Company won't give this person direct access, forcing
them into a very inefficient, soul-crushing process.
Slide 58
Slide 58 text
• Configure Xdebug
• Use an IDE
• Give people access
* xdebug.cloud for an even easier setup.
Slide 59
Slide 59 text
You don't necessarily need more
developers.
You may just need to make them better
at their job and avoid wasting their time.
Start by making the most out of the devs
you already have.