HOW TO BECOME A BETTER DEVELOPER? 1
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