SlideShare a Scribd company logo
Przemysław Krzywania
Tworzę komercyjnie oprogramowanie od 2008
Cześć!
@p_krzywania pkrzywania
KICK ME
NEXUS
Plan
1. Prostota
2. Dług techniczny
Prostota
Jedyna wartościowa miara
Dlaczego prostota
jest ważna?
Kod czytamy, nie piszemy
“
W rzeczywistości stosunek czasu czytania do
pisania jest znacznie wyższy niż 10 do 1. Wciąż
czytamy stary kod w ramach prób napisania nowego
kodu. ... [Dlatego] ułatwienie czytania ułatwia
pisanie
Robert Cecil Martin
Przykład
$temp = $a;
$a = $b;
$b = $temp;
3 razy wolniejszy
[$b, $a] = [$a, $b];
Spotkaliście się z tym?
1. Nowy developer- super gwiazda
2. Po godzinie stwierdza, że wszystko jest do dupy
3. Forsuje “nowe” standardy
4. Odchodzi po pół roku
5. Nikt nie wie o co chodzi, projekt jest nie
utrzymywalny
Wytwarzanie oprogramowania to
gra zespołowa a nie indywidualna
Zespół > gwiazdy programowania
Legacy != kod nieutrzymywalny
DRY
don’t repeat yourself
KISS
keep it simple stupid
SOLID
single responsibility, open/closed, liskov substitution, interface segregation, dependency inversion
YAGNI
you aren’t gonna need it
Znane zasady
Mantra
1. Ty jesteś odpowiedzialny za kod.
2. Spójny styl formatowania.
3. Opisowe nazwy klas i metod.
4. Komentuje, ale nie rzeczy oczywiste!
5. Krótkie funkcje, klasy, metody.
6. Brak zagnieżdżeń, złożoności.
Przykład
function doSomethingStupid(arg1 argumentToCheck)
{
if (argumentToCheck) {
…..
} else {
return false;
}
}
Przykład
function doSomethingStupid(arg1 argumentToCheck)
{
if (!argumentToCheck) {
return false;
}
...
}
Zostaw kod czytelniejszym
niż go zastałeś
Prosty kod wymaga prostej
architektury
Czysta architektura
Jaka powinna być czysta architektura
1. Niezależna od frameworka
2. Testowalna
3. Niezależna od UI
4. Niezależna od DB
5. Słabo zależna od zewnętrznych API
6. Łopatologiczna
Monolit
Mikroserwisy
Przykład
UI
Serwis 1 Serwis 2 Serwis 3
Serwis 4
DB
Dług techniczny
Czas
Najcenniejszy zasób
“
Wszyscy wiedzą, że programiści powinni
spłacać długi, jednakże karencja może
przekroczyć czas życia projektu
if you plan to develop it
Kiedy dług jest dobry?
W momencie jak go tworzymy
Agile wspiera dług techniczny
Proof of concept
Kiedy dług jest zły
W prawie każdym innym momencie
Zależą od tego co chcemy “kredytować”
Koszty długu
Jak byś chciał żeby zachowywał się dług techniczny
dług
czas
Jak zachowuje się w rzeczywistości
dług
czas
Idealna krzywa długu
dług
czas
Linia bazowa
Nieprzekraczalna linia
graniczna długu
Trzymanie długu w ryzach
TDD
Code review
Statyczna analiza kodu
Definition of done
Jak pomaga definition of done
Jak TDD pomaga
Software craftsmanship manifesto
Not only working software,
but also well-crafted software
Not only responding to change,
but also steadily adding value
Not only individuals and interactions,
but also a community of professionals
Not only customer collaboration,
but also productive partnerships
Utopia?
“
The primary task of a developer is not
the writing of code but to understand
a problem.
https://thephp.cc/news/2017/05/testing-keeps-me-from-get
ting-things-done
Rozważne żonglowanie długiem przy zachowaniu prostoty
rozwiązania pozwala osiągnać to optymalnym kosztem
Najważniejsze jest ciągle
móc dostarczać wartość
“
Dług techniczny nie dotyczy
technologii. Chodzi o ludzi.
Pytania?
Przemysław Krzywania
@p_krzywania pkrzywania
Dziękuję!

More Related Content

Similar to KICK ME

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
Michal Lukaszewski
 
Jak nie zabić swojego klienta/programisty?
Jak nie zabić swojego klienta/programisty?Jak nie zabić swojego klienta/programisty?
Jak nie zabić swojego klienta/programisty?
NetDay
 
4Developers 2015: Jak przekonać managera, że czas na refaktoring jest potrzeb...
4Developers 2015: Jak przekonać managera, że czas na refaktoring jest potrzeb...4Developers 2015: Jak przekonać managera, że czas na refaktoring jest potrzeb...
4Developers 2015: Jak przekonać managera, że czas na refaktoring jest potrzeb...
PROIDEA
 
Mity, które blokują Twoją karierę
Mity, które blokują Twoją karieręMity, które blokują Twoją karierę
Mity, które blokują Twoją karierę
Piotr Horzycki
 
Jak bardzo techniczny musi być tester?
Jak bardzo techniczny musi być tester?Jak bardzo techniczny musi być tester?
Jak bardzo techniczny musi być tester?
Women in Technology Poland
 
DevOps - what I have learnt so far
DevOps - what I have learnt so far DevOps - what I have learnt so far
DevOps - what I have learnt so far
Wojciech Barczyński
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
Tomasz Borowski
 
Landingi - 11 lat.pdf
Landingi - 11 lat.pdfLandingi - 11 lat.pdf
Landingi - 11 lat.pdf
Tomaszlzok1
 
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gierKonrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
GameDesire Academy
 
TDD w iOS
TDD w iOS TDD w iOS
TDD w iOS
The Software House
 
Refactoring - Jak pozostać przy zdrowych zmysłach, redukując dług
Refactoring - Jak pozostać przy zdrowych zmysłach, redukując długRefactoring - Jak pozostać przy zdrowych zmysłach, redukując dług
Refactoring - Jak pozostać przy zdrowych zmysłach, redukując dług
Max Małecki
 
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
Fundacja Rozwoju Branży Internetowej Netcamp
 
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacjiInfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
JIT Solutions
 
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...Infoshare
 
Skok na naderwanym bungee, czyli agile bez automatyzacji
Skok na naderwanym bungee, czyli agile bez automatyzacjiSkok na naderwanym bungee, czyli agile bez automatyzacji
Skok na naderwanym bungee, czyli agile bez automatyzacji
Witold Bołt
 
Agile Silesia - Scrum w zespołach rozproszonych - Łukasz Kempny
Agile Silesia - Scrum w zespołach rozproszonych - Łukasz KempnyAgile Silesia - Scrum w zespołach rozproszonych - Łukasz Kempny
Agile Silesia - Scrum w zespołach rozproszonych - Łukasz Kempny
Agile Silesia
 
Tdd - Czyli jak tworzyć dobre jakościowo aplikacje
Tdd - Czyli jak tworzyć dobre jakościowo aplikacjeTdd - Czyli jak tworzyć dobre jakościowo aplikacje
Tdd - Czyli jak tworzyć dobre jakościowo aplikacje
SPARK MEDIA
 
Girls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząćGirls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząć
monterail
 
Zawód: programista gier. Jak zacząć pracę w branży?
Zawód: programista gier. Jak zacząć pracę w branży?Zawód: programista gier. Jak zacząć pracę w branży?
Zawód: programista gier. Jak zacząć pracę w branży?
GameDesire Company
 
Czy designerzy powinni uczyć się kodować - Dribbble Warsaw #3
Czy designerzy powinni uczyć się kodować - Dribbble Warsaw #3Czy designerzy powinni uczyć się kodować - Dribbble Warsaw #3
Czy designerzy powinni uczyć się kodować - Dribbble Warsaw #3
Piotr Kmita
 

Similar to KICK ME (20)

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
 
Jak nie zabić swojego klienta/programisty?
Jak nie zabić swojego klienta/programisty?Jak nie zabić swojego klienta/programisty?
Jak nie zabić swojego klienta/programisty?
 
4Developers 2015: Jak przekonać managera, że czas na refaktoring jest potrzeb...
4Developers 2015: Jak przekonać managera, że czas na refaktoring jest potrzeb...4Developers 2015: Jak przekonać managera, że czas na refaktoring jest potrzeb...
4Developers 2015: Jak przekonać managera, że czas na refaktoring jest potrzeb...
 
Mity, które blokują Twoją karierę
Mity, które blokują Twoją karieręMity, które blokują Twoją karierę
Mity, które blokują Twoją karierę
 
Jak bardzo techniczny musi być tester?
Jak bardzo techniczny musi być tester?Jak bardzo techniczny musi być tester?
Jak bardzo techniczny musi być tester?
 
DevOps - what I have learnt so far
DevOps - what I have learnt so far DevOps - what I have learnt so far
DevOps - what I have learnt so far
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
Landingi - 11 lat.pdf
Landingi - 11 lat.pdfLandingi - 11 lat.pdf
Landingi - 11 lat.pdf
 
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gierKonrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
 
TDD w iOS
TDD w iOS TDD w iOS
TDD w iOS
 
Refactoring - Jak pozostać przy zdrowych zmysłach, redukując dług
Refactoring - Jak pozostać przy zdrowych zmysłach, redukując długRefactoring - Jak pozostać przy zdrowych zmysłach, redukując dług
Refactoring - Jak pozostać przy zdrowych zmysłach, redukując dług
 
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
 
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacjiInfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
 
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
 
Skok na naderwanym bungee, czyli agile bez automatyzacji
Skok na naderwanym bungee, czyli agile bez automatyzacjiSkok na naderwanym bungee, czyli agile bez automatyzacji
Skok na naderwanym bungee, czyli agile bez automatyzacji
 
Agile Silesia - Scrum w zespołach rozproszonych - Łukasz Kempny
Agile Silesia - Scrum w zespołach rozproszonych - Łukasz KempnyAgile Silesia - Scrum w zespołach rozproszonych - Łukasz Kempny
Agile Silesia - Scrum w zespołach rozproszonych - Łukasz Kempny
 
Tdd - Czyli jak tworzyć dobre jakościowo aplikacje
Tdd - Czyli jak tworzyć dobre jakościowo aplikacjeTdd - Czyli jak tworzyć dobre jakościowo aplikacje
Tdd - Czyli jak tworzyć dobre jakościowo aplikacje
 
Girls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząćGirls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząć
 
Zawód: programista gier. Jak zacząć pracę w branży?
Zawód: programista gier. Jak zacząć pracę w branży?Zawód: programista gier. Jak zacząć pracę w branży?
Zawód: programista gier. Jak zacząć pracę w branży?
 
Czy designerzy powinni uczyć się kodować - Dribbble Warsaw #3
Czy designerzy powinni uczyć się kodować - Dribbble Warsaw #3Czy designerzy powinni uczyć się kodować - Dribbble Warsaw #3
Czy designerzy powinni uczyć się kodować - Dribbble Warsaw #3
 

KICK ME