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 BETTER
DEVELOPER?
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_philosophies
8
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
KISS
15
you cannot write
perfect code
16
you can write code
that is good enough
17
UGLY CODE
that works is
BETTER
than pretty one that
DOESN’T
18
2.
ABOUT GOOD
PROJECTS
19
The Psychology of
Computer Programming
Gerald M. Weinberg
1971
20
Programming quality
according 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 quality
according to Weinberg
22
X
Software quality
meets the
specification
on time and
budget
adaptable to changing
requirements
23
efficient in a given
environment
meets the
specification
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
Optimization
as 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 code
is 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 the
specification
on time and
budget
adaptable to changing
requirements
efficient in a given
environment
42
43
3.
ABOUT GOOD
DEVELOPERS
44
THINK
45
Don’t think ONLY
about the code
46
▸ customers and their needs
▸ the user
▸ the problem
▸ code maintaince
▸ the future
▸ other developers
THINK ABOUT
47
Act like a
PROFESSIONAL
48
Stick to the standards
49
Don’te be afraid to say:
I DON’T KNOW
50
Check the specification
Ask the client
51
Ask
WHY?
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

How to become a better developer?

  • 1.
    HOW TO BECOME ABETTER DEVELOPER? 1
  • 2.
    Jerzy Zawadzki ▸ PHPprogrammer 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
  • 3.
    - founded at2006 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
  • 4.
    HOW TO BECOME ABETTER DEVELOPER? 4
  • 5.
    WHAT DOES IT MEANTO BE A GOOD DEVELOPER? 5
  • 6.
    I’M A GOODDEV BECAUSE… I HAVE 10 YEARS OF EXPERIENCE? 6
  • 7.
    I’M A GOODDEV BECAUSE… I KNOW ALL OF THE PROGRAMMING PRINCIPLES AND METHODOLOGIES? 7
  • 8.
    Abstraction principle, Codereuse, 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_philosophies 8
  • 9.
    I’M A GOODDEV BECAUSE… I DON’T USE FRAMEWORKS? 9
  • 10.
    I’M A GOODDEV BECAUSE… I CODE IN NOTEPAD? 10
  • 11.
    I’M A GOODDEV BECAUSE… I WRITE GOOD CODE? 11
  • 12.
    I’M A GOODDEV BECAUSE… I WRITE GOOD CODE? 12 ?
  • 13.
  • 14.
    “”Always code asif the guy who ends up maintaining your code will be a violent psychopath who knows where you live.” – Martin Golding. 14
  • 15.
  • 16.
  • 17.
    you can writecode that is good enough 17
  • 18.
    UGLY CODE that worksis BETTER than pretty one that DOESN’T 18
  • 19.
  • 20.
    The Psychology of ComputerProgramming Gerald M. Weinberg 1971 20
  • 21.
    Programming quality according toWeinberg ▸ Use Symfony ▸ DDD! ▸ BDD! ▸ DO NOT code in Laravel ▸ Don’t touch Wordpress, ever ▸ PHP sucks 21
  • 22.
    ▸ Use Symfony ▸DDD! ▸ BDD! ▸ DO NOT write in Laravel ▸ Don’t touch Wordpress, ever ▸ PHP sucks Programming quality according to Weinberg 22 X
  • 23.
    Software quality meets the specification ontime and budget adaptable to changing requirements 23 efficient in a given environment
  • 24.
  • 25.
  • 26.
  • 27.
    “It always takeslonger than you expect, even when you take into account Hofstadter's Law. ▸ Douglas Hofstadter Hofstadter’s law 27
  • 28.
    “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
  • 29.
    efficient in agiven environment 29
  • 30.
  • 31.
  • 32.
  • 33.
    The fastest query isone that will not be run 33
  • 34.
  • 35.
    The fastest code isone that will not be run 35
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
    In large projects,it is not possible to be prepared for every change. 40
  • 41.
    41 Software quality meets the specification ontime and budget adaptable to changing requirements efficient in a given environment
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
    ▸ customers andtheir needs ▸ the user ▸ the problem ▸ code maintaince ▸ the future ▸ other developers THINK ABOUT 47
  • 48.
  • 49.
    Stick to thestandards 49
  • 50.
    Don’te be afraidto say: I DON’T KNOW 50
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
    There is notjust one solution to the majority of problems 56
  • 57.
  • 58.
    If something isstupid, but it works it ain’t stupid. 58
  • 59.