SlideShare una empresa de Scribd logo
1 de 75
Wykład z kursu Digital Frontier – digitalfrontier.pl




                              WARSZTAT DEVELOPERA
                              Gdzie, co i jak
Co kryje się pod tym pojęciem?
Co to warsztat?
Warsztat to:
   Miejsce pracy.
   Niezbędne narzędzia.
   Procesy produkcyjne i sposoby pracy.
   Wiedza niezbędna do ich wykonywania.
Dlaczego warsztat jest ważny
Czyli o zaletach dobrego warsztatu
Zalety dla nas
   Wpływa na jakość naszych produktów.
   Ułatwia nam pracę.
   Obniża frustrację.
   Daje więcej satysfakcji - szybciej, lepiej, łatwiej.
   Podnosi nam samo-ocenę.
   Podnosi bezpieczeństwo.
Zalety dla innych
   Ułatwia współpracę z innymi.
   Czyni z nas atrakcyjniejszego partnera.
   Podnosi bezpieczeństwo współpracy z nami.
   Jest dobrą wizytówką.
Miejsce
Inaczej miejscówka
Moja hierarchia miejsc
   Gabinet domowy.
   Własne biuro.
   Mały pokój biurowy: 2-5 osób.
   Średnie pokoje: 5-10 osób.
   Open plan office (open space): od 10 do 100+.
Samemu czy w grupie
Sam (1-5 osób)
   Zalety
     Cisza, spokój, skupienie.
     Customizacja (brak lepszego słowa) wszystkiego:
      światło, dźwięk, temperatura, meble, aranżacja, dekor
      acja.
   Wady
     Izolacja.
     Gorsza  komunikacja, „wypadnięcie z gry”.
     Brak pozytywnej rywalizacji.
     Brnięcie w ślepe zaułki.
W grupie (5+)
   Zalety:
     Komunikacja   i wymiana doświadczeń.
     Inspiracja pracą innych.

     Pozytywna rywalizacja.

   Wady:
     Hałas, rozpraszanie, światło, temperatura.
     Konieczność dostosowania się do innych.

     Brak możliwości customizacji.

     Furniture Police.
Własny kącik
Niezbędne wyposażenie
Biurko
   Duże i szerokie, zdolne pomieścić kilka
    monitorów, klawiaturę, dodatkowe wyposażenie.
   Solidny blat – nie może się uginać pod ciężarem
    sprzętu i/lub developera.
   Materiał, kolor, inne zalety są drugorzędne.
   Podstawki na monitory, szuflady na klawiaturę to
    kwestie indywidualnych upodobań.
   Ostatnio: regulowana wysokość pozwalająca na
    pracę na stojąco.
Biurko
Coś pod biurko
   Na rzeczy prywatne:
     Dokumenty.

     Zupki  instant.
     Napoje energetyczne.

     Inne rzeczy.

     Kable.

     Bałagan z biurka.
Fotel
   Najważniejszy mebel developera.
   Inwestycja na lata – nie warto oszczędzać.
   Zły fotel boli całe życie (oraz rzycie).
   Domagaj się dobrego fotela od pracodawcy.
   Jeśli sam się zatrudniasz, kup sobie dobry fotel –
    będziesz sobie sam potem wdzięczny.
   Wygodny, regulowany, podparcie
    lędźwiowe, mechanizm „synchro”.
   Bujanie i resor to nie wszystko – najgorszy fotel to
    ma.
Fotel
Oświetlenie
   Kwestia osobistych preferencji:
     Słoneczne

     Żarowe/halogenowe

     Świetlówki

     Bezpośrednie

     Rozproszone

   Biura standardowe sprzyjają: świetlówkom i
    bezpośredniemu oświetleniu.
   Biura własne pozwalają na lepsze rozwiązania.
Oświetlenie
Cała reszta
   Słuchawki!
   Lodówka, ekspres do kawy, czajnik.
   Miejsca spotkań.
   Miejsca wypoczynku/rekreacji.
   Catering/restauracje/bary/jedzenie na wynos.
   Klimatyzacja/wentylacja.
   Czystość i porządek.
   Tablice korkowe i suchościeralne.
Jak to wygląda w praktyce
Jak to wygląda w praktyce
Jak to wygląda w praktyce
Jak to wygląda w praktyce
Narzędzia
Sprzęt i oprogramowanie
Sprzęt
Hardware
Komputer
   Microsoft Windows platformą dominującą w
    tworzeniu gier:
     Podstawowa   platforma do tworzenia gier na inne
      platformy.
     Najwięcej aplikacji i najlepsze (z wyjątkami).

     Specjalistyczne aplikacje tylko na Windows.

   Specjaliści czasem mogą próbować zaszyć się na
    OS X, ale ogólna gawiedź musi się pogodzić z
    Windows.
Komputer
   Developer powinien mieć dobry, wydajny komputer.
   Nie musi to być topowa maszyna, ale nie warto też
    za bardzo oszczędzać.
   Liczy się wydajność deva, a nie jego gry (to jest
    osobny temat).
   Cokolwiek, co podnosi znacząco komfort pracy jest
    dobrą inwestycją: dużo RAM, dyski SSD.
Komputer
   Stacja robocza to nie wszystko – zespół wymaga
    więcej.
   Serwery plików (NAS).
   Serwery niezbędnych usług (np. systemów kontroli
    wersji).
   Szybka sieć do połączenia wszystkich nawzajem i z
    serwerami.
   Internet.
Monitory
   Jeden to za mało. Dwa to dobrze, a trzy też nieźle.
   Wiele monitorów ułatwia pracę i podnosi jej
    efektywność.
   Monitory LCD są tanie, warto zainwestować w
    minimum 2.
   Typ, rozmiar, jakość – kwestia indywidualnych
    wyborów, najlepiej jednak 22-24”, IPS, czasem z
    pivotem (dla koderów).
Peryferia
   Dobre myszki, wygodne klawiatury. I znów, średnia
    półka jest zupełnie wystarczająca.
   Drukarka laserowa (kolor kosztuje). Fajnie, gdy ma
    A3.
   Skaner.
   Dyski zewnętrzne na kopie zapasowe.
Sprzęt się psuje i starzeje
   Ważna jest gwarancja i serwis:
     Markowe   komputery są droższe, ale oferują lepsze
      warunku i lepszy serwis (np. NBD).
   Jeśli mamy ważny projekt, warto mieć komputer
    zapasowy.
   Kopie zapasowe (o tym dalej).
   Komputery trzeba upgradować – warto to
    wkalkulować w rozwój projektu/firmy.
Oprogramowanie
Software
Oprogramowanie specjalistyczne
   Każda dziedzina ma swoje.
   Często jest bardzo drogie i nie mamy wyboru.
   Warto poznawać alternatywy.
   Nie każde studio/projekt może udźwignąć koszty
    wymarzonego softu – dobrze znać te
    tańsze/darmowe.
   Trzeba umieć „sprzedać” swoje potrzeby w tym
    zakresie – czasem inwestycja jest bardzo
    opłacalna.
Przeglądarka web
   Internet Explorer jest najlepszą przeglądarką, aby
    ściągnąć inną przeglądarkę:
     Google  Chrome
     Mozilla Firefox

     Safari

     Opera

   To podstawowe narzędzie do uruchamiania
    rosnącej rzeszy aplikacji webowych.
Pakiet biurowy
   Najlepszym rozwiązaniem jest Microsoft Office.
   MS Office produkuje „standardowe” dokumenty.
   Arkusz kalkulacyjny przydaje się każdemu:
    programiście, artyście, projektantowi, producentowi.
   Duże możliwości tworzenia pięknych dokumentów.
   MS Visio – znakomity program do diagramów
   LibreOffice – też da radę, choć widać, że to
    biedniejszy brat, ale za to za darmo.
Pakiet biurowy online
   Można wybierać:
     Google  Docs (Drive)
     Zoho Office Suite

     Office Web Apps

   Tanio i każdy może je mieć.
   Dostępność z dowolnego miejsca.
   Możliwość łatwego dzielenia
    dokumentów, kooperacji oraz publikowania.
   Ciągle powiększane możliwości.
Google Apps
   Aplikacje Google we własnej domenie:
     Poczta  (z klientem web).
     Kalendarz.

     Komunikator w ramach domeny.

     Pakiet biurowy (Google Drive).

     Limit użytkowników: 10 w wersji darmowej.

   Nie znam powodów, dla których nie powinno się z
    tej oferty skorzystać.
Programy narzędziowe
   Idealny rozwiązaniem tej kwestii są pakiety
    narzędzi portable (przenośnych):
     Liberkey

     PortableApps.com   Suite
   Trywialna instalacja, same się aktualizują.
   Można je łatwo przenosić pomiędzy komputerami.
   Można je mieć zawsze przy sobie (pendrive).
   Szeroki wachlarz narzędzi – bez problemu
    załatwią 99,9% potrzeb.
Aplikacje portable
Systemy kontroli wersji
   Niezbędne narzędzie w każdej pracy kreatywnej
    oraz pracy grupowej.
   Zapewniają dostęp do poprzednich wersji naszych
    plików.
   Oferują mechanizm wymiany zmienionych plików
    pomiędzy członkami zespołu.
   Zapobiegają/wykrywają/niwelują konflikty w
    dostępie i modyfikacji tych samych plików.
   I mnóstwo innych, o czym później.
Systemy kontroli wersji
   Scentralizowane systemy kontroli wersji
    (uniwersalne):
     Subversion

     Perforce

   Rozproszone systemy kontroli wersji, głównie do
    kodu:
     Git

     Mercurial
Narzędzia kopii zapasowych
   Regularne wykonywania kopii w inne
    miejsce, choćby poprzez narzędzia standardowe.
   Zautomatyzowane narzędzia do wykonywania
    kopii zapasowych (np. przyrostowych).
   Systemu wykonywania kopii zapasowych w chmurę
    (np. polecam CrashPlan)
   Systemy archiwizacji kopii roboczych.
System archiwizacji kopii roboczych
   Narzędzie, które „śledzi” wybrane pliki/folder i
    wykrywa, gdy została zapisana nowa wersja pliku
    – wtedy robi jej kopię w innym miejscu.
   Automatyczny system wersjonowania plików, na
    którymi pracujemy – możemy nawet mieć wszystkie
    poprzednie wersji.
   Zawsze możemy wrócić do poprzedniej wersji i
    ocalić zepsuty pomysł, bo mamy dużo kopii
    zapasowych.
   Polecane narzędzie – FileHamster.
Inne narzędzia
   Kodeki – niezbędne do odtwarzania plików
    mediów oraz do tworzenia ich: K-Lite Codec Pack
   Archiwizer – 7-Zip.
   Antywirus i Zapora.
   Szyfrowanie dysków (np. Truecrypt).
   Program katalogujący – jeśli robimy backupy na
    fizyczne nośniki.
   Komunikatory – Skype i Miranda
   Dropbox, Google Drive, Box Net, etc.
Procesy
I dobre warsztatowe praktyki
Porządek w plikach
   Podział dysku na partycje, C: nie wystarcza.
   Folder roboczy, nie desktop.
   Jasna i czytelna struktura folderów.
   System nazewnictwa plików (najlepiej stałej
    długości) – znamy i przestrzegany.
   Konsekwencja w używaniu małych/wielkich liter.
   Unikanie znaków diakrytycznych.
   Osobno źródła, osobno rezultaty.
Zarządzanie plikami
   Wygodne narzędzia do operacji na plikach: Total
    Commander, Altap Salamander.
   Umiejętność wykonywania operacji masowych na
    plikach: wybiórczego kasowania/ przenoszenia/
    kopiowania dużych liczb plików.
   Umiejętność masowego zmieniania nazw plików.
Praca z systemami kontroli wersji
   Systemy te zapewniają:
     Synchronizację  pomiędzy członkami zespołu.
     Kopie zapasowe.

     Dostęp do poprzednich wersji.

     Możliwość cofania zmian (bliskich i dalekich).

     Śledzenie zmian.

     Archiwizacja i tagowanie.

     Określanie autorstwa.

     Branch and merge.
Praca z systemami kontroli wersji
   Repozytorium (server) i kopia robocze (klient)
   Pierwszy checkout, a potem:
     Zmiany,a potem commit
     Update, oby otrzymać zmiany innych

   I tak w kółko
   Tryby:
     merge
     Lock

   http://betterexplained.com/articles/a-visual-
    guide-to-version-control/
Kopie zapasowe
   Sprzęt się psuje, ludzie popełniają pomyłki.
   Kopie zapasowe mają chronić przed powyższym.
   Systemy automatycznej archiwizacji i
    wersjonowania.
   Kopie do innych folderów, na inne dyski.
   Kopie off-site (wynoszone).
   Kopie w chmurę (cloud).
   Kopie proste i przyrostowe.
   Kopie kopii (np. kopie repozytorium)
Kopie zapasowe
   Coraz więcej danych przechowujemy u innych:
     Pocztęelektroniczną.
     Dokumenty.

     Czasem kod i dane (zewnętrzne repozytoria).

   Może zostać pozbawieni dostępu w dowolnym
    momencie.
   Musimy robić sobie kopie zapasowe lokalnie, a te
    kopie gdzieś sobie dla bezpieczeństwa kopiować.
Archiwizacja
   Nigdy nie wiadomo, kiedy wrócimy do rzeczy
    sprzed lat.
   Dysponuję kopiami prac sprzed 20 lat.
   Należy stosować standardowe archiwizery.
   Pamiętajmy, że nośniki fizyczne mają ograniczony
    czas życia.
   Redundancja pomaga w odzyskaniu danych po
    latach.
   Odświeżanie jest dobrym sposobem na utrzymanie
    dostępu do starych danych.
Automatyzacja
   Wiele procesów wymaga wykonywania
    podobnych, albo takich samych ciągów czynności.
   To doskonała właściwość do zastosowania
    automatyzacji.
   Tworzenie kopii zapasowych/wersji jest dobrym
    przykładem procesu, który może być całkiem
    automatyczny – wystarczy dobrać narzędzie.
Automatyzacja
   Często proces tworzenia czegoś nie dostarcza
    danych w odpowiednim formacie dla gry.
   Trzeba je przetworzyć –
    wyeksportować, zaimportować, itp.
   Czasem jest to kilka etapów, podczas których łatwo
    o pomyłkę.
   Automatyzacja pozwala unikać pomyłek, oraz
    przyspieszyć proces.
Automatyzacja
   Skrypty wiersza poleceń – pliki .BAT
     Łatwy język skryptowy do operacji na plikach.
     Możliwość przetwarzania plików poprzez narzędzia
      dające się uruchamiać z parametrami wiersza poleceń.
   Języki skryptowe – bardziej zaawansowane języki
    typu Perl czy Python, które pozwalają na
    wykonywanie bardziej skomplikowanych operacji
    na plikach czy wręcz na zawartych w nich danych.
Automatyzacja
   Wykonywanie operacji na podstawie reguł:
     Narzędzie budujące – make
     Narzędzie budujące – Apache Ant

   Przetwarzają dane wejściowe na podstawie raz
    zdefiniowanych reguł.
   Pozwalają one na tworzenie różnych wynikowych
    danych na podstawie zadanych parametrów.
   Głównie używane do tworzenia buildów – lokalnych
    lub globalnych.
Automatyzacja
   Ciągła integracja i automatyczne tworzenie
    buildów dla zespołu wraz z ich dystrybucją:
     Instant
            builds
     Daily/nightly builds

   Automatyczne testowanie:
     Testy jednostkowe
     Automatyczne smoke tests

     Testy wydajnościowe
Identyfikacja wersji
   System nazewnictwa powinien pozwalać łatwo
    rozróżniać podobne dane np. do różnych języków.
   Kolejne wersje gry powinny się różnić – proces
    tworzenia gry powinien automatycznie zmieniać jej
    oznaczenie wersji.
   Warianty powinny być także jasno oznaczane –
    poprzez umieszczania danych wynikowy w
    różnych, odpowiednio oznaczonych folderach.
   Dobrze oznaczone wersje łatwiej identyfikować
    (raporty), przekazywać (wysyłka) i archiwizować.
Zarządzanie dokumentami
   Dokumenty współdzielone online rozwiązują wiele
    problemów:
     Zawsze   jest aktualna wersja.
     Można współedytować w tym samym czasie.
     Widać kto i kiedy edytował.
     Widać co zostało zmienione.
     Jest historia zmian.
     Łatwo udostępnia się kolejnym uczestnikom.
     Daje się przeszukiwać.

   Dokumenty online oferują ubogie formatowanie i
    możliwości, oraz nie wszystkie typy dokumentów.
Zarządzanie dokumentami
   Dokumenty tworzone tradycyjnie można dzielić i
    zarządzać w systemie kontroli wersji:
     System   z wyłącznością edycji zabezpiecza przed
      konfliktami.
     Jest zawsze aktualizowany.

     Jest historia zmian.

     Jest dostęp dla każdego.

     Nie można go jednak przeszukiwać.

     Tylko jedna osoba może edytować dokument.
Baza wiedzy
   Nie zawsze zbiór dokumentów w serwisie online czy
    repozytorium jest dobrym sposobem na
    dokumentowanie wiedzy.
   Jest zapewne najprostszym do wypełnienia, ale nie
    do użytkowania.
   Wiedza na temat gry czy procesów produkcyjnych
    może być lepiej przedstawiona w formie wiki.
   Wiki jest trudniejsze w utrzymaniu (szczególnie
    oparte o mark up) i ma ograniczone (znów)
    możliwości formatowania.
Zarządzanie procesami etapowymi
   Wiele procesów produkcyjnych w grach jest
    wieloetapowych, gdzie każdy etap wykonywany
    jest przez różnych ludzi.
   Musi istnieć dobry mechanizm przekazywania sobie
    prac pomiędzy etapami – np. poprzez
    umieszczanie ich w odpowiednich folderach
    repozytorium.
   Kolejni wykonawcy muszą wiedzieć, że czeka ich
    nowa praca – mogą sprawdzać foldery, ale też
    można zorganizować jakiś system informowania się
    o zakończeniu etapu.
Zarządzanie procesami etapowymi
   Można trzymać wspólny arkusz kalkulacyjny, w
    którym oznacza się statusy odpowiednich obiektów.
   Można też mieć tablicę z karteczkami, które
    wędrują do odpowiednich przedziałów informując
    kolejnych wykonawców, że czeka ich praca.
   Czasem owa praca to akceptacja.
   Można zrealizować tablicę w formie
    elektronicznej, choćby w systemie Trello.com
   Warto poczytać o metodyce Kanban.
Zarządzanie swoim czasem
   Pamięć jest zawodna – lepiej jakoś zapisywać, co
    chcemy robić.
   Najprostsze są choćby listy to-do.
   Większość z nich to aplikacje webowe, dostępne z
    każdej przeglądarki i aplikacji mobilnych.
   Nierzadko mogą pomóc nas w zarządzaniu małym
    i niemałym zespołem.
Zarządzanie swoim czasem




           trello.com      basecamp.com




          todoist.com      teuxdeux.com
Praca efektywna
   Prokrastynacja
     Stwierdzenie    zjawiska
     Walka   z nim
   Flow
   Walka z
    rutyną, znudzeniem i
    wypaleniem.
Zbieranie danych
   Zbyt wiele rzeczy ocenianych jest „na czuja” i na
    podstawie tych obserwacji wyciągane są wnioski i
    wprowadzane zmiany.
   Często obserwacje są błędne, obarczone błędami
    psychologicznymi.
   Skuteczność wprowadzonych na skutek błędnych
    zmian oceniania jest ponownie błędnymi
    obserwacjami.
   Problem pogłębia się zamiast znikać.
Zbieranie danych
   Znacznie lepszy sposobem jest zbierania twardych
    danych, opartych na obiektywnych pomiarach (tzw.
    metrics).
   Obiektywne dane nie oznaczają, że wyciągniemy
    właściwe wnioski, ale możemy ponownie
    zweryfikować rezultat w oparciu o obiektywne
    dane.
   Obróbka statystyczna może być trudna, ale tu
    możemy poprosić o pomoc.
Zbieranie danych
   Metrics nie muszą dotyczyć gry, ale także mogą
    dotyczyć procesów produkcji.
   Możliwość śledzenia czasów produkcji podobnych
    elementów umożliwia obiektywne stwierdzenie
    wpływu udoskonaleń procesu. Można też wykryć
    zjawiska, które wpływają na zakłócanie
    procesu, czy potencjalne wąskie gardła.
Autopromocja i nauka
   Pokazujmy innym w zespole, co tam robimy:
     Róbmy  snapshoty.
     Pokazujmy je i dyskutujmy.

     Chwalmy się i pobudzajmy zdrową rywalizację.

     Mentorujmy młodszym

   Uczmy się od innych w zespole:
     Róbmy  regularne przeglądy naszych prac.
     Patrzmy co ktoś zrobił i jak.

     Pytajmy się i uczmy od starszych.
Dokumentowanie projektu
   Chodzi o dokumentowanie tego, co się w projekcie
    działo.
   Zapamiętywanie zadań z systemu zarządzania nimi
    (fajna historia zadań).
   Robienie screenshotów i filmików regularnie co jakiś
    interwał, aby móc odtworzyć proces przemiany gry.
   Archiwizacja co jakiś czas gry w jej aktualnym
    stanie – znów fajna możliwość prześledzenia zmian.
   Zdjęcia z pracy i zabawy – fajnie do nich wrócić
    po latach.
Wiedza
Co generalnie warto znać
Wiedza
   Stale pogłębiana wiedza na temat specyficznych
    narzędzi i procesów w naszej dziedzinie.
   Zapoznawanie się z nowymi/innymi
    narzędziami, nawet jeśli ich nie używamy w danym
    momencie.
   Podglądanie pracy innych, wymiana doświadczeń.
   Gromadzenie referencji, które mogą się na przydać
    w pracy, czy współpracy z innymi.
Wiedza
   Wyrażenia regularne – nieocenione w zamianie
    nazwa plików, wyszukiwaniu plików czy bardziej
    skomplikowanych operacjach na tekstach.
   Składnie skryptów .BAT
   Co to jest CSV, XML oraz JSON i dlaczego w tym
    ostatnim warto przesyłać dane.
   Co to są bazy NoSQL i dlaczego fajnie w nich
    trzymać dane do analiz (metrics).
   Fajnie wiedzieć coś o metodykach zwinnych (agile).
   Jak zamieniać nasze dokumenty na PDFy!

Más contenido relacionado

La actualidad más candente

Ciemne strony gamedevu
Ciemne strony gamedevuCiemne strony gamedevu
Ciemne strony gamedevuMaciej Miąsik
 
Podstawy Projektowania Gier
Podstawy Projektowania GierPodstawy Projektowania Gier
Podstawy Projektowania GierArtur Ganszyniec
 
Ocalić od zapomnienia
Ocalić od zapomnieniaOcalić od zapomnienia
Ocalić od zapomnieniaMaciej Miąsik
 
Wykład o kompromisie w grach
Wykład o kompromisie w grachWykład o kompromisie w grach
Wykład o kompromisie w grachJacek Brzeziński
 
Prototypowanie i design iteracyjny
Prototypowanie i design iteracyjnyPrototypowanie i design iteracyjny
Prototypowanie i design iteracyjnyArtur Ganszyniec
 
Ślepe zaułki designu, czyli jak przestałem się bać i pokochałem preprodukcję.
Ślepe zaułki designu, czyli jak przestałem się bać i pokochałem preprodukcję.Ślepe zaułki designu, czyli jak przestałem się bać i pokochałem preprodukcję.
Ślepe zaułki designu, czyli jak przestałem się bać i pokochałem preprodukcję.Artur Ganszyniec
 
Creating endless playgrounds
Creating endless playgroundsCreating endless playgrounds
Creating endless playgroundsArtur Roszczyk
 

La actualidad más candente (9)

Ciemne strony gamedevu
Ciemne strony gamedevuCiemne strony gamedevu
Ciemne strony gamedevu
 
Death march
Death marchDeath march
Death march
 
Prototypowanie
PrototypowaniePrototypowanie
Prototypowanie
 
Podstawy Projektowania Gier
Podstawy Projektowania GierPodstawy Projektowania Gier
Podstawy Projektowania Gier
 
Ocalić od zapomnienia
Ocalić od zapomnieniaOcalić od zapomnienia
Ocalić od zapomnienia
 
Wykład o kompromisie w grach
Wykład o kompromisie w grachWykład o kompromisie w grach
Wykład o kompromisie w grach
 
Prototypowanie i design iteracyjny
Prototypowanie i design iteracyjnyPrototypowanie i design iteracyjny
Prototypowanie i design iteracyjny
 
Ślepe zaułki designu, czyli jak przestałem się bać i pokochałem preprodukcję.
Ślepe zaułki designu, czyli jak przestałem się bać i pokochałem preprodukcję.Ślepe zaułki designu, czyli jak przestałem się bać i pokochałem preprodukcję.
Ślepe zaułki designu, czyli jak przestałem się bać i pokochałem preprodukcję.
 
Creating endless playgrounds
Creating endless playgroundsCreating endless playgrounds
Creating endless playgrounds
 

Similar a Warsztat developera

Defragmentacja dysku – Przewodnik Krok po Kroku
Defragmentacja dysku – Przewodnik Krok po KrokuDefragmentacja dysku – Przewodnik Krok po Kroku
Defragmentacja dysku – Przewodnik Krok po Krokumichalip
 
Prez google
Prez googlePrez google
Prez googleAndLas
 
Prez google
Prez googlePrez google
Prez googlemajkel_w
 
Prez google
Prez googlePrez google
Prez googleMarraje
 
Prez google
Prez googlePrez google
Prez googlewergra
 
Prez google
Prez googlePrez google
Prez googledomwer25
 
Prez google
Prez googlePrez google
Prez googlemajkel_w
 
Prez google
Prez googlePrez google
Prez googleagata_p
 
Prez google
Prez googlePrez google
Prez googleMarwlo
 
Prez google
Prez googlePrez google
Prez googlemajkel_w
 
Prez google
Prez googlePrez google
Prez googlemajkel_w
 
Dysk google
Dysk googleDysk google
Dysk googlewerjel07
 
Dysk google
Dysk googleDysk google
Dysk googlePatrKols
 

Similar a Warsztat developera (20)

Defragmentacja dysku – Przewodnik Krok po Kroku
Defragmentacja dysku – Przewodnik Krok po KrokuDefragmentacja dysku – Przewodnik Krok po Kroku
Defragmentacja dysku – Przewodnik Krok po Kroku
 
Aplikacje biznesowe
Aplikacje biznesoweAplikacje biznesowe
Aplikacje biznesowe
 
Aplikacje biznesowe
Aplikacje biznesoweAplikacje biznesowe
Aplikacje biznesowe
 
Prez google
Prez googlePrez google
Prez google
 
Prez google
Prez googlePrez google
Prez google
 
Prez google
Prez googlePrez google
Prez google
 
Prez google
Prez googlePrez google
Prez google
 
Prez google
Prez googlePrez google
Prez google
 
Prez google
Prez googlePrez google
Prez google
 
Prez google
Prez googlePrez google
Prez google
 
Prez google
Prez googlePrez google
Prez google
 
Prez google
Prez googlePrez google
Prez google
 
Prez google
Prez googlePrez google
Prez google
 
Prez google
Prez googlePrez google
Prez google
 
Prez google
Prez googlePrez google
Prez google
 
Prez google
Prez googlePrez google
Prez google
 
Prez google
Prez googlePrez google
Prez google
 
Prez google
Prez googlePrez google
Prez google
 
Dysk google
Dysk googleDysk google
Dysk google
 
Dysk google
Dysk googleDysk google
Dysk google
 

Warsztat developera

  • 1. Wykład z kursu Digital Frontier – digitalfrontier.pl WARSZTAT DEVELOPERA Gdzie, co i jak
  • 2. Co kryje się pod tym pojęciem? Co to warsztat?
  • 3. Warsztat to:  Miejsce pracy.  Niezbędne narzędzia.  Procesy produkcyjne i sposoby pracy.  Wiedza niezbędna do ich wykonywania.
  • 4. Dlaczego warsztat jest ważny Czyli o zaletach dobrego warsztatu
  • 5. Zalety dla nas  Wpływa na jakość naszych produktów.  Ułatwia nam pracę.  Obniża frustrację.  Daje więcej satysfakcji - szybciej, lepiej, łatwiej.  Podnosi nam samo-ocenę.  Podnosi bezpieczeństwo.
  • 6. Zalety dla innych  Ułatwia współpracę z innymi.  Czyni z nas atrakcyjniejszego partnera.  Podnosi bezpieczeństwo współpracy z nami.  Jest dobrą wizytówką.
  • 8. Moja hierarchia miejsc  Gabinet domowy.  Własne biuro.  Mały pokój biurowy: 2-5 osób.  Średnie pokoje: 5-10 osób.  Open plan office (open space): od 10 do 100+.
  • 9. Samemu czy w grupie
  • 10. Sam (1-5 osób)  Zalety  Cisza, spokój, skupienie.  Customizacja (brak lepszego słowa) wszystkiego: światło, dźwięk, temperatura, meble, aranżacja, dekor acja.  Wady  Izolacja.  Gorsza komunikacja, „wypadnięcie z gry”.  Brak pozytywnej rywalizacji.  Brnięcie w ślepe zaułki.
  • 11. W grupie (5+)  Zalety:  Komunikacja i wymiana doświadczeń.  Inspiracja pracą innych.  Pozytywna rywalizacja.  Wady:  Hałas, rozpraszanie, światło, temperatura.  Konieczność dostosowania się do innych.  Brak możliwości customizacji.  Furniture Police.
  • 13. Biurko  Duże i szerokie, zdolne pomieścić kilka monitorów, klawiaturę, dodatkowe wyposażenie.  Solidny blat – nie może się uginać pod ciężarem sprzętu i/lub developera.  Materiał, kolor, inne zalety są drugorzędne.  Podstawki na monitory, szuflady na klawiaturę to kwestie indywidualnych upodobań.  Ostatnio: regulowana wysokość pozwalająca na pracę na stojąco.
  • 15. Coś pod biurko  Na rzeczy prywatne:  Dokumenty.  Zupki instant.  Napoje energetyczne.  Inne rzeczy.  Kable.  Bałagan z biurka.
  • 16. Fotel  Najważniejszy mebel developera.  Inwestycja na lata – nie warto oszczędzać.  Zły fotel boli całe życie (oraz rzycie).  Domagaj się dobrego fotela od pracodawcy.  Jeśli sam się zatrudniasz, kup sobie dobry fotel – będziesz sobie sam potem wdzięczny.  Wygodny, regulowany, podparcie lędźwiowe, mechanizm „synchro”.  Bujanie i resor to nie wszystko – najgorszy fotel to ma.
  • 17. Fotel
  • 18. Oświetlenie  Kwestia osobistych preferencji:  Słoneczne  Żarowe/halogenowe  Świetlówki  Bezpośrednie  Rozproszone  Biura standardowe sprzyjają: świetlówkom i bezpośredniemu oświetleniu.  Biura własne pozwalają na lepsze rozwiązania.
  • 20. Cała reszta  Słuchawki!  Lodówka, ekspres do kawy, czajnik.  Miejsca spotkań.  Miejsca wypoczynku/rekreacji.  Catering/restauracje/bary/jedzenie na wynos.  Klimatyzacja/wentylacja.  Czystość i porządek.  Tablice korkowe i suchościeralne.
  • 21. Jak to wygląda w praktyce
  • 22. Jak to wygląda w praktyce
  • 23. Jak to wygląda w praktyce
  • 24. Jak to wygląda w praktyce
  • 27. Komputer  Microsoft Windows platformą dominującą w tworzeniu gier:  Podstawowa platforma do tworzenia gier na inne platformy.  Najwięcej aplikacji i najlepsze (z wyjątkami).  Specjalistyczne aplikacje tylko na Windows.  Specjaliści czasem mogą próbować zaszyć się na OS X, ale ogólna gawiedź musi się pogodzić z Windows.
  • 28. Komputer  Developer powinien mieć dobry, wydajny komputer.  Nie musi to być topowa maszyna, ale nie warto też za bardzo oszczędzać.  Liczy się wydajność deva, a nie jego gry (to jest osobny temat).  Cokolwiek, co podnosi znacząco komfort pracy jest dobrą inwestycją: dużo RAM, dyski SSD.
  • 29. Komputer  Stacja robocza to nie wszystko – zespół wymaga więcej.  Serwery plików (NAS).  Serwery niezbędnych usług (np. systemów kontroli wersji).  Szybka sieć do połączenia wszystkich nawzajem i z serwerami.  Internet.
  • 30. Monitory  Jeden to za mało. Dwa to dobrze, a trzy też nieźle.  Wiele monitorów ułatwia pracę i podnosi jej efektywność.  Monitory LCD są tanie, warto zainwestować w minimum 2.  Typ, rozmiar, jakość – kwestia indywidualnych wyborów, najlepiej jednak 22-24”, IPS, czasem z pivotem (dla koderów).
  • 31. Peryferia  Dobre myszki, wygodne klawiatury. I znów, średnia półka jest zupełnie wystarczająca.  Drukarka laserowa (kolor kosztuje). Fajnie, gdy ma A3.  Skaner.  Dyski zewnętrzne na kopie zapasowe.
  • 32. Sprzęt się psuje i starzeje  Ważna jest gwarancja i serwis:  Markowe komputery są droższe, ale oferują lepsze warunku i lepszy serwis (np. NBD).  Jeśli mamy ważny projekt, warto mieć komputer zapasowy.  Kopie zapasowe (o tym dalej).  Komputery trzeba upgradować – warto to wkalkulować w rozwój projektu/firmy.
  • 34. Oprogramowanie specjalistyczne  Każda dziedzina ma swoje.  Często jest bardzo drogie i nie mamy wyboru.  Warto poznawać alternatywy.  Nie każde studio/projekt może udźwignąć koszty wymarzonego softu – dobrze znać te tańsze/darmowe.  Trzeba umieć „sprzedać” swoje potrzeby w tym zakresie – czasem inwestycja jest bardzo opłacalna.
  • 35. Przeglądarka web  Internet Explorer jest najlepszą przeglądarką, aby ściągnąć inną przeglądarkę:  Google Chrome  Mozilla Firefox  Safari  Opera  To podstawowe narzędzie do uruchamiania rosnącej rzeszy aplikacji webowych.
  • 36. Pakiet biurowy  Najlepszym rozwiązaniem jest Microsoft Office.  MS Office produkuje „standardowe” dokumenty.  Arkusz kalkulacyjny przydaje się każdemu: programiście, artyście, projektantowi, producentowi.  Duże możliwości tworzenia pięknych dokumentów.  MS Visio – znakomity program do diagramów  LibreOffice – też da radę, choć widać, że to biedniejszy brat, ale za to za darmo.
  • 37. Pakiet biurowy online  Można wybierać:  Google Docs (Drive)  Zoho Office Suite  Office Web Apps  Tanio i każdy może je mieć.  Dostępność z dowolnego miejsca.  Możliwość łatwego dzielenia dokumentów, kooperacji oraz publikowania.  Ciągle powiększane możliwości.
  • 38. Google Apps  Aplikacje Google we własnej domenie:  Poczta (z klientem web).  Kalendarz.  Komunikator w ramach domeny.  Pakiet biurowy (Google Drive).  Limit użytkowników: 10 w wersji darmowej.  Nie znam powodów, dla których nie powinno się z tej oferty skorzystać.
  • 39. Programy narzędziowe  Idealny rozwiązaniem tej kwestii są pakiety narzędzi portable (przenośnych):  Liberkey  PortableApps.com Suite  Trywialna instalacja, same się aktualizują.  Można je łatwo przenosić pomiędzy komputerami.  Można je mieć zawsze przy sobie (pendrive).  Szeroki wachlarz narzędzi – bez problemu załatwią 99,9% potrzeb.
  • 41. Systemy kontroli wersji  Niezbędne narzędzie w każdej pracy kreatywnej oraz pracy grupowej.  Zapewniają dostęp do poprzednich wersji naszych plików.  Oferują mechanizm wymiany zmienionych plików pomiędzy członkami zespołu.  Zapobiegają/wykrywają/niwelują konflikty w dostępie i modyfikacji tych samych plików.  I mnóstwo innych, o czym później.
  • 42. Systemy kontroli wersji  Scentralizowane systemy kontroli wersji (uniwersalne):  Subversion  Perforce  Rozproszone systemy kontroli wersji, głównie do kodu:  Git  Mercurial
  • 43. Narzędzia kopii zapasowych  Regularne wykonywania kopii w inne miejsce, choćby poprzez narzędzia standardowe.  Zautomatyzowane narzędzia do wykonywania kopii zapasowych (np. przyrostowych).  Systemu wykonywania kopii zapasowych w chmurę (np. polecam CrashPlan)  Systemy archiwizacji kopii roboczych.
  • 44. System archiwizacji kopii roboczych  Narzędzie, które „śledzi” wybrane pliki/folder i wykrywa, gdy została zapisana nowa wersja pliku – wtedy robi jej kopię w innym miejscu.  Automatyczny system wersjonowania plików, na którymi pracujemy – możemy nawet mieć wszystkie poprzednie wersji.  Zawsze możemy wrócić do poprzedniej wersji i ocalić zepsuty pomysł, bo mamy dużo kopii zapasowych.  Polecane narzędzie – FileHamster.
  • 45. Inne narzędzia  Kodeki – niezbędne do odtwarzania plików mediów oraz do tworzenia ich: K-Lite Codec Pack  Archiwizer – 7-Zip.  Antywirus i Zapora.  Szyfrowanie dysków (np. Truecrypt).  Program katalogujący – jeśli robimy backupy na fizyczne nośniki.  Komunikatory – Skype i Miranda  Dropbox, Google Drive, Box Net, etc.
  • 47. Porządek w plikach  Podział dysku na partycje, C: nie wystarcza.  Folder roboczy, nie desktop.  Jasna i czytelna struktura folderów.  System nazewnictwa plików (najlepiej stałej długości) – znamy i przestrzegany.  Konsekwencja w używaniu małych/wielkich liter.  Unikanie znaków diakrytycznych.  Osobno źródła, osobno rezultaty.
  • 48. Zarządzanie plikami  Wygodne narzędzia do operacji na plikach: Total Commander, Altap Salamander.  Umiejętność wykonywania operacji masowych na plikach: wybiórczego kasowania/ przenoszenia/ kopiowania dużych liczb plików.  Umiejętność masowego zmieniania nazw plików.
  • 49. Praca z systemami kontroli wersji  Systemy te zapewniają:  Synchronizację pomiędzy członkami zespołu.  Kopie zapasowe.  Dostęp do poprzednich wersji.  Możliwość cofania zmian (bliskich i dalekich).  Śledzenie zmian.  Archiwizacja i tagowanie.  Określanie autorstwa.  Branch and merge.
  • 50. Praca z systemami kontroli wersji  Repozytorium (server) i kopia robocze (klient)  Pierwszy checkout, a potem:  Zmiany,a potem commit  Update, oby otrzymać zmiany innych  I tak w kółko  Tryby:  merge  Lock  http://betterexplained.com/articles/a-visual- guide-to-version-control/
  • 51. Kopie zapasowe  Sprzęt się psuje, ludzie popełniają pomyłki.  Kopie zapasowe mają chronić przed powyższym.  Systemy automatycznej archiwizacji i wersjonowania.  Kopie do innych folderów, na inne dyski.  Kopie off-site (wynoszone).  Kopie w chmurę (cloud).  Kopie proste i przyrostowe.  Kopie kopii (np. kopie repozytorium)
  • 52. Kopie zapasowe  Coraz więcej danych przechowujemy u innych:  Pocztęelektroniczną.  Dokumenty.  Czasem kod i dane (zewnętrzne repozytoria).  Może zostać pozbawieni dostępu w dowolnym momencie.  Musimy robić sobie kopie zapasowe lokalnie, a te kopie gdzieś sobie dla bezpieczeństwa kopiować.
  • 53. Archiwizacja  Nigdy nie wiadomo, kiedy wrócimy do rzeczy sprzed lat.  Dysponuję kopiami prac sprzed 20 lat.  Należy stosować standardowe archiwizery.  Pamiętajmy, że nośniki fizyczne mają ograniczony czas życia.  Redundancja pomaga w odzyskaniu danych po latach.  Odświeżanie jest dobrym sposobem na utrzymanie dostępu do starych danych.
  • 54. Automatyzacja  Wiele procesów wymaga wykonywania podobnych, albo takich samych ciągów czynności.  To doskonała właściwość do zastosowania automatyzacji.  Tworzenie kopii zapasowych/wersji jest dobrym przykładem procesu, który może być całkiem automatyczny – wystarczy dobrać narzędzie.
  • 55. Automatyzacja  Często proces tworzenia czegoś nie dostarcza danych w odpowiednim formacie dla gry.  Trzeba je przetworzyć – wyeksportować, zaimportować, itp.  Czasem jest to kilka etapów, podczas których łatwo o pomyłkę.  Automatyzacja pozwala unikać pomyłek, oraz przyspieszyć proces.
  • 56. Automatyzacja  Skrypty wiersza poleceń – pliki .BAT  Łatwy język skryptowy do operacji na plikach.  Możliwość przetwarzania plików poprzez narzędzia dające się uruchamiać z parametrami wiersza poleceń.  Języki skryptowe – bardziej zaawansowane języki typu Perl czy Python, które pozwalają na wykonywanie bardziej skomplikowanych operacji na plikach czy wręcz na zawartych w nich danych.
  • 57. Automatyzacja  Wykonywanie operacji na podstawie reguł:  Narzędzie budujące – make  Narzędzie budujące – Apache Ant  Przetwarzają dane wejściowe na podstawie raz zdefiniowanych reguł.  Pozwalają one na tworzenie różnych wynikowych danych na podstawie zadanych parametrów.  Głównie używane do tworzenia buildów – lokalnych lub globalnych.
  • 58. Automatyzacja  Ciągła integracja i automatyczne tworzenie buildów dla zespołu wraz z ich dystrybucją:  Instant builds  Daily/nightly builds  Automatyczne testowanie:  Testy jednostkowe  Automatyczne smoke tests  Testy wydajnościowe
  • 59. Identyfikacja wersji  System nazewnictwa powinien pozwalać łatwo rozróżniać podobne dane np. do różnych języków.  Kolejne wersje gry powinny się różnić – proces tworzenia gry powinien automatycznie zmieniać jej oznaczenie wersji.  Warianty powinny być także jasno oznaczane – poprzez umieszczania danych wynikowy w różnych, odpowiednio oznaczonych folderach.  Dobrze oznaczone wersje łatwiej identyfikować (raporty), przekazywać (wysyłka) i archiwizować.
  • 60. Zarządzanie dokumentami  Dokumenty współdzielone online rozwiązują wiele problemów:  Zawsze jest aktualna wersja.  Można współedytować w tym samym czasie.  Widać kto i kiedy edytował.  Widać co zostało zmienione.  Jest historia zmian.  Łatwo udostępnia się kolejnym uczestnikom.  Daje się przeszukiwać.  Dokumenty online oferują ubogie formatowanie i możliwości, oraz nie wszystkie typy dokumentów.
  • 61. Zarządzanie dokumentami  Dokumenty tworzone tradycyjnie można dzielić i zarządzać w systemie kontroli wersji:  System z wyłącznością edycji zabezpiecza przed konfliktami.  Jest zawsze aktualizowany.  Jest historia zmian.  Jest dostęp dla każdego.  Nie można go jednak przeszukiwać.  Tylko jedna osoba może edytować dokument.
  • 62. Baza wiedzy  Nie zawsze zbiór dokumentów w serwisie online czy repozytorium jest dobrym sposobem na dokumentowanie wiedzy.  Jest zapewne najprostszym do wypełnienia, ale nie do użytkowania.  Wiedza na temat gry czy procesów produkcyjnych może być lepiej przedstawiona w formie wiki.  Wiki jest trudniejsze w utrzymaniu (szczególnie oparte o mark up) i ma ograniczone (znów) możliwości formatowania.
  • 63. Zarządzanie procesami etapowymi  Wiele procesów produkcyjnych w grach jest wieloetapowych, gdzie każdy etap wykonywany jest przez różnych ludzi.  Musi istnieć dobry mechanizm przekazywania sobie prac pomiędzy etapami – np. poprzez umieszczanie ich w odpowiednich folderach repozytorium.  Kolejni wykonawcy muszą wiedzieć, że czeka ich nowa praca – mogą sprawdzać foldery, ale też można zorganizować jakiś system informowania się o zakończeniu etapu.
  • 64. Zarządzanie procesami etapowymi  Można trzymać wspólny arkusz kalkulacyjny, w którym oznacza się statusy odpowiednich obiektów.  Można też mieć tablicę z karteczkami, które wędrują do odpowiednich przedziałów informując kolejnych wykonawców, że czeka ich praca.  Czasem owa praca to akceptacja.  Można zrealizować tablicę w formie elektronicznej, choćby w systemie Trello.com  Warto poczytać o metodyce Kanban.
  • 65. Zarządzanie swoim czasem  Pamięć jest zawodna – lepiej jakoś zapisywać, co chcemy robić.  Najprostsze są choćby listy to-do.  Większość z nich to aplikacje webowe, dostępne z każdej przeglądarki i aplikacji mobilnych.  Nierzadko mogą pomóc nas w zarządzaniu małym i niemałym zespołem.
  • 66. Zarządzanie swoim czasem trello.com basecamp.com todoist.com teuxdeux.com
  • 67. Praca efektywna  Prokrastynacja  Stwierdzenie zjawiska  Walka z nim  Flow  Walka z rutyną, znudzeniem i wypaleniem.
  • 68. Zbieranie danych  Zbyt wiele rzeczy ocenianych jest „na czuja” i na podstawie tych obserwacji wyciągane są wnioski i wprowadzane zmiany.  Często obserwacje są błędne, obarczone błędami psychologicznymi.  Skuteczność wprowadzonych na skutek błędnych zmian oceniania jest ponownie błędnymi obserwacjami.  Problem pogłębia się zamiast znikać.
  • 69. Zbieranie danych  Znacznie lepszy sposobem jest zbierania twardych danych, opartych na obiektywnych pomiarach (tzw. metrics).  Obiektywne dane nie oznaczają, że wyciągniemy właściwe wnioski, ale możemy ponownie zweryfikować rezultat w oparciu o obiektywne dane.  Obróbka statystyczna może być trudna, ale tu możemy poprosić o pomoc.
  • 70. Zbieranie danych  Metrics nie muszą dotyczyć gry, ale także mogą dotyczyć procesów produkcji.  Możliwość śledzenia czasów produkcji podobnych elementów umożliwia obiektywne stwierdzenie wpływu udoskonaleń procesu. Można też wykryć zjawiska, które wpływają na zakłócanie procesu, czy potencjalne wąskie gardła.
  • 71. Autopromocja i nauka  Pokazujmy innym w zespole, co tam robimy:  Róbmy snapshoty.  Pokazujmy je i dyskutujmy.  Chwalmy się i pobudzajmy zdrową rywalizację.  Mentorujmy młodszym  Uczmy się od innych w zespole:  Róbmy regularne przeglądy naszych prac.  Patrzmy co ktoś zrobił i jak.  Pytajmy się i uczmy od starszych.
  • 72. Dokumentowanie projektu  Chodzi o dokumentowanie tego, co się w projekcie działo.  Zapamiętywanie zadań z systemu zarządzania nimi (fajna historia zadań).  Robienie screenshotów i filmików regularnie co jakiś interwał, aby móc odtworzyć proces przemiany gry.  Archiwizacja co jakiś czas gry w jej aktualnym stanie – znów fajna możliwość prześledzenia zmian.  Zdjęcia z pracy i zabawy – fajnie do nich wrócić po latach.
  • 74. Wiedza  Stale pogłębiana wiedza na temat specyficznych narzędzi i procesów w naszej dziedzinie.  Zapoznawanie się z nowymi/innymi narzędziami, nawet jeśli ich nie używamy w danym momencie.  Podglądanie pracy innych, wymiana doświadczeń.  Gromadzenie referencji, które mogą się na przydać w pracy, czy współpracy z innymi.
  • 75. Wiedza  Wyrażenia regularne – nieocenione w zamianie nazwa plików, wyszukiwaniu plików czy bardziej skomplikowanych operacjach na tekstach.  Składnie skryptów .BAT  Co to jest CSV, XML oraz JSON i dlaczego w tym ostatnim warto przesyłać dane.  Co to są bazy NoSQL i dlaczego fajnie w nich trzymać dane do analiz (metrics).  Fajnie wiedzieć coś o metodykach zwinnych (agile).  Jak zamieniać nasze dokumenty na PDFy!