How to become a better developer?

  • View
    554

  • Download
    0

  • Category

    Career

Preview:

Citation preview

HOW TO BECOME A BETTER DEVELOPER?

1

Jerzy Zawadzki▸ PHP programmer with 10 years of experience

▸ at Polcode for over 7 years, now a Senior PHP Developer

▸ working with Symfony2 and/or Magento on a daily basis

▸ Zend Certified Engineer

▸ Magento Certified Developer

▸ in spare time I like hiking, chasing after special services with a camera or building something with LEGO

2

- founded at 2006 by developers

- PHP (i.a. Symfony 2, Laravel, ZF, Magento, Wordpress)

- Ruby On Rails

- Python

- clients mostly from the North America, Western Europe and Australia

- 800 satisfied customers

- 1200 conducted projects

- >100 devs

- Warsaw, Krakow, Katowice, Lodz, Bialystok + remote

3

HOW TO BECOME A BETTERDEVELOPER?

4

WHAT DOES IT MEAN TO BE A GOOD DEVELOPER?

5

I’M A GOOD DEV BECAUSE…

I HAVE 10 YEARS OF EXPERIENCE?

6

I’M A GOOD DEV BECAUSE…

I KNOW ALL OF THE PROGRAMMING PRINCIPLES AND METHODOLOGIES?

7

Abstraction principle, Code reuse, Cohesion, Command–query separation, Defensive programming, Dependency inversion principle, Discoverability, Don't repeat yourself, Fail-fast, GRASP, Hollywood principle, Information hiding, Interface segregation principle, Inversion of control, KISS principle, Law of Demeter, Liskov substitution principle, Loose coupling, MINASWAN, Open/closed principle, Principle of least astonishment, Separation of concerns, Separation of mechanism and policy, Single responsibility principle, SOLID, Uniform access principle, 80:20 rule, Amdahl's law, Code smell, Deutsch limit, Greenspun's tenth rule, Gustafson's law, If it ain't broke, don't fix it, IIABDFI, MINASWAN, Ninety-ninety rule, Rule of three, Zero one infinity rule, Acceptance test-driven development, After the Software Wars, Agile Manifesto, Agile software development, Behavior-driven development, The Cathedral and the Bazaar, Comment programming, Cowboy coding, Design-driven development, Domain-driven design, Extreme programming, Formal methods, Hollywood principle, Homesteading the Noosphere, Integration competency center, Iterative and incremental development, Kanban, KISS principle, Lean integration, Lean software development, Lightweight methodology, The Magic Cauldron, Mayo-Smith pyramid, Micro-innovation, Minimalism, Open/closed principle, Planning poker, PM Declaration of Interdependence, Release early, release often, Retrenchment, Rule of least power, Secure by design, Slow programming, Specification by example, Test double, Continuous test-driven development, Test-driven development, Test-Driven Development by Example, There's more than one way to do it, Transformation Priority Premise, Unix philosophy, Waterfall model, Worse is better, You aren't gonna need it,

https://en.wikipedia.org/wiki/Category:Software_development_philosophies8

I’M A GOOD DEV BECAUSE…

I DON’T USE FRAMEWORKS?

9

I’M A GOOD DEV BECAUSE…

I CODE IN NOTEPAD?

10

I’M A GOOD DEV BECAUSE…

I WRITE GOOD CODE?

11

I’M A GOOD DEV BECAUSE…

I WRITE GOOD CODE?

12

?

1.ABOUT GOOD CODE

13

“”Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.” – Martin Golding.

14

KISS15

you cannot write perfect code

16

you can write code that is good enough

17

UGLY CODEthat works is

BETTER than pretty one that

DOESN’T18

2.ABOUT GOOD PROJECTS

19

The Psychology of Computer ProgrammingGerald M. Weinberg1971

20

Programming qualityaccording to Weinberg

▸ Use Symfony▸ DDD!▸ BDD!▸ DO NOT code in Laravel▸ Don’t touch Wordpress, ever▸ PHP sucks

21

▸ Use Symfony▸ DDD!▸ BDD!▸ DO NOT write in Laravel▸ Don’t touch Wordpress, ever▸ PHP sucks

Programming qualityaccording to Weinberg

22

X

Software quality

meets thespecification

on time and budget

adaptable to changing requirements

23

efficient in a given environment

meets thespecification

24

searching for requirements

25

on time and budget

26

“It always takes longer than you expect, even when you take into account Hofstadter's Law.▸ Douglas Hofstadter

Hofstadter’s law

27

“The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time.

▸ Tom Cargill, Bell Labs

Rule of Credibility(Ninety-ninety rule)

28

efficient in a given environment

29

You’re not coding Facebook*

30

Optimizationas an

“Art for art's sake”

31

Servers are cheaper than developers

32

The fastest query is one that

will not be run

33

34

The fastest codeis one that

will not be run

35

adaptable to changing requirements

36

Which system requirements may

change?

All of them!37

38

39

X

In large projects, it is not possible to be prepared for every

change.

40

41

Software quality

meets thespecification

on time and budget

adaptable to changing requirements

efficient in a given environment

42

43

3.ABOUT GOOD DEVELOPERS

44

THINK45

Don’t think ONLYabout the code

46

▸ customers and their needs▸ the user▸ the problem▸ code maintaince▸ the future▸ other developers

THINK ABOUT

47

Act like aPROFESSIONAL

48

Stick to the standards

49

Don’te be afraid to say:I DON’T KNOW

50

Check the specificationAsk the client

51

AskWHY?

52

Communication

53

Empathy.

54

55

There is not just one solution to the majority of

problems

56

57

If something is stupid, but it works it ain’t stupid.

58

Thanks

Any questions?

59