SlideShare une entreprise Scribd logo
1  sur  75
Télécharger pour lire hors ligne
Systematyczny aarrcchhiitteekktt nnaa 
ddrrooddzzee kkuu ppllaannoowwaanneemmuu 
ppoossttaarrzzaanniiuu
O mnie : 
Jarosław Pałka
• chief architect @ Lumesse 
• owner/founder/one man orchestra @ 
symentis.pl 
• blogger @ geekyprimitives.wordpress.com 
• philosopher @ twitter:j_palka 
• code mangler @ bitbucket:kcrimson & 
github:jpalka 
• evil emperor @ 4developers conf/architecture 
track 
• restrained Padawan @ church of JVM
„Created weakness for the numbers on the 
board 
Absurd amount of things, obsolete creation 
The lust for always more, indulgence in 
hunger 
A greed for power, the demon needs to feed 
… 
Designed for failure” 
Gojira – Planned Obsolescence
„strategia producenta, mająca na celu 
takie projektowanie towarów, aby miały 
one ograniczony czas użytecznego życia, po 
tym zaś okresie stawały się niesprawne, a 
często nieopłacalne w naprawie. Towary te 
zwykle psują się zaraz po upływie 
gwarancji.” 
Wikipedia
Techniki „planowanego” postarzania 
… nowy lepszy paradygmat … 
… nowa wersja biblioteki … 
… nowy język programowania … 
… nowe lepsze API ... 
… brak kompatybilności wstecznej …
Jakby tego było mało 
trendy
„We are fashion industry” 
Uncle Bob
Rewrite 
Offload 
Modernization 
Next Generation Something™
Kilka lat później
Rewrite 
Offload 
Modernization 
Next Generation Something™
Organizacje dostają wysypki na 
samą myśl 
o kolejnym 
offload, rewrite, NG projekcie
Dobry inżynier, 
Idź szukaj business value, 
szukaj
Podejście Big-Bang 
Uczymy się na żywym organizmie 
Ludzie z businessu trzymają się na dystans 
Brak zrozumienia domeny problemu
„It is up to us to live up to the legacy that was 
left for us, and to leave a legacy that is worthy 
of our children and of future generations.” 
Christine Gregoire
Nie naprawimy przeszłości, 
Ale możemy uczynić przyszłość lepszą
Mózg, co 
będziemy 
dziś robić?
Dodamy kolejny framework!
Przygotujmy się na lepszą przyszłość 
Przygotujmy się na zmiany
Abstrakcje
Posługujemy się nimi na co dzień 
Są zapisane w naszej podświadomości 
Dlatego tak trudno o nich rozmawiać
Polimorfizm
Znaczenie ukryte za fasadą słów
„Czy mógłbyś otworzyć zamek?” 
Brak jednoznaczności abstrakcji
Znaczenie = abstrakcja(kontekst)
public interface TalkingAboutAbstractions{ 
public void createEmployee(String candidate); 
}
public vois hireCandidate(){ 
String candidate = "Jan Kowalski"; 
employeeBean.createEmployee(candidate); 
candidate = 
"<candidate><id>123456</id></candidate>"; 
employeeBean.createEmployee(candidate); 
candidate = "{ candidate : {id : "123456"} }"; 
employeeBean.createEmployee(candidate); 
}
public interface TalkingAboutAbstractions{ 
public Employee 
hireCandidate(Supplier<Candidate >candidate); 
}
public interface GuessWhatIHaveInMind{ 
String serverStatus() throws Exception; 
}
„OK” 
„Mam się dobrze” 
„Cholera gdzie jest dysk?” 
„Daj mi spokoój” 
„!@#$%^&*()”
public interface GuessWhatIHaveInMind{ 
public enum ServerStatus { OK, BUSY, INTERNAL_ERROR } 
ServerStatus serverStatus() throws Exception; 
}
A teraz czas na coś z klasyki 
Prawdziwy, 
Autentyczny, 
jedyny
Brainfuck
public class BrainFuck extends GenericHibernateDAO{ 
List<Object[]> processList(String target, Long id); 
}
public class BrainFuck extends GenericHibernateDAO{ 
ResultSet processList(String target, Long id); 
}
Use types, Luke!
Buisness logic 
& 
system construction 
& 
code infrastructure
public class SoftwareConstruction<K,V> implements BeanFactoryAware, 
DisposableBean { 
@Override 
@SuppressWarnings("unchecked") 
public void setBeanFactory(final BeanFactory beanFactory) throws 
BeansException 
{ 
consumerConfigurations = (Map<String, ConsumerConfiguration<K,V>>) 
(Object) ((ListableBeanFactory) 
beanFactory).getBeansOfType(ConsumerConfiguration.class); 
} 
}
Nie mieszajmy odpowiedzialności 
Odpowiedzialność to nie tylko 
„business features” 
Obiekt nie może być odpowiedzialny za 
skonstruowanie samego siebie
public interface ShowMeMore{ 
@GET 
public Response getRoot( 
@Context HttpServletRequest request); 
}
public class ShowMeMoreImpl implements 
ShowMeMore{ 
@Context 
private HttpServletRequest request; 
@GET 
public Response getRoot(); 
}
Struktura systemu
Gęstość informacji
„Hierarchies are brilliant systems inventions, 
not only because they give a system 
stability and resilience, but also because they 
reduce the amount of information that 
any part of the system has to keep track of.”
„Hierarchies are brilliant systems inventions, 
not only because they give a system 
stability and resilience, but also because they 
reduce the amount of information that 
any part of the system has to keep track of.”
„In hierarchical systems relationships within 
each subsystem are denser and stronger 
than relationships between subsystems. 
Everything is still connected to everything 
else, but not equally strongly.”
„In hierarchical systems relationships within 
each subsystem are denser and stronger 
than relationships between subsystems. 
Everything is still connected to everything 
else, but not equally strongly.”
„Hierarchical systems are partially 
decomposable. Their subsystems with their 
especially dense information links can 
function at least partially as systems in their 
own right. When hierarchies break down, they 
usually split along their subsystem 
boundaries” 
Donella Meadows
„Hierarchical systems are partially 
decomposable. Their subsystems with their 
especially dense information links can 
function at least partially as systems in their 
own right. When hierarchies break down, they 
usually split along their subsystem 
boundaries”
Value is Your Subsystem Boundary
Kandydat
Aplikant 
Kandydat
Bezrobotny 
Aplikant 
Kandydat
Bezrobotny 
Aplikant 
Kandydat
Value is 
usually 
Your subsystem boundary
„Encapsulation is the packing 
of data and functions into a 
single component.”
„Hierarchies are brilliant systems inventions, 
not only because they give a system 
stability and resilience, but also because they 
reduce the amount of information that 
any part of the system has to keep track of.”
public class WrongEncapsulation{ 
public String name; 
}
public class IsItEncapsulation{ 
private String name; 
}
public class JavaStyleEncapsulation{ 
private String name; 
public String getName(){ ... }; 
public void setName(String name){ 
… 
}; 
}
Software design porn
public class AnotherStylishClass{ 
private List<String> strings = new ArrayList<>(); 
public List<String> getStrings(){ 
return strings; 
} 
AnotherStylishCase obj = new AnotherStylishCase(); 
obj.getStrings().add("Hello leaky abstraction!"); 
}
… Jakie są granice szaleństwa ...
… Jakie są granice szaleństwa ...
Kiedy znowu zobaczysz Java Bean, 
usuń go, 
poważnie, 
natychmiast, 
git rm AnotherStupidJavaBean.java
Jedyne rzeczy które warto zapamiętać
Abstrakcje 
Polimorfizm 
Context is King 
Gęstość informacji 
Enkapsulacja 
Hierarchical Systems 
Software construction 
vs 
business logic
JDD2014: Systematyczny architekt na drodze ku postarzaniu produktu - Jarosław Pałka

Contenu connexe

En vedette

JDD2014: Effective refactoring - Włodek Krakowski
JDD2014:  Effective refactoring - Włodek KrakowskiJDD2014:  Effective refactoring - Włodek Krakowski
JDD2014: Effective refactoring - Włodek KrakowskiPROIDEA
 
JDD 2015: Artificial intelligence. Status report. - Tomasz Jackowiak
JDD 2015: Artificial intelligence. Status report. - Tomasz Jackowiak JDD 2015: Artificial intelligence. Status report. - Tomasz Jackowiak
JDD 2015: Artificial intelligence. Status report. - Tomasz Jackowiak PROIDEA
 
PLNOG 13: Krzysztof Konkowski: Cisco Access Architectures: GPON, Ethernet, Ac...
PLNOG 13: Krzysztof Konkowski: Cisco Access Architectures: GPON, Ethernet, Ac...PLNOG 13: Krzysztof Konkowski: Cisco Access Architectures: GPON, Ethernet, Ac...
PLNOG 13: Krzysztof Konkowski: Cisco Access Architectures: GPON, Ethernet, Ac...PROIDEA
 
JDD2014: TIMTOWTDI and JAVA - Grzegorz Rożniecki
JDD2014: TIMTOWTDI and JAVA - Grzegorz RożnieckiJDD2014: TIMTOWTDI and JAVA - Grzegorz Rożniecki
JDD2014: TIMTOWTDI and JAVA - Grzegorz RożnieckiPROIDEA
 
JDD2015: Forgetting Java: Why Java Should Die in Flames and Take its Develope...
JDD2015: Forgetting Java: Why Java Should Die in Flames and Take its Develope...JDD2015: Forgetting Java: Why Java Should Die in Flames and Take its Develope...
JDD2015: Forgetting Java: Why Java Should Die in Flames and Take its Develope...PROIDEA
 
CONFidence2015: The (Io)Things you don't even need to hack. Should we worry? ...
CONFidence2015: The (Io)Things you don't even need to hack. Should we worry? ...CONFidence2015: The (Io)Things you don't even need to hack. Should we worry? ...
CONFidence2015: The (Io)Things you don't even need to hack. Should we worry? ...PROIDEA
 
JDD2014: Agile transformation - how to change minds, deliver amazing results ...
JDD2014: Agile transformation - how to change minds, deliver amazing results ...JDD2014: Agile transformation - how to change minds, deliver amazing results ...
JDD2014: Agile transformation - how to change minds, deliver amazing results ...PROIDEA
 
PLNOG15 :CPE in cloud: first cases of CPE deployment in Data Center, Piotr Ja...
PLNOG15 :CPE in cloud: first cases of CPE deployment in Data Center, Piotr Ja...PLNOG15 :CPE in cloud: first cases of CPE deployment in Data Center, Piotr Ja...
PLNOG15 :CPE in cloud: first cases of CPE deployment in Data Center, Piotr Ja...PROIDEA
 
PLNOG15: Personal data - new opportunities and threats - Agata Kowalska
PLNOG15: Personal data - new opportunities and threats - Agata KowalskaPLNOG15: Personal data - new opportunities and threats - Agata Kowalska
PLNOG15: Personal data - new opportunities and threats - Agata KowalskaPROIDEA
 
PLNOG15 :DDOS Attacks & Collateral Damage. Can we avoid it? Asraf Ali
PLNOG15 :DDOS Attacks & Collateral Damage. Can we avoid it? Asraf AliPLNOG15 :DDOS Attacks & Collateral Damage. Can we avoid it? Asraf Ali
PLNOG15 :DDOS Attacks & Collateral Damage. Can we avoid it? Asraf AliPROIDEA
 
SIANI #YouthFocus Survey Findings
SIANI #YouthFocus Survey Findings SIANI #YouthFocus Survey Findings
SIANI #YouthFocus Survey Findings SIANI
 
PLNOG 13: Piotr Szolkowski: 100G Ethernet – Case Study
PLNOG 13: Piotr Szolkowski: 100G Ethernet – Case StudyPLNOG 13: Piotr Szolkowski: 100G Ethernet – Case Study
PLNOG 13: Piotr Szolkowski: 100G Ethernet – Case StudyPROIDEA
 
JDD2014: GO! The one language you have to try in 2014 - Andrzej Grzesik
JDD2014: GO! The one language you have to try in 2014 - Andrzej GrzesikJDD2014: GO! The one language you have to try in 2014 - Andrzej Grzesik
JDD2014: GO! The one language you have to try in 2014 - Andrzej GrzesikPROIDEA
 
PLNOG15 - Wi-Fi Calling – how any Wi-FI infrastructure can become a part of M...
PLNOG15 - Wi-Fi Calling – how any Wi-FI infrastructure can become a part of M...PLNOG15 - Wi-Fi Calling – how any Wi-FI infrastructure can become a part of M...
PLNOG15 - Wi-Fi Calling – how any Wi-FI infrastructure can become a part of M...PROIDEA
 
PLNOG15: Yang - latin of XXI centaury - Sławomir Janukowicz
PLNOG15: Yang - latin of XXI centaury - Sławomir JanukowiczPLNOG15: Yang - latin of XXI centaury - Sławomir Janukowicz
PLNOG15: Yang - latin of XXI centaury - Sławomir JanukowiczPROIDEA
 
Overview of SIANI Activities in 2014
Overview of SIANI Activities in 2014Overview of SIANI Activities in 2014
Overview of SIANI Activities in 2014SIANI
 
4Developers 2015: Continuous Security in DevOps - Maciej Lasyk
4Developers 2015: Continuous Security in DevOps - Maciej Lasyk4Developers 2015: Continuous Security in DevOps - Maciej Lasyk
4Developers 2015: Continuous Security in DevOps - Maciej LasykPROIDEA
 

En vedette (19)

JDD2014: Effective refactoring - Włodek Krakowski
JDD2014:  Effective refactoring - Włodek KrakowskiJDD2014:  Effective refactoring - Włodek Krakowski
JDD2014: Effective refactoring - Włodek Krakowski
 
JDD 2015: Artificial intelligence. Status report. - Tomasz Jackowiak
JDD 2015: Artificial intelligence. Status report. - Tomasz Jackowiak JDD 2015: Artificial intelligence. Status report. - Tomasz Jackowiak
JDD 2015: Artificial intelligence. Status report. - Tomasz Jackowiak
 
PLNOG 13: Krzysztof Konkowski: Cisco Access Architectures: GPON, Ethernet, Ac...
PLNOG 13: Krzysztof Konkowski: Cisco Access Architectures: GPON, Ethernet, Ac...PLNOG 13: Krzysztof Konkowski: Cisco Access Architectures: GPON, Ethernet, Ac...
PLNOG 13: Krzysztof Konkowski: Cisco Access Architectures: GPON, Ethernet, Ac...
 
JDD2014: TIMTOWTDI and JAVA - Grzegorz Rożniecki
JDD2014: TIMTOWTDI and JAVA - Grzegorz RożnieckiJDD2014: TIMTOWTDI and JAVA - Grzegorz Rożniecki
JDD2014: TIMTOWTDI and JAVA - Grzegorz Rożniecki
 
JDD2015: Forgetting Java: Why Java Should Die in Flames and Take its Develope...
JDD2015: Forgetting Java: Why Java Should Die in Flames and Take its Develope...JDD2015: Forgetting Java: Why Java Should Die in Flames and Take its Develope...
JDD2015: Forgetting Java: Why Java Should Die in Flames and Take its Develope...
 
CONFidence2015: The (Io)Things you don't even need to hack. Should we worry? ...
CONFidence2015: The (Io)Things you don't even need to hack. Should we worry? ...CONFidence2015: The (Io)Things you don't even need to hack. Should we worry? ...
CONFidence2015: The (Io)Things you don't even need to hack. Should we worry? ...
 
JDD2014: Agile transformation - how to change minds, deliver amazing results ...
JDD2014: Agile transformation - how to change minds, deliver amazing results ...JDD2014: Agile transformation - how to change minds, deliver amazing results ...
JDD2014: Agile transformation - how to change minds, deliver amazing results ...
 
PLNOG15 :CPE in cloud: first cases of CPE deployment in Data Center, Piotr Ja...
PLNOG15 :CPE in cloud: first cases of CPE deployment in Data Center, Piotr Ja...PLNOG15 :CPE in cloud: first cases of CPE deployment in Data Center, Piotr Ja...
PLNOG15 :CPE in cloud: first cases of CPE deployment in Data Center, Piotr Ja...
 
PLNOG15: Personal data - new opportunities and threats - Agata Kowalska
PLNOG15: Personal data - new opportunities and threats - Agata KowalskaPLNOG15: Personal data - new opportunities and threats - Agata Kowalska
PLNOG15: Personal data - new opportunities and threats - Agata Kowalska
 
PLNOG15 :DDOS Attacks & Collateral Damage. Can we avoid it? Asraf Ali
PLNOG15 :DDOS Attacks & Collateral Damage. Can we avoid it? Asraf AliPLNOG15 :DDOS Attacks & Collateral Damage. Can we avoid it? Asraf Ali
PLNOG15 :DDOS Attacks & Collateral Damage. Can we avoid it? Asraf Ali
 
SIANI #YouthFocus Survey Findings
SIANI #YouthFocus Survey Findings SIANI #YouthFocus Survey Findings
SIANI #YouthFocus Survey Findings
 
PLNOG 13: Piotr Szolkowski: 100G Ethernet – Case Study
PLNOG 13: Piotr Szolkowski: 100G Ethernet – Case StudyPLNOG 13: Piotr Szolkowski: 100G Ethernet – Case Study
PLNOG 13: Piotr Szolkowski: 100G Ethernet – Case Study
 
Motivation
MotivationMotivation
Motivation
 
JDD2014: GO! The one language you have to try in 2014 - Andrzej Grzesik
JDD2014: GO! The one language you have to try in 2014 - Andrzej GrzesikJDD2014: GO! The one language you have to try in 2014 - Andrzej Grzesik
JDD2014: GO! The one language you have to try in 2014 - Andrzej Grzesik
 
PLNOG15 - Wi-Fi Calling – how any Wi-FI infrastructure can become a part of M...
PLNOG15 - Wi-Fi Calling – how any Wi-FI infrastructure can become a part of M...PLNOG15 - Wi-Fi Calling – how any Wi-FI infrastructure can become a part of M...
PLNOG15 - Wi-Fi Calling – how any Wi-FI infrastructure can become a part of M...
 
PLNOG15: Yang - latin of XXI centaury - Sławomir Janukowicz
PLNOG15: Yang - latin of XXI centaury - Sławomir JanukowiczPLNOG15: Yang - latin of XXI centaury - Sławomir Janukowicz
PLNOG15: Yang - latin of XXI centaury - Sławomir Janukowicz
 
Overview of SIANI Activities in 2014
Overview of SIANI Activities in 2014Overview of SIANI Activities in 2014
Overview of SIANI Activities in 2014
 
4Developers 2015: Continuous Security in DevOps - Maciej Lasyk
4Developers 2015: Continuous Security in DevOps - Maciej Lasyk4Developers 2015: Continuous Security in DevOps - Maciej Lasyk
4Developers 2015: Continuous Security in DevOps - Maciej Lasyk
 
Top Tips to enhance your Wardrobe
Top Tips to enhance your WardrobeTop Tips to enhance your Wardrobe
Top Tips to enhance your Wardrobe
 

Similaire à JDD2014: Systematyczny architekt na drodze ku postarzaniu produktu - Jarosław Pałka

[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...
[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...
[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...Future Processing
 
[PL] Jak programować aby nie zwariować
[PL] Jak programować aby nie zwariować[PL] Jak programować aby nie zwariować
[PL] Jak programować aby nie zwariowaćJakub Marchwicki
 
Systematyczny architekt na drodze ku planowanemu postarzaniu
Systematyczny architekt na drodze ku planowanemu postarzaniuSystematyczny architekt na drodze ku planowanemu postarzaniu
Systematyczny architekt na drodze ku planowanemu postarzaniuJaroslaw Palka
 
4Developers 2015: Przejrzysty i testowalny kod na Androidzie? Spróbujmy z Cle...
4Developers 2015: Przejrzysty i testowalny kod na Androidzie? Spróbujmy z Cle...4Developers 2015: Przejrzysty i testowalny kod na Androidzie? Spróbujmy z Cle...
4Developers 2015: Przejrzysty i testowalny kod na Androidzie? Spróbujmy z Cle...PROIDEA
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...Future Processing
 
Metaprogramowanie w JS
Metaprogramowanie w JSMetaprogramowanie w JS
Metaprogramowanie w JSDawid Rusnak
 
Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2Natalia Stanko
 
Język C++. Gotowe rozwiązania dla programistów
Język C++. Gotowe rozwiązania dla programistówJęzyk C++. Gotowe rozwiązania dla programistów
Język C++. Gotowe rozwiązania dla programistówWydawnictwo Helion
 
Patterns for organic architecture
Patterns for organic architecturePatterns for organic architecture
Patterns for organic architectureJaroslaw Palka
 
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
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyqbeuek
 
Praktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPlPraktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPlSebastian Marek
 
10. Analizowanie potrzeb klienta i projektowanie struktury baz danych
10. Analizowanie potrzeb klienta i projektowanie struktury baz danych10. Analizowanie potrzeb klienta i projektowanie struktury baz danych
10. Analizowanie potrzeb klienta i projektowanie struktury baz danychkalaxq
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Cloudskraqa
 

Similaire à JDD2014: Systematyczny architekt na drodze ku postarzaniu produktu - Jarosław Pałka (18)

[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...
[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...
[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...
 
[PL] Jak programować aby nie zwariować
[PL] Jak programować aby nie zwariować[PL] Jak programować aby nie zwariować
[PL] Jak programować aby nie zwariować
 
Systematyczny architekt na drodze ku planowanemu postarzaniu
Systematyczny architekt na drodze ku planowanemu postarzaniuSystematyczny architekt na drodze ku planowanemu postarzaniu
Systematyczny architekt na drodze ku planowanemu postarzaniu
 
4Developers 2015: Przejrzysty i testowalny kod na Androidzie? Spróbujmy z Cle...
4Developers 2015: Przejrzysty i testowalny kod na Androidzie? Spróbujmy z Cle...4Developers 2015: Przejrzysty i testowalny kod na Androidzie? Spróbujmy z Cle...
4Developers 2015: Przejrzysty i testowalny kod na Androidzie? Spróbujmy z Cle...
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
 
Metaprogramowanie w JS
Metaprogramowanie w JSMetaprogramowanie w JS
Metaprogramowanie w JS
 
Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2
 
Java Data Objects
Java Data ObjectsJava Data Objects
Java Data Objects
 
Język C++. Gotowe rozwiązania dla programistów
Język C++. Gotowe rozwiązania dla programistówJęzyk C++. Gotowe rozwiązania dla programistów
Język C++. Gotowe rozwiązania dla programistów
 
Patterns for organic architecture
Patterns for organic architecturePatterns for organic architecture
Patterns for organic architecture
 
Java. Potrzaski
Java. PotrzaskiJava. Potrzaski
Java. Potrzaski
 
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
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatyczny
 
Behat
BehatBehat
Behat
 
Praktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPlPraktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPl
 
Android i REST
Android i RESTAndroid i REST
Android i REST
 
10. Analizowanie potrzeb klienta i projektowanie struktury baz danych
10. Analizowanie potrzeb klienta i projektowanie struktury baz danych10. Analizowanie potrzeb klienta i projektowanie struktury baz danych
10. Analizowanie potrzeb klienta i projektowanie struktury baz danych
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Clouds
 

JDD2014: Systematyczny architekt na drodze ku postarzaniu produktu - Jarosław Pałka