Slide 1

Slide 1 text

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.

Slide 60

Slide 60 text

@afilina