Żółtodziób w świecie Windows Phone – pierwsze kroki

Gdy zaczynałam swoją przygodę z programowaniem w Windows Phone (jakoś w maju zeszłego roku) okazało się, że to nie jest po prostu kolejny rodzaj projektu w Visual Studio. A szkoda, bo samo rozpoczęcie pracy, czy przeglądnięcie kodu, który zastałam w nowej pracy, wymagało wielu instalacji. Jasne, że wiele z nich dotyczyło konkretnych bibliotek użytych w projekcie, jednak kilka ruchów było niezbędnych, by w ogóle zacząć pracę z platformą. Postanowiłam opisać dla potomności te moje pierwsze kroki, a nuż ktoś skorzysta z opcji #lazyweb.

Konfiguracja środowiska developerskiego

By zacząć programować na WP8 (dla WP7 wymagania są mniejsze) potrzebne nam są przynajmniej :

  • Windows 8 64-bit (MSDN sugeruje, że musi to być Pro, ale to nieprawda),
  • Visual Studio 2012 (wystarczy Express),
  • Windows Phone SDK 8.0.

Tak jest na początek – samo SDK instaluje nam:

  • VS 2012 Express (jeśli nie mamy),
  • szablony projektów (które są już w VS jeśli mamy już choć wersję Professional),
  • Emulator WP

Tuta mała notka – emulator wymaga Hyper-V, więc jeśli chcemy go używać, wersja Windows powinna być przynajmniej przynajmniej Pro. Ale o samym Hyper-V za chwilę.

No i teoretycznie można zaczynać programowanie.

Tworzenie projektu

Tutoriali do WP jest całe mnóstwo. Nie ma sensu bym się powtarzała. Powiem tylko, że po instalacji SDK w VS pojawia się cała sekcja Windows Phone, można wybrać jeden z kilku rodzajów projektów i zacząć programować. Fazy budowy aplikacji przedstawię w kilku kolejnych wpisach.

Uruchamianie i debuggowanie

Gdy już stworzymy jakąś funkcjonalność lub jeśli chcemy sprawdzić jak działa szablonowy projekt, to trzeba go jakoś uruchomić. Tutaj mamy dwa wyjścia – emulator lub telefon.

Aby użyć emulatora potrzebujemy Hyper-V, które wymaga pewnych ustawień w BIOSie, DHCP, 4GB RAM i tego, by użytkownik należał do grupy Hyper-V Administrators. Tak naprawdę tych wymagań jest trochę więcej (odsyłam tutaj), ale widocznie miałam (tym razem) ogromne szczęście i mój lapek je wszystkie spełniał, nie musiałam więc nic dodatkowo konfigurować.

A jednak nie polecam zbytnio pracy na emulatorze. Jest wolny w działaniu (maaasaaaaakryyyycznieeee, chociaż, to się poprawiać pewnie będzie), bardzo wolno się uruchamia i nie zawsze zgodny z tym jak aplikacja zachowuje się na telefonie (chociaż tych różnic jest naprawdę niewiele). Dodatkowo, jeśli sobie go wyłączymy (np. przez przypadek, jak mi się często zdarzało), a nasza appka ma bazę danych, byliśmy do niej zalogowani, czy jej start trochę zajmuje, to przy kolejnym uruchomieniu emulatora musimy poczekać na to, aż on sam się rozkręci, aż nasza aplikacja wystartuje, trzeba się będzie zalogować oraz stracimy wszystkie zcachowane dane (również te z bazy danych).

Jakie w takim razie mamy wyjście? Słuchawkę 🙂 Podpinamy ją kabelkiem i uruchamiamy aplikacje na telefonie. Działa to trochę wolniej w trybie debuggowania (jednak to normalne), natomiast aplikacja zachowywać się będzie tak jak w rzeczywistości. Hola, hola, czy to takie proste? Tak, ale… Trzeba wykupić sobie konto developerskie i zarejestrować w nim telefon. Teraz to koszt ok 20$ rocznie i zapewniam, że jest warte nerwów, które można stracić przy walce z emulatorem.

Co z debuggowaniem? Tutaj nie ma nic szczególnego w stosunku do innych platform – możemy to robić zarówno na emulatorze jak i telefonie.

Miłego zaczynania! Uśmiech

Przystanek KGD.NET, czyli jak przegrać u siebie

W styczniu miałam dość gorący okres, więc moje Windows Phonowe tournee postanowiłam kontynuować w Krakowie, by już daleko nie jeździć. Drugi gig zaplanowałam więc 22 stycznia na 85. spotkaniu KGD.NET. Ogólnie rzecz biorąc… nie poszło mi za dobrze. Dlaczego? To za chwilę, bo najpierw zrelacjonuje wieczór.

Weszłam na styk, powiedziałam co wiedziałam (i parę dodatkowych rzeczy też) i z podkulonym ogonem zebrałam się z miejsca na widoku w bardziej ustronny kąt. Po przerwie publikę na szczęście przejął Paweł, który opowiadał o tym jak budować efektywne zespoły (tak Pawle, wiem, że polskie słowo nie oddaje tego co chciałeś przekazać Uśmiech). Wskazał na znaczenie różnorodności członków zespołu i przedstawił jak w to wpasowują się kobiety i ich naturalne predyspozycje. Nie z wszystkim się zgadzałam, ale w przeciwieństwie do prelegenta nie stały za mną wyniki badań naukowych Uśmiech

600_326350732

Jak to często na spotkaniach KGD.NET bywa, punkt 21. przyszedł personel sprzątający, czego efektem było pospieszne losowanie nagród i zakończenie spotkania. After party odbyło się przy ciekawych smakach piwa i… cydru gruszkowego(?), a pod koniec pojawiły się nawet jakieś shoty. W gronie ograniczonym do 5 osób (organizatorzy, czyli Marta i Jarek, Szymon, Andrzej i ja), posiedzieliśmy do ok. północy poruszając dość szerokie spektrum tematów, choć w większości technologiczno-pracowych.

No a teraz… kilka wskazówek jak położyć wystąpienie publiczne Uśmiech

Zapytać o feedback

… dzień przed wystąpieniem. Tak było – we wtorek poprosiłam o informację zwrotną osoby, które były obecne na mojej prelekcji w Warszawie. Choć ogólna ocena była dobra i niemal każdy powtarzał, że mu się podobało, to… no cóż, mamy skłonność do skupiania się na negatywach. Zresztą na tym właśnie najbardziej mi zależało.

No i mi się dostało Uśmiech Nie, no trochę żartuję, ale spisałam sobie te uwagi i zaczęłam intensywnie myśleć jak tych samych błędów już nie popełnić, zwłaszcza, że miałam okazję sprawdzić to następnego dnia. Dość powiedzieć, że zabrałam się za mission impossible. Może gdybym wzięła na warsztat jedną rzecz, to miałoby to szanse powodzenia w tak krótkim czasie jakim była doba. A w tej sytuacji, zamiast prezentować, co chwilę przypominałam sobie moją listę niedostatków i szarpałam się chcąc wprowadzić implementację rozwiązania ad hoc.

Zaprosić na występ wszystkich znajomych Królika

Pomyślałam, jestem u siebie, więc wiele osób przychodzących na KGD znam. Kilku znajomych uprzedziło mnie o swojej obecności tego dnia (innych zobaczyłam na liście zapisanych osób). Wiedziałam, że pojawi się jeden kolega z pracy i jeden z moich studentów. Nie spodziewałam się jednak, że ok połowa audytorium, to będą znane twarze – z dawnych prac, z obecnej, ze studiów, z twittera, a także moi studenci. Można byłoby się spodziewać, że znajomi to dobre wsparcie, w końcu nie życzą źle i wybaczą potknięcia. A jednak – mój stres wzrósł niebotycznie. Tak jakby zwiększyło się we mnie poczucie odpowiedzialności – trochę mniej wstyd wyłożyć się przy obcych Uśmiech

Spóźnić się

Nie żeby to była jakaś wyjątkowa sytuacja w moim wydaniu. Ja się wszędzie spóźniam, chyba, że planuję, że będę godzinę wcześniej – wtedy istnieje pewna szansa na punktualność. No ale nie stało się tak tego dnia, kiedy to byłam starą dobrą spóźnialską Basią. Dodałam przez to stresu również organizatorom, bo wg planu występowałam pierwsza, Paweł pojawić się miał później. Publika, chyba nie do końca to zauważyła, ale mi przybyła cegiełka stresu i kilka siwych włosów.

Próbować odpowiadać na pytania, na które nie zna się odpowiedzi

To już była zupełna porażka… Wstyd mi do tej pory. Zamiast zwyczajnie, gdy do takiej sytuacji doszło stwierdzić: “Nie wiem, nie znam się, zarobiona jestem”, zaczynałam po prostu mleć ozorem. Tylko, że na moje nieszczęście, na sali było kilku ekspertów od WP, no i moje “mądrości” były szybko weryfikowane.

Dlaczego tak robiłam? Do dzisiaj nie wiem do końca. Chyba przejęłam się wnioskiem, który padł na początku autoprezentacji. Pracuję z WP już ok pól roku, więc powinnam występować z pozycji osoby bardziej doświadczonej niż początkujący programista tej platformy. A ponieważ zazwyczaj nie mam w naturze przyznawania się do poziomu advanced w jakiekolwiek dziedzinie (chyba, że mówimy o spaniu, oglądaniu seriali czy innych technikach marnowania czasu), więc… naprawdę nie wiem.

Nie przetestować połączenia internetowego

Czy też, jeśli już o tym mówimy, nie przetestować uruchomienia VS, emulatora, programu. Ale od początku. Aplikacja, która pokazuję łączy się z Twitterem, więc potrzebuje internetu. W siedzibie ABB (bo tam się spotkania odbywają) nie udostępniają wifi dla gości, umówiłam się więc z kolegą, że mi jej trochę pożyczy. Ponieważ byłam spóźniona, przetestowaliśmy to łebkach, no i oczywiście efekt tego był taki, że gdy chciałam wyświetlić listę tweetów, internet przestał działać. Potem do buntu maszyn dołączył emulator, uruchamiając się we wszystkich rozdzielczościach. W pewnym momencie rozłożyłam ręce, bo już nic się nie dało zrobić. Byłam wdzięczna losowi, że pozostało mi VS i miałam jak pozywać kod.

Pech, wiem, ale też rzecz, która tak naprawdę najmocniej z przedstawionych tutaj zadziałała na negatywny odbiór. Jak coś nie działa, cała prezentacja spada w głęboką przepaść laaaaame i jest jej bardzo ciężko się z niej wykaraskać.

Tak naprawdę nie wiem, czy było tak źle jak opisuję, bo większość feedbacku z tego wystąpienia brzmi: “Miałaś wyjątkowego pecha”. Czy to oznacza, że miała pecha, była klapa, więc trudno, let’s move on, czy miałam pecha, ale mimo to pokazałam coś wartościowego? Nie wiem. Osobiście mam nadzieję, że szala przechyla się w tę drugą opcję. A ja mam materiał do pracy na kolejne razy, z których pierwszy odbył się tydzień później we Wrocławiu. Ale to już w kolejnym odcinku…

Does great power… vol.3 – Story of my life

O architekturze było już trochę, a potem jeszcze trochę, ale więcej teorii górnolotnych niż życiowych przykładów. Czas więc i na to. Przedstawiam dziś, przefiltrowaną przez architekturę właśnie, historię mojego życia.

Przygodę ze światem IT zaczęłam jakaś chwilę temu i przez to miałam okazję znaleźć się w różnych firmach, zespołach i rolach. Pracowałam zarówno w małej firmie, która dopiero od kilku lat istniała na rynku, jak i w międzynarodowej korporacji. Jak wiadomo, wiąże się to z doświadczeniem różnych środowisk, sposobów na organizację pracy, a co za tym idzie – podejść do architektury.

Mała firma – młodszy programista

Zacząć pracować postanowiłam jeszcze w trakcie studiów. Dziś nie jest to nic nadzwyczajnego, ale taki sposób na życie dopiero się wtedy rodził. Zatrudniłam się w małej firmie i byłam tam może 30. osobą. Na tym etapie rozwoju, tworzyło ją kilka zespołów, z których każdy miał swojego kierownika-guru. Ja byłam Johnem Snow, nie wiedziałam więc nic. Bardzo chciałam uczestniczyć w budowie czegoś, co zobaczy rzeczywisty, płacący klient, ale przede wszystkim moim celem było nauczyć się jak najwięcej.

Decyzje architektoniczne podejmował oczywiście kierownik, co mi małemu żuczkowi  bardzo odpowiadało. Byłam pełna zachwytu dla wiedzy starszych stażem kolegów i do głowy mi nie przyszło, że mogę choćby zaproponować jakieś rozwiązanie. Kończyło się więc na tym, że ktoś coś wymyślał, a ja to wykonywałam. Pełniłam więc rolę nieco bardziej zaawansowanej maszyny do pisania… w Visual Studio.

Off topic: Nie wiem jak dawałam sobie radę z pracą, domem, studiami (tak, tak, był jeszcze drugi kierunek). Chyba bezpiecznie jest powiedzieć, że sobie jej nie dawałam. O ile nabieranie doświadczenia to super motywator, by zacząć jak najwcześniej, to jednak dzisiaj stwierdzam, że nie do końca skóra warta była wyprawki.

Średnia firma – starszy programista

Firma się rozrosła, moje kwalifikacje wzrosły i tak zaczęła się rodzić współpraca między członkami zespołu, wspólne szukanie rozwiązań, proponowanie zmian. Wciąż mieliśmy kierownika, który w wskazywał stronę w którą finalnie szliśmy, ale pojawiły się mniej lub bardziej indywidualne projekty. Było więc miejsce na pewną autonomię.

Zespoły były wzbogacane ludźmi o różnym doświadczeniu, powodowało to trochę tarć, ale najczęściej stanowiło pozytywne zjawisko. Poza jednym czynnikiem – odpowiedzialnością. Niewielu programistów miało podejście, w którym celem był projekt. Każdy raczej pilnował jedynie, czy na jego podwórku wszystko gra.

Architekturą zajmował się nasz kierownik, jako osoba o największym doświadczeniu. Jednak dochodziło mu wiele obowiązków administracyjno-zarządczych. Do mnie i kolegów dość szybko doszła świadomość tego, że architekt to nie stanowisko, lecz rola. Rola, z którą z jednej strony wiąże się duża odpowiedzialność, a z drugiej gruntowna wiedza. Zapragnęłam wtedy zostać architektem (jak już będę duża i mądra) i to właśnie wpisałam w swoim planie 3-letnim.

Średnia firma – architekt

I… udało się. Urosłam, zmądrzałam i marzenia się ziściły. W efekcie razem z kolegą, poprowadziliśmy kilka projektów w roli architektów. Było po prostu cudownie, żyć nie umierać. Codzienny standup, pilnowanie czy wszyscy rozumieją DDD (nie rozumieli), czy szablon projektu się nie rozjeżdża (rozjeżdżał się), czy claimy działają tak jak powinny (nie działały).

Jak coś było nie po naszej myśli robiliśmy minę doświadczonych mędrców i dobrodusznie karciliśmy młody narybek programistów. I jeszcze raz … rysowaliśmy diagramy, przekazywaliśmy linki do przydatnych stron. Wszystko po to by projekt był robiony tak jak my chcemy… eeee tzn. tak jak powinien być robiony.

Dla mnie skończyło się na kompletnym oderwaniu od rzeczywistości. Wydawało mi się, że bardzo dobrze rozumiem projekt, ale straciłam kontakt z kodem i po pewnym czasie techniczne detale były dla mnie zwykłym bełkotem. Wtedy zrozumiałam, że stałam się modelowym architektem z ivory tower.

Korporacja – senior software …. coś tam

Nadszedł czas pokory, nabrałam dystansu do całej sprawy. Przeszłam też do innej firmy, gdzie miałam zamiar budować system i jego architekturę (tym razem) razem z innymi. A przede wszystkim chciałam znów programować, bo zrozumiałam, że bez tego modele są jedynie obrazkami.

Tyle, że… na miejscu już był architekt. I to taki pełną gębą – nie programujący i na dodatek daleko, w kontakcie głównie telefonicznym. Ogólnie bardzo fajny facet, ale niewiele już dla projektu robiący, gdyż to ja docelowo miałam przejąć system. Czułam jakbym zrobiła krok w tył, co samo w sobie nie było jakieś mega straszne. Ot jestem znów doświadczonym programistą, któremu mówi się co ma robić. Jak się postarałam, to miałam nawet własne poletko do zabawy, trochę odpowiedzialności… nie za dużo Uśmiech

Tak się więc trochę kisiłam. Kroplą goryczy przelewającą czarę okazała się dość niskopoziomowa decyzja architektoniczna – wybór ORMa i brak możliwości zakwestionowania tej decyzji. Well… wiem, że tak w korporacjach jest, nie powinnam się była dziwić. Dobrze, że mogłam to zmienić.

Średnia firma – kierownik

I tak… znów zmieniłam pracę. Tym razem zostałam kierownikiem działu. Brzmi dumnie, ale dział był niewielki – 10-osobowy. Teraz, postanowiłam, o architekturze decydować będą ludzie, nie nadworny decydent. Sama zajmę się uprawianiem servant leadership, a w wolnych chwilach, pomogę w programowaniu.

Tylko, że… mój zespół nie za bardzo chciał o czymkolwiek postanawiać. Może chodziło o to, że byli to ludzie niedoświadczeni i taka odpowiedzialność to było dla nich za dużo. A może przyzwyczajeni byli do modelu słuchania i nie spodziewali się, że może istnieć inny. Suma summarum, stwierdzili, że finalne decyzje należą do mnie, bo w końcu jestem szefem i za to mi płacą. Chcąc nie chcąc zostałam Wielkim Architektem.

Startup – developer

Trochę miałam już tego dość, a przede wszystkim szukałam miejsca, gdzie pracuje się inaczej. Nie zrozumcie mnie źle, wiem każda firma ma swoją kulturę organizacyjną. Zdaję sobie sprawę z roli odgórnych decyzji. Wiem też, że nie każdy gotowy jest na przyjęcie odpowiedzialności z całym dobrodziejstwem inwentarza. Mi jednak to co miałam nie do końca wystarczało.

Teraz pracuję w startupie, gdzie widzę diametralną różnicę. Przede wszystkim – nie ma czegoś takiego jak odgórne decyzje dotyczące architektury, a jeśli już o tym mowa, to nie istnieją odgórne decyzje dotyczące kwestii technicznych. Każdą z nich poprzedza dyskusja i to nie tylko w gronie osób to w końcu implementujących, ale również całego zespołu, a nawet osób spoza.

Model jest prosty – jesteś częścią teamu, więc funkcjonujesz na takich samych prawach jak inni. A to wiąże się również z pewnymi obowiązkami. Udział i wkład każdego z nas staje się wymaganiem, a nie jedynie możliwością.

Nie mamy więc architektów, a raczej każdy z nas nim jest. I każdy powinien, bo nie zrezygnowanie z tej roli oznacza często zrzucenie z siebie odpowiedzialności. W zespole każdy z nas architekturę zna, rozumie, buduje wg niej i jest za nią odpowiedzialny.

 

KONIEC!