How to become a better developer?
Transcript of How to become a better developer?
![Page 1: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/1.jpg)
HOW TO BECOME A BETTER DEVELOPER?
1
![Page 2: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/2.jpg)
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
![Page 3: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/3.jpg)
- 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
![Page 4: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/4.jpg)
HOW TO BECOME A BETTERDEVELOPER?
4
![Page 5: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/5.jpg)
WHAT DOES IT MEAN TO BE A GOOD DEVELOPER?
5
![Page 6: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/6.jpg)
I’M A GOOD DEV BECAUSE…
I HAVE 10 YEARS OF EXPERIENCE?
6
![Page 7: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/7.jpg)
I’M A GOOD DEV BECAUSE…
I KNOW ALL OF THE PROGRAMMING PRINCIPLES AND METHODOLOGIES?
7
![Page 8: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/8.jpg)
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
![Page 9: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/9.jpg)
I’M A GOOD DEV BECAUSE…
I DON’T USE FRAMEWORKS?
9
![Page 10: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/10.jpg)
I’M A GOOD DEV BECAUSE…
I CODE IN NOTEPAD?
10
![Page 11: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/11.jpg)
I’M A GOOD DEV BECAUSE…
I WRITE GOOD CODE?
11
![Page 12: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/12.jpg)
I’M A GOOD DEV BECAUSE…
I WRITE GOOD CODE?
12
?
![Page 13: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/13.jpg)
1.ABOUT GOOD CODE
13
![Page 14: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/14.jpg)
“”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
![Page 15: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/15.jpg)
KISS15
![Page 16: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/16.jpg)
you cannot write perfect code
16
![Page 17: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/17.jpg)
you can write code that is good enough
17
![Page 18: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/18.jpg)
UGLY CODEthat works is
BETTER than pretty one that
DOESN’T18
![Page 19: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/19.jpg)
2.ABOUT GOOD PROJECTS
19
![Page 20: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/20.jpg)
The Psychology of Computer ProgrammingGerald M. Weinberg1971
20
![Page 21: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/21.jpg)
Programming qualityaccording to Weinberg
▸ Use Symfony▸ DDD!▸ BDD!▸ DO NOT code in Laravel▸ Don’t touch Wordpress, ever▸ PHP sucks
21
![Page 22: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/22.jpg)
▸ Use Symfony▸ DDD!▸ BDD!▸ DO NOT write in Laravel▸ Don’t touch Wordpress, ever▸ PHP sucks
Programming qualityaccording to Weinberg
22
X
![Page 23: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/23.jpg)
Software quality
meets thespecification
on time and budget
adaptable to changing requirements
23
efficient in a given environment
![Page 24: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/24.jpg)
meets thespecification
24
![Page 25: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/25.jpg)
searching for requirements
25
![Page 26: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/26.jpg)
on time and budget
26
![Page 27: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/27.jpg)
“It always takes longer than you expect, even when you take into account Hofstadter's Law.▸ Douglas Hofstadter
Hofstadter’s law
27
![Page 28: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/28.jpg)
“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
![Page 29: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/29.jpg)
efficient in a given environment
29
![Page 30: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/30.jpg)
You’re not coding Facebook*
30
![Page 31: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/31.jpg)
Optimizationas an
“Art for art's sake”
31
![Page 32: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/32.jpg)
Servers are cheaper than developers
32
![Page 33: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/33.jpg)
The fastest query is one that
will not be run
33
![Page 34: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/34.jpg)
34
![Page 35: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/35.jpg)
The fastest codeis one that
will not be run
35
![Page 36: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/36.jpg)
adaptable to changing requirements
36
![Page 37: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/37.jpg)
Which system requirements may
change?
All of them!37
![Page 38: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/38.jpg)
38
![Page 39: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/39.jpg)
39
X
![Page 40: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/40.jpg)
In large projects, it is not possible to be prepared for every
change.
40
![Page 41: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/41.jpg)
41
Software quality
meets thespecification
on time and budget
adaptable to changing requirements
efficient in a given environment
![Page 42: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/42.jpg)
42
![Page 43: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/43.jpg)
43
![Page 44: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/44.jpg)
3.ABOUT GOOD DEVELOPERS
44
![Page 45: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/45.jpg)
THINK45
![Page 46: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/46.jpg)
Don’t think ONLYabout the code
46
![Page 47: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/47.jpg)
▸ customers and their needs▸ the user▸ the problem▸ code maintaince▸ the future▸ other developers
THINK ABOUT
47
![Page 48: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/48.jpg)
Act like aPROFESSIONAL
48
![Page 49: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/49.jpg)
Stick to the standards
49
![Page 50: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/50.jpg)
Don’te be afraid to say:I DON’T KNOW
50
![Page 51: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/51.jpg)
Check the specificationAsk the client
51
![Page 52: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/52.jpg)
AskWHY?
52
![Page 53: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/53.jpg)
Communication
53
![Page 54: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/54.jpg)
Empathy.
54
![Page 55: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/55.jpg)
55
![Page 56: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/56.jpg)
There is not just one solution to the majority of
problems
56
![Page 57: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/57.jpg)
57
![Page 58: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/58.jpg)
If something is stupid, but it works it ain’t stupid.
58
![Page 59: How to become a better developer?](https://reader031.fdocuments.us/reader031/viewer/2022022414/589c58901a28abc4358b523f/html5/thumbnails/59.jpg)
Thanks
Any questions?
59