Slide 1

Slide 1 text

How learning Python/Dart/Clojure made me a better PHP Developer ViennaPHP May 2017 @Sgoettschkes https://stocksnap.io/photo/LTB7BB80VH

Slide 2

Slide 2 text

CODE

Slide 3

Slide 3 text

CODE (Almost)

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

A developer is born

Slide 6

Slide 6 text

A developer is born 1. Write crappy PHP “webapp” 2. Make every mistake possible, including wiping production data without a backup 3. Learn Java 4. Write better PHP

Slide 7

Slide 7 text

A developer is born

Slide 8

Slide 8 text

A developer is born

Slide 9

Slide 9 text

A developer is born

Slide 10

Slide 10 text

A developer is born

Slide 11

Slide 11 text

Let’s talk languages

Slide 12

Slide 12 text

PHP from the outside ● Javas little brother ● Death by boilerplate

Slide 13

Slide 13 text

JS from the outside ● Callback hell ● Many solutions to one problem ● So many small libraries

Slide 14

Slide 14 text

Python from the outside ● Getting things done ● BIG libraries/frameworks

Slide 15

Slide 15 text

Dart from the outside ● Modern (built from scratch) ● Async by default ● Small ecosystem

Slide 16

Slide 16 text

Clojure from the outside ● Done is better than perfect ● First “useable” functional language for me ● Libraries, not frameworks

Slide 17

Slide 17 text

Learn from each other

Slide 18

Slide 18 text

Learn from Python Readability: if variable is not null: doSomething() else: doSomethingElse()

Slide 19

Slide 19 text

Learn from Python Readability: with open(file.txt', 'w') as file: file.write(Hello ViennaPHP!')

Slide 20

Slide 20 text

Make common tasks easy: // Constructor ClassName(this.var1, this.var2); Learn from Dart

Slide 21

Slide 21 text

Make common tasks easy: // Implicit getters/setters print(obj.var1); //this is not a public property Learn from Dart

Slide 22

Slide 22 text

Learn from Clojure Immutability: var1 = 15; var1++;

Slide 23

Slide 23 text

Learn from Clojure Composability: (defn function1 [var1 var2] (str var1 ″ - ″ var2))

Slide 24

Slide 24 text

Learn from Clojure Composability: (defn function2 [var1] (println (function1 ″DEBUG″ var1)))

Slide 25

Slide 25 text

Learn from Clojure Syntax doesn’t matter: (defn function2 [var1] (println (function [] {:var1 (function2)})))

Slide 26

Slide 26 text

Not only languages ● Infrastructure (vagrant / docker) ● Architecture (Microservices) ● Methodology (Agile/Scrum/Kanban) ● ...

Slide 27

Slide 27 text

Let’s GO Start a pet project

Slide 28

Slide 28 text

Let’s GO Contribute to Open Source

Slide 29

Slide 29 text

Let’s GO Use something new for a small project

Slide 30

Slide 30 text

Let’s GO Small steps get you closer to your goal

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

https://www.dropbox.com/s/6z5aiwa8l09g2pa/86H.jpg