<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>webbricks &#187; zarządzanie projektem</title>
	<atom:link href="http://blog.grzegorzpawlik.com/tag/zarzadzanie-projektem/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.grzegorzpawlik.com</link>
	<description>Doświadczenie, to coś, co zdobywamy tuż po chwili w której było nam potrzebne ...</description>
	<lastBuildDate>Tue, 07 Feb 2012 10:09:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Utrzymanie jakości kodu</title>
		<link>http://blog.grzegorzpawlik.com/2010/10/utrzymanie-jakosci-kodu/</link>
		<comments>http://blog.grzegorzpawlik.com/2010/10/utrzymanie-jakosci-kodu/#comments</comments>
		<pubDate>Fri, 15 Oct 2010 13:49:02 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[jakość oprogramowania]]></category>
		<category><![CDATA[QA]]></category>
		<category><![CDATA[software quality]]></category>
		<category><![CDATA[zarządzanie projektem]]></category>

		<guid isPermaLink="false">http://blog.grzegorzpawlik.com/?p=1379</guid>
		<description><![CDATA[Właśnie uświadomiłem sobie, że utrzymanie wysokiej jakości kodu to jest ciągła praca. Wiem, że brzmi to może jak banał, ale to nie jest jakaś wytyczna ustalona raz na początku projektu. Zrozumienie tego zajęło mi 4 lata. Nie możesz się umówić, &#8230; <a href="http://blog.grzegorzpawlik.com/2010/10/utrzymanie-jakosci-kodu/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Właśnie uświadomiłem sobie, że utrzymanie wysokiej jakości kodu to jest <strong>ciągła praca</strong>.</p>
<p>Wiem, że brzmi to może jak banał, ale to nie jest jakaś wytyczna ustalona raz na początku projektu. Zrozumienie tego zajęło mi 4 lata. Nie możesz się umówić, że od teraz, od tego projektu, od tej funkcji będziesz pisał kod wysokiej jakości.</p>
<p>Możesz umówić się, że będziesz pisał kod o jakości najlepszej na jaką Cię w tym momencie stać.</p>
<p><span id="more-1379"></span></p>
<p>Jednak w międzyczasie nauczysz się czegoś nowego. Wysokiej jakości kodu to taki, którego <strong>jakość rośnie ciągle</strong>. Nie tylko wraz z dodawaniem nowych linii. Również trafiając na kod z przed roku warto pochylić się nad nim.</p>
<p>Czy masz zespół, który stosuje <a href="http://97rzeczy.devblogi.pl/artykuly/8/zasada-skautow">zasadę skautów</a>?</p>
<p>Chciałbyś być członkiem takiego zespołu?</p>
<p>Jak zawsze &#8211; staraj się myśleć, żeby nie popaść w <a href="http://www.devblogi.pl/2010/05/pozacanie.html">przesadę</a>.</p>
<hr/>
A to wszystko doszło do mnie, gdy próbowałem w projekcie rozładować trochę powiązania między kontrolerami, gdzie ajaxowa lista kierowców generowana była w kontrolerze/akcji cars/list_drivers ;)</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.grzegorzpawlik.com/2010/10/utrzymanie-jakosci-kodu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jesteś bardziej komandosem, czy wartownikiem?</title>
		<link>http://blog.grzegorzpawlik.com/2010/04/jestes-bardziej-komandosem-czy-wartownikiem/</link>
		<comments>http://blog.grzegorzpawlik.com/2010/04/jestes-bardziej-komandosem-czy-wartownikiem/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 19:54:57 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
				<category><![CDATA[Inne]]></category>
		<category><![CDATA[role w projekcie]]></category>
		<category><![CDATA[zarządzanie projektem]]></category>

		<guid isPermaLink="false">http://blog.grzegorzpawlik.com/?p=912</guid>
		<description><![CDATA[W trakcie krótkiej przerwy na froncie zmagań z RoR i Ultrasphinx naszła mnie pewna refleksja. Wyobraź sobie dwa typy osobowości, dwa ekstrema. Z jednej strony masz &#8220;komandosa&#8221;, człowieka do zadań specjalnych, który jest w stanie pracować nad trudnym problemem godzinami &#8230; <a href="http://blog.grzegorzpawlik.com/2010/04/jestes-bardziej-komandosem-czy-wartownikiem/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>W trakcie krótkiej przerwy na froncie zmagań z <a href="http://rubyonrails.org/">RoR</a> i <a href="http://blog.evanweaver.com/files/doc/fauna/ultrasphinx/files/README.html">Ultrasphinx</a> naszła mnie pewna refleksja.</p>
<p>Wyobraź sobie dwa typy osobowości, dwa ekstrema.<br />
Z jednej strony masz &#8220;komandosa&#8221;, człowieka do zadań specjalnych, który jest w stanie pracować nad trudnym problemem godzinami i dążyć do celu długo po tym jak inni się poddali.<br />
<div id="attachment_914" class="wp-caption alignright" style="width: 310px"><a href="http://blog.grzegorzpawlik.com/wp-content/uploads/2010/04/commando1.jpg" rel="lightbox[912]" title="Możliwe, że ten biedak w ogóle nie nadawał się do roli wartownik"><img src="http://blog.grzegorzpawlik.com/wp-content/uploads/2010/04/commando1-300x166.jpg" alt="commando" title="Możliwe, że ten biedak w ogóle nie nadawał się do roli wartownik" width="300" height="166" class="size-medium wp-image-914" /></a><p class="wp-caption-text">Komandos vs. komandos na warcie</p></div><br />
Drugi biegun to &#8220;wartownik&#8221; czyli spec od zadań żmudnych, który potrafi utrzymać skupienie na niezbyt fascynującym jednak bardzo istotnym zajęciu. </p>
<p>To oczywiście są dwa punkty między którymi rozciąga się kontinuum zawierające mieszanki tych dwóch składników we wszystkich możliwych proporcjach. Jeśli 0 to komandos, a 1 wartownik to 0.75 to ktoś u kogo znacznie przeważają właściwości wartownika.</p>
<p>Idąc dalej trzymając się bitewnej analogii spójrz na swój projekt. Na pewno znajdziesz tam mnóstwo zadań dla wartowników. Z pewnością pojawiają się przeszkody o rozwiązywaniu których aż marzą komandosi. </p>
<p>Śmiem twierdzić, że każdy z tych typów osobowości naturalnie ulokuje się na pozycji, która jest dla niego naturalna. Ludzie nawet nieświadomie zarządzają swoimi zadaniami, a środowisko wytworzone przez członków zespołu przesuwa odpowiednie zadania do odpowiednich ludzi. </p>
<p>Upewnij się tylko, że nie zaburzasz tej samoorganizacji. Czasem pojawiają się pomysły, że ludzie za bardzo się specjalizują i może wymusić rotację, aby wszyscy w efekcie zajęli się każdym rodzajem zadania. Zastanów się czy warto. Z pewnością nie chcesz aby irytować swoich komandosów i wartowników.</p>
<p>Wpisz koniecznie w komentarzu jaką mieszanką jesteś.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.grzegorzpawlik.com/2010/04/jestes-bardziej-komandosem-czy-wartownikiem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automatyzuj co się da</title>
		<link>http://blog.grzegorzpawlik.com/2009/12/automatyzuj-co-sie-da/</link>
		<comments>http://blog.grzegorzpawlik.com/2009/12/automatyzuj-co-sie-da/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 11:17:12 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[zarządzanie projektem]]></category>

		<guid isPermaLink="false">http://blog.grzegorzpawlik.com/?p=538</guid>
		<description><![CDATA[Po przygodnie z promocją bloga za pomocą Wave&#8217;a wracam do głównej tematyki. Z uwagi na to, że jest sobota &#8211; znalazłem trochę czasu na obszerniejszy tekst. Mam nadzieję, ze Wam też uda się znaleźć czas na jego przeczytanie. Mam nadzieję &#8230; <a href="http://blog.grzegorzpawlik.com/2009/12/automatyzuj-co-sie-da/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<blockquote><p>Po przygodnie z promocją bloga za pomocą Wave&#8217;a wracam do głównej tematyki. Z uwagi na to, że jest sobota &#8211; znalazłem trochę czasu na obszerniejszy tekst. Mam nadzieję, ze Wam też uda się znaleźć czas na jego przeczytanie. Mam nadzieję też na ciekawą dyskusję.</p></blockquote>
<p>No, może nie wszystko, ale to co Ty jako programista, albo Twój zespół programistów robi ręcznie.</p>
<p>Piszę tu w kontekście programowania w php &#8211; niestety czasem musimy nadganiać innych. Mam wrażenie, że php jest traktowany jako język &#8220;przejściowy&#8221; &#8211; jednak można przy jego pomocy robić rzeczy naprawdę dobre i przydatne. Ale to temat na inny wpis.</p>
<p>Postaram się podać kilka obszarów, w których automatyzacja może stać się Twoim przyjacielem.</p>
<h3>Struktura bazy danych</h3>
<p>Odpowiedz sobie na dwa pytania: czy nad moim projektem pracuje tylko jedne osoba? czy mam ustaloną i zaprojektowaną strukturę bazy danych przed rozpoczęciem projektu, której nie zmienię, choćby klient chciał zapłacić mi milion dolarów za dodanie systemu komentarzy?</p>
<p>Jeśli odpowiedź na nie brzmi &#8216;nie&#8217; &#8211; zastanów się nad automatyzacją aktualizacji struktury bazy danych. I nie chodzi mi o problem migracji, który <a href="/?p=62">próbowałem ugryźć</a>, a który okazuje się być dość skomplikowany. Napisałem nawet <a href="/?p=248">MySchemaShell </a>i radził on sobie z migracją, dopóki nie zaczęły się zmieniać indeksy- straciłem do niego serce.</p>
<p>Okazuje się, że skomplikowana migracja nie jest potrzebna (pod warunkiem, że masz też dane &#8220;startowe&#8221; o czym poniżej). Okazało się, że wystarczy napisać prosty skrypt, który zrobi drop&#8217;a wszystkich tabel w bazie, a potem utworzy je na nowo. Przy czystej bazie danych MySchemaShell radzi sobie świetnie.</p>
<h3>Zawartość bazy danych</h3>
<p>Ten element łączy się z poprzednim. Bardzo żadko zdarza się, żeby aplikacja internetowa, którą piszesz obywała sie bez jakichkolwiek danych w bazie. Często bywa tak, że do staru aplikacja potrzebuje danych w bazie. Choćby reguł dla ACLi, czy innych rzeczy (zależą one często od rozwiązań, jakie stosujesz). Wypełnianie tych rzeczy jest strasznie upierdliwe. Robisz svn update, wchodzisz na strone &#8211; &#8220;Missing database&#8221;. Dodasz tą bazę &#8211; &#8220;Brak uprawnień ACL&#8221;, dodajesz uprawnienia &#8211; jakieśtam drzewo się nie generuje, bo w bazie nie ma głównego elementu (root) itd. W gorszym dniu zanim zabierzesz się do pracy masz już ochotę na godzinę sam-na-sam z workiem treningowym &#8211; tak Cię rozszadza. Szkoda na to czasu. Lepiej napisać najprosztszy mechanizm, który jedną komendą wypełni Ci bazę danymi startowymi. Jeśli taki masz &#8211; możesz się nie przejmować migracją bazy danych. Możesz jej strzelić DROPa i stworzyć na nowo i odpalić wypełnianie danych.</p>
<p>Tutaj obojętne jest w jaki sposób to rozwiążesz. Mogą to być zwykłe pliki sql, jeśli na prawdę nie masz czasu. Ja osobicie wolę rozwiązania niezaleźne od engine&#8217;u bazy danych. Dlatego dla struktury używam <a href="../2009/06/myschemashell/">MySchemaShell</a> (zmodyfikowany cake&#8217;owy SchemaShell). A dla danych startowych też skryptu Shell&#8217;owego który zwyczajnie wykonuje save na odpowiednich modelach<del datetime="2009-12-10T10:52:34+00:00">, niedługo postaram się go wrzucić na tego bloga</del>. Jeśli jesteś zainteresowany praktycznym przykładem przeczytaj o tym <a href="/?p=544">w jaki sposób automatyzuję instalację w aktualnym projekcie</a>.</p>
<h3>Testy czarnej skrzynki</h3>
<p>Czyli testy od strony interfejsu. Bardzo prosto jest je wykonać z odpowiednim narzędziem. My używamy <a href="http://seleniumhq.org/">Selenium</a>. Często jest tak, że &#8220;trzeba by przeklikać&#8221; system i sprawdzić, czy się nie sypie. To jest praca dla odpowiednio wytresowoanej małpki, więc szkoda na to Twoich programistów. Małpki są pod ochroną, a tresowanie nie jest takie proste jak zainstalowanie selenium &#8211; wybór jest więc prosty. Selenium za Ciebie przeklika całą aplikację. Trochę to trwa, więc nie ma co tych testów odpalać przed każdym commitem. Ale raz na iterację (zaraz się dowiesz kiedy dokładnie) warto odpalić wszystkie.</p>
<h3>Unit testy</h3>
<p>Gdy pierwszy raz się z nimi zetknąłem zrezygnowałem, bo testy kontrolerów i widoków były etdy koszmarem. Nie wiem, czy dalej są. Ale stosując zasadę, że &#8220;wszystko jest sztuką możliwego&#8221; doszliśmy do konkluzji, że wystarczą nam testy tylko w modelach. I nawet nie potrzebujemy 100% pokrycia kodu w tychże. Stosujemy unit testy w dla skomplikowanych reguł walidacyjnych i ogólnie wszędzie tam, gdzie dana funkcja jest skomplikowana. Na przykład, gdy chcemy powiązać element A z B (habtm), gdzie w powiązaniu istnieją daty. Daty danego powiązania nie mogą się zazębiać + jeszcze kilka skomplikowanych reguł biznesowych.</p>
<p>Oczywiście takie metody można napisać i bez unit testów (i <a href="http://blog.grzegorzpawlik.com/tag/tdd/">TDD</a>), ale w momencie kiedy nam się to uda &#8211; jedynym dowódem, że robią to co mają robić jest nasze przeświadczenie, że rozpatrzyliśmy wszystkie warunki. Poza tym, gdzy warunki się zmienią i tą walidację trzeba będzie zmienić &#8211; strach będzie tknąć się tej metody. Unit testy, które powstają przy okazji TDD nas przed tym chronią.</p>
<h3>Jakie są efekty?</h3>
<p>Oprócz braku negatywnych zjawisk, które opisałem przy okazji każdego zagadnienia &#8211; w prezencie dostajesz <strong>przyjemność</strong>. Przyjemność ta utrzymuje się dłużej w czasie, gdy projekt się rozrasta i staje bardziej skomplikowany. Chętniej zasiadasz do pracy, a to oznacza, że wydajniej pracujesz. Nie będę się rozpisywał &#8211; nie mam zamiaru reklamować mojego podejścia. Jeśli, któreś z tych elementów Cię irytuje &#8211; spróbuj zastosować.</p>
<p>Z własnego doświadczenia wiem, że zawsze warto mieć te mechanizmy w projekcie, który jest większy od &#8220;strony wizytówki&#8221; i ma trwać dłużej niż 3 tygodnie. Oczywiście jest to dodatkowy kod, który muszisz pielęgnować. Wymagania dot. tych skryptów mogą się zmienić. Ale koszty tych działań w porównaniu do zysków w naszym przypadku są pomijalne.</p>
<p>Zyskujesz przy okazji jeden <strong>bonus</strong>. Jeśli sotsujesz iteracje, to po każdej powinno się odbyć demonstracja jej efektów. Aby się odbyła potrzebujesz systemu, który działa. Wrzucasz go na serwer, odpalasz instalację, odpalasz unit testy, a na koniec testy interfejsu. Jeśli team jest zdyscyplinowany (a w stosując te rozwiązania czuje, że są dobre, więc je stosuje nadal) &#8211; usadawiasz się wygodnie w fotelu i patrzysz jak kolejne testy przechodzą. Potem cieszysz się, że masz <strong>demo, które działa</strong>.</p>
<h3>Co dalej?</h3>
<p>Jeśli masz te działające mechanizmy, możesz się zastanowić nad systemem (przepraszam za wyrażenie) Build&#8217;owania aplikacji. Właściwie masz już taki system, ale na przykład <a href="http://phing.info/trac/">phing</a> daje Ci dodatkowe możliwości (odpowiedz sobie tylko na pytanie, czy ich potrzebujesz).</p>
<p>Następnym krokiem jest system ciągłej integracji. To jest następny obszerny temat, którego tutaj nie opiszę, ale zachecam do <a href="http://www.google.com/search?hl=pl&amp;lr=&amp;safe=off&amp;ei=H0AaS6rcIZahjAfvrsWHBA&amp;sa=X&amp;oi=spell&amp;resnum=0&amp;ct=result&amp;cd=1&amp;ved=0CAYQBSgA&amp;q=php+continuous+integration+tools&amp;spell=1">zapoznania się z ideą</a> &#8211; warto wiedzieć, co jest pod ręką.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.grzegorzpawlik.com/2009/12/automatyzuj-co-sie-da/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zabawy ze SCRUM</title>
		<link>http://blog.grzegorzpawlik.com/2009/10/zabawy-ze-scrum/</link>
		<comments>http://blog.grzegorzpawlik.com/2009/10/zabawy-ze-scrum/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 14:25:09 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[zarządzanie projektem]]></category>

		<guid isPermaLink="false">http://blog.grzegorzpawlik.com/?p=379</guid>
		<description><![CDATA[Jakiś czas temu wystartowaliśmy z nowym projektem (jeszcze nie mogę powiedzieć czego dotyczy), w którym mamy więcej wykorzystanych praktyk z kategorii Agile niż inne do tej pory. Przede wszystkim &#8211; iteracje (trzytygodniowe). Właśnie zakończyliśmy pierwszą. Odbyła się prezentacja iteracji, na &#8230; <a href="http://blog.grzegorzpawlik.com/2009/10/zabawy-ze-scrum/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Jakiś czas temu wystartowaliśmy z nowym projektem (jeszcze nie mogę powiedzieć czego dotyczy), w którym mamy więcej wykorzystanych praktyk z kategorii Agile niż inne do tej pory.</p>
<p>Przede wszystkim &#8211; <strong>iteracje</strong> (trzytygodniowe).<br />
Właśnie zakończyliśmy pierwszą. Odbyła się<strong> prezentacja iteracji</strong>, na której niestety nie było klienta. Był za to szef w roli klienta wewnętrznego- to on bywał na spotkaniach z klientami, więc był najlepszym substytutem na jaki nas było stać.</p>
<p>Ze scrum używamy <strong>dziennika zaległości produktowych</strong> (product backlog), który ciągle się rozrasta. Na razie sukcesem jest to, że przed końcem pierwszej iteracji w dzienniku mieliśmy wystarczająco elementów, żeby zacząć następną.</p>
<p>Tak wygląda wykres burndown dla zakończonej właśnie iteracji:<br />
<img src="http://blog.grzegorzpawlik.com/wp-content/uploads/2009/10/iteracja1_burndown_chart1.png" alt="iteracja1_burndown_chart" title="iteracja1_burndown_chart" width="417" height="245" class="alignnone size-full wp-image-384" /></p>
<p>Staramy się stosować<strong> stopniowe zbieranie wymagań</strong> i <strong>stopniowy rozwój architektury</strong> z tym, że to drugie przetestowaliśmy już wcześniej w mniejszych pod-projektach. Pomijając fakt, że jest to zwyczajnie przyjemne podejście &#8211; gdybyśmy chcieli zebrać wszystkie wymagania, to trwałoby to do końca października. Gdyby jeszcze do tego projektować wszystko &#8220;z góry&#8221; &#8211; następny miesiąc by minął do startu projektu.</p>
<p>Po pierwszej <strong>retrospekcji</strong> doszliśmy do wniosku, że zbyt mało energii zostało włożone w etap planowania iteracji. Tym razem bardziej się na tym skupiliśmy. Jednak efekty, jeśli będą widoczne, to dopiero podczas kolejnej iteracji.</p>
<p>Udało nam się też wykonać krok w kierunku ciągłej integracji (CI):<br />
- używamy MySchemaShell do migracji struktury bazy danych<br />
- własnego narzędzia dla startowych danych testowych (też programik Shell) + do generowania obiektów ACL<br />
- Selenium dla prostych (na razie) testów interfejsu, dla zabezpieczenia się przed sytuacją, gdy jest dwie godziny do prezentacji iteracji, nie ma odważnego do przeklikania systemu w celu znalezienia wpadek. No i te wpadki znajduje klient. Te testy trochę trwają, ale na pewno mniej niż ręczne &#8220;śmiganie po stronie&#8221;.</p>
<p>Co do testów jednostkowych &#8211; na razie jest plan, aby umieszczać je w krytycznych miejscach. Co w praktyce oznacza testowanie reguł biznesowych umieszczonych w warstwie modelu.</p>
<p>Jeśli pojawi się więcej ciekawostek &#8211; na pewno nie omieszkam napisać.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.grzegorzpawlik.com/2009/10/zabawy-ze-scrum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nowe odkrycie &#8211; Phing</title>
		<link>http://blog.grzegorzpawlik.com/2009/04/nowe-odkrycie-phing/</link>
		<comments>http://blog.grzegorzpawlik.com/2009/04/nowe-odkrycie-phing/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 15:34:00 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
				<category><![CDATA[Inne]]></category>
		<category><![CDATA[RAD]]></category>
		<category><![CDATA[zarządzanie projektem]]></category>

		<guid isPermaLink="false">http://blog.grzegorzpawlik.com/2009/04/nowe-odkrycie-phing/</guid>
		<description><![CDATA[Zawsze myślałem, że z uwagi na to iż PHP jest językiem skryptowym wszysto co jest związane z procesem budowania i kompilacji &#8211; nie dotyczy PHP właśnie&#8230; Tzn. zawsze wiedziałem, że kompilacja się odbywa podczas wykonywania kodu, więc mnie nie zajmowała. &#8230; <a href="http://blog.grzegorzpawlik.com/2009/04/nowe-odkrycie-phing/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Zawsze myślałem, że z uwagi na to iż PHP jest językiem skryptowym wszysto co jest związane z procesem budowania i kompilacji &#8211; nie dotyczy PHP właśnie&#8230;</p>
<p>Tzn. zawsze wiedziałem, że kompilacja się odbywa podczas wykonywania kodu, więc mnie nie zajmowała. Klawisz F9 z Delphi czy BorlandBuildera zastąpiony został przez klawisz F5 w przeglądarce ;)</p>
<p>Jeśli chodzi o budowanie (Crtl+F9 zdaje się ;)) to wiedziałem, że zawarta jest w tym procesie. Reszta mnie nie interesowała, więc osunąłem się w słodkie objęcia ignorancji.</p>
<p>Czytając książki sugerujące stosowanie systemów ciągłej integracji (CI) i konsolidacji myślałem sobie, że spoko, fajnie by było, ale jednak w PHP nie ma czegoś takiego jak integracja i konsolidacja.</p>
<p>Nie mogłem bardziej się mylić ;) Dopiero przy trzeciej książce, w której wspomniana jest CI mnie olśniło:<br />
<span style="font-size: large;">Budowanie aplikacji to cały proces, który zmienia czysty kod z repozytorium w działającą aplikację!</span></p>
<p>A zatem obejmuje stworzenie bazy danych o odpowiedniej strukturze(*), ustawienie odpowiednich uprawnień do katalogów, które tego wymagają, wypełnienie bazy danymi startowymi i wszystkie inne czynności wymagane do poprawnego używania aplikacji.</p>
<p>Niezwykle ważne jest, aby móc cały ten proces zautomatyzować. Jedna z rzeczy jakich nauczyłem się podczas mojego, dwuletniego już, stażu w zawodzie to:<br />
Jeśli jest do wykonania skończony ciąg operacji oraz<br />
informacja o tych operacjach zapisana jest w pamięci ludzkiej<br />
to<br />
istnieje skończona, stosunkowo mała, liczba powtórzeń ciągu tych operacji, że<br />
przynajmniej jedna z operacji nie zostanie wykonana.</p>
<p>Nazywę tą regułę &#8220;Zasadą zapominania&#8221;. Dlatego warto zautomatyzować ten proces przy pomocy chociażby narzędzia Phing (jest to php&#8217;owy odpowiednik Ant&#8217;a).</p>
<p>Możliwe, że niedługo napisze Wam co i jak z tym Phing.</p>
<p><span style="font-size: xx-small;">* Nigdy nie wiedziałem dlaczego przechowywanie struktury bazy w repozytorium jest moją obsesją. Widać podświadomie czułem, że kiedyś będę używał Project Build System(s).</span></p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.grzegorzpawlik.com/2009/04/nowe-odkrycie-phing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Działanie 8.1 i 8.2: Dlaczego warto dwa razy się zastanowić zanim się na nie rzucimy</title>
		<link>http://blog.grzegorzpawlik.com/2009/04/dzialanie-81-i-82-dlaczego-warto-dwa-razy-sie-zastanowic-zanim-sie-na-nie-rzucimy/</link>
		<comments>http://blog.grzegorzpawlik.com/2009/04/dzialanie-81-i-82-dlaczego-warto-dwa-razy-sie-zastanowic-zanim-sie-na-nie-rzucimy/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 11:55:00 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
				<category><![CDATA[Inne]]></category>
		<category><![CDATA[kontakt z klientem]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[projektowanie]]></category>
		<category><![CDATA[specyfikacja wymagań]]></category>
		<category><![CDATA[zarządzanie projektem]]></category>

		<guid isPermaLink="false">http://blog.grzegorzpawlik.com/2009/04/dzialanie-81-i-82-dlaczego-warto-dwa-razy-sie-zastanowic-zanim-sie-na-nie-rzucimy/</guid>
		<description><![CDATA[O tej porze roku &#8211; prawdziwy urodzaj. Wszyscy razem z wiosną budzą się i piszą projekty o unijne dotacje. Te o których myślę to działania 8.1 i 8.2 &#8211; projekty, których osią często jest szeroko rozumiany &#8220;system informatyczny&#8221;. W tym &#8230; <a href="http://blog.grzegorzpawlik.com/2009/04/dzialanie-81-i-82-dlaczego-warto-dwa-razy-sie-zastanowic-zanim-sie-na-nie-rzucimy/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>O tej porze roku &#8211; prawdziwy urodzaj. Wszyscy razem z wiosną budzą się i piszą projekty o unijne dotacje. Te o których myślę to działania <a href="http://www.funduszestrukturalne.gov.pl/NSS/na+co+fundusze/Przedsiebiorcy/poig_81.htm">8.1</a> i <a href="http://www.funduszestrukturalne.gov.pl/NSS/na+co+fundusze/Przedsiebiorcy/poig_81.htm">8.2</a> &#8211; projekty, których osią często jest szeroko rozumiany &#8220;system informatyczny&#8221;.</p>
<p>W tym artykule chciałbym zwrócić uwagę na ukryte problemy, których możesz nie być świadom pisząc projekt z myślą o tym, żeby po akceptacji zlecić go zewnętrznej firmie budującej systemy informatyczne.</p>
<p>Przede wszystkim specyfika wsparć unijnych <b>wymaga, aby taki system został w (niemal) 100% wyspecyfikowany</b>. To jest wymóg szkodliwy, zakładający że
<ul>
<li>klient dokładnie wie czego mu potrzeba</li>
<li>potafi doskonale wyartykuować swoje myśli</li>
<li>analityk w lot złapie o co klientowi chodzi i&#8230;</li>
<li>&#8230; idealnie zamodeluje te wymagania</li>
</ul>
<p>Takie rzeczy możliwe są co najwyżej w przyszłowiowej &#8220;erze&#8221; (czyt. w reklamie i marketingu).  Każdy kto miał styk z wytwarzaniem oprogramowania w stylu wodospadowym (dokładnie takim jaki wymusza UE) wie, że to bardzo rzadko jest możliwe.</p>
<p>Wykorzystując analogię budowlaną, gdyby projektem był dom, to musiałbyś najpierw móc opisać słowami jaki dom potrzebujesz. Nie zamówiłbyś u architekta szkicu (prototypowanie!) bo masz nadzieję, że szkic upchniesz w całym projekcie i zapłaci Ci za niego unia. Wszystko co możesz to powiedzieć co chcesz móc robić w tym domu:<br />spać, kąpać się, zjeść obiad, zaparkować samochód, oglądnąć telewizję, urządzić przyjęcie.<br />Czy z czymś takim poszedłbyś do firmy budowlanej, żeby oszacowali koszty zbudowania takiego domu?<br />Niech masz wstępnego projektu, bo zapłaci za to Unia. Nie masz żadnego szkicu i chcesz do planu dodać jakieś szacowanie, bo Unia wymaga, żeby na samym początku podać kwoty.</p>
<p>Z powyższej listy, można wywnioskować, że potrzebna Ci kuchnia (chcesz jeść), salon (tv + przyjęcie), garaż, sypialnia, łazienka. Doświadczony wykonawca domyśli się, że potrzebujesz też toalety mimo iż na liście &#8220;zrobić siku&#8221; zapomniałeś umieścić. Ale nie domyśli się, że salon powinien mieć przynajmniej 200m bo przyjęcia chcesz dla 100 osób organizować. Nie wie ile tych sypialni. Czy w ogóle chcesz ogród? Może ogrzewanie? Nie wspomniałeś nic o oknach, ani drzwiach.</p>
<p>Przejdźmy dalej. <b>Kolejną wadą projektów wspieranych przez Unię jest to, że Unia za to płaci</b>. Tym razem będzie analogia zakupowa. Wyobraź sobie, że idziesz do sklepu na zakupy i:
<ol>
<li> bierzesz 500zł własnej ciężko zarobionej krwawicy</li>
<li> ktoś daje Ci 500zł i to co wydasz to Twoje, czego nie wydasz &#8211; musisz oddać</li>
</ol>
<p>Zagadka: Które zakupy zaowocują zakupem naprawdę potrzebnych rzeczy?<br />Dokładnie tak samo jest z &#8220;systemem informatycznym&#8221;. Gdy Ty za niego płacisz &#8211; jesteś zainteresowany funkcjonalnościami, które naprawdę zwiększą Twoją wydajność. Gdy płaci Unia &#8211; upychasz tam ile się da bo &#8220;a nuż się przyda&#8221;. Najważniejszym problemem w tym wypadku jest to, że takie upychanie kilkuktornie komplikuje projekt. A to z kolei
<ul>
<li>zwiększa koszt całego projektu (tym się nie przejmujemy, bo unia płaci), </li>
<li>implikuje jeszcze mniej dokładne niż &#8220;wróżenie z fusów&#8221; szacowanie (ryzykujemy obsówę projekty &#8211; Unia może nie zapłacić, ale nie przejmujemy się, bo w umowie załączymy kary umowne i wykonawca zapłaci)</li>
<li>skutkuje skomplikowanym do wdrożenia systemem, pełnym niepotrzebnych funkcji, który muszą opanować Twoi pracownicy (robi się nieprzyjemnie, bo <b>za to Unia nie zwraca</b>, płacisz tylko Ty)</li>
</ul>
<p>Dlatego warto się zastanowić, czy zwyczajnie warto. Czy na prawdę chcesz mieć Wielką Kobyłę za 150 tysięcy złotych, pełną niepotrzebnych funkcji, która była robiona w pośpiechu i przez to nikt nie chce nawet zaglądnąć do jej kodu, żeby cokolwiek zmodernizować? Czy chcesz czekać na Wielką Kobyłę za 150 tysięcy półtorej roku i kiedy dostaniesz ją do testów (sic!) wiesz, że otoczenie biznesowe i konkurencja zmieniły się na tyle, że przydało by się mieć juz coś lepszego?</p>
<p>Alternatywą jest system mniejszy. Zawierający 10% funkcjonalności Wielkiej Kobyły. Ale są to te rzeczy, które zwiększają Twoją wydajność (a co za tym idzie konkurencyjność) na przykład trzykrotnie. Może zapłacisz za nie więcej niż 10% ceny Wielkiej Kobyły i z własnej korzyści, ale spójrz na stosunek cena/korzyści. A co jeśli dodam do tego taki bajer:<br />Po dwóch miesiącach Twoi pracownicy uzywają systemu. Oni stają się specjalistami w zakresie jego obsługi i mogą współpracować przy jego rozwoju. Na pewno będą miec świetne pomysły, aby nieco ulepszyć działanie programu znów poważnie zwiększając swoją wygodę (wydajność!) pracy.<br />Przypomnij sobie ile razy używając Standardowego Programu (MsExcell, Outlook, Firefox etc.) miałeś poczucie &#8220;Kurcze, gdyby zmienić tutaj to i to, to bym się mniej naklikał przy tych codziennych &#8230; (raportach, analizach, wstaw cokolwiek)&#8221;.</p>
<p>To są rzeczy, których nie przewidzisz projektując Wielką Kobyłę.</p>
<p>Dlatego zamiast liczyć złotówki (150tys.) których nie musiałeś wydawać, policz korzyści których nie udało Ci się osiągnąć. Wiem, że to boli bardziej i nie jest takie proste. Nie mam pojęcia czy Twoja księgowa to potrafi ;).</p>
<p>Możesz też spróbować odpowiedziec na pytanie: Czy na przyjęciu/konferencji/piwku z ludźmi z branży wolisz:<br />a\ Opowiedzieć o tym jak to ostatnio wdrożyliście Customer Relationship Management Entenrprise Edition (nazwa kodowa Wielka Kobyła) za 150 tysięcy złotych, podciągnąć spodnie, odchrząknąć, a potem obwąchać pobliską latarnię i zaznaczyć swoje terytorium*<br />b\ Pochwalić się jak udało Wam się zwiększyć wydajność jednego z działów trzykrotnie za mniej niż miesięczną pensję dla tego działu. Polecić ekipę, z którą naprawdę dobrze się Wam pracowało. Następnie wrócić tego wieczoru do domu z długonogą menadżerką (ew. wspaniale umięśnionym, przystojnym menadżerem) spragnioną szczegółów na temat tego projektu.</p>
<p>Na zakończenie: pamiętaj, że ekonomia to coś więcej niż rachunkowość. Więc przestań liczyć tylko dutki na koncie.</p>
<p><span style="font-size:xx-small;">(*)wiem, odpowiedzi są tendencyjne, ale to nie jest nielegalne ;)</span></p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.grzegorzpawlik.com/2009/04/dzialanie-81-i-82-dlaczego-warto-dwa-razy-sie-zastanowic-zanim-sie-na-nie-rzucimy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zarządzanie wersjami STRUKTURY bazy danych w cakePHP 1.2</title>
		<link>http://blog.grzegorzpawlik.com/2009/03/zarzadzanie-wersjami-struktury-bazy-danych-w-cakephp-12/</link>
		<comments>http://blog.grzegorzpawlik.com/2009/03/zarzadzanie-wersjami-struktury-bazy-danych-w-cakephp-12/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 14:39:00 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[CakePHP 1.2]]></category>
		<category><![CDATA[DRY]]></category>
		<category><![CDATA[zarządzanie projektem]]></category>

		<guid isPermaLink="false">http://meta.vipserv.org/blog.grzegorzpawlik.com/?p=62</guid>
		<description><![CDATA[W poprzednich postach (m.in. zarządzanie wersjami oprogramowania) udało mi się nakreślić problem przy zarządzaniu oprogramowaniem pojawiający się na styku kod-baza danych. Nawet mogę powiedzieć, że mały sukces na tym polu odnotowałem przy pomocy&#160;ImageBehavior, jednak jeśli chodzi o strukturę &#8211; ciągle &#8230; <a href="http://blog.grzegorzpawlik.com/2009/03/zarzadzanie-wersjami-struktury-bazy-danych-w-cakephp-12/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>W poprzednich postach (m.in. <a href="http://webbricks.blogspot.com/2008/12/zarzdzanie-wersjami-oprogramowania.html">zarządzanie wersjami oprogramowania</a>) udało mi się nakreślić problem przy zarządzaniu oprogramowaniem pojawiający się na styku kod-baza danych. Nawet mogę powiedzieć, że mały sukces na tym polu odnotowałem przy pomocy&nbsp;<a href="http://webbricks.blogspot.com/2009/03/imagebehavior-uploaduj-pliki-prosto-do.html">ImageBehavior</a>, jednak jeśli chodzi o strukturę &#8211; ciągle zmagałem się do tej pory z przeciwnościami.</p>
<p>Jednak okazuje się, że cake w nowym wydaniu wychodzi nam na przeciw razem z klasą Schema, oraz z narzędziem konsolowym ./cake schema &#8230; po krótce opowiem o co chodzi.</p>
<p>Zabawę z tym narzędziem najlepiej zacząć mając już jakiś zalążek aplikacji (tabele + modele). Jeśli sprawiamy ten podstawowy warunek możemy wpisać w konsoli ./cake schema generate &#8230; ot tak, dla jaj.</p>
<p>Następnie możemy się w katalogu app/config/sql/ namierzyć plik schema.php. To właśnie artefakt wygenerowany przez nas przed sekundą. Można w celach samorozwojowych zajrzeć do środka&#8230;</p>
<p>Jednak ciekawe rzeczy dzieją się, kiedy ponownie wywołamy to samo polecenie: otóż cake rezolutnie zauważy, że plik schema.php już istnieje i zapyta nas co dalej. Polecam wybór opcji [S]napshot i ponowny rzut oka do wspomnianego wyżej katalogu. Co widzimy? Dokładnie! Nowy plik o nazwie schema_2.php :D Zachęcam do zapoznania się z helpem (./cake schema help).</p>
<p>Wystarczy, że teraz przekonam zespół, aby w sytuacji, gdy nastąpiły zmiany w bazie, przed commitem wywołali to polecenie. Jest jeden problem, którego ewentualnie można się spodziewać &#8211; sporadycznych konfliktów. To znaczy sytuacji, w której dwóch programistów:</p>
<ol>
<li> ściąga repozytorium,&nbsp;</li>
<li>dokonuje (nawet różnych) zmian w bazie,&nbsp;</li>
<li>zatwierdza dane:&nbsp;</li>
<ol>
<li>schema generate,&nbsp;</li>
<li>svn add schema_X.php,&nbsp;</li>
<li>svn commit</li>
</ol>
</ol>
<p>Problem w tym, że w takiej sytuacji w punkcie 3.3 jeden z nich dostanie informację</p>
<blockquote><p>Nie mogę dodać schema_X.php do repozytorium, gdyż takowy&nbsp; już w repozytorium istnieje.<br />
Z poważaniem Twój<br />
SVN</p></blockquote>
<p>Nie jest to jakaś wielka tragedia, jak przy każdym konflikcie trzeba będzie go rozwiązać (w tym wypadku przy spotkaniu tych dwóch programistów). Jednak myślę, że takie sytuacje można by zlikwidować wywołując tą sekwencję w jednym ciągu (nie np. commit po dwóch godzinach od schema generate), może nawet napisać prosty skrypt, który załatwi to za nas (taki svncommitwithcakeschemagenerate.sh ;))</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.grzegorzpawlik.com/2009/03/zarzadzanie-wersjami-struktury-bazy-danych-w-cakephp-12/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>W tej branży 2+2 nie równa się 4</title>
		<link>http://blog.grzegorzpawlik.com/2009/03/w-tej-branzy-22-nie-rowna-sie-4/</link>
		<comments>http://blog.grzegorzpawlik.com/2009/03/w-tej-branzy-22-nie-rowna-sie-4/#comments</comments>
		<pubDate>Wed, 04 Mar 2009 19:37:00 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
				<category><![CDATA[Inne]]></category>
		<category><![CDATA[zarządzanie projektem]]></category>

		<guid isPermaLink="false">http://meta.vipserv.org/blog.grzegorzpawlik.com/?p=57</guid>
		<description><![CDATA[Ten problem nakreślił niedawno Patrys na blogu, który czytuję (http://room-303.com/blog/2009/02/20/przypowiesc-o-osobomiesiacu/) Mam ochotę napisać o tym nieco więcej. Ciągle mam problem ze złym podejściem do produktu jakim jest oprogramowanie. Dlatego będę pisał o tym pewnie za każdym razem, gdy da mi &#8230; <a href="http://blog.grzegorzpawlik.com/2009/03/w-tej-branzy-22-nie-rowna-sie-4/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ten problem nakreślił niedawno Patrys na blogu, który czytuję (<a href="http://room-303.com/blog/2009/02/20/przypowiesc-o-osobomiesiacu/">http://room-303.com/blog/2009/02/20/przypowiesc-o-osobomiesiacu/</a>) Mam ochotę napisać o tym nieco więcej.</p>
<p>Ciągle mam problem ze złym podejściem do produktu jakim jest oprogramowanie. Dlatego będę pisał o tym pewnie za każdym razem, gdy da mi się we znaki. Jak zwykle zpróbuję opisać to na przykładzie.</p>
<p>Załóżmy, że pytasz mnie ile czasu pracy jednego programisty zajmnie gdyby miał zaprogramować:</p>
<p>- Prosty blog<br />
&nbsp;Ja odpowiem, że dwa miesiące.<br />
- Galerię zdjęć<br />
Ja również odpowiem, że dwa miesiące.</p>
<p>Jeśli uważasz, że to wystarczające szacowania i gdybyś chciał dostać system, który ma funkcjonalności kryjące się pod hasłem &#8220;Prosty blog&#8221; i &#8220;Galeria zdjęć&#8221;, oszacujesz już sobie sam, że to razem 4 miesiące&#8230;</p>
<p>Otóż jesteś w błędzie. Ten nowy system zajmie więcej czasu.</p>
<p>Jeśli uważasz, że przypisując czterech programistów do tego projektu czas jego wykonania skróci się czterokrotnie &#8211; również się pomyliłeś. Zapomniałeś o tym, że nie zawsze można podzielić projekt na kilka niezależnych elementów, które można implementować współbierznie. Nawet gdyby się dało &#8211; ktoś musi odwalić tą robotę, odpowiednio zaprojektować i koordynować współbierzną implementację.</p>
<p>Dlatego jeśli jesteś menadżerem, kierownikiem projektu, sponsorem lub klientem &#8211; oddasz przysługę wielu ludziom, jeśli przestaniesz traktować tworzenie oprogramowania jak skręcanie długopisów.<br />
Nam zaoszczędzisz nerwów i wrzodów na żałądku, a sobie &#8211; rozczarowań.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.grzegorzpawlik.com/2009/03/w-tej-branzy-22-nie-rowna-sie-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Odpowiedzialność społeczna przedsiębiorcy, a motywacja pracownicza.</title>
		<link>http://blog.grzegorzpawlik.com/2009/02/odpowiedzialnosc-spoleczna-przedsiebiorcy-a-motywacja-pracownicza/</link>
		<comments>http://blog.grzegorzpawlik.com/2009/02/odpowiedzialnosc-spoleczna-przedsiebiorcy-a-motywacja-pracownicza/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 12:30:00 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
				<category><![CDATA[Inne]]></category>
		<category><![CDATA[etyka]]></category>
		<category><![CDATA[społeczna odpowiedzialność]]></category>
		<category><![CDATA[zarządzanie projektem]]></category>

		<guid isPermaLink="false">http://meta.vipserv.org/blog.grzegorzpawlik.com/?p=54</guid>
		<description><![CDATA[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 &#8230; <a href="http://blog.grzegorzpawlik.com/2009/02/odpowiedzialnosc-spoleczna-przedsiebiorcy-a-motywacja-pracownicza/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>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.</p>
<h2 class="western">Czym jest motywacja, a czym odpowiedzialność społeczna?</h2>
<div style="margin-bottom: 0cm;">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” <a class="sdfootnoteanc" name="sdfootnote1anc" href="#sdfootnote1sym"> <sup>1</sup></a>. Motywowaniem nazwiemy zatem wywoływanie (w sobie lub w innych) tych procesów.</div>
<div style="margin-bottom: 0cm;">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  rzestrzeganie tego zobowiązania w działalności przedsiębiorstwa <a class="sdfootnoteanc" name="sdfootnote2anc" href="#sdfootnote2sym"><sup>2</sup></a>. Ta odpowiedzialność przejawiać się może w finansowaniu publicznego transportu, budownictwa, rzetelnej informacji na temat produktów, trosce o ekologię<a class="sdfootnoteanc" name="sdfootnote3anc" href="#sdfootnote3sym"><sup>3</sup></a><br />
i wielu innych.</div>
<div style="margin-bottom: 0cm;">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.</div>
<h2 class="western">Motywowanie pracowników- w czym się przejawia?</h2>
<div style="margin-bottom: 0cm;">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<a class="sdfootnoteanc" name="sdfootnote4anc" href="#sdfootnote4sym"><sup>4</sup></a>.</div>
<div style="margin-bottom: 0cm;">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.</div>
<div style="margin-bottom: 0cm;">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.</div>
<div style="margin-bottom: 0cm;">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.<br />
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.</div>
<div style="margin-bottom: 0cm;">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ów<a class="sdfootnoteanc" name="sdfootnote5anc" href="#sdfootnote5sym"><sup>5</sup></a>.</div>
<div style="margin-bottom: 0cm;">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”<a class="sdfootnoteanc" name="sdfootnote6anc" href="#sdfootnote6sym"><sup>6</sup></a>.</div>
<div style="margin-bottom: 0cm;">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.</div>
<div style="margin-bottom: 0cm;">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.</div>
<div style="margin-bottom: 0cm;">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.<br />
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.<br />
Dlatego pokuszę się o stwierdzenie, że przedsiębiorca etyczny jest w stanie, oprócz towarów wymienionych w cenniku, produkować szczęście.</div>
<div style="margin-bottom: 0cm;">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.</div>
<div style="margin-bottom: 0cm;">Warto jeszcze dodać, że dostarczając pracownikom możliwości rozwoju, sprawiamy po prostu, że są nieco szczęśliwsi.</div>
<h2 class="western">Dlaczego zatem etyka czasem się nam gubi?</h2>
<div style="margin-bottom: 0cm;">„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 &#8211; 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<br />
ludzi do siebie.”<a class="sdfootnoteanc" name="sdfootnote7anc" href="#sdfootnote7sym"><sup>7</sup></a></div>
<div style="margin-bottom: 0cm;">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:</div>
<div style="margin-bottom: 0cm;">„Władza formalna &#8211; 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;”<a class="sdfootnoteanc" name="sdfootnote8anc" href="#sdfootnote8sym"><sup>8</sup></a></div>
<div style="margin-bottom: 0cm;">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.</div>
<h2 class="western">Związek społeczeństwa z przedsiębiorstwem.</h2>
<div style="margin-bottom: 0cm;">W pracy „Etyka biznesu” została podana odpowiedzialność przedsiębiorcy:</div>
<div style="margin-bottom: 0cm;">&#8220;[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 &#8211; pisze P. Druckner &#8211; jest nie do odrzucenia i absolutna. [...]</div>
<div style="margin-bottom: 0cm;">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&#8221;<a class="sdfootnoteanc" name="sdfootnote9anc" href="#sdfootnote9sym"><sup>9</sup></a>.</div>
<div style="margin-bottom: 0cm;">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.</div>
<h2 class="western">Jak promować etykę?</h2>
<div style="margin-bottom: 0cm;">J. Dietl i W. Gasparski proponują<a class="sdfootnoteanc" name="sdfootnote10anc" href="#sdfootnote10sym"><sup>10</sup></a> następujące metody promowania etyki:</div>
<ol>
<li>
<div style="margin-bottom: 0cm;">&#8220;Propagowanie dobrych wzorów, &#8220;budujących&#8221; przykładów. Powszechnie znane jest postępowanie znanego<br />
menadżera, który w najgorszym dla Chryslera roku, jako szef koncernu zredukował wysokość swojej pensji do jednego dolara rocznie” &#8211; 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.</div>
</li>
<li>
<div style="margin-bottom: 0cm;">&#8220;Stanowcze potępianie nieetycznych zachowań. &#8221; Co oznacza zdefiniowanie kodeksu etycznego i definitywne jego przestrzeganie.</div>
</li>
<li>
<div style="margin-bottom: 0cm;">&#8220;Powołanie sądownictwa polubownego&#8221;, 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.</div>
</li>
<li>
<div style="margin-bottom: 0cm;">&#8220;Treningi wrażliwości etycznej. &#8221; dla tych, którzy nie mieli szczęścia tej wrażliwości się wyuczyć<a class="sdfootnoteanc" name="sdfootnote11anc" href="#sdfootnote11sym"><sup>11</sup></a>.<br />
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”.</div>
</li>
</ol>
<h2 class="western">Czym tak w ogóle jest etyka?</h2>
<div style="margin-bottom: 0cm;">Na zakończenie, aby domknąć rozmyślania, chciałbym zamieścić dwa wybrane cytaty z pracy „Etyka biznesu”, które odpowiadają na te pytanie.</div>
<div style="margin-bottom: 0cm;">Pierwszy Tadeusza Kotarbińskiego:</div>
<div style="margin-bottom: 0cm;">&#8220;Tadeusz Kotarbiński, w pracy &#8216;Medytacja o życiu godziwym&#8217; 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 opiekuna<a class="sdfootnoteanc" name="sdfootnote12anc" href="#sdfootnote12sym"><sup>12</sup></a>&#8220;</div>
<div style="margin-bottom: 0cm;">Drugi Jana Pawła II:</div>
<div style="margin-bottom: 0cm;">„&#8230; Człowiek najpełniej afirmuje siebie, dając siebie &#8230; nie przyjmując perspektywy daru z siebie samego , zawsze istnieje ryzyko wolności egoistycznej”</div>
<blockquote><p>Powyższy tekst to praca zaliczeniowa na przedmiot &#8220;Etyka w biznesie&#8221;, 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 :))</p></blockquote>
<div id="sdfootnote1">
<div class="sdfootnote"><a class="sdfootnotesym" name="sdfootnote1sym" href="#sdfootnote1anc">1</a>Cyt. P.G.Zimbardzo, Psychologia i życie, Warszawa: Wydaw. Naukowe PWN, 1999, s.436</div>
</div>
<div id="sdfootnote2">
<div class="sdfootnote"><a class="sdfootnotesym" name="sdfootnote2sym" href="#sdfootnote2anc">2</a>Zob. Wikipedia, Wolna encyklopedia, <a href="http://pl.wikipedia.org/wiki/CSR">http://pl.wikipedia.org/wiki/CSR</a>, Dostęp 24/05/2008</div>
</div>
<div id="sdfootnote3">
<div class="sdfootnote"><a class="sdfootnotesym" name="sdfootnote3sym" href="#sdfootnote3anc">3</a>Zob. Anna Lewicka-Strzałecka, Etyczny wymiar przekształceń gospodarczych w Polsce, pod red. Adama Węgrzeckiego ; Akademia Ekonomiczna w Krakowie, s 147</div>
</div>
<div id="sdfootnote4">
<div class="sdfootnote"><a class="sdfootnotesym" name="sdfootnote4sym" href="#sdfootnote4anc">4</a>Zob. P.G. Zimbardo, F.L. Ruch Psychologia i życie, Warszawa 1997, s. 404.</div>
</div>
<div id="sdfootnote5">
<div class="sdfootnote"><a class="sdfootnotesym" name="sdfootnote5sym" href="#sdfootnote5anc">5</a>Można dopatrywać się tutaj nadziei na lepsze traktowanie, o czym za chwilę.</div>
</div>
<div id="sdfootnote6">
<div class="sdfootnote"><a class="sdfootnotesym" name="sdfootnote6sym" href="#sdfootnote6anc">6</a>Warto porównać to z nast. cytatem: „Najprawdopodobniej określenie &#8220;etyczny menadżer&#8221; wywołałoby u licznej grupy co najmniej zdziewienie, komentarze i znaki zapytania. Bo &#8220;etyczny&#8221; obecnie w Polsce to właściwie jaki: &#8220;naiwny&#8221;, &#8220;nieprzedsiębiorczy&#8221;, a może wręcz &#8220;głupi&#8221;?”, Etyka biznesu, red. nauk. Jerzy Dietl, Wojciech Gasparski, s.210</div>
</div>
<div id="sdfootnote7">
<div class="sdfootnote"><a class="sdfootnotesym" name="sdfootnote7sym" href="#sdfootnote7anc">7</a>Cyt. Etyka Biznesu, J. Dietl, W. Gasparski, s.192</div>
</div>
<div id="sdfootnote8">
<div class="sdfootnote"><a class="sdfootnotesym" name="sdfootnote8sym" href="#sdfootnote8anc">8</a>Tamże.</div>
</div>
<div id="sdfootnote9">
<div class="sdfootnote"><a class="sdfootnotesym" name="sdfootnote9sym" href="#sdfootnote9anc">9</a>Cyt. Etyka biznesu, s. 209</div>
</div>
<div id="sdfootnote10">
<div class="sdfootnote"><a class="sdfootnotesym" name="sdfootnote10sym" href="#sdfootnote10anc">10</a>Zob. Tamże, s. 224 &#8211; 225</div>
</div>
<div id="sdfootnote11">
<div class="sdfootnote"><a class="sdfootnotesym" name="sdfootnote11sym" href="#sdfootnote11anc">11</a>Również dla tych, którzy to szczęście mieli – zawsze warto tę umiejętność pogłębiać.</div>
</div>
<div id="sdfootnote12">
<div class="sdfootnote"><a class="sdfootnotesym" name="sdfootnote12sym" href="#sdfootnote12anc">12</a>Por. z pojęciem aktywne współczucie i z ideą Bodhisattwy w buddyzmie, <a href="http://www.diamentowadroga.pl/dd20/wspolczucie_jezyk_bodhisattwy">http://www.diamentowadroga.pl/dd20/wspolczucie_jezyk_bodhisattwy</a>, http://www.diamentowadroga.pl/dd25/dzialania_bodhisattwy</div>
</div>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.grzegorzpawlik.com/2009/02/odpowiedzialnosc-spoleczna-przedsiebiorcy-a-motywacja-pracownicza/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zarządzanie wersjami oprogramowania</title>
		<link>http://blog.grzegorzpawlik.com/2008/12/zarzadzanie-wersjami-oprogramowania/</link>
		<comments>http://blog.grzegorzpawlik.com/2008/12/zarzadzanie-wersjami-oprogramowania/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 15:56:00 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
				<category><![CDATA[Inne]]></category>
		<category><![CDATA[zarządzanie projektem]]></category>

		<guid isPermaLink="false">http://meta.vipserv.org/blog.grzegorzpawlik.com/?p=45</guid>
		<description><![CDATA[Najtrudniejsze zadanie z jakim się obecnie spotykam w mojej pracy to zarządzanie wersjami produktu. Od jakiegoś czasu używamy Subversion i pewnie jest o niebo lepiej niż by było bez tego narzędzia, ale dalej jest cholernie ciężko. Szczególnie wtedy, gdy Ciągle &#8230; <a href="http://blog.grzegorzpawlik.com/2008/12/zarzadzanie-wersjami-oprogramowania/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Najtrudniejsze zadanie z jakim się obecnie spotykam w mojej pracy to zarządzanie wersjami produktu.</p>
<p>Od jakiegoś czasu używamy Subversion i pewnie jest o niebo lepiej niż by było bez tego narzędzia, ale dalej jest cholernie ciężko. Szczególnie wtedy, gdy Ciągle wprowadzane są poprawki w bazie. Bywa tak, że mam trzy wersje do synchronizacji: developerską, do testów wewnętrznych i do testów klienta.</p>
<p>Druga zazwyczaj generuje typową ilość znalezionych bugów, a potem sporą ilość &#8216;feature requests&#8217; (przegląda ją między innymi manager projektu, który ma dobre pomysły jak usprawnić pracę w systemie; sęk w tym, że poważnie utrudniają one pracę nad systemem).<br />
Trzecia z kolei generuje szum pt. &#8216;na stronie X, link Z jest w nie takim foncie jak potrzeba&#8217; i inne problemy ;)</p>
<p>*Razem tworzą żyzne środowisko, z którego co jakiś czas wylęgają się pomysły wymagające zmiany struktury bazy danych.</p>
<p>**Wszystkie trzy wersje są update&#8217;owane w różnych momentach, do różnych wersji repozytorium.</p>
<p>Z * i ** wynika, że powinno się zdarzać (i zdarza, a jak!), że na każdej wersji systemu jest inna wersja bazy danych.</p>
<p>Jeszcze nie koniec.</p>
<p>W teamie mam pewną ilość programistów, którzy nie rozwinęli jeszcze umiejętności polegającej na pisaniu kodu w taki sposób, aby był on jak najbardziej elastyczny (dzięki wszystkim bogom za CakePHP, bo przy przenoszeniu systemu na serwer klienta przepisywalibyśmy wszystkie linki&#8230; aż mnie ciarki przeszły). Jednocześnie nie mogę ich za to zdyscyplinować &#8211; przecież nie dostali żadnych wytycznych jak pisać kod (kto próbował coś takiego napisać, ten wie&#8230;)</p>
<p>No i to w sumie wystarczy, żeby przy końcówce projektu mieć poczucie braku kontroli.</p>
<p>Jednak jest pewne światełko w tunelu (nikt nie wyłączył z powodu kryzysu;))<strike>, o którym napiszę w następnym poście&#8230;</strike><br />
Niektóre wskazówki znajdziesz wponiższych postach:</p>
<ul>
<li><a href="http://webbricks.blogspot.com/2009/03/zarzadzanie-wersjami-struktury-bazy.html">Zarządzanie wersjami struktury bazy danych</a>&nbsp;</li>
<li><a href="http://webbricks.blogspot.com/2009/03/imagebehavior-uploaduj-pliki-prosto-do.html">ImageBehavior &#8211; pliki w bazie, a jednak na dysku</a>
</li>
</ul>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.grzegorzpawlik.com/2008/12/zarzadzanie-wersjami-oprogramowania/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

