Pokazywanie postów oznaczonych etykietą book. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą book. Pokaż wszystkie posty

środa, 15 lipca 2015

ApressOpen

Wydawnictwo Apress udostępniło książki do pobrania w wersji elektronicznej (format PDF, ePub oraz MOBI) za darmo.
Książki można kupić przez ten link:
http://www.apress.com/apressopen
Teraz to trzeba będzie się brać za czytanie :)

sobota, 4 stycznia 2014

7 nawyków

Chciałbym przedstawić Ci książkę, która odmieniła mój światopogląd i spowodowała, że stałem się produktywniejszy oraz szczęśliwy. Ta książka to "7 nawyków skutecznego działania" napisana przez Stephena R Coveygo. Nie jestem w stanie opisać jak dużo zawdzięczam tej książce, ale uważam ją za nr 1 wśród książek o rozwoju osobistym. Jest to ważniejsza książka niż GTD Davida Allena, kolekcji książek i audiobooków Brian Tracy, poradniki Timotha Ferrissa, książki o przyjaciołach Dalea Carnegiego. Nie wiem czy książka Napoleona Hilla nie była by ważniejsza niż 7 nawyków, ale na dzień dzisiejszy książka Coveya jest nr 1.


Dlaczego ta książka jest ważna dla mnie. Z paru powodów:
- pozwoliła mi rozwijać charakter, nie osobowość
- udowadniła, że doskonałość to nie jest kwestia talentu, ale nawyków
- wytłumaczyła, że jestem wolny, bo nie jest ważne co się wydarzyło, ale w jaki sposób reagujesz na różne sytuacje
- żyj zgodnie z rozsądnymi zasadami takimi jak uczciwość, godność, jakość, cierpliwość, wytrwałość, opiekuńczy oraz odwaga
- cele zawsze powinny mieć dla mnie wartość
- uświadomiła mi, że powinienem określić swoje osobiste cele
- zastanowiłem się co ludzie powiedzą o mnie, kiedyś ... trakcie mojego pogrzebu
- powinienem co jakiś czas zastanawiać się nad moim postępowaniem i co jakiś czas powinienem naostrzyć piłę

Książka była publikowana w latach 90 i stała się najbardziej znaną książką Coveyego. W tej książce autor zawarł najważniejsze 7 nawyki, są nimi:
1) Przejmij inicjatywę i bądź proaktywny
2) Bądź skoncentrowany na celach i myśl o końcowym rezultacie
3) Ustalaj priorytety
4) Działaj zgodnie z zasadą Win/Win
5) W komunikacji staraj się zrozumieć innych, a później abyś ty był zrozumiany.
6) Współpracuj z innymi (synergia)
7) Zastanów się nad swoimi błędami i staraj się je naprawić (Sharp the Saw)

niedziela, 27 października 2013

Korniszonek w BDD

Wymagania szczegółowe aplikacji można zapisać w języku Gherkin. Język ten składa się z 5 słów kluczowych (Given, When, Then, And, But).
Poniżej jest przykład użycia tego języka:

Scenario 1: Zwrot zepsutych butów do magazynu w sklepie
GIVEN: klient kupił buty z naszego sklepu
AND: buty przepuszczają wodę w deszczowe dni
BUT: data zakupu nie starsza niż rok
WHEN: klient zwraca buty,
THEN: buty powinny być w magazynie


Scenario 2: Zakup pasty do butów o 50% taniej przy zakupie butów
GIVEN: klient kupił buty
WHEN: klient chce kupić pastę do butów
THEN: cena pasty do butów o 50% taniej


Są to proste przykłady zastosowania języka Gherkin, które przedstawiają różne zachowania aplikacji.
Więcej można poczytać w książce The Cucumber Book: Behaviour-Driven Development for Testers and Developers oraz na stronie jednego z projektów BDD dla języka php.

W tematyce BDD i Gherkin jestem świeżakiem, ale uważam, że warto zainteresować się tym językiem, gdyż nie wymaga umiejętności programistycznych ze strony testera, PM czy BA, aby napisać przypadek użycia. Książkę jeszcze nie przeczytałem, ale w wolnej chwili muszę się zabrać za nią :)

sobota, 26 października 2013

Statyczne analizy kodu w czasie

Tak się zastanawiam, co by było gdybyśmy wiedzieli jak z biegiem czasu zmieniały się nazwy klas, metod, słowa-klucze używane w naszych projektach. Co jakiś czas kod źródłowy byłby skanowany i informacje byłyby zapisywane do bazy. Z tego można by było przedstawić jaka klasa z biegiem czasu/releasów jest najbardziej popularna, czy nazwy obiektów są zależne od nazwy klas, ile jest komentarzy, jakie jest kodowanie tekstów itp. Mamy narzędzia, aby dokonać statycznej analizy kodu, ale jeszcze nie ma możliwości analizy tych wyników dla okresów czasowych.

Taki pomysł przyszedł mi do głowy przy oglądaniu prezentacji o n-gram. Bardzo zapraszam do obejrzenia:



niedziela, 13 października 2013

Jestem OK ponieważ

Czy Ty jesteś OK
Zrób takie małe ćwiczenia. Zapisz 4 zdania określające Ciebie, czy jesteś w porządku. Np.
Jestem OK, dopóki pomagam innym
Jestem OK, bo mam luksusowy dom
Jestem OK, ponieważ noszę markowe ubranie
Jestem OK, gdyż jestem poważany

Teraz napisz 4 zdania określające ciebie.
Napisz teraz.





Z pewnej książki zapoznałem się z metodyką "Jestem Ok, ponieważ ..."
Jest to metoda, która uświadomiła mnie jakie mam lęki, dlaczego moje wartości są kruchliwe oraz wzmocniła moje poczucie własnej wartości.

Jest to metoda, która określa Twój szacunek do samego siebie. Na przykład, jeśli rodzice chwalili cię wtedy kiedy zdobywałeś dobre oceny w szkole to mówiłeś do siebie "jestem OK, dopóki mam dobre oceny". Z biegiem lat mogłeś rozwinąć warunkowe poczucie własnej wartości i jeżeli nic nowego się nie zdarzyło, to taka "wartość" towarzyszyła Ci przez okres dojrzałości prowadzać do rozczarowań oraz wątpliwości we własne możliwości, kiedy nie będzie odnosiło się sukcesów.
Warunkowa wartość jest rozwijana wewnątrz nas. Problem powstaje, kiedy takiego warunku nie jesteśmy w stanie spełnić, co będzie prowadziło do poczucia niskiej wartości. Zamiast takiej wartości można zadać sobie wartość Jestem OK, niezależnie od tego czy odnoszę sukces.

Inne warunki określające naszą wartość to:
Jestem OK, ponieważ uczę się
Jestem OK, ponieważ wygrywam
Jestem OK, ponieważ jestem wolontariuszem
Jestem OK, ponieważ ciężko pracuję
Jestem OK, ponieważ znam się na kinie
Jestem Ok, bo dużo zarabiam
Jestem OK, dopóki mam co robić
Jestem OK, dopóki mam wiele przyjaciółek
Jestem OK, dopóki jestem dla kogoś ważny/-na
Jestem OK, dopóki pomagam innym
Jestem OK, bo jadam w drogich restauracjach
Jestem OK, bo jestem z moim partnerem/-ką
Jestem OK, bo jestem uczciwy
Jestem OK, bo kontroluje innych
Jestem OK, bo chodzę w modnym ubraniu
Jestem OK, bo chodzę na siłownię
Jestem OK, bo wiem co jest smaczne
Jestem OK, bo znam się na nowościach technologicznych




Przez warunkową wartość możemy robić coś, co nie daje nam satysfakcji. Dążenie do celu nie jest z powodu chęci (motywacja pozytywna), ale z powodu strachu (motywacja negatywna). Dochodzi do tego, że można wykonać cele wbrew naszym wewnętrznym wartościom. Sprawdź czy Twoje cele są zgodne z Twoimi wartościami.

środa, 2 października 2013

Porównanie C5 z System.Collections.Generic

Jestem po lektorze książki ".NET 4.0 Generics" napisanej przez Sudipta Mukherjee (wcześniej na jego stronie można było ściągnąć całą książkę). Najbardziej cenie tą książkę za przedstawienie wyników szybkości działania różnych typów kolekcji. Autor porównuje typy, które znajdują się w bibliotece C5 oraz w System.Collections.Generic. O bibliotece C5 już wcześniej pisałem. Chciałbym przedstawić zdjęcia z wynikami z tej książki.

Eksperyment nr 1:
Ile czasu potrzeba, aby sprawdzić czy element w liście istnieje.

Eksperyment nr 2:
Ile czasu potrzeba, aby znaleźć pierwsze wystąpienie elementu w liście.


Eksperyment nr 3:
Ile czasu potrzeba, aby znaleźć ostatnio występujący element w liście


Eksperyment nr 4:
Ile czasu potrzeba, aby dodać element w losowym miejscu w liście


Eksperyment nr 5:
Ile czasu potrzeba, aby usunąć pojedynczy element w losowym miejscu w liście


Eksperyment nr 6:
Ile czasu potrzeba, aby uzyskać dostęp do elementu w kolekcji asocjacyjnej (Dictionary, SortedDictionary, C5.HashDictionary, C5.TreeDictionary)


Eksperyment nr 7:
Ile czasu potrzeba, aby znaleźć unie dwóch zbiorów


Eksperyment nr 8:
Ile czasu potrzeba, aby sprawdzić czy jeden zbiór zawiera się w drugim zbiorze


Kod źródłowy dla tych testów można było pobrać stąd. Mam nadzieję, że Sudipta reaktywuje swoją stronę.


niedziela, 26 sierpnia 2012

3 role w firmie: Przedsiębiorca, Menedżer i Technik

Chciałbym ci powiedzieć o 3 podstawowych rolach w firmie. Te role to profil techniczny, menedżerski i przedsiębiorczy. Jest to metafora zamieszczona w książce The E-Myth Revisited: Why Most Small Businesses Don't Work and What to Do About It autorstwa Michael E. Gerber. Przedsiębiorca wyznacza kierunek działania firmy, Menedżer zarządza nią, a Technik wykonuje zadania. Według Gerberta, w małej firmie jest 10% przedsiębiorców, 20% menedżerów i 70% osób technicznych. Każda osoba, która zaczyna swoją pracę w firmie ma jedną z tych ról. Problem jest wtedy, gdy każda z tych ról chce być szefem i nikt z nich nie chce mieć szefa. Posiadanie bardzo dobrych techników czy samych menedżerów w firmie nie gwarantuje osiągnięcia sukcesu. Tak samo jest z posiadaniem samych dobrych pomysłów. Dobry pomysł bez odpowiedniego zespołu jest skazany na porażkę.



Kiedy jesteś technikiem to zastanawiasz się nad techniczną implementacją danego zagadnienie. Nie lubisz delegować zadań nowym osobom, bo wiesz, że mogą coś źle zrobić. Zawsze mówisz, "jak chcesz zrobić coś dobrze, to zrób to sam". Jesteś zorientowany na teraźniejszość. Bardzo nie lubisz zmian obecnych planów. Kiedy pracujesz nad swoją pracą to jesteś zadowolony wykonując tą jedną rzeczą. Jeżeli dostaniesz nowe zadania od menedżera to jesteś bardzo zdenerwowany tym, że nie możesz dokończyć wcześniejszego zadania. Najlepsza sytuacja dla ciebie jest, kiedy menedżer dyskutuje z przedsiębiorcą, bo wtedy możesz swobodnie wykonywać swoją pracę. Nie interesujesz się życiem firmy.



Gdy jesteś menedżer to zastanawiasz się jak zoptymalizować procesy, procedury, jak zbudować stabilne środowisko dla firmy oraz jak zarządzać innymi. Jesteś pragmatyczny i żyjesz przeszłością. Dzięki twoim zdobytym doświadczeniom próbujesz dobrze planować (krótko- oraz długodystansowo ) i przewidywać trendy. Masz wszystko poukładane i bardzo nie lubisz dużych zmian. Starasz się być jak najbardziej produktywny. Powtarzasz osobom, że czas to pieniądz. Jesteś osobą, która po przedsiębiorcy "sprząta cały bałagan". Wszelkie zmiany zapisujesz. Musisz mieć dobre zdolności komunikacyjne z technikami, przedsiębiorcami, jak i innymi menedżerami. Stawiasz na gry zespołowe. Jako lider to ty jesteś odpowiedzialny za dobrą atmosferę w zespole. Lubisz delegować zadania innym osobom. Nie znam ludzi, którzy od razu zaczynali pracę od zarządzania osobami. Zanim ktokolwiek zacznie zarządzać innymi technicznymi osobami to wcześniej sam musiał być techniczną osobą, aby zrozumieć wszelkie procesy.



Ty jako przedsiębiorca jesteś marzycielem i masz wizje działania biznesu. Próbujesz znaleźć nowe drogi w firmie. Żyjesz przyszłością. Non stop przychodzą ci do głowy setki pomysłów w ciągu dnia, ale bardzo ciężko jest Ci zrealizować te pomysły. Jako wizjoner preferujesz rozgrywki jednoosobowe. Masz wizje całego systemu i nie koncentrujesz się na szczegółach. Chcesz mieć wszystko pod kontrolą. Za wszelką cenę chcesz kontrolować życie w firmie jak i poza nią. Kiedy będziesz chciał wykonać zadania technika to możesz wszystko popsuć.

Ale w gruncie rzeczy przedsiębiorca sam wcześniej był osobą techniczną. Właściciel firmy wypiekającej ciasteczka wcześniej sam był piekarzem. Właściciel firmy budowlanej zaczyna od pracy u kogoś na budowie. Właścicielka gabinetu stomatologicznego musiała wcześniej pracować jako stomatolog. Wydawca gazety zaczynał jako dziennikarz. Notariusz zaczynał jako aplikant. Większość technicznych osób myśli, żeby osiągnąć sukces w swojej firmie wystarczy mieć tylko techniczną wiedzę. Akurat ta wiedza może lekko przyczynić się do upadku firmy. Według autora tej metafory to przyczyną porażki małych firm jest spowodowane tym, że przedsiębiorcy są osobami technikami, kiedy to powinni spełniać rolę przedsiębiorcy. Wizjoner jest zniewolony zadaniami, których on sam nie powinien wykonywać. Jeżeli firma jest zależna zadaniowo od przedsiębiorcy to ten przedsiębiorca nie jest wizjonerem tej firmy, ale jest pracownikiem. Kiedy technik zaczyna być przedsiębiorcą, to będzie musiał zapomnieć wiele rzeczy jakich wcześniej się nauczył.



Możesz spróbować dopasować siebie do jednego z tych profili. Wiem, że nie jest to łatwe, tym bardziej, że jesteśmy mieszanką każdej z tych ról. Jeżeli twoje stanowisko w firmie jest niezgodny z tym co robisz albo jak postępujesz to możesz to zmienić. Każdego profilu można się nauczyć. To nie jest tak, że ktoś się urodził i od razu wie jak pisać artykuły do gazet, tworzy świetne pomysł czy zna prawo cywilne. Zdobywasz wiedzę i doświadczenie po to, aby być lepszym technikiem. Tak samo jest z profilem managerskim. Nie od razu wiesz jak prowadzić projekt czy jak dobrze rozmawiać z ludźmi. Brak równowagi dla tych ról może spowodować upadek wspólnego projektu. Każda osoba należąca do innej roli może zauważyć inny problem. Technik zauważy problemy techniczne, menedżer złą współpracę między ludźmi, a przedsiębiorca zły kierunek działania firmy.

O książce można poczytać na stronie e-myth.com lub tutaj. Skrót e-myth oznacza entrepreneurial myth.

czwartek, 15 marca 2012

Książka "Zarządzanie projektami informatycznymi"

To jest stary wpis, ale nigdy nie miałem czasu na dokończenie oraz opublikowanie go. Ten post będzie o wskazówkach zawartych w książce "Zarządzanie projektami informatycznymi. Subiektywne spojrzenie programisty" napisanej przez Joel Spolsky. Spolsky od 2000 roku prowadzi bloga (pomysł nazwy mojego bloga pochodzi od tego Pana), był jednym z twórców Visual Basic for Applications w Excelu, jest właścicielem firmy Fog Creek oraz CEO stackoverflow.com. Książkę napisał w 2005 roku. Przedstawiając Ci te rady będę bazował na moich starych notatkach, jakie zrobiłem po przeczytaniu tej książki.



Chciałbym wymienić 12 najważniejszych rad Spolskyego odnoszących się do prowadzenia projektu informatycznego:

1) Mechanizm kontroli wersji
System kontroli wersji jest już podstawą. Tworzenie oprogramowania nie jest rozgrywką jednoosobowa, ale jest grą zespołową.

2) Kompilacja całego systemu w jednym kroku
Jeszcze pamiętam jak w pewnej firmie musiała być wyznaczona osoba, która mogła przekompilować kod i wysłać na serwer produkcyjny (testowy). Taki proces mógł zajmować nawet do 2 godzin, więc bardzo rzadko dokonywano publikacji oprogramowania.

3) Codzienna kompilacja
Proces codziennej kompilacja jest nazywany Continuous Integration. Do automatyzacji kompilacji może przydać się CC.NET




4) Baza danych dla wykrytych błędów

5) Usuwanie błędów przed napisaniem nowego kodu

6) Realizacja projektu zgodnie z wcześniejszym planem

7) Specyfikacje
Natura programisty nakazuje interpretować jednoznaczne wymagania tak, aby uprościć wymagania. Często nie jest to coś, czego chciałby klient.

8) Właściwe warunki pracy dla pracowników
W ciszy jest łatwiej skoncentrować za zadaniu. Bardzo dobrą praktyką w pracy, w pokoju składających się z kilku osób jest ustalenie cichych dni. Są to dni, w których nie jest puszczana muzyka, nie ma luźnych pogawędek o polityce oraz nie przesyła się śmiesznych linków z różnych serwisów.

9) Najlepsze narzędzia są wykorzystywane w pracy
Nie wyobrażam sobie dużej aplikacji napisanej w zwyczajnym edytorze tekstu, czy IDE bez możliwości refaktoryzacji kodu. Genialnym dodatkiem do Visual Studio jest ReSharper. Możesz pobrać testową wersję dodatku, ale uważaj. Raz spróbuje i nie będziesz chciał wrócić do starego IDE.

10) Wykorzystanie z pomocy testerów

11) Kandydaci na stanowisko muszą napisać próbny kod

12) Korytarzowe testy użyteczności
Testy korytarzowe polegają na tym, że napotkaną pierwszą osobę na korytarzu i prosi się ją o przetestowanie i wyrażenie swojej opinii na temat systemu. Każdy twórca oprogramowania uważa, że jego system jest łatwy w obsłudze i intuicyjny.

Wiele ludzi uważało wskazówki Spolskyego za nierealne do spełnienia. W dzisiejszych czasach dobre firmy postępują zgodnie z tymi radami, aby wytwarzać najlepsze oprogramowanie jakie jest możliwe. Nie opisałem wszystkich punktów, gdyż są one oczywiste. Książka Spolskyego jest świetnie napisana i bardzo praktyczna (nawet na dzisiejsze czasy). Moim zdaniem jest to bardzo dobra książka o zarządzaniu projektami dedykowana dla programisty.

niedziela, 29 maja 2011

VALID your Goals

Wyznaczanie celów życiowych jest jedną z najtrudniejszych rzeczy w osiąganiu sukcesu oraz budowaniu swojej świadomości.


Nieodzowną metodą w tym kreowaniu jest koncepcja SMART (SMARTER), ale brakuje mu jednego bardzo ważnego elementu, jakim są wartości osobiste.
Metoda, która to poprawia nazywa się VALID i obejmuje nasz myślący jak i emocjonalny mózg. Ona nie definiuje pojęć, ale grupuje pytania, na które powinieneś sobie odpowiedzieć w trakcie wyznaczania celu. Z metodą pierwszy raz spotkałem się w książce coaching inteligencji emocjonalnej.

Values (wartości) - wartości osobiste są jedne z najważniejszych elementów definiujących człowieka. Postaraj się odpowiedzieć sobie, co jest ważne w tym celu? Jaką wartość wprowadza w twoje życie wykonanie tego celu? Dlaczego ten cel będzie ważnym elementem twojego życia? Co będziesz myślał, kiedy ten cel osiągniesz? Jak będziesz się wtedy czuć?

Attitudes (nastawienia) - pozytywne nastawienie dużo mocniej oddziaływać niż negatywne (a tym bardziej obojętne) nastawienie. Powiedz, jakie masz nastawienie do tego celu? Jakie przekonania przeszkadzają Ci w osiągnięciu tego celu i co chcesz z tym zrobić?

Awareness (świadomość) - bądź świadomy swoich myśli, uczuć oraz kolejności działań zmierzając do celu. Monitoruj to, co wykonujesz. Pozwoli ci to zauważyć potencjalne przeszkody jak i możliwości. Odpowiedz sobie, co czujesz w procesie dążenia do tego celu? Gdzie znajduje się to uczucie?
W korporacjach taką świadomości stanowią anonimowe ankiety, samooceny pracowników, raporty oraz spotkania zespołowe.

Likely (prawdopodobieństwo) - oblicz, jakie jest prawdopodobieństwo osiągnięcia tego celu, świadomy będziesz czy to zadanie jest osiągalne. Czy jest to zadanie realistyczne? Co może pokrzyżować twoje plany? A co może pomóc w osiągnięciu ich?

Intention (intencje) - jeżeli wiesz, dlaczego dążysz do określanego celu to potrafisz wyznaczyć właściwą drogę. Intencja jest mocna związana z wartościami.
Odpowiedz sobie, nad czym masz kontrole i jakie są Twoje mocne strony?

Do( działanie) - zapisz, jakie zachowania należy wykonać, aby osiągnąć ten cel. ZAPISZ, jaki masz plan działania oraz PIERWSZY KROK. Co będziesz czuł, kiedy zaczniesz wykonywać ten pierwszy krok? Jest to bardzo ważna część metody, która wyznacza początek procesu.

Done Date( data zakończenia) - jeżeli cel nie ma daty zakończenia to możemy go całe życie robić. Wiedza na temat ostatecznego terminu zwiększa szansę na sukces. Wyznacz sobie datę zakończenia wykonywania celu. Czy jest to cel krótkoterminowy czy długoterminowy? Jak uczcisz osiągnięcie swojego celu w tym wyznaczonym terminie?

Metoda VALID jest świetna i pozwala naprawdę zmotywować się do działania w realizacji swoich celów.




Jeżeli po metodach smart i valid nadal nie zacząłeś wykonywać swojego celu to Richard Wiseman w swojej książce 59 sekund pisze, że dzięki ogłoszeniu swojego celu publicznie (swoim znajomym, rodzinie, w Internecie, w pracy) oraz rozmowy z osobami, które ten cel osiągnęły, można bardzo zwiększyć swoją motywacji do działania.

Innymi takimi kwestiami wyznaczania celów jest tworzenie otaczającego środowiska. Jeżeli twoje środowisko jest głośne, mówi Ci, że tego nie osiągniesz lub pochłania Twoją energie, to zmień to środowisko. Odpowiedzenia sobie też na pytanie, „Dlaczego nie możesz tego rozpocząć?". Na ogół staram się nie zadawać pytania ze słowem, „dlaczego", gdyż czasami takie pytanie brzmi jak oskarżenie lub jest infantylne. Odpowiedzenie sobie na to pytanie uświadomi Cię, co trzeba zmienić.

Mam nadzieję, że ten wpis pozwoli ci lepiej wyznaczać cele.