Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: projektowanie a programowanie...

Permanentne dyskusje z wieloma programistami utrwalają we mnie pewien stereotyp: inżynier to dobry wykonawca ale żaden analityk. Czy to coś złego? Absolutnie nie, dobry inżynier jest na wagę złota ale dobry inżynier powinien mieć jedną kluczową cechę: nie dyskutuje z projektantem (jeżeli tylko projektant potrafi uzasadnić czego chce). Ale po kolei:

http://it-consulting.pl/autoinstalator/wordpress/index...
Piotr S.

Piotr S. Vice President &
Chief Geek @
Proligence / .NET
junkie / ...

Temat: projektowanie a programowanie...

Bardzo ciekawy i trafiony artykuł, ale nie do końca zgadzam się z tezą bezwzględnego posłuszeństwa analitykowi. Zaraz mam spotkanie, więc pozwolę sobie na krótką odpowiedź.

To jest trochę jak z budową domu i relacją między architektem a inżynierem budownictwa. Architekt ma pewną wizję artystyczną, na podstawie której tworzy projekt. Ta wizja powstaje po konsultacjach z klientem, analizie jego potrzeb itp, itd. Inżynier ma natomiast to po prostu zmaterializować i na tym jego rola się kończy. I tu często pojawia się zgrzyt - kilkukrotnie spotkałem się z sytuacją, w której architekt zaprojektował coś tak absurdalnego (np. balkon, którego istnieniu przeczą prawa fizyki), że inżynier złapał się za głowę i poprawiał projekt. Teoretycznie architekt musi mieć elementarną wiedzę z zakresu inżynierii, ale... Niech się martwi inżynier - w końcu to on odpowiada głową za to, czy budynek się nie zawali.

Taka mała analogia, ale obrazująca to, co miałem na myśli - komunikacja obustronna. Analityk/projektant powinien brać pod uwagę także głos strony wykonawczej projektu.
Wojciech Soczyński

Wojciech Soczyński Programista
eksplorator -
blog.wsoczynski.pl

Temat: projektowanie a programowanie...

Zgadzam się z Piotrem, jeżeli projektant nie miał wcześniej styczności przynajmniej minimalnej z programowaniem, może zaprojektować nieimplementowalny model. Dlatego osobiście uważam, że współpraca pomiędzy projektantem a programistą na etapie projektowania jest pożądana, ponieważ pozwala zwrócić uwagę na problemy, które mogą wystąpić. Natomiast tak jak już wcześniej mówiłem w którymś wątku, bycie programistą i próba projektowania nie zawsze będzie udana, ponieważ umysł programisty jest "skażony" docelowymi technologiami implementacji danego modelu.

Co więcej, z tego co się orientuje to metodyka DDD stawia zarówno na współpracę klient - projektant jaki developer - projektant, tak by nie powstawał dysonans pomiędzy tymi trzema stronami projektu.Wojciech Soczyński edytował(a) ten post dnia 04.06.11 o godzinie 13:32

Temat: projektowanie a programowanie...

Zgadzam się z Wami wszystkimi.

Inżynier nie powinien wtrącać się w to, co wymyślił analityk i przerabiać mu analizy po swojemu. W końcu to analityk ma kontakt z klientem, ma najszerszy pogląd na zagadnienie i zna dobre praktyki projektowania elastycznych systemów informacyjnych. Na tej podstawie wypracował koncepcję, którą chce, aby mu zrealizować. To oczywiste. Ale pod następującymi warunkami:

a) gdy to, co wymyślił analityk nie jest "branżowym idiotyzmem". Inżynier też może być świetnym branżowcem i wtedy wręcz powinien zgłosić oczywiste wady projektu z branżowego punktu widzenia. Dotyczy to zarówno poprawności i sensowności procesu, kwestii prawnych z nim związanych, "dobrych praktyk" w branży i rzeczywistego ich w niej stosowania. A ponieważ firmuje produkt także swoim nazwiskiem, może nie chcieć, by figurowało przy jakiejś "kupie".

b) gdy to, co wymyślił analityk jest implementowalne w rozsądny (szerokie znaczenie, np. czy dostępny jest szeroki wybór bibliotek realizujących dane zadanie) sposób w technologii, w jakiej pracuje się w danej firmie i w odniesieniu do harmonogramów i mocy produkcyjnych. Być może można z czegoś zrezygnować lub pójść nieco inną drogą, by dojść do kompromisu

c) gdy to, co wymyślił analityk da się zintegrować z istniejącymi rozwiązaniami w rozsądnym czasie. Być może nieznaczna ingerencja w proces pozwoli lepiej dopasować potrzeby do rzeczywistości.

d) gdy to, co wymyślił analityk nie grozi znaczącymi problemami w razie awarii systemu, wąskimi gardłami, czy lukami bezpieczeństwa. Spotkałem się u dwóch analityków z kompletnym brakiem zrozumienia zasad asynchronicznej komunikacji między systemami i "kolejki komunikacji" były dla nich kompletną abstrakcją. Najlepiej, jak by wszystko było synchroniczne, bo tak prościej, nie trzeba pamiętać żadnych identyfikatorów, priorytetów, sprawdzać kolejek, "udziwniać" (jak to oni powiedzieli) zagadnienia. A że system wisi na oczekiwanie "ACK", bo zawiesiła się procedura po drugiej stronie... who cares :D Inny przykład: synchronizowane są bazy danych w kilku lokalizacjach klienta. Wymaga to postawienia w nich serwerów. Rosną koszty, a analityk jest naciskany przez handlowców, by ich nie generować. Ten, zamiast upewnić się jakie dane są wymieniane, zastanowić nad "częściową synchronizacją" i "repozytoriami dostępnej wiedzy", wymyśla doraźnie rozwiązanie, gdzie jest jeden centralny serwer i placówki łączą się do niego po tunelu, widząc go jak w intranecie. Wszyscy są zadowoleni - koszty spadły z N serwerów (grube dziesiątki kpln) do jednego. Co jednak, gdy padnie gdziekolwiek połączenie internetowe? "Och, przejdziemy rezerwowo na 3G". Rzecz w tym, że ilość transmitowanych danych jest rzędu MB/sek, a czasy odpowiedzi mają być krótkie, natomiast sieć z trudem "wskakuje" na UMTS, nie mówiąc o HSDPA/HSUPA, a podczas burzy zrywa co chwila połączenie. No... o tym to on nie pomyślał, bo przecież komórka wszędzie łapie zasięg, to i internet powinien być dostępny. Takich przykładów znam wiele.

e) analityk nie próbuje wtrącać się w architekturę techniczną i stosowane wzorce projektowo-architektoniczne, zwłaszcza przy systemach rozproszonych, jeśli ich nie rozumie. Jeśli je rozumie, to jest świetnym partnerem do dyskusji i współpraca analityk-inżynier będzie szczególnie owocna. Ale nie spotkałem wielu takich osób. Raczej byli to inżynierowie "przestawieni" na analityków, a tylko raz spotkałem analityka "nieinformatycznego", który miał do tego głowę.

Musimy pamiętać, że w informatyce bardzo wielu z nas pełniło, w różnych momentach kariery zawodowej, różne obowiązki - od zaciskania "erjotów" na kablach sieciowych i "kładzenia" sieci, przez stawianie serwerów różnego rodzaju (www, mail, ftp), administrację siecią, pisanie oprogramowania, wyjazdy do klientów (analiza), projektowanie rozwiązań od strony architektury i technologii po testowanie i wdrażanie. A to oznacza, że część ludzi "po IT" ma doświadczenie także branżowe i będzie wchodzić w konflikt z analitykami, którzy z kolei rzadziej (wedle moich obserwacji, ale to tylko obserwacje cząstkowe) mają doświadczenie IT.

PS: aaa, już rozumiem, gdzie dysonans :) Inżynier to NIE "coder". Programiści są faktycznie na końcu procesu i raczej trudno, by wchodzili w analizę, chyba, że wyłapią przy okazji jakiś niuans, który umknął wszystkim innym. Ale ilu programistów rozmawia z analitykami? Zwykle jest albo inżynier, albo chociaż kierownik tychże. I inżynier nie może po prostu "łyknąć" projektu bez chwili refleksji, czy wszystko, co tam zapisano, ma sens. W końcu to na niego potem spadnie naprawianie wszystkiego od strony młotka i gwoździa. A kiedy powstaną wylewki, trudno będzie położyć ogrzewanie podłogowe ;)

PS: no i pamiętajmy, że nie każdy jest Wami, tj. analitykami z doświadczeniem w wielu projektach. Często są to osoby, które dopiero przyuczają się do zawodu. Wy zaś, m.in. Ty Jarku czy Maćku (pewnie śledzisz wątek :) ) zjedliście na tym zęby i gdy coś oddacie produkcji, to ta będzie mogła faktycznie tylko siąść i... budować :) Rzeczywistość bywa mniej kolorowa.Adrian Olszewski edytował(a) ten post dnia 04.06.11 o godzinie 14:57
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: projektowanie a programowanie...

Piotr S.:
Teoretycznie architekt musi mieć elementarną wiedzę z zakresu inżynierii, ale... Niech się martwi inżynier - w końcu to on odpowiada głową za to, czy budynek się nie zawali.

Należy się zgodzić z tym, że projektant musi rozumieć co projektuje i tego nie neguję a raczej "wymagam'. Jeżeli jednak uznamy, ze projektant rozumie co projektuje to jesteśmy w zgodzie. Zwracam uwagę, że na architekturze (rysunek to kluczowy element egzaminu wstępnego) do najważniejszych przedmiotów nalezą także materiałoznawstwo i mechanika...

Taka mała analogia, ale obrazująca to, co miałem na myśli - komunikacja obustronna. Analityk/projektant powinien brać pod uwagę także głos strony wykonawczej projektu.

Oczywiście ale to powinna być wzajemna konsultacja a nie "ja wiem lepiej".
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: projektowanie a programowanie...

Adrian Olszewski:
Zgadzam się z Wami wszystkimi.
[...]
Ale pod następującymi warunkami...

Oczywiście, nie zapominamy o kompetencjach ale niezależnie od doświadczeń każdego z nas, warto w konkretnym projekcie ustalić rolę: jeżeli ktoś odpowiada za etap powstania analizy i projektu wymagań, to nawet gdyby był wcześniej 20 lat programistą w tym projekcie słucha się osoby pełniącej w tym projekcie role programisty i odpowiada tylko gdy jest pytany. Osoba programisty powinna uszanować cudze 20letnie doświadczenie i "czasem" zapytać, ale odpowiedź na cudze pytanie nie jest tożsama z podjętą za kogoś decyzją :)

Swego czasu "życie" zmusiło mnie w projekcie to desperackiego kroku: każdemu napisałem kartkę z rola i postawiłem na stole: Analityk, Kierownik projektu, wykonawca (deweloper) i emocje opadły - jawna jednoosobowa odpowiedzialność uczy pokory...
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: projektowanie a programowanie...

Nie będę ukrywał, ze artykuł powstał po kilku dyskusjach ale także po wspomnieniach po kilku projektach... te doświadczenia po pierwsze nauczyły mnie, że trzeba definiować role i etapy projektu (nawet jak ktoś zechce go nazwać Agile/SCRUM) po drugie należy postawić progowe wymagania dla każdej roli i nie godzić się na udział w projekcie kogoś (zespołu) kto tych wymagań nie spełnia. To, że ktoś chce mniejsze pieniądze raczej wróży żal i kłopoty niż radość marży.

Temat: projektowanie a programowanie...

Jarek Żeliński:
odpowiada tylko gdy jest pytany.

I bardzo dobrze! Pod warunkiem, że będzie zapytany. Zakładam, iż reszta zespołu została przez niego poinformowana o jego doświadczeniu branżowym w danej dziedzinie i jest świadoma, iż bez współpracy analityk-inżynier może dojść do znacznych strat, ponieważ ego analityka lub inżyniera nie pozwoliło mu zapytać pozostałych członków zespołu "czy macie jakieś uwagi?".
Osoba programisty powinna uszanować cudze 20letnie doświadczenie

Ależ tu nawet nie chodzi o "kurtuzayjne uszanowanie".

Proszę sobie wyobrazić podobny przykład współpracy (z mojej działki) lekarz-analityk danych. Żaden nie ma obowiązku uznawać sugestii drugiej strony. Ale nie robiąc tego może dużo stracić. Podobnie - obaj mogą posiadać nieco wiedzy z "przeciwnej strony barykady" - lekarz może liznąć statystyki, a statystyk zrozumieć pewne mechanizmy biologiczne. W końcu ani statystyka ani medycyna nie są naukami "zakazanymi śmiertelnikom", książki i materiały są ogólnodostępne.

Zadajmy pytania:

1. Czy lekarz może zignorować uwagi statystyka odnośnie stosowanych metod matematycznych? No pewnie - najwyżej recenzent "uwali" mu artykuł, być może efekt wieloletniej pracy i drogich badań.

2. Czy statystyk może zignorować uwagi lekarza w zakresie medycyny? No pewnie, najwyżej pominie istotne informacje i jakość opracowania będzie nieadekwatna do tego, co można było z danych wyciągnąć.

3. Czy lekarz może zwrócić uwagę statystykowi na temat stosowanych przez niego metod statystycznych? Owszem i wręcz powinien to zrobić w razie potrzeby, bo w końcu to lekarz wie, jakie są normy w środowisku medycznym. Statystyk, jeśli nie siedzi w tej działce, powinien posłuchać tutaj lekarza, bo inaczej praca obu będzie do kosza, gdyż uwali ją recenzent.

4. Czy statystyk może zwrócić uwagę lekarzowi w zakresie zagadnień medycznych? A i owszem. Jeśli brał udział w podobnych tematycznie badaniach i wzięto tam pod uwagę czynniki, których ten lekarz nie bierze, to bezpiecznie będzie zapytać "panie doktorze, czy to, iż nie bierze pan pod uwagę czynników A, B i C jest zamierzonym przez pana działaniem?". Jeśli lekarz oznajmi, że owszem, robi to świadomie, to informatykowi już nic do tego (to już sprawa lekarza, czy robi to świadomie, czy wstydzi się przyznać do niekompetencji). Jeśli lekarz stwierdzi, ze "o kurna, ale by była wtopa", to powinien statystykowi kupić butelkę Jaśka Wędrowniczka, że ten mu uratował tyłek.

Oczywiście wiemy, że - podobnie jak to jest w IT - zarówno statystyk jak i lekarz nie są osobami skorymi do współpracy i przyznawania się do błędów, czy "słuchania drugiej strony".
i "czasem" zapytać, ale odpowiedź na cudze pytanie nie jest tożsama z podjętą za kogoś decyzją :)

Ale przynajmniej zapytano.

A jeśli inżynier widzi, że nikt go nie pyta, a sprawa idzie w złą stronę, jest w ciężkiej sytuacji. Bo albo rzuci projektem i pieniędzmi, albo będzie firmował dziadostwo swoim nazwiskiem i karierą... A jeśli zgodzi się na to drugie, to trudno oczekiwać od niego bycia zmotywowanym i gotowym do działania... A może właśnie wszystko jest OK, ale wskutek braku wymiany informacji inżynier czegoś nie zrozumiał i dlatego się "dąsa"?
Swego czasu "życie" zmusiło mnie w projekcie to desperackiego kroku: każdemu napisałem kartkę z rola i postawiłem na stole: Analityk, Kierownik projektu, wykonawca (deweloper) i emocje opadły - jawna jednoosobowa odpowiedzialność uczy pokory...

Owszem, to znana i stosowana metoda. W małych firmach robi się wszystko, w dużych można sobie pozwolić na specjalizację. Ale jeśli specjalizacja oznacza również izolację informacyjną, to ja temu nie wróżę sukcesów.

Rolą PMa powinno być tutaj odpytanie wszystkich zaangażowanych w proces powstawania produktu stron i zapewnienie przepływu informacji na etapie projektów. A potem ich "przybicia i zamrożenia" (o ile nie wyjdzie coś dramatycznego "w praniu") i egzekwowania od każdego tego, za co odpowiada.

Byle nie było potem:
- bo pan mi nie powiedział!
- aaa, bo pan nie pytał...
Adrian Olszewski edytował(a) ten post dnia 04.06.11 o godzinie 20:44
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: projektowanie a programowanie...

bo chodzi o elementarny, wzajemny szacunek :) ale też uznanie tego, za co i kto odpowiada i to także należy uszanować ;)

po trzecie decydujący może ale nie musi ujawniać całej swojej wiedzy o projekcie... więc należy także po protu zaufać... za wszytko odpowiada i tak menedżer zleceniodawca
Jacek Rybicki

Jacek Rybicki Senior Project
Manager

Temat: projektowanie a programowanie...

Jeżeli merytorycznie podbudowana różnica poglądów trwa dłużej niż kilka minut i nie kończy się "ok, masz rację" albo "odłóżmy decyzję aż do sprawdzenia A, B, C", to coś nie gra. Może temat sporu zahacza o tematykę "religijną", gdy jeszcze strony wpadną w żar: czy tłuczemy jajko z grubego czy cienkiego końca, jaki język, patern zastosować w danym miejscu...
Groźniejsze jednak jest zacietrzewienie wynikające z poczucia tego, że rozmówca nie szanuje moich poglądów, nie szanuje mnie i właściwie to nawet nie słucha. Dodając do tego sztuczne podziały, kolejność dziobania, fromalne ścieżki komunikacji, odpowiedzialność za wycinek a poza tym morda w kubeł...

Cała lista ryzyk dla projektu. Rozumiem, że pasmo ciągłych sukcesów nie zmusza do refleksji. Ale nawet z porażki nauczka będzie niewielka, bo przecież zawini człowiek. Jeden, którego można wskazać i wyeliminować. Reszta będzie tym bardziej siedzieć cicho i wykonywać swoje obowiązki, zgodnie z wytycznymi.
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: projektowanie a programowanie...

Jacek Rybicki:
Jeżeli merytorycznie podbudowana różnica poglądów trwa dłużej niż kilka minut i nie kończy się "ok, masz rację" albo "odłóżmy decyzję aż do sprawdzenia A, B, C", to coś nie gra.

zdarzało mi się, że większy projekt był dzielony na podsystemy między innymi po to by żaden wykonawca nie dysponował "całym pomysłem", każdy miał model części której celu istnienia (a co za tym idzie koncepcji projektu) do końca nie rozumiał i miał go zaimplementować, nie muszę się spowiadać z koncepcji całości zlecając komuś jeden podsystem.

po drugie jak sobie walne szlaczek w poprzek dla zabawy to wykonawcy nic do tego, ma wykonać a nie dyskutować z moim gustem w łazience... owszem ciesze się, gdy wykaże zainteresowanie ale jego zdanie pozostanie cudzą opinią a nie kontrprojektem.

Temat: projektowanie a programowanie...

Ponieważ jednak w projekcie ewentualne problemy wynikające z "hermetyzacji wiedzy" spadają na wszystkich, nie powinno być tak, że analityk rzuci temat "komunikacja synchroniczna" i wszyscy bezkrytycznie koło tego przejdą, bo przecież nic nikomu do tego, co on wymyślił. Wymyślił, napisał, klepnął - macie wykonać i wykafelkować łazienkę wg tego projektu. To nie jest jego łazienka, gdzie w razie czego on sam poniesie konsekwencje swoich decyzji. Owszem, on jest ekspertem, którego zdanie jest kluczowe, po to został powołany, ale nie oznacza, iż jest nieomylny. Dlatego właśnie pomiędzy wszystkimi biurkami powinien tkwić koordynator, który zapewni wymianę uwag. Nie chodzi tu o podważanie kompetencji, a jedynie upewnienie się, że decyzja eksperta jest wykonalna w funkcji przyjętych ograniczeń.

Taka czysto "jednostkowa odpowiedzialność" ma także pewną wadę. W razie problemów osoba na każdy odcinku może założyć ręce i powiedzieć "pierniczę, nie robię, specyfikacja jest bzdurna, idę na fajkę i co mi zrobicie?". Proszę mi to poprawić. Pewnie, można iść spiralą, ale przynajmniej kilka okrążeń można umniejszyć zapewniając przepływ informacji. Nie oznacza to podważania wiedzy eksperta.

Chyba, że analizy pochodzi z zewnętrznej firmy, która wydaje konkretny produkt, a niech się potem martwi firma wykonawcza. I koordynator zespołów.

I o ile jeszcze mówimy tylko o projektowaniu modelu dziedziny, przepływu informacji, diagramowania - to spoko. To są kwestie niezależne (a przynajmniej nie powinny być) od technologii implementacji. Chociaż w jednym narzędziu coś można wykonać łatwiej, w innym wymaga to wiele roboty i naturalnym jest, że w pewnym momencie trzeba już uwzględnić technologię, z której będzie się korzystać. Nie ma tego problemu, jeśli projekt będzie pisany od zera - najpierw analiza, potem projekt (i wtedy się wybierze narzędzia). Jeśli jednak dorabia się coś do istniejących projektów, frameworków, infrastruktur - no to jest poważny problem.

Analityk analitykowi nie równy i często analitycy wchodzą w kompetencje inżynierów, brnąc w "technikalia". Jeśli więc analitycy pieklą się, że inżynierowie wchodzą im w kompetencje, to to działa także w drugą stronę :)
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: projektowanie a programowanie...

Adrian Olszewski:
Ponieważ jednak w projekcie ewentualne problemy wynikające z "hermetyzacji wiedzy" spadają na wszystkich, nie powinno być tak, że analityk rzuci temat "komunikacja synchroniczna" i wszyscy bezkrytycznie koło tego przejdą, bo przecież nic nikomu do tego, co on wymyślił.

podałeś właśnie doskonały przykład brakoroba. Analityk ma napisać co jest potrzebne, komu i do czego. Polecam dwa pytania do każdego zdania takiego "analityka": Co to oznacza? oraz Skąd to wiemy?
Wymyślił, napisał, klepnął - macie wykonać i wykafelkować łazienkę wg tego projektu. To nie jest jego łazienka, gdzie w razie czego on sam poniesie konsekwencje swoich decyzji.

kolejny brakorób analityk: a dlaczego nie poniesie konsekwencji? Wziął kasę i uciekł???

Owszem, on jest ekspertem, którego zdanie jest kluczowe, po to został powołany, ale nie oznacza, iż jest nieomylny.

Analityk, tak samo jak każdy inny: kierownik projektu czy programista podlega potencjalnemu audytowi. Jak się komuś nie podoba analityk (a raczej to co napisał) to należy to poddać audytowi. problem w tym, ze audytowi można poddać tylko coś do czego można jakiś standard przyłożyć lub dobrze spisany zakres projektu. Po to powstały PMI czy Prince by w przypadku wątpliwości można było sprawdzić czy PM stosuje jakieś sprawdzone praktyki a nie tylko swoje widzimisię.

W przeciwnym wypadku PM będzie poddawał w wątpliwość zakres pracy analityka a analityk sposób zarządzania projektem, to jest anarchia i bałagan.... a nie projekt. Pisząc o rolach w projekcie mam na myśli nietylkalność KAŻDEGO eksperta a nie tylko swoją.

Dlatego właśnie pomiędzy wszystkimi biurkami powinien tkwić koordynator, który zapewni wymianę uwag.

megafon???
Nie chodzi tu o podważanie kompetencji, a jedynie upewnienie się, że decyzja eksperta jest wykonalna w funkcji przyjętych ograniczeń.

są zawsze dwie odpowiedzi: kiepski analityk przesadził z projektem albo kiepski programista nie radzi sobie z implementacją, kto to rozsądzi?

Taka czysto "jednostkowa odpowiedzialność" ma także pewną wadę. W razie problemów osoba na każdy odcinku może założyć ręce i powiedzieć "pierniczę, nie robię, specyfikacja jest bzdurna, idę na fajkę i co mi zrobicie?". Proszę mi to poprawić. Pewnie, można iść spiralą, ale przynajmniej kilka okrążeń można umniejszyć zapewniając przepływ informacji. Nie oznacza to podważania wiedzy eksperta.

Nie może tak powiedzieć bo podlega PMowi, swojemu szefowi który w skrajnym wypadku wywali go z roboty i przyjmie nowego.
Chyba, że analizy pochodzi z zewnętrznej firmy, która wydaje konkretny produkt, a niech się potem martwi firma wykonawcza. I koordynator zespołów.

to akurat jest chora sytuacja.. :)
I o ile jeszcze mówimy tylko o projektowaniu modelu dziedziny, przepływu informacji, diagramowania - to spoko. To są kwestie niezależne (a przynajmniej nie powinny być) od technologii implementacji.

Ufff, ano :)

Chociaż w jednym narzędziu coś można wykonać łatwiej, w innym wymaga to wiele roboty i naturalnym jest, że w pewnym momencie trzeba już uwzględnić technologię, z której będzie się korzystać.

Stop: jak ktoś ma "to droższe narzędzie" to przegra przetarg, jak nakłamał w przetargu z ceną to ma problem.

Nie ma tego problemu, jeśli projekt będzie pisany od zera - najpierw analiza, potem projekt (i wtedy się wybierze narzędzia). Jeśli jednak dorabia się coś do istniejących projektów, frameworków, infrastruktur - no to jest poważny problem.

jak owe "istniejące" są nieudokumentowane to jest problem... a jak są to projekt je uwzględni...

Analityk analitykowi nie równy i często analitycy wchodzą w kompetencje inżynierów, brnąc w "technikalia". Jeśli więc analitycy pieklą się, że inżynierowie wchodzą im w kompetencje, to to działa także w drugą stronę :)

Ogólnie jest to chyba właśnie efekt braku ustalać "kim kto jest"... dlatego warto iść w standardy...
Maciej Lasek

Maciej Lasek Programowanie Bazy
Oracle

Temat: projektowanie a programowanie...

Zadam pytanie kto to analityk a kto to inżynier?

Analityk to podklasa inżyniera jak programista, projektant.
Analityk to podklasa magister.

I tak analityk dziedziczyć może po nadklase Uniwersytek, lub Politechnika.

A jak wszyscy wiedzą Uniwersytet to model teoretyczny, a Politechnika model teoretyczny osadzony w dziedzinie, która ma warunki brzegowe.

Jak analityk dziedziczy po Politechnice to jeszcze jakoś dogada się z programistą, ale jak analityk dziedziczy po Uniwersytecie to dogadania nie będzie. Dlatego bardzo ważną osobą jest projektant, który wykona projekt, tak aby program realizował reguły z dziedziny analizy zagadnienia.

Bardzo często pozycja projektanta jest łączony z pozycją analityka lub pozycją programisty. A projektant to pozycja dla osobnej osoby. Czyli analitak - projektant - programista.
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: projektowanie a programowanie...

Maciej Lasek:
Zadam pytanie kto to analityk a kto to inżynier?

Analityk to podklasa inżyniera jak programista, projektant.
Analityk to podklasa magister.

I tak analityk dziedziczyć może po nadklase Uniwersytek, lub Politechnika.

wybacz ale powyższe to bełkot, osoba nie dziedziczy ani po budynku ani po organizacji jaką jest Politechnika (tak samo jak telefonistka nie dziedziczy po telefonie)

jeżeli iść tą drogą to:

-osoba rola w projekcie: coś potrafi, ma pewne kompetencje: ma metodę "podaj proponowane rozwiązanie (opis problemu)", jeżeli opis problemu nie mieści się w zakresie kompetencji zgłasza błąd

Po tej abstrakcyjnej klasie dziedziczą:
- kierownik projektu
- analityk projektant
- architekt deweloper

Podział na dwie kluczowe role w projekcie programistycznym opisałem tu:
http://it-consulting.pl/autoinstalator/wordpress/index...Jarek Żeliński edytował(a) ten post dnia 07.06.11 o godzinie 06:53
Aleksander Olszewski

Aleksander Olszewski Kierownik Projektów
IT, PRINCE2
Practitioner

Temat: projektowanie a programowanie...

Mam wrażenie, że dyskusja znów nieco odbiegła w tym wątku od głównego tematu. Problem jest jak zwykle wieloaspektowy, a wypowiedzi niektórych uczestników dyskusji jak zwykle zaczynają podążać w kierunku piaskownicy i wiaderka.

Na wstępnie muszę przyznać, że artykuł mi się spodobał. Z niektórymi tezami, takimi jak bazy danych i ich normalizacja, nie zgodzę się. Również trzeba zaznaczyć, że dyskusje inżyniera z analitykiem z reguły powstają w środowisku niskiego zaufania. Jest to chyba największa bolączka polskich firm informatycznych oraz siłą rozpędu polskich filii korporacji zagranicznych (zdaję sobie sprawę że mocno uogólniam).

Wracając do sedna sprawy, zapomnieliśmy chyba o dwóch chyba najważniejszych rolach w projekcie: klienta i architekta. Inżynier nie rozmawia bezpośrednio z klientem (są od tego odstępstwa: np. XP, małe firmy itp.). Pamiętajmy, ze to właśnie klient daje żywą gotówkę na pensje inżyniera i analityka. I to zasadniczo bez znaczenia czy to klient zewnętrzny, czy wewnętrzny. Przy ustawionym Governance różnice te zacierają się.

Tak więc klient z reguły oczekuje, że ktoś z nim porozmawia po ludzku bez TLS i CLS. Tak więc gdy nie możemy osiągnąć zaangażowania decyzyjnego klienta w wymiarze 8/5 musi nam wystarczyć analityk. Zadaniem analityka jest zebranie wymagań klienta w formie którą klient preferował (zwykle słowno-ustną) oraz przetłumaczenie tego na terminy wymagań funkcjonalnych i niefunkcjonalnych oraz stworzenie modelu dziedziny biznesu.

Jak zatem ten model dziedziny biznesu ma się do implementacji? Otóż tak, że ma być zaimplementowany i koniec. To analityk wszystko to co klient chciał, za co zapłacił, zawarł w tym modelu. To analityk podczas analizy powinien rozpoznać panujące standardy (z reguły rozmaite ISO) i zaproponować odpowiednie rozwiązania.

Jak to się ma do architekta? Architekt pilnuje spójności architektury SI. Owszem fajny jest powszechnie stosowany wzorzec projektowy MVC, ale zapominamy o większej całości. Obecnie, z reguły w tle, nieświadomie używamy trójwarstwowego wzorca architektonicznego. Prawda jest taka, że rozszerzamy go o kolejne kilka warstw: warstwę systemową (ten nasz ulubiony framework do którego tak bardzo przyzwyczailiśmy się, że już o nim nie pamiętamy oraz często warstwa SOA, gdzie my równie beztrosko korzystamy z jej dobrodziejstw).

Tak więc wracając do sedna, analityk powinien rozmawiać raczej z architektem, czy rozwiązanie, które proponuje jest spójne z przyjęta architekturą. Również inżynier może zgłaszać ewentualne zastrzeżenia architektowi. Prawda jest taka, że to właśnie architekt ogarnia całość i firmuje cele nadrzędne.

Tak jak wspominałem wcześniej, rzeczywistość jest bardziej skomplikowania. Pominąłem tu rolę projektanta i milcząca przyjąłem, że analityk jest również projektantem. Również przyjmuję, że architekt, inżynier i analityk znają swój fach. Jeśli jest inaczej --- proponuję po prostu zamknąć ten wątek i już do niego nie wracać.

P.S. Na koniec wyjaśnię oznaczenia: TrzyLiterowy Skrótowiec (TLS) i CzteroLiterowy Skrótowiec (CLS).

Temat: projektowanie a programowanie...

Na marginesie, bo widzę, że są tu różnice, warto ustalić, co kto rozumie pod pojęciem inżynier, projektant, architekt, analityk.

W trakcie mojej praktyki zawodowej (czyli patrząc po firmach, w których pracowałem oraz z którymi współpracowałem) zauważyłem, że stanowiska inżyniera i projektanta (zwanego często architektem) są na ogół łączone, tzn. jedna osoba pełni obie funkcje. Chociaż funkcjonuje formalne rozgraniczenie: inżynier - ten "bliżej żelaza", architekt - ten "bliżej abstrakcji" i "układania z klocków" infrastruktury. Natomiast rzadko spotykałem się z podejściem, że projektant jest analitykiem (choć dla mnie akurat brzmi to naturalnie). Ten od "analiz funkcjonalnych" był analitykiem, ten od całej reszty - projektantem bądź inżynierem.

Co prawda wnosi to niewiele do dyskusji w kwestii wchodzenia w kompetencje analityka, ale skoro już pojawił się rozbieżności na temat tego, kim kto jest, można by to ustalić. Ostatecznie nie mówimy tylko o dużych korporacjach, gdzie każdy trybik ma swoje miejsce, ale chyba staramy się uogólnić zagadnienie także na średnie i mniejsze firmy (ale bez popadania w paranoję 5 osobowej firmy, gdzie każdy jest człowiekiem orkiestrą), gdzie część funkcji się łączy.Adrian Olszewski edytował(a) ten post dnia 07.06.11 o godzinie 12:29
Wojciech Soczyński

Wojciech Soczyński Programista
eksplorator -
blog.wsoczynski.pl

Temat: projektowanie a programowanie...

Maciej Lasek:
Zadam pytanie kto to analityk a kto to inżynier?

Analityk to podklasa inżyniera jak programista, projektant.
Analityk to podklasa magister.

I tak analityk dziedziczyć może po nadklase Uniwersytek, lub Politechnika.

A jak wszyscy wiedzą Uniwersytet to model teoretyczny, a Politechnika model teoretyczny osadzony w dziedzinie, która ma warunki brzegowe.

Jak analityk dziedziczy po Politechnice to jeszcze jakoś dogada się z programistą, ale jak analityk dziedziczy po Uniwersytecie to dogadania nie będzie. Dlatego bardzo ważną osobą jest projektant, który wykona projekt, tak aby program realizował reguły z dziedziny analizy zagadnienia.

Bardzo często pozycja projektanta jest łączony z pozycją analityka lub pozycją programisty. A projektant to pozycja dla osobnej osoby. Czyli analitak - projektant - programista.

Nawet ja, skromny programista wiem, że Analityk dziedziczący po klasie Uniwersytet to jakaś totalna bzdura :P

Temat: projektowanie a programowanie...

Wojciech Soczyński:
Nawet ja, skromny programista wiem, że Analityk dziedziczący po klasie Uniwersytet to jakaś totalna bzdura :P

Analityk mógł kończyć informatykę na uniwersytecie ;)
Wojciech Soczyński

Wojciech Soczyński Programista
eksplorator -
blog.wsoczynski.pl

Temat: projektowanie a programowanie...

Adrian Olszewski:
Wojciech Soczyński:
Nawet ja, skromny programista wiem, że Analityk dziedziczący po klasie Uniwersytet to jakaś totalna bzdura :P

Analityk mógł kończyć informatykę na uniwersytecie ;)

Nie spieram się z tym, natomiast mówiąc o klasach w ujęciu obiektowym to taka relacja, że analityk jest podklasą uniwersytetu to sam nie wiem jak to nazwać :P

Następna dyskusja:

FAQ Projektowanie i program...




Wyślij zaproszenie do