SlideShare ist ein Scribd-Unternehmen logo
1 von 61
Downloaden Sie, um offline zu lesen
JAK STAĆ SIĘ
LEPSZYM
PROGRAMISTĄ?
1
Jerzy Zawadzki
- Programista PHP z 10-letnim stażem
- Senior PHP Developer w firmie Polcode, w której pracuje ponad 7 lat
- na co dzień zajmuje się prowadzaniem projektów
opartych o Symfony2 lub Magento.
- Zend Certified Engineer
- Magento Certified Developer
- w wolnych chwilach chodzę po górach, biegam z aparatem za
służbami specjalnymi albo buduje coś z klocków LEGO
2
- założona w 2006r. przez programistów
- PHP (m.in. Symfony 2, Laravel, ZF, Magento,
Wordpress)
- Ruby On Rails
- Python
- klienci głównie z Ameryki Północnej, Europy
Zachodniej i Australii
- 800 zadowolonych klientów
- 1200 zakończonych projektów
- >100 programistów
- Warszawa, Kraków, Katowice, Łodź, Białystok
- + zdalnie
-
- założona w 2006r. przez programistów
- PHP (m.in. Symfony 2, Laravel, ZF, Magento,
Wordpress)
- Ruby On Rails
- Python
- klienci głównie z Ameryki Północnej, Europy
Zachodniej i Australii
- 800 zadowolonych klientów
- 1200 zakończonych projektów
- >100 programistów
- Warszawa, Kraków, Katowice, Łódź, Białystok
+ zdalnie
3
4
JAK STAĆ SIĘ
LEPSZYM
PROGRAMISTĄ?
5
CO TO ZNACZY
BYĆ DOBRYM
PROGRAMISTĄ?
6
JESTEM DOBRYM
PROGRAMISTĄ BO ...
MAM 10 LAT
DOŚWIADCZENIA?
7
JESTEM DOBRYM
PROGRAMISTĄ BO ...
MAM 10 LAT
DOŚWIADCZENIA?
8
JESTEM DOBRYM
PROGRAMISTĄ BO ...
ZNAM WSZYSTKIE
METODYKI/ZASADY
PROGRAMOWANIA?
9
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
10
JESTEM DOBRYM
PROGRAMISTĄ BO ...
NIE KORZYSTAM
Z FRAMEWORKÓW?
11
JESTEM DOBRYM
PROGRAMISTĄ BO ...
PISZĘ W NOTATNIKU?
12
JESTEM DOBRYM
PROGRAMISTĄ BO ...
PISZĘ DOBRY KOD?
13
JESTEM DOBRYM
PROGRAMISTĄ BO ...
PISZĘ DOBRY KOD?? 14
1.
O DOBRYM KODZIE
15
“”Zawsze pisz kod tak, jakby gość, który
ma się nim zajmować był agresywnym
psychopatą, który wie, gdzie
mieszkasz”
– Martin Golding.
16
KISS
17
nie da się napisać
idealnego kodu
18
da się napisać
wystarczająco
dobry kod
19
BRZYDKI KOD
który robi to co powinien
jest LEPSZY od
najpiękniejszego ale
NIEDZIAŁAJĄCEGO
20
2.
O DOBRYM
PROJEKCIE
21
The Psychology of
Computer Programming
Gerald M. Weinberg
1971
22
Jakość oprogramowania
wg Weinberga
- Używaj symfony
- DDD!
- BDD!
- Absolutnie nie pisz w Laravelu
- Nie dotknij nigdy Wordpressa
- Najlepiej to w ogóle nie pisz w php bo jest głupi
23
Jakość oprogramowania
wg Weinberga
- Używaj symfony
- DDD!
- BDD!
- Absolutnie nie pisz w Laravelu
- Nie dotknij nigdy Wordpressa
- Najlepiej to w ogóle nie pisz w php bo jest głupi
24
X
Jakość oprogramowania
zgodne ze
specyfikacją
o czasie i w
budżecie
wydajne w danym
środowisku
łatwe w adaptacji do
zmieniających się
wymagań
25
zgodne ze
specyfikacją
26
poszukiwanie wymagań
27
o czasie i w
budżecie
28
“Zadanie zawsze zajmie więcej
czasu niż myślisz.
Nawet jeśli wziąłeś pod uwagę
Prawo Hofstadtera
- Douglas Hofstadter
Prawo Hofstadtera
29
“Napisanie pierwszych 90% kodu
aplikacji zajmuje 90% czasu pracy.
Napisanie pozostałych 10% kodu
zajmuje pozostałe 90% czasu pracy.
- Tom Cargill, Bell Labs
Zasada wiarygodności
(90:90)
30
wydajne w danym
środowisku
31
Nie piszecie facebooka*
32
Optymalizacja
jako
“sztuka dla sztuki”
33
Serwery są tańsze od
czasu programistów
34
Najszybsze zapytanie
to takie które się
nie wykona
35
36
Najszybszy kod
to taki który się
nie wykona
37
łatwe w adaptacji do
zmieniających się
wymagań
38
które wymagania
systemu mogą się
zmienić?
Wszystkie!
39
40
41
X
W dużych projektach
nie ma możliwości
przygotowania się na
każdą zmianę.
42
Jakość oprogramowania
zgodne ze
specyfikacją
o czasie i w
budżecie
wydajne w danym
środowisku
łatwe w adaptacji do
zmieniających się
wymagań
43
44
45
3.
O DOBRYM
PROGRAMIŚCIE
46
MYŚL
47
Nie myśl TYLKO
o kodzie
48
- kliencie i jego potrzebach
- użytkowniku
- problemie
- utrzymaniu kodu
- przyszłości
- innych programistach
MYŚL O
49
Zachowuj się jak
PROFESJONALISTA
50
Trzymaj się standardów
51
Nie bój się powiedzieć:
NIE WIEM
52
Sprawdź w specyfikacji
Pytaj klienta
53
Pytaj
DLACZEGO?
54
Komunikacja
55
Empatia.
56
57
Nie ma jednego słusznego
rozwiązania dla
większości problemów
58
59
Jeśli coś jest głupie, ale działa,
to nie jest głupie.
60
DZIĘKUJĘ
Pytania?
61

Weitere ähnliche Inhalte

Andere mochten auch

メールシステムのおはなし #Mailerstudy
メールシステムのおはなし #Mailerstudyメールシステムのおはなし #Mailerstudy
メールシステムのおはなし #MailerstudyYasuhiro Araki, Ph.D
 
Tecno treball eines
Tecno treball einesTecno treball eines
Tecno treball einestecno2
 
JSON Support in Java EE 8
JSON Support in Java EE 8JSON Support in Java EE 8
JSON Support in Java EE 8Dmitry Kornilov
 
OpenStack Heat Orchestration
OpenStack Heat OrchestrationOpenStack Heat Orchestration
OpenStack Heat OrchestrationWooKyun Jeon
 
финансовый рынок 01_03_2016 (2)
финансовый рынок 01_03_2016 (2)финансовый рынок 01_03_2016 (2)
финансовый рынок 01_03_2016 (2)Anastasia Vinogradova
 
финансовый рынок 01.09.2015
финансовый рынок 01.09.2015финансовый рынок 01.09.2015
финансовый рынок 01.09.2015Anastasia Vinogradova
 
финансовый рынок 01.06.2015
финансовый рынок 01.06.2015финансовый рынок 01.06.2015
финансовый рынок 01.06.2015Anastasia Vinogradova
 
дайджест сэр 2015_март_2016_n_1_9
дайджест сэр 2015_март_2016_n_1_9дайджест сэр 2015_март_2016_n_1_9
дайджест сэр 2015_март_2016_n_1_9Anastasia Vinogradova
 

Andere mochten auch (9)

メールシステムのおはなし #Mailerstudy
メールシステムのおはなし #Mailerstudyメールシステムのおはなし #Mailerstudy
メールシステムのおはなし #Mailerstudy
 
Tecno treball eines
Tecno treball einesTecno treball eines
Tecno treball eines
 
Naresh_resume_23Aug
Naresh_resume_23AugNaresh_resume_23Aug
Naresh_resume_23Aug
 
JSON Support in Java EE 8
JSON Support in Java EE 8JSON Support in Java EE 8
JSON Support in Java EE 8
 
OpenStack Heat Orchestration
OpenStack Heat OrchestrationOpenStack Heat Orchestration
OpenStack Heat Orchestration
 
финансовый рынок 01_03_2016 (2)
финансовый рынок 01_03_2016 (2)финансовый рынок 01_03_2016 (2)
финансовый рынок 01_03_2016 (2)
 
финансовый рынок 01.09.2015
финансовый рынок 01.09.2015финансовый рынок 01.09.2015
финансовый рынок 01.09.2015
 
финансовый рынок 01.06.2015
финансовый рынок 01.06.2015финансовый рынок 01.06.2015
финансовый рынок 01.06.2015
 
дайджест сэр 2015_март_2016_n_1_9
дайджест сэр 2015_март_2016_n_1_9дайджест сэр 2015_март_2016_n_1_9
дайджест сэр 2015_март_2016_n_1_9
 

Ähnlich wie PHPCon Poland 2015 - Jak stać się lepszym programistą - Jerzy Zawadzki

Praktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPlPraktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPlSebastian Marek
 
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...Wojciech Sznapka
 
Miquido cloud native testing
Miquido cloud native testingMiquido cloud native testing
Miquido cloud native testingŁukasz Rosłonek
 
TDD – w poszukiwaniu źródeł jakości.
TDD – w poszukiwaniu źródeł jakości.TDD – w poszukiwaniu źródeł jakości.
TDD – w poszukiwaniu źródeł jakości.Future Processing
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayTomasz Dziuda
 
Ruby on Rails 2.1. Tworzenie nowoczesnych aplikacji internetowych
Ruby on Rails 2.1. Tworzenie nowoczesnych aplikacji internetowychRuby on Rails 2.1. Tworzenie nowoczesnych aplikacji internetowych
Ruby on Rails 2.1. Tworzenie nowoczesnych aplikacji internetowychWydawnictwo Helion
 
Jak zacząć, aby nie żałować - czyli 50 twarzy PHP
Jak zacząć, aby nie żałować - czyli 50 twarzy PHPJak zacząć, aby nie żałować - czyli 50 twarzy PHP
Jak zacząć, aby nie żałować - czyli 50 twarzy PHPPiotr Horzycki
 
"Sandbox dla PowerShell'a - zrób to sam!" - Dawid Pachowski
"Sandbox dla PowerShell'a - zrób to sam!" - Dawid Pachowski"Sandbox dla PowerShell'a - zrób to sam!" - Dawid Pachowski
"Sandbox dla PowerShell'a - zrób to sam!" - Dawid PachowskiPROIDEA
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowychTomasz Borowski
 
Programowanie na wiele platform mobilnych - 2012
Programowanie na wiele platform mobilnych - 2012Programowanie na wiele platform mobilnych - 2012
Programowanie na wiele platform mobilnych - 2012Cezary Walenciuk
 
Rails tobak2005
Rails tobak2005Rails tobak2005
Rails tobak2005Tomasz Bak
 
Dwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędówDwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędówMichal Lukaszewski
 
OWASP Appsensor in action
OWASP Appsensor in actionOWASP Appsensor in action
OWASP Appsensor in actionLeszekMis
 
C++ Builder 6. Vademecum profesjonalisty
C++ Builder 6. Vademecum profesjonalistyC++ Builder 6. Vademecum profesjonalisty
C++ Builder 6. Vademecum profesjonalistyWydawnictwo Helion
 
Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Jak przyspieszyłem aplikację produkcyjną o ponad 40%Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Jak przyspieszyłem aplikację produkcyjną o ponad 40%Laravel Poland MeetUp
 
Open Source - czy aby napewno zło?” - Piotr Pyciński, KrakSpot#5
Open Source - czy aby napewno zło?” - Piotr Pyciński, KrakSpot#5Open Source - czy aby napewno zło?” - Piotr Pyciński, KrakSpot#5
Open Source - czy aby napewno zło?” - Piotr Pyciński, KrakSpot#5krakspot
 

Ähnlich wie PHPCon Poland 2015 - Jak stać się lepszym programistą - Jerzy Zawadzki (20)

Praktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPlPraktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPl
 
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
 
Miquido cloud native testing
Miquido cloud native testingMiquido cloud native testing
Miquido cloud native testing
 
TDD – w poszukiwaniu źródeł jakości.
TDD – w poszukiwaniu źródeł jakości.TDD – w poszukiwaniu źródeł jakości.
TDD – w poszukiwaniu źródeł jakości.
 
User Experience – wpływ internetu na aplikacje enterprise - Netcamp #14
User Experience – wpływ internetu na aplikacje enterprise - Netcamp #14User Experience – wpływ internetu na aplikacje enterprise - Netcamp #14
User Experience – wpływ internetu na aplikacje enterprise - Netcamp #14
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training Day
 
Ruby on Rails 2.1. Tworzenie nowoczesnych aplikacji internetowych
Ruby on Rails 2.1. Tworzenie nowoczesnych aplikacji internetowychRuby on Rails 2.1. Tworzenie nowoczesnych aplikacji internetowych
Ruby on Rails 2.1. Tworzenie nowoczesnych aplikacji internetowych
 
Jak zacząć, aby nie żałować - czyli 50 twarzy PHP
Jak zacząć, aby nie żałować - czyli 50 twarzy PHPJak zacząć, aby nie żałować - czyli 50 twarzy PHP
Jak zacząć, aby nie żałować - czyli 50 twarzy PHP
 
"Sandbox dla PowerShell'a - zrób to sam!" - Dawid Pachowski
"Sandbox dla PowerShell'a - zrób to sam!" - Dawid Pachowski"Sandbox dla PowerShell'a - zrób to sam!" - Dawid Pachowski
"Sandbox dla PowerShell'a - zrób to sam!" - Dawid Pachowski
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
Programowanie na wiele platform mobilnych - 2012
Programowanie na wiele platform mobilnych - 2012Programowanie na wiele platform mobilnych - 2012
Programowanie na wiele platform mobilnych - 2012
 
Rails tobak2005
Rails tobak2005Rails tobak2005
Rails tobak2005
 
Od zera do Automattica
Od zera do AutomatticaOd zera do Automattica
Od zera do Automattica
 
Dwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędówDwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędów
 
OWASP Appsensor in action
OWASP Appsensor in actionOWASP Appsensor in action
OWASP Appsensor in action
 
C++ Builder 6. Vademecum profesjonalisty
C++ Builder 6. Vademecum profesjonalistyC++ Builder 6. Vademecum profesjonalisty
C++ Builder 6. Vademecum profesjonalisty
 
Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Jak przyspieszyłem aplikację produkcyjną o ponad 40%Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Jak przyspieszyłem aplikację produkcyjną o ponad 40%
 
Oss w software house
Oss w software houseOss w software house
Oss w software house
 
Open Source - czy aby napewno zło?” - Piotr Pyciński, KrakSpot#5
Open Source - czy aby napewno zło?” - Piotr Pyciński, KrakSpot#5Open Source - czy aby napewno zło?” - Piotr Pyciński, KrakSpot#5
Open Source - czy aby napewno zło?” - Piotr Pyciński, KrakSpot#5
 
PHP5. Tajniki programowania
PHP5. Tajniki programowaniaPHP5. Tajniki programowania
PHP5. Tajniki programowania
 

PHPCon Poland 2015 - Jak stać się lepszym programistą - Jerzy Zawadzki