"We have tried to demonstrate by these examples that it is almost always incorrect to begin decomposition of a system into modules on the basis of flowchart.
We propose instead that one begins with a list of difficult design decisions or design decisions which are likely to change. Each module is then designed to hide such a decision from the others."
David L Parns
"On the Criteria to Be Used in Decomposing Systems into Modules"
za: http://www.infoq.com/presentations/Architecture-Uncertainty - prezentacja jednego z moich ulubionych "filozofów oprogramowania", który dodaje później:
"Projektujemy wokół tego czego nie wiemy, ukrywamy niewiedzę, aby niewiedza nie była problemem"
Inżynieria oprogramowania w ujęciu systemowym.
Zintegrowane podejście do metodyk,
technologii (głównie Java EE), architektury i rozwoju ścieżki kariery programisty.
wtorek, 24 grudnia 2013
piątek, 13 grudnia 2013
Video z Confitury
Właśnie się zorientowałem, że od jakiegoś czasu dostępna jest moja prezentacja z tegorocznej Confitury: Model jest wszystkim czego potrzebujesz (w aplikacjach biznesowych) - czyli czego nauczyłem się podczas 6 lat praktykowania i nauczania DDD).
poniedziałek, 9 grudnia 2013
Cytaty #1
"People with strong technical backgrounds can covert any task into a technical task, thus avoiding work they don't want to do"
"By pretending the work is somehow abstracted from the people we can transform our interpersonal failure into a mechanical failure. It's much easier to say for example, 'We couldn't get the program working on time, than 'I wasn't skilled enough to help Jack become a better programmer'"
Te miażdżące cytaty pochodzą z książki: Becoming a Technical Leader: An Organic Problem-Solving Approach.
"By pretending the work is somehow abstracted from the people we can transform our interpersonal failure into a mechanical failure. It's much easier to say for example, 'We couldn't get the program working on time, than 'I wasn't skilled enough to help Jack become a better programmer'"
Te miażdżące cytaty pochodzą z książki: Becoming a Technical Leader: An Organic Problem-Solving Approach.
sobota, 7 grudnia 2013
DDD-Leaven v2
Po kilku nieprzespanych nocach opublikowaliśmy drugą wersję projektu DDD-Leaven
https://github.com/BottegaIT/ddd-leaven-v2
Podobnie jak w wersji 1, celem jest udostępnienie projektu, który pozwala szybko rozpocząć pracy z technikami DDD poprzez zapewnienie szkieletu technicznego (chciałbym w tym miejscu podkreślić nieoceniony wkład Rafała Jamroza).
Natomiast w wersji drugiej rozszerzyliśmy znacznie domeny biznesowe aby zilustrować techniki modelowania - zaawansowane wykorzystanie Building Blocks, ale przede wszystkich techniki lingwistyczne oraz techniki dokumentowania modelu i prowadzenia sesji modelowania z Ekspertem Domenowym.
Wiele z tych technik to implementacja lub nawet rozwinięcie technik, jakie poznaliśmy na wiosennym IDDD Tour wraz z eksperymentalnymi technikami rozwijanymi w ThoughtWorks.
Niektórych technik nie "widać" poprzez kod, dlatego będę je opisywał w kolejnych odcinkach serii DDD h4x.
Wiki jest w trakcie tworzenia, ale skalowalna "mapa" powinna pomóc w zwiedzaniu źródeł: http://prezi.com/akrfq7jyau8w/ddd-cqrs-leaven-v20/
//============================
Aby zacząć od konkretów technicznych: kilkanaście osób pytało o przykład implementacji założeń z tekstu: http://art-of-software.blogspot.com/2013/06/mapowanie-relacyjno-obiektowe.html
Teraz dysponuję źródłami, które mogę udostępnić: https://github.com/BottegaIT/ddd-leaven-v2/blob/master/src/main/java/pl/com/bottega/ddd/support/infrastructure/repository/jpa/GenericJpaRepository.java
https://github.com/BottegaIT/ddd-leaven-v2
Podobnie jak w wersji 1, celem jest udostępnienie projektu, który pozwala szybko rozpocząć pracy z technikami DDD poprzez zapewnienie szkieletu technicznego (chciałbym w tym miejscu podkreślić nieoceniony wkład Rafała Jamroza).
Natomiast w wersji drugiej rozszerzyliśmy znacznie domeny biznesowe aby zilustrować techniki modelowania - zaawansowane wykorzystanie Building Blocks, ale przede wszystkich techniki lingwistyczne oraz techniki dokumentowania modelu i prowadzenia sesji modelowania z Ekspertem Domenowym.
Wiele z tych technik to implementacja lub nawet rozwinięcie technik, jakie poznaliśmy na wiosennym IDDD Tour wraz z eksperymentalnymi technikami rozwijanymi w ThoughtWorks.
Niektórych technik nie "widać" poprzez kod, dlatego będę je opisywał w kolejnych odcinkach serii DDD h4x.
Wiki jest w trakcie tworzenia, ale skalowalna "mapa" powinna pomóc w zwiedzaniu źródeł: http://prezi.com/akrfq7jyau8w/ddd-cqrs-leaven-v20/
//============================
Aby zacząć od konkretów technicznych: kilkanaście osób pytało o przykład implementacji założeń z tekstu: http://art-of-software.blogspot.com/2013/06/mapowanie-relacyjno-obiektowe.html
Teraz dysponuję źródłami, które mogę udostępnić: https://github.com/BottegaIT/ddd-leaven-v2/blob/master/src/main/java/pl/com/bottega/ddd/support/infrastructure/repository/jpa/GenericJpaRepository.java
wtorek, 3 grudnia 2013
Czasowniki głupcze!
Kilka dni temu mój brat zwrócił mi uwagę na ciekawe zjawisko.
/*
Dodam, że brat z wykształcenia jest dziennikarzem, pracuje jako redaktor w radiu i dodatkowo relacjonuje wydarzenia w naszej branży w dziale Planeta IT w programistamag.pl (próbka relacji z jPikniku: Java nad Wisłą)
*/
Otóż człowiek, który na co dzień zajmuje się komunikacją, przejrzał z ciekawości kilka moich artykułów oraz tekstów innych autorów technicznych i zapytał:
- Dlaczego Ty (Wy) używacie tak namiętnie rzeczowników, rzeczowników odczasownikowych i posługujecie się namiętnie równoważnikami zdań?
- ???
- No na przykład: dokonanie faktu wystawienia faktury przez księgowego zamiast: księgowy wystawił fakturę; częste występowanie błędu zamiast: błąd występuje często itd
- Hmm w sumie nigdy się nad tym nie zastanawiałem...
I co śmieszne: powiedziałem o tym niedawno kilku osobom podczas lunchu, pośmialiśmy się sami z siebie po czym każdy nieświadomie skomentował zjawisko przy pomocy form bezczasownikowych:P
//==================================
Stare porzekadło mówi, że: język jakim mówisz determinuje sposób w jaki myślisz...
W jednym z najbliższych postów z serii DDD h4x przedstawię techniki lingwistyczne pozwalające na tworzenie behawioralnych modeli domeny (zorientowanych na czynności reguły nimi rządzące) zamiast anemicznych struktury danych wyrażonych przez rzeczowniki.
Celem będzie czytanie kodu niczym prozy, takiej w której pojawi się podmiot, orzeczenie, dopełnienie jak i nawet przydawka:)
/*
Dodam, że brat z wykształcenia jest dziennikarzem, pracuje jako redaktor w radiu i dodatkowo relacjonuje wydarzenia w naszej branży w dziale Planeta IT w programistamag.pl (próbka relacji z jPikniku: Java nad Wisłą)
*/
Otóż człowiek, który na co dzień zajmuje się komunikacją, przejrzał z ciekawości kilka moich artykułów oraz tekstów innych autorów technicznych i zapytał:
- Dlaczego Ty (Wy) używacie tak namiętnie rzeczowników, rzeczowników odczasownikowych i posługujecie się namiętnie równoważnikami zdań?
- ???
- No na przykład: dokonanie faktu wystawienia faktury przez księgowego zamiast: księgowy wystawił fakturę; częste występowanie błędu zamiast: błąd występuje często itd
- Hmm w sumie nigdy się nad tym nie zastanawiałem...
I co śmieszne: powiedziałem o tym niedawno kilku osobom podczas lunchu, pośmialiśmy się sami z siebie po czym każdy nieświadomie skomentował zjawisko przy pomocy form bezczasownikowych:P
//==================================
Stare porzekadło mówi, że: język jakim mówisz determinuje sposób w jaki myślisz...
W jednym z najbliższych postów z serii DDD h4x przedstawię techniki lingwistyczne pozwalające na tworzenie behawioralnych modeli domeny (zorientowanych na czynności reguły nimi rządzące) zamiast anemicznych struktury danych wyrażonych przez rzeczowniki.
Celem będzie czytanie kodu niczym prozy, takiej w której pojawi się podmiot, orzeczenie, dopełnienie jak i nawet przydawka:)
poniedziałek, 2 grudnia 2013
Nowe serie artykułów: zaawansowany Android i refaktoryzacja tesów
Udostępniliśmy do pobrania artykuły z nowych serii publikowanych w programistamag.pl przez moich współpracowników:
- Michał Charmas rozpoczął serię Zaawansowane programowanie na platformie Android artykułem There is no app - do pobrania tutaj: http://bottega.com.pl/artykuly-i-prezentacje#android
- Rafał Jamróz rozpoczął serię Refaktoryzacja testów legacy w kierunku wykonywalnych specyfikacji artykułem Podstawowy refaktoring testów - do pobrania tutaj: http://bottega.com.pl/artykuly-i-prezentacje#testowanie
Zapraszamy do lektury:)
Subskrybuj:
Posty (Atom)