Uwaga, blog przeniesiony

Posty na tym blogu już nie będą się pojawiać. Zapraszam gorąco pod nowy adres: blog.grzegorzpawlik.com



Subskrybuj ten blog...

środa, 25 lutego 2009

Pliki w formie binarnej w bazie

Wcześniej pisałem o tym problemie, gdy pliki trzymamy fizycznie na dysku a w bazie tylko informację np. nazwę pliku (Co się dzieje, gdy dane są nie tylko w bazie).

Jako, że nowe projekty także służą do eksperymentowania z nowymi rozwiązaniami, dlatego próbujemyz nowymi rozwiązaniami:
  1. Po pierwsze komponent: ma dostawać tablicę po uploadzie (chodzi o pola "file"), zwracać nazwę zapisanego pliku (dla standardowego podejścia) lub zawartość gotową do wrzucenia do BLOBa
  2. Po drugie Helper, który będzie się zajmował wyświetlaniem takich zdjęć (a w przyszłości także zajmie się cache'owaniem ze wspomnianą w powyższym artykule metodą z nagłówkami expire)

W takim rozwiązaniu niestety pojawia się problem (strzałki oznaczają przepływ danych, uwaga: diagram nie przedstawia dosłownie przebiegu jednego zapytania, ale dwóch zapisu (do kontrolera) i wyświetlenia obrazka (od kontrolera)) :


Chodzi o fragment zaznaczony na czerwono. To jest nadmiarowe zachowanie. Lepiej byłoby, gdyby komponent (poprzez kontroler) przekazał nazwę pliku, Helper sprawdził, czy plik istnieje, a w razie gdyby nie istniał - musiałby 'poprosić' komponent o aktualizację pliku. A to jest w konflikcie z tym co napisałem przy okazji Dobrych praktyk #2 - Helper nie może używać kontrolera, ani komponentu.

I tu się wydarzyła rzecz ciekawa, w tym poście chciałem napisac o problemie, na który nie widzę dobrego sposobu. Chciałem przedstawić ideę pierwszego podejścia.
Dla bardziej przejrzystego przekazania idei postanowiłem zbudowac diagram i uświadomiłem sobie jak bardzo wizualizacja pomaga w zrozumieniu problemu.
A od zrozumienia problemu do jego rozwiązania jest raczej niedaleko.

No i w tym momencie wpadłem na pomysł bez komponentu i bez Helpera, ale za to sam Behavior. Myślę sobie, że Behaviors są rozszerzeniem Modeli, które odpowiadają za warstwę przechowywania danych.
Pomysł jest taki, że -pomijając kwestię uploadu i sapisu - behavior w afterRead() sprawdził, czy plik fizycznie jest aktualny, jeśli jest - zwróci jego nazwę. Jeśli nie jest - utworzy go na podstawie danych w bazie (koniecznie z inną nazwą) i zwróci jego nazwę (relatywną do img/) ścieżką.

Sprawdzę to empirycznie i napiszę Wam jak poszło.

czwartek, 19 lutego 2009

Odpowiedzialność społeczna przedsiębiorcy, a motywacja pracownicza.

Dziś wielu przedsiębiorców ma świadomość tego, że motywowanie
pracowników jest ważnym aspektem działalności menadżerskiej. Odnoszę
jednak wrażenie, że wydaje się im to istotne jedynie dlatego, że wierzą
w to iż jest to opłacalne. Głównie dlatego, że wdrożenie nowego
pracownika jest kosztowne. Chciałbym jednak przedstawić aspekt etyczny
motywowania i systemu motywacji pracowników.

Czym jest motywacja, a czym odpowiedzialność
społeczna?




Odpowiedzmy sobie najpierw na to
ważne pytanie. Philip Zimbardzo pisze: „Motywacja (motivizion) to ogólny
termin na określenie wszystkich procesów zaangażowanych w rozpoczęcie,
kierowanie i podtrzymanie aktywności fizjologicznych i psychicznych”
1. Motywowaniem nazwiemy zatem
wywoływanie (w sobie lub w innych) tych procesów.

Odpowiedzialnością społeczną
możemy nazwać dobrowolne zobowiązanie do uwzględniania interesów
społecznych, ochrony środowiska przez przedsiębiorcę (a w efekcie przez
przedsiębiorstwo) w trakcie budowania strategii, oraz przestrzeganie
tego zobowiązania w działalności przedsiębiorstwa
2. Ta odpowiedzialność przejawiać
się może w finansowaniu publicznego transportu, budownictwa, rzetelnej
informacji na temat produktów, trosce o ekologię3
i wielu innych.

Jest jednak jeszcze jeden aspekt,
w którym odpowiedzialność społeczna przedsiębiorstwa może zostać
wyrażona- umożliwienie rozwoju pracownikom, którzy przecież również są
częścią tego społeczeństwa.


Motywowanie pracowników- w czym się przejawia?



Motywowanie zakłada, że można
wpłynąć na wewnętrzny stan napięć pracownika w celu skłonienia go do
pracy, lub zwiększenia jej wydajności. Dlatego musi wykorzystywać metody
i narzędzia wpływu społecznego, które nierzadko stawiają osobę stosującą
je świadomie na pograniczu manipulacji. Wykorzystują one często
naturalne potrzeby drzemiące w ludziach. Dodatkowo Abraham Maslow
różnicuje motywację na wynikającą z niedoboru i wynikającą z potrzeby
wyjścia poza stan aktualny
4.
Dlatego w dwojaki sposób motywować pracowników: albo zabierając im, lub
utrudniając dostęp do pewnych nagród, lub strasząc odcięciem tego
dostępu (obcinanie premii, grożenie zwolnieniem); albo roztaczając przed
nimi wizję zaspokojenia potrzeb wyższego rzędu takich jak rozwój i
uznanie. Nawet gdyby oba podejścia były tak samo efektywne, to warto
zastanowić się jakie efekty, oprócz zwiększenia wydajności pracownika,
przynosi nasze działanie.


W pierwszym przypadku wywołany
stan jest bliski niewolnictwu. Praca wynika z zagrożenia (życia,
stabilizacji) pracownika, zatem wydaje się pracownika degenerować. Nie
ma co liczyć na inwencję tak motywowanego pracownika. Nie ma też co
liczyć na jego lojalność. Widać ten efekt aktualnie w Polsce: wcześniej
zatrzymanie pracownika było proste, gdyż panował rynek pracodawcy,
wysokie bezrobocie oznaczało wysoką konkurencję wśród pracowników.
Dodatkowo w wypadku ludzi starszych strata pracy na pół roku mogła
oznaczać całkowite wypadnięcie z „obiegu”. Aktualnie przy zwiększonym
wzroście gospodarczym i otwarciu granic w swobodnym przepływie między
innymi pracowników, polskie firmy nie wytrzymują niejako konkurencji z
zachodnimi przedsiębiorcami.


Zastanawiające jest, że ludzie
gotowi są jechać tysiące kilometrów i rozstawać się z rodzinami; moim
zdaniem nie jest to tylko wynikiem nadziei na zwiększenie zarobków5.


Odkładając jednak na chwilę
sytuację aktualną w Polsce, zastanówmy się co się stanie, jeżeli
większość pracodawców zacznie straszyć swoich pracowników. W takim
czarnym scenariuszu łatwo dojść do wniosku, że prędzej czy później praca
sama w sobie stanie przestanie być źródłem dumy, czy zadowolenia. Raczej
będzie przykrym obowiązkiem, lub nawet przedmiotem żartów. Ktoś, kto
wkłada wiele energii w pracę stanie się w oczach społeczeństwa
„frajerem”6. Etos pracy przestanie istnieć.
Bumelanctwo i kombinowanie będzie wartościową i cenną umiejętnością. Do
tego spadek zaufania społecznego i mamy idealną mieszankę, która zwolni
skutecznie wzrost dobrobytu całej społeczności.

Wracając jeszcze na moment do
problemu emigracji zarobkowej. Sam, pracując w wakacje, jeszcze w
liceum, w pewnej z firm po usłyszeniu nowych wymogów co do wydajności
pracy, gdy ktoś wyraził niezadowolenie usłyszałem, że przed bramą czeka
stu takich, co będą za połowę tego co my pracować. Osobiście nie
przejąłem się tym za bardzo – w końcu chciałem mieć tylko trochę
oszczędności na rozpoczęcie studiów, jednak pracowali tam ludzie, dla
których ta praca oznaczała byt! Nie trudno mi wyobrazić sobie, jak
właśni Ci ludzie pierwsi szturmowali przysłowiowe zmywaki w Londynie
również po to, żeby wreszcie pracodawca potraktował ich po ludzku.


Weźmy teraz pod lupę pozytywny
sposób motywacji. Oprócz oczywistych profitów dla organizacji, takich
jak wzrost wydajności, inwencji i zadowolenia pracowników, degeneracja
społeczna opisana wcześniej na pewno nie wystąpi z tego powodu.
Wyobraźmy sobie dziecko, przysłuchujące się rozmowie rodziców, którzy
wymieniają się osiągnięciami w pracy, chwalą rozwojem i wręcz
promieniują zadowoleniem. Niemal pewne jest, że w swoim dorosłym życiu
będzie szukało ono pracy, która w co najmniej takim samym stopniu będzie
źródłem zadowolenia. Zdaję sobie sprawę, że przykłady te nie są poparte
żadnymi badaniami, jednak wydaje mi się, że brzmią po prostu rozsądnie.
Dlatego pokuszę się o stwierdzenie, że przedsiębiorca etyczny jest w
stanie, oprócz towarów wymienionych w cenniku, produkować szczęście. W
sytuacji dominowania takiego postępowania wśród menadżerów – skutki są
odwrotne do przedstawionych powyżej. Budowane jest społeczeństwo
uczciwej pracy, które w całości pracuje na swój dobrobyt.


Warto jeszcze dodać, że
dostarczając pracownikom możliwości rozwoju, sprawiamy po prostu, że są
nieco szczęśliwsi.


Dlaczego zatem etyka czasem się nam gubi?



„Wymiar etyczny bywa często
sztucznie eliminowany z rozważań o zarządzaniu i dlatego bez wzajemnego
powiązanie mówi się często o władzy jako o samodzielnym zjawisku - i o
trosce o innych, byciu w emocjonalnej relacji do innych jako o osobnym
od władzy. Tymczasem te stany są dwoma ekstremami wymiaru etycznego
organizowania. Dopiero wzięte razem przestają mieć charakter typów
idealnych i zawierają całe spektrum realnych możliwości odniesienia
ludzi do siebie.”7


Mamy skłonność do upraszczania.
Czasem, żeby coś zrozumieć, musimy zbudować zubożony model, gdyż inaczej
nie bylibyśmy w stanie zrozumieć całości. Nie ma w tym nic nagannego,
pod jednym warunkiem: nie możemy zapomnieć, że mamy do czynienia z
uproszczeniem! Nie można zapomnieć, że jest tam coś jeszcze. Coś co może
nie przynosić bezpośrednich dochodów:

„Władza formalna - struktura,
jest uważana za aktywny potencjał i kojarzona z przywództwem. Troska o
innych, często przybierająca aktywną postać podporządkowania władzy,
jest w rzeczywistości drugą stroną tej samej monety. Jedna relacja nie
występuje bez drugiej;”8


To jest właśnie powód, dla
którego warto przypominać o etyce biznesu i etyce w ogóle. Działalność
biznesowa, jak każda inna działalność nigdy nie jest oderwana od
otoczenia, zatem na nie wpływa. Skoro tak, to na tych, którzy podejmują
działalność, ciąży jednocześnie odpowiedzialność, żeby przyniosła jak
najwięcej pożytku, przy jak najmniejszej ilości strat.


Związek społeczeństwa z przedsiębiorstwem.



W pracy „Etyka biznesu” została
podana odpowiedzialność przedsiębiorcy:

"[Menadżer odpowiada – gp] Za
wypracowanie zysku. Biznes produkuje zyski. Firma, a dokładnie zarząd
firmy, musi powiększać zdolność zasobów rzeczowych i osobowych do
tworzenia i produkowania bogactwa. Odpowiedzialność ta - pisze P.
Druckner - jest nie do odrzucenia i absolutna. [...]

Ale społeczeństwo nie może wziąć
z przedsiębiorstwem rozwodu. Musi ponieść straty, jeśli przedsiębiorstwo
nie produkuje koniecznych zysków, musi ubożeć, jeśli nie odnosi
sukcesów. Nakłada to na firmę obowiązek zarządzania w pancerzu etyki"9.
Rozmyślania na temat nieetycznego zarządzania zdają się być potwierdzane
tym cytatem. Chcę tylko dodać jeszcze jedno przemyślenie: jak
społeczeństwo może się bogacić kosztem zubożenia społeczeństwa? To
wyraźna sprzeczność potwierdzająca rację bytu etyki w naukach
traktujących o gromadzeniu bogactw.


Jak promować etykę?


J. Dietl i W. Gasparski proponują10
następujące metody promowania etyki:



  1. "Propagowanie dobrych wzorów,
    "budujących" przykładów. Powszechnie znane jest postępowanie znanego
    menadżera, który w najgorszym dla Chryslera roku, jako szef koncernu
    zredukował wysokość swojej pensji do jednego dolara rocznie” - moim
    zdaniem najlepsza i najtańsza. Ci którzy mają szczęście doświadczać
    potrzeby etycznego postępowania muszą dawać (i niejako „siłą rzeczy”
    dają) dobry przykład.



  2. "Stanowcze potępianie
    nieetycznych zachowań. " Co oznacza zdefiniowanie kodeksu etycznego i
    definitywne jego przestrzeganie.



  3. "Powołanie sądownictwa
    polubownego", które jest świetnym sposobem na budowanie więzi
    społecznych. Do tego społecznie akceptowana instytucja arbitra będzie
    idealna do realizowania punktu poprzedniego.



  4. "Treningi wrażliwości etycznej.
    " dla tych, którzy nie mieli szczęścia tej wrażliwości się wyuczyć11.
    Miałaby ona polegać na przedstawianiu pozytywnych przykładów etycznego
    postępowania, które odniosły pożądany skutek. Dietl i Gasparski
    proponują również nawyk stawiania się po drugiej stronie. Można to
    nazwać nauką „menadżerskiej empatii”.




Czym tak w ogóle jest etyka?



Na zakończenie, aby domknąć
rozmyślania, chciałbym zamieścić dwa wybrane cytaty z pracy „Etyka
biznesu”, które odpowiadają na te pytanie.


Pierwszy Tadeusza Kotarbińskiego:

"Tadeusz Kotarbiński, w pracy
'Medytacja o życiu godziwym' podkreśla znaczenie takich wartości, jak:
miłość i przyjaźń, sprawiedliwość, hierarchiczność celów oraz kierowanie
się głosem sumienia, które domaga się od nas postawy znamiennej dla
opiekuna, na którym można polegać, spolegliwego opiekuna12"


Drugi Jana Pawła II:

„... Człowiek najpełniej afirmuje
siebie, dając siebie ... nie przyjmując perspektywy daru z siebie samego
, zawsze istnieje ryzyko wolności egoistycznej”


Powyższy tekst to praca zaliczeniowa na
przedmiot "Etyka w biznesie", napisana w połowie 2008 roku. Bardzo
ciekawie i inspirująco wykładany przez dra Leopolda Zgodę. Jego wykłady
otworzyły mi oczy na to, czego do tej pory nie widziałem (choć może
gdzieś pod skórą czułem). Postanowiłem się tym tekstem podzielić (tym
bardziej, że został on dobrze przez doktora oceniony :))




1Cyt. P.G.Zimbardzo,
Psychologia i życie, Warszawa: Wydaw. Naukowe PWN, 1999, s.436



2Zob. Wikipedia,
Wolna encyklopedia, http://pl.wikipedia.org/wiki/CSR,
Dostęp 24/05/2008



3Zob. Anna
Lewicka-Strzałecka, Etyczny wymiar przekształceń gospodarczych w Polsce,
pod red. Adama Węgrzeckiego ; Akademia Ekonomiczna w Krakowie, s 147



4Zob. P.G. Zimbardo,
F.L. Ruch Psychologia i życie, Warszawa 1997, s. 404.



5Można dopatrywać się
tutaj nadziei na lepsze traktowanie, o czym za chwilę.



6Warto porównać to z
nast. cytatem: „Najprawdopodobniej określenie "etyczny menadżer"
wywołałoby u licznej grupy co najmniej zdziewienie, komentarze i znaki
zapytania. Bo "etyczny" obecnie w Polsce to właściwie jaki: "naiwny",
"nieprzedsiębiorczy", a może wręcz "głupi"?”, Etyka biznesu, red. nauk.
Jerzy Dietl, Wojciech Gasparski, s.210



7Cyt. Etyka Biznesu,
J. Dietl, W. Gasparski, s.192



8Tamże.



9Cyt. Etyka biznesu,
s. 209



10Zob. Tamże, s.
224 - 225



11Również dla tych,
którzy to szczęście mieli – zawsze warto tę umiejętność pogłębiać.



12Por. z pojęciem
aktywne współczucie i z ideą Bodhisattwy w buddyzmie, http://www.diamentowadroga.pl/dd20/wspolczucie_jezyk_bodhisattwy,
http://www.diamentowadroga.pl/dd25/dzialania_bodhisattwy

wtorek, 17 lutego 2009

Dobre praktyki programowania w CakePHP #2

Przepływ przez architekturę MVC jest i powinien być: Model->Controller->View.

Niestety ze studiów wynieśliśmy to beznadziejne przyzwyczajenie, że funkcja to funkcja i tam się zrobi wszystko co da się zrobić. Dlatego są tacy, którzy nie starają się wpasować w MVC samodzielnie, za to MVC jako tako trzyma ich w koleinach w miarę dobrej architektury. Ci i ich kod jakoś tak naturalnie ciąży w kierunku kontrolerów.
To znaczy: model jest właściwie półprzeźroczystą wartswą dostępu do bazy danych ( findAll() + okazyjnie query() ), w kontrolerze jest wszystko, widoki na razie pominę.

Przykład: Mamy User hasMany Photos. Kluczem obcym jest oczywiście Photo.user_id. Photo.filename to plika w katalogu app/webroot/img. Prosta sprawa, User wrzuca sobie fotki i gdzieś tam one wszystkie są wyświetlane dla danego User(a). Do tej pory załatwił wszystko cake - wygenerował nam definicję tej relacji i nie zaprzątamy sobie tym głowy.
Przychodzi jednak czas, że gdzieś tam na stronie jest lista Userów i przy każdym przydałaby się jedna fotka wśród tych, które dodał. Załóżmy przypadek pierwszy, że zakładamy iż reprezentującą fotką jest pierwsza w kolejności (Photo.id - najmniejsze).

Opisany wyżej programista zrobi coś takiego (w widoku):
<?php image($User["Photo"][0]["filename"]; ?>(1),
jeśli pojawia się sprawdzenia isset($User['Photo'][0] to jest to spory sukces.

Jednak przepływ danych M->C->V sugeruje, że nasze myślenie też powinno płynąć w ten sposób. Czyli powiniśmy stosować zadać sobie trzy pytania:
if(to się nadaje do modelu?) {
wrzućToDoModelu($to);
}elseif(to się nadaje do kontrolera?) {
wrzućtoDoKontrolera($to);
else {
pewnie widok, ale może helper, komponent itd.
}
W (1) poleciało do widoku, a nie wiadomo dlaczego! Przecież to, które ze zdjęć z jakiegoś zestawu jest tym szczególnym zależy od modelu danych. Dlaczego ten wybór dokonywany jest w warstwie reprezentacji?

Bardziej prawidłowym podejściem jest dodanie relacji
$hasOne = array( 'RepresentativePhoto' =>
array('className' => 'Photo',
'order' => 'Photo.id ASC'
);
(2)

I wyświetlenie go w widoku:
<?php echo $html->image($User['RepresentativePhoto']['filename']; ) ?>

Jeśli zadałeś sobie pytanie w stylu: ale po co, przecież efekt jest ten sam? To znaczy, że powoli zaczynasz łapać. Masz rację, że efekt jest teraz taki sam. Jednak, jeśli uświadomisz sobie, że program komputerowy się ciągle zmienia, bo taka jest prawda, to powoli zaczniesz rozumieć po co w ogóle powstało coś co się nazywa MVC.

MVC istnieje dlatego, że każdy użytkownik ma pomysły jak ulepszyć dany program. Na nieszczęście najlepsze pomysły pojawiają się, gdy program już isnieje, a nie wtedy gdy próbujesz wysmarzyć specyfikację. Jednym z tych użytkowników jest Twój klient, a klient to ten który ma kasę, a Ty to ten, który chce ją zdobyć.

Dlatego po pół roku okazuje się, że trzeba by zrobić coś fajniejszego. Załóżmy, że User wśród swoich zdjęć może wybrać to jedno jedyne, które ma być reprezentacyjne. Oczywiście dodajemy pole Photo.representative (bool, 0 - nie, 1 - tak). Co teraz zrobisz?
Jeśli pojawiła się w Tobie ochota na wzięcie (1) i wstawienie tam uroczej pętelki, w środku której będzie słodki if sprawdzający to pole - proszę zacznij czytać od początku.

Cwaniak-leń, który nie jest masochistą i nie lubi się przepracowywać, a jednocześnie lubi zadowolonych klientów - weźmie 2 i ją zmodyfikuje:

$hasOne = array( 'RepresentativePhoto' =>
array('className' => 'Photo',
'conditions' => 'Photo.representative = 1',
'order' => 'Photo.id ASC'
);
Jednak linijka vs. foreach z ifem. Wygrałem. Do tego mam bonus taki, że sprawdzanie warunku odwala za mnie serwer sql (do tego został stworzony) co jest niemal zawsze bardziej wydajne od tych samych operacji w php.

Na zakończenie kolejna zmiana - użytkownik może wybrać dowolną ilość Photo jako reprezentacyjne, a przy jego imieniu ma się wyświetlić losowy. Teraz już naprawdę wyrażnie widać, że gdy zmodyfikujemy widok (1) dodając tam jakiś array_randm czy coś, to nie bardzo będzie to wyglądać na warstwę prezentacji danych (bo daną jest już wylosowane zdjęcie, reszta to zaledwie półprodukty).
Wyobraźmy sobie, że mogłoby to wyglądać jakoś tak:
foreach($user["Photo"] as $key => $val) {
if($val['representative'] != 1) {
unset($user['Photo'][$key];
}
}
$representativePhoto = array_rand($User['Photo'], 1);
echo $html->image($representativePhoto['filename']);
Tragedia! Serio chcesz, żeby Twoje widoki wyglądały w ten sposób? A jak w pięciu różnych widokach musisz wyświetlić tak wybrane zdjęcie?

Prawidłowa odpowiedź:

$hasOne = array( 'RepresentativePhoto' =>
array('className' => 'Photo',
'conditions' => 'Photo.representative = 1',

'order' => 'RAND'
);
Tyle.

Kolejna zasada, którą pozwolę sobie oznajmić światu brzmi:
Poznaj Modele i zacznij ich używać. Po coś w końcu ktoś je wymyślił!
Krócej: skinny controller, fat model

sobota, 14 lutego 2009

Czy pamiętasz ze szkoły trójkąt czas-koszt-jakość?

Jeśli nie, to z przyjemnością Ci przypomnę.

Wyobraż sobie trójkąt równoramienny. Jego wierzchołki oznaczają osiągalny (fizycznie, technologicznie) maksymalny danej z trzech cech. Jeden jakości, drugi czasu, trzeci kosztu (chodzi o pieniądze, nie abstrakcyjne pojęcie kosztu, bo wtedy oznaczałoby to również czas).

Twój produkt to jeden punkt wewnątrz tego trójkąta. Im mniejsza odległość tego punktu od jakiejś cechy, tym większa jej wartość. Może dokładniej: im bliżej punktu jakość - tym ta jakość większa. Im bliżej punktu koszt - tym taniej. Im bliżej punktu jakość - tym lepszy jakościowo jest produkt.

Jednocześnie maksymalna osiągalna odległość od danego punktu oznacza minimalną (najgorszą) wartość danej cechy...
Dla przykładu wyobraź sobie, że stawiasz mur (metr wysoki, 20metrów długi) na swojej posesji. Chcesz to zrobić jak najtaniej (przesuwasz się do wierzchołka koszt) więc zatrudniasz studenta pierwszego roku socjologii. Nie dajesz mu cegieł, ale każesz znosić kamienie i cegły z ruin, starych fabryk itd. Nie dostanie też cementu z sugestią, że może użyć błota z rzeki wymieszanego ze słomą. Nie płacisz mu pensji, ale pozwalasz rozbić namiot w pobliżu muru, który buduje. Może zjeść co upoluje i ogrzać się na masce Twojego samochodu, gdy wrócisz z pracy... ok zapędziłem się, ale wydaje mi się, że masz już w głowie TEN obraz. Myślę, że efektu końcowego nie muszę już opisywać. Widać, że wyżyłowaliśmy kwestię kosztów, jednak oddaliliśmy się znacznie od punktu jakość i czas (prawdopodobnie będzie liczony w latach, lub pokoleniach potomków owego studenta ;))
Niby sprawa oczywista, ale konsekwencje nie są oczywiste dla każdego. Szczególnie jeśli chodzi o projekt informatyczny. W tym wypadku produkt jest na tyle wirtualny, że występuje pokusa wirtualnego myślenia. Że jak w grze po wpisaniu kodu jesteśmy nieśmiertelni i potrafimy latać, tak tutaj punkt może się rozciągnąć i zetknąć z każdym wierzchołkiem trójkąta. Czy jeszcze muszę pisac, że tak niestety nie jest?

Trochę mnie bajkopisarstwo poniosło, więc na koniec napiszę o korzyściach wynikających z tego, że model ten będziesz miał w głowie.

Jeśli jesteś menadżerem projektu. To jest twój koronny argument w negocjacjach terminów. Jeśli ktoś Ci powie, że ten trójkąt to bujda, że Toyota i w ogóle - nie jesteś jeszcze stracony - czytaj dalej.

Jeśli jesteś klientem, to dobre dla całego projektu będzie, jeśli będziesz o nim myślał realistycznie a nie w kategoriach fantasy. Pamiętasz, że udany projekt leży również w Twoim interesie?

Jeśli jesteś programistą... cóż, możesz sobie ten trójkąt rysować kiedy wiesz, że projekt w którym uczestniczysz oddalił się znacznie od punktu jakość i czas, i nie mieć z tego powodu wyrzutów sumienia ;)


Oczywiście w myśl zasady "zawsze trafisz na większą górę, wyższe drzewo i mądrzejszego człowieka" nie możesz spocząć na larach. Prędzej czy później trafisz na mądralę, który odbije piłeczkę a na niej będzie logo Toyota.
O co chodzi? Otóż są tacy, którzy twierdzą, że model trójkąta jest bujdą, gdyż toyocie udaje się ciągła redukcja kosztów z ustawicznym wzrostem jakości. I nie jest to kłamstwem. Jednak są dwie rzeczy, których przytoczony mądrala sobie nie uświadomił:
  1. Trójkąt w modelu jest taki, nie inny w danej chwili.
  2. Toyota stosuje podejście procesowe w zarządzaniu powiązane z filozofią kaizen 
  3. Dlatego Toyota zmniejszyła swój trójkąt koszt-czas-jakość, a nie wpisała odpowiedni kod w grze ;)
  4. To trwało lata!
Dlatego mądrala nie ma racji, bo dany projekt:
  1. Ma do dyspozycji taką technologię jaką ma, taki know-how jaki ma i na potrzeby danego projektu tego kapitału nie powiększy (po zakończeniu - owszem)
  2. Prawdopodobnie nie wiesz na czym polega zarządzanie procesowe, a nawet jeśli wiesz, to pewnie nie jest wdrożone, a jeśli jest - to znaczy, że w tej kwestii na razie nie wiele możesz poprawić.
  3. Z dwóch powyższych wynika, że nie zmniejszysz swojego Trójkąta na potrzeby najbliższego projektu (chyba, że zmienisz wykonawce, ale wtedy trójkąt może okazać się nie równoramienny i punkt kosztu niknie za horyzontem)
  4. Projekt startuje już, nie za kilka lat jak już sobie "popróbujemy"

poniedziałek, 9 lutego 2009

Wreszcie ruszył!

Po kilku miesiącach ciężkiej pracy, zamknięciu zgłoszeń liczonych w tysiącach, uruchomiliśmy serwis dobrzemieszkaj.pl.

Zbudowany od podstaw system oferujacy m.in. zarządzanie wersjami artykułów (funkcjonalność zaliczana do kategorii "tricky ones"), zintegrowany z forum, adserwerem. Ogólnie to taka spora kobyła, katalog produktów i firm, część społecznościowa oprócz wspomnianego forum to komentarze, zakładki, oceny (zdjęć/galerii), no i jeszcze sekcja architektów i dizajnerów. Przy okazji takich przemyśleń przychodzi refleksja - w czasach prehistorycznych, gdy nie było jeszcze frameworków taki projekt musiałby być z 50 razy droższy!

Jest on dla mnie również źródłem osobistej satysfakcji. Projekt systemu i bazy danych, częściowo kod i zarządzanie zespołem, który odwalił kawał dobrej roboty, aby dotarł do szczęśliwego happy-endu było na mojej głowie.

Do tego było to całkiem niezwykłe doświadczenie. Można było obserwować jak ścierają się różne siły (klient, szef, programiści) i wpływają na ostateczny kształt systemu. A najfajniesze w tym wszystkim jest to, że (o ile mi wiadomo) wszyscy są przynajmniej "w miarę zadowoleni z efektów".

Jeśli ktoś z Was, szanownych czytających, chciałby takie cuś, to zgłoście się do firmy Netarch.

Uwaga! blog przeniesiony

Posty na tym blogu już nie będą się pojawiać. Zapraszam gorąco pod nowy adres: blog.grzegorzpawlik.com
Komentowanie artykułów możliwe jest pod nowym adresem.