Inżynieria oprogramowania - 22 Slide 1
Zarządzanie personelem
. Zarządzenie ludźmi
pracującymi indywidualnie i w
grupach
Inżynieria oprogramowania - 22 Slide 2
Cele
. Poznanie prostych modeli ludzkiej pamięci,
rozwiązywania problemów i motywacji oraz ich
konsekwencji dla menedżerów tworzenia
oprogramowania
. Wyjaśnienie kluczowych kwestii determinujących
sukces czyli innymi słowy kwestie pracy
zespołowej
. Omówienie kwestii związanej z wyborem i
zatrzymaniem technicznego personelu
Inżynieria oprogramowania - 22 Slide 3
Zawartość
. Ograniczenia myślenia
. Praca zespołowa
. Wybieranie i zatrzymywanie personelu
Inżynieria oprogramowania - 22 Slide 4
Personel w procesie tworzenia
oprogramowania
. Personel jest największym majątkiem firmy
. Główne zadania menedżera to zarządzanie
personelem. Jeśli brak jest porozumienia
pomiędzy ludźmi zarządzanie jest nieskuteczne
. Inżynieria oprogramowania jest głównie
działaniem poznawczym. Ograniczenia
możliwości poznawczych skutecznie wpływają na
ograniczenia w procesie tworzenia
oprogramowania
Inżynieria oprogramowania - 22 Slide 5
Działania zarządzania
. Rozwiązywanie problemów (przy użyciu
dostępnego personelu)
. Motywowanie (ludzi pracujących w projekcie)
. Planowanie (co ludzie mają robić)
. Szacowanie (jak szybko personel będzie
pracował)
. Kontrolowanie (działań personelu)
. Organizowanie (sposobu pracy personelu)
Inżynieria oprogramowania - 22 Slide 6
Ograniczenia myślenia
. Nie wszyscy ludzie myślą w ten sam sposób lecz
każdy podlega pewnym ograniczeniom w ich
myśleniu z powodu:
. Organizacji pamięci ludzkiej
. Reprezentacji wiedzy
. Wpływu motywacji
. Jeśli rozumiemy te ograniczenia to wiemy jak one
wpływają na udział personelu w procesie
tworzenia oprogramowania
Inżynieria oprogramowania - 22 Slide 7
Organizacja ludzkiej pamięci
Pamięć robocza
Pamięć długa
(dużą pojemność, powolny dostęp)
Pamięć
krótka
Bodźce wejściowe
Inżynieria oprogramowania - 22 Slide 8
Pamięć krótka
. Szybki dostęp, ograniczona pojemność
. Od 5 do 7 lokalizacji
. Przetrzymuje .kawałki. informacji, rozmiar tych
kawałków może być różny w zależności od ich
charakteru
. Szybki czas znikania (utraty) informacji
Inżynieria oprogramowania - 22 Slide 9
Pamięć robocza
. Większa pojemność, dłuższy czas dostępu
. Obszar pamięci wykorzystywany do integracji
informacji z pamięci krótkiej i pamięci długiej
. Relatywnie szybki czas znikania (utraty)
informacji
Inżynieria oprogramowania - 22 Slide 10
Pamięć długa
. Wolny dostęp, wielka pojemność
. Zawodny mechanizm wyszukiwania
. Wolny lecz skończony czas znikania (utraty) .
informacja wymaga aktualizacji
. Relatywnie wysoki próg . w celu uzyskania
informacji z pamięci długiej należy wykonać
odpowiednią pracę
Inżynieria oprogramowania - 22 Slide 11
Transfer informacji
. Rozwiązywanie problemów zwykle wymaga
przekazywania informacji pomiędzy pamięcią
krótką a pamięcią roboczą
. Podczas tego transferowania informacja może
zostać utracona lub ulec uszkodzeniu
. Przetwarzanie informacji ma miejsce podczas
transferu z pamięci krótkiej do pamięci długiej
Inżynieria oprogramowania - 22 Slide 12
Poznawcze .klocki. w programie
sortującym
Porównaj sąsiednie elementy
Przestaw je, jeśli jest to konieczne, aby mniejszy był wcześniej
Pętla (przetwórz nieposortowana część tablicy)
Pętla (przetwórz całą tablicę)
Inżynieria oprogramowania - 22 Slide 13
Modelowanie wiedzy
. Wiedza znaczeniowa . wiedza o pojęciach takich
jak instrukcja przypisania, pojęcie przekazywania
parametrów itd.
. Wiedza składniowa . szczegółowa wiedza o
reprezentacji, np. jak napisać opis obiektu w
języku UML
. Wiedza znaczeniowa ma pewną strukturę i
wydaje się być przechowywana w sposób
niezależny od reprezentacji
Inżynieria oprogramowania - 22 Slide 14
Wiedza składniowa i znaczeniowa
Wiedza zadaniowa Wiedza komputerowa
Wiedza znaczeniowa Wiedza składniowa
Inżynieria oprogramowania - 22 Slide 15
Nabywanie wiedzy
. Wiedzę znaczeniową nabywa się poprzez
doświadczenie i aktywne uczenie
. Wiedzę składniową nabywa się poprzez uczenie
na pamięć
. Nowa wiedza składniowa może kolidować z
istniejąca już wiedzą składniową
. Dla doświadczonych programistów problem jest jeszcze
większy ponieważ myli im się składnia różnych języków
programowania
Inżynieria oprogramowania - 22 Slide 16
Wiedza znaczeniowa
. Koncepcje obliczania . notacja pisemnego
przechowywania, iteracji, koncepcja obiektów itd.
. Koncepcje pracy - głównie algorytm . jak rozwiązać
poszczególne zadania
. Zdolność tworzenia oprogramowania jest to
umiejętność integracji nowej wiedzy z istniejącą
wiedzą o komputerze i pracy i w związku z tym
wydobycie odpowiedniego rozwiązania problemu
. Tak więc rozwiązywanie problemu dokonywane jest
niezależnie od języka programowania
Inżynieria oprogramowania - 22 Slide 17
Rozwiązywanie problemów
. Wymaga integracji różnych typów wiedzy
(komputerowej, zadaniowej, dziedzinowej,
organizacyjnej)
. Tworzenie modelu znaczeniowego rozwiązania i
testowanie tego modelu względem problemu
. Reprezentacja tego modelu w odpowiedniej
notacji lub języku programowania
Inżynieria oprogramowania - 22 Slide 18
Rozwiązywanie problemów
Problem Częściowe
rozwiązanie Rozwiązanie
Nowa wiedza
Istniejąca wiedza
Pamięć długa
Pamięć
robocza
Inżynieria oprogramowania - 22 Slide 19
Motywacja
. Ważną rolą menedżera jest motywowanie ludzi
pracujących w projekcie
. Motywacja jest kwestią złożoną, występują trzy
typy motywacji bazujące na
. Podstawowych potrzebach (np. jedzenie, spanie, itd.)
. Potrzebach osobistych (np. szacunek, poczucie własnej
wartości)
. Potrzebach społecznych (np. poczucie akceptacji jako część
grupy)
Inżynieria oprogramowania - 22 Slide 20
Hierarchia potrzeb człowieka
Potrzeby szacunku
Potrzeby społeczne
Potrzeby bezpieczeństwa
Potrzeby fizjologiczne
Potrzeby
samorealizacji
Inżynieria oprogramowania - 22 Slide 21
Motywowanie ludzi
. Motywacje wiążą się z potrzebami dającymi
zadowolenie
. Największy priorytet maja potrzeby fizjologiczne
i bezpieczeństwa i często ich spełnienie daje
ogólne zadowolenie
. Potrzeby społeczne, szacunku i samorealizacji są
najbardziej znaczące z menedżerskiego punktu
widzenia
Inżynieria oprogramowania - 22 Slide 22
Potrzeby satysfakcji
. Społeczne
. Zapewnianie miejsc do spotkań
. Pozwalają na nieformalną komunikację
. Szacunku
. Docenianie osiągnięć
. Recognition of achievements
. Odpowiednie wynagrodzenie
. Samorealizacji
. Szkolenia . ludzie chcą się uczyć, szkolić
. Odpowiedzialność
Inżynieria oprogramowania - 22 Slide 23
Typy osobowości
. Hierarchia potrzeb jest pewnym uproszczeniem
. Motywacja powinna brać pod uwagę różne typy
osobowości:
. Nastawienie na zadania
. Nastawienie na siebie
. Nastawieni na interakcję
Inżynieria oprogramowania - 22 Slide 24
Typy osobowości
. Nastawieni na zadania
. Dla nich motywacją jest wykonywana przez nich praca
. Nastawieni na siebie
. Dla nich praca jest sposobem do osiągnięcia celu którym są
indywidualne korzyści . np. stanie się bogatym, podróżowanie
. Nastawieni na interakcję
. Główna motywacją jest obecność i działania
współpracowników. Ludzie chodzą do pracy ponieważ to lubią
Inżynieria oprogramowania - 22 Slide 25
Bilans motywacji
. Na motywację każdej osoby składają się elementy
każdej klasy
. Bilans może ulegać zmianie z zależności od
osobistych okoliczności i zewnętrznych wydarzeń
. Ludzie są nie tylko zmotywowani potrzebami
osobistymi lecz także poprzez bycie częścią grupy
i pewnej kultury
. Ludzie chodzą do pracy ponieważ motywują ich
ludzie z którymi pracują
Inżynieria oprogramowania - 22 Slide 26
Praca zespołowa
. Inżynieria oprogramowania to w większości
działanie grupowe
. Harmonogram tworzenia dla większości nietrywialnych
projektów oprogramowania jest taki że nie istnieje możliwość
ukończenia projektu przez jedną osobę pracującą samotnie
. Interakcje w grupach są kluczem wydajności
grupy
. Elastyczność w składzie grupy jest ograniczona
. Menażerowie muszą robić wszystko przy pomocy dostępnego
personelu
Inżynieria oprogramowania - 22 Slide 27
Podział czasu
50%
Interakcje z
innymi
ludźmi
30%
Praca
samodzielna
20%
Działanie
nieproduktywne
Inżynieria oprogramowania - 22 Slide 28
Skład grupy
. Grupa składa się z członków którzy nie zawsze mają taką
samą motywację
. Nastawieni na zadania . każdy chce robić swoją własną rzecz
. Nastawieni na siebie . każdy chce być szefem
. Nastawieni na interakcję . zbyt wiele rozmów, za mało pracy
. Grupa efektywna składa się z ludzi o uzupełniających się
osobowościach
. Może to być trudne do osiągnięcia ponieważ większość
inżynierów jest nastawionych na zadania
. Wszyscy członkowie powinni brać udział w
podejmowaniu decyzji które wpływają na grupę
Inżynieria oprogramowania - 22 Slide 29
. Przywództwo zależy od szacunku wynikającego z
umiejętności pozatechnicznych
. Może istnieć zarówno lider techniczny jak i
administrator przedsięwzięcia
. Narzucenie niechcianego przywództwa jest dużo
mniej efektywnym rozwiązaniem niż wybór
demokratycznie popieranego lidera
. Ścieżka kariery oparta na technicznych
kompetencjach powinna być wspierana
Przywództwo grupy
Inżynieria oprogramowania - 22 Slide 30
Spójność grupy
. Członkowie grupy spójnej uważają ją za bardziej
istotną od osób do niej nie należących
. Zalety spójnej grupy to:
. Można wypracować grupowy standard jakości
. Członkowie grupy blisko ze sobą współpracują tak więc
zahamowania wynikające z niewiedzy są zminimalizowane
. Członkowie grupy uczą się od siebie nawzajem i poznają pracę
swoich kolegów
. Można urzeczywistniać programowanie pozbawione
indywidualizmu
Inżynieria oprogramowania - 22 Slide 31
Spójność tworzenia
. Na spójność wpływają takie czynniki jak kultura
firmowa i osobowości w grupie
. Spójność może być zwiększana poprzez:
. Towarzyskie wydarzenia
. Wypracowanie tożsamości grupy i określenie jej terytorium
. Jawną działalność związaną z budowaniem grupy
. Udostępnianie informacji członkom grupy jest
prostym sposobem zapewnienia że wszyscy
członkowie grupy czują się jej częścią
Inżynieria oprogramowania - 22 Slide 32
. Członkowie grupy dążą do tego by być lojalnymi
wobec spójnej grupy
. .Grupowe myślenie. jest zachowaniem grupy bez
względu na techniczne lub firmowe okoliczności
Lojalność grupy
Inżynieria oprogramowania - 22 Slide 33
Komunikacja w grupie
. Dobra komunikacja jest zasadniczym czynnikiem
wpływającym na efektywność pracy grupy
. Członkowie grupy muszą wymieniać informacje
o stanie swoich prac, podjętych decyzjach
projektowych i koniecznych zmianach
poprzednich decyzji
. Dobra komunikacja wzmacnia także spójność
grupy i poprawia wzajemne zrozumienie
Inżynieria oprogramowania - 22 Slide 34
. Status członków grupy
. Wyższy status członków przyczynia się do poprawy
konwersacji
. Osobowości w grupie
. Zbyt wiele ludzi o tej samej osobowości może być pewnego
rodzaju problemem
. Mieszany skład grupy ze względu na płeć
. Lepsza komunikacja istnieje w grupach mieszanych
. Kanały komunikacji
. Centralna koordynacja komunikacji jest mało efektywna
Dobra komunikacja
Inżynieria oprogramowania - 22 Slide 35
Organizacja grupy
. Rozmiar grup zajmujących się inżynierią
oprogramowania powinien być relatywnie mały
(< ośmiu członków)
. Podział dużego projektu na kilka mniejszych
projektów
. Małe grupy mogą być zorganizowane w sposób
nieformalny i demokratyczny
. Szef grupy programowej próbuje wykorzystać
umiejętności i doświadczenie w sposób
najbardziej efektywny
Inżynieria oprogramowania - 22 Slide 36
Demokratyczna organizacja grupy
. Grupa występuje jako całość i podejmuje
jednomyślne decyzje wpływające na system
. Lider grupy pełni funkcję zewnętrznego interfejsu
grupy lecz nie przydziela zadań do wykonania
. Praca do wykonania omawiana jest w ramach
grupy jako całości i przydzielane są zadania
zgodnie z umiejętnościami i doświadczeniem
. To podejście jest skuteczne gdy wszyscy
członkowie grupy są ludźmi doświadczonymi i
kompetentnymi
Inżynieria oprogramowania - 22 Slide 37
Ekstremalne grupy programistyczne
. Ekstremalne grupy programistyczne to warianty
organizacji demokratycznej grupy
. W ekstremalnych grupach programistycznych,
grupa podejmuje wiele decyzji uważanych za
menedżerskie
. Programiści pracują parami i biorą wspólną
odpowiedzialność za tworzone programy
Inżynieria oprogramowania - 22 Slide 38
Zespół szefa programisty
Administrator
Narzędziowiec
Specjalista od SO
Specjalista od testów
Autor dokumentacji
technicznej
Szef-
programista
Programista
zapasowy
Bibliotekarz
Komunikacja z
otoczeniem
Jądro zespołu szefa programisty
Pula specjalistów
Inżynieria oprogramowania - 22 Slide 39
Grupa szefa programisty
. Składa się z jądra specjalistów wspomaganych
przez innych dodanych do projektu w miarę
potrzeby
. Motywacja do ich tworzenia są duże różnice w
umiejętnościach różnych programistów
. Grupa szefa programisty zapewnia drugoplanowe
otoczenie dla bardzo zdolnych programistów
będących odpowiedzialnymi za tworzenie
systemu
Inżynieria oprogramowania - 22 Slide 40
Problemy
. Podejście szefa programisty, w różnych formach
jest podejściem niewątpliwie bardzo udanym
. Istnieją jednak pewne problemy:
. Ciężko znaleźć utalentowanych projektantów i programistów.
Bez wyjątkowych ludzi to podejście nie zda egzaminu
. Inni członkowie grupy mogą czuć się urażeni że wszystkie
zasługi przypisywane są szefowi, więc umyślnie mogą
próbować osłabiać jego rolę
. Jeśli zarówno szef jak i jego zastępca są np. chorzy wtedy
przedsięwzięcie jest zagrożone
. Struktury organizacyjne mogą nie być zdolne do przyjęcia grupy
takiego rodzaju
Inżynieria oprogramowania - 22 Slide 41
Wybieranie i zatrzymywanie
personelu
. Wybór personelu do pracy nad projektem jest
podstawową rolą menadżera
. Wybór zwykle opiera się na
. Informacjach dostarczonych przez kandydatów (ich życiorys lub
CV)
. Informacjach zdobytych podczas wywiadów z kandydatami
. Rekomendacjach od innych osób które znają kandydata
. Niektóre firmy korzystają z testów
psychologicznych i testów uzdolnień
. Nie istnieje jednoznaczne zdanie czy testy te są przydatne czy
bezużyteczne
Czynniki wpływające na wybór personelu
Czynnik Wyjaśnienie
Doświadczenie w dziedzinie
zastosowania
Jeśli przedsięwzięcie ma doprowadzić do zbudowania udanego systemu,
to jego twórcy muszą rozumieć dziedziną zastosowania
Doświadczenie w pracy z
platformą
Może być istotne, jeśli prace obejmują programowanie na niskim poziomie.
W przeciwnym wypadku zwykle nie jest krytycznym atrybutem
Doświadczenie w pracy z
językiem programowania
Zwykle jest istotne jeśli w wypadku krótkotrwałych przedsięwzięć przy
których nie ma czasu na naukę nowego języka
Zdobyte wykształcenie Może być podstawową wskazówką co do tego, co kandydat powinien
umieć i o jego zdolności do uczenia się. Ten czynnik jest coraz mniej
istotny gdyż inżynierowie zdobywają coraz więcej doświadczenia w wielu
przedsięwzięciach
Zdolności komunikacyjne Są ważne ponieważ personel przedsięwzięcia musi się porozumiewać
ustnie i pisemnie z innymi inżynierami menadżerami i klientami
Zdolność do przystosowania
się
Tę zdolność można ocenić przyglądając się różnym rodzajom doświadczeń
zdobytych przez kandydata. To ważny atrybut ponieważ wynika z niego
zdolność do uczenia się
Nastawienie Personel przedsięwzięcia powinien być pozytywnie nastawiony do
wykonywanej pracy i chcieć zdobywać nowe umiejętności. To bardzo
ważny atrybut ale zwykle bardzo trudny do oceny
Osobowość To bardzo ważny atrybut ale zwykle trudny do oceny. Kandydaci muszą
być racjonalnie zgodni z innymi członkami zespołu. Żaden konkretny typ
osobowości nie jest bardziej lub mniej odpowiedni do inżynierii
oprogramowania
Inżynieria oprogramowania - 22 Slide 43
. Miejsce pracy ma istotny wpływ na ludzką
wydajność i zadowolenie z pracy
. Komfort
. Prywatność
. Pomieszczenia
. Zdrowie i bezpieczeństwo pracownika musi być
brane pod uwagę
. Oświetlenie
. Ogrzewanie
. Umeblowanie pomieszczenia pracy
Środowiska pracy
Inżynieria oprogramowania - 22 Slide 44
. Prywatność - każdy inżynier potrzebuje miejsca
gdzie mógłby się skupić i prowadzić swoje prace
. Świadomość otoczenia - ludzie preferują pracę w
warunkach naturalnego oświetlenia
. Dostosowanie do osobistych potrzeb - ludzie
przyjmują różne style pracy i maja odmienne
opinie o wystroju wnętrza
Czynniki środowiskowe
Inżynieria oprogramowania - 22 Slide 45
Organizacja przestrzeni pracy
. Miejsce pracy powinno sprzyjać prywatności i
być miejscem gdzie pracownicy mogą pracować
bez przeszkód
. Zapewnienie oddzielnych pokoi dla personelu może
spowodować wzrost produktywności
. Jednakże, niezbędne są miejsca gdzie można
przeprowadzać formalne i nieformalne spotkania
grupowe wymagane przy pracy zespołowej
Inżynieria oprogramowania - 22 Slide 46
Rozkład pokoi
Pokój
Pokój
Pokój
Pokój Pokój
Pokój
Pokój
Pokój
Pokój
spotkań
Wspólna
przestrzeń
Okno
Dzielona
dokumentacja
Inżynieria oprogramowania - 22 Slide 47
Główne tezy
. Menadżerowie powinni rozumieć pewne czynniki
ludzkie aby nie stawiać personelowi nierealnych
żądań
. Rozwiązywanie problemów wymaga integracji
informacji z pamięci długiej z nowymi
informacjami z pamięci krótkiej
. Czynniki brane pod uwagę przy wyborze
personelu to m.in. Wykształcenie, doświadczenie
z dziedziny zastosowania, zdolności do
przystosowania się i osobowość
Inżynieria oprogramowania - 22 Slide 48
Główne tezy
. Grupy tworzące oprogramowanie powinny być małe
i spójne
. Na porozumiewanie się w ramach grupy wpływają
takie czynniki, jak status członków grupy, wielkość
grupy, organizacja i skład płciowy grupy
. Środowisko pracy ma znaczący wpływ na wydajność