[PL] Jak przejść z Windows Phone na Xamarin?

Wstęp

Jako programista WP pewnie czujesz się opuszczony przez Microsoft? Nic dziwnego, od dłuższego czasu MS przestał się interesować swoim “dzieckiem” i skazał je na zapomnienie w świecie platform mobilnych. Możesz się czuć z tego powodu sfrustrowany i bezsilny, tak samo jak ja się czułem, albo możesz wziąć sprawy w swoje ręce i coś z tym zrobić. A co zrobić, to pewnie się już domyślasz – nauczyć się Xamarina.

Na początku najłatwiej jest zacząć od tworzenia aplikacji w Xamarin.Forms czyli tworzeniu jednego UI w XAML dla wszystkich platform. Możesz również pisać w Xamarin.Native i tworzyć oddzielny UI na każdą platformę. Jednak nie musisz się skazywać na jedno z tych dwóch podejść – możesz je łączyć w jedną i drugą stronę. Po więcej informacji odnośnie różnicy między Xamarin.Forms i Xamarin.Native zapraszam do mojego wcześniejszego posta tutaj.

Tak naprawdę, nie musisz się uczyć Xamarina, bo już go znasz! Jest wiele wspólnych cech pomiędzy WP a Xamarinem, które przedstawię Ci w dalszej części posta.

Co już umiem?

Jest wiele rzeczy, które umiesz już teraz. Pewnie zdajesz sobie z tego sprawę, ale jeśli nie, to z chęcią odświeżę Twoją pamięć:

  1. C# i .NET – oczywista oczywistość. Nie musisz uczyć się Javy czy Objective-C/Swift – nie są Ci do niczego potrzebne i nie będą. W Xamarinie piszesz w języku, który już znasz i lubisz!
  2. MVVM – w aplikacjach pisanych w Xamarinie używany jest wzorzec MVVM tak samo jak było to na WP. Tyczy się to zarówno Xamarin.Forms jak i Xamarin.Native.
  3. XAML – w Xamarin.Forms tworzysz UI w XAML, który wygląda tak samo jak na WP, bo Xamarin.Forms implementują specyfikację opracowaną przez Microsoft. Jedyna różnica jest w innych nazwach kontrolek dostarczanych przez Xamarin.Forms. Cała reszta jest taka sama: bindowanie, konwertery, data templates, itd.
  4. Architektura warstwowa – w zależności od potrzeb danego projektu, można było podzielić aplikację WP na kilka logicznych warstw. Tutaj ponownie możesz wykorzystać swoje umiejętności z zakresu:
    • SQLite – jeśli robiłeś aplikację ze wsparciem działania offline, to jest duża szansa, że korzystałeś właśnie z SQLite
    • obsługa sieci – osobiście napisałem kiedyś abstrakcję na warstwę sieciową w PCL i używałem tego rozwiązania w każdym projekcie WP, ponieważ było generyczne. W Xamarinie wykorzystałem napisany kod i miałem od razu gotową część projektu.

Wchodząc do świata Xamarina, masz już ogromne doświadczenie w tworzeniu aplikacji. Jako stary wyjadacz WP możesz mieć nawet większe doświadczenie niż osoby, które zaczynały programowanie mobilne tylko od Xamarina. Warto się taką wiedzą dzielić i edukować pozostałych członków zespołu – zwłaszcza, że niektórzy mogą sobie po prostu nie zdawać sprawy, że można coś zrobić lepiej.

Co nowego muszę się nauczyć?

Jest parę nowych rzeczy, które będziesz musiał się nauczyć, żeby stać się prawdziwym profesjonalistą od Xamarina. Jednak nie jest to żaden rocket-science i opanowanie poniższych tematów nie będzie stanowiło dla Ciebie problemu:

  1. MvvmCrossnajbardziej popularny framework do MVVM w świecie Xamarina. Możliwe, że spotkałeś się z nim wcześniej bo MvvmCross oferuje wsparcie dla WP/UWP
  2. Natywny Android oraz iOS – na początku przygody z Xamarinem możesz się skupić tylko na Xamarin.Forms. Jednak prędzej czy później będziesz musiał sięgnąć do natywnego UI Androida lub iOS. Czemu? Np. będziesz chciał zmienić jakiś element UI w taki sposób, że Xamarin.Forms technicznie Ci na to nie pozwolą z racji ograniczonego API. Xamarin oferuje świetną dokumentację odnośnie programowania pod natywnego iOS oraz Android.
  3. Kontrolki Xamarin.Forms – kontrolki w Xamarin.Forms robią praktycznie to samo co na WP, ale nazywają się inaczej. Poniżej znajdziesz tabelkę, w której możesz zobaczyć to co mamy na WP i to co będziesz miał w Xamarin.Forms:
Windows Phone Xamarin.Forms
TextBlock Label
StackPanel StackLayout
TextBox Entry
ToggleSwitch Switch
WebBrowser WebView
ScrollViewer ScrollView

Różnice są naprawdę kosmetyczne – jest też sporo kontrolek, które  nazywają się tak samo:

  • Button
  • Grid
  • Image
  • ListView
  • ProgressBar

Poniżej znajdziesz jeszcze kod XAML strony logowania. Najpierw Windows Phone:

A teraz Xamarin.Forms:

Na tym przykładzie możesz zobaczyć, że cały XAML wygląda praktycznie tak samo.

Od czego mam zacząć?

Przedstawię Ci w trzech krótkich punktach rzeczy, które ja zrobiłem zaczynając przygodę z Xamarinem:

  1. Pobierz Xamarina dla Visual Studio Windows lub Mac
  2. Zacznij od wstępu do Xamarina tutaj
  3. Następnie zacznij od wstępu do Xamarin.Forms tutaj

developer.xamarin.com jest świetnym miejscem do rozpoczęcia nauki Xamarina. Osobiście, zaczynałem od tej strony i materiały przygotowane są od największych podstaw. Wszystko przygotowane jest w sposób bardzo czytelny i przejrzysty. Mnie jako doświadczonemu programiście Windows Phone, wystarczył jeden wieczór nauki Xamarin.Forms, żebym mógł w ogóle zacząć pracować z tą technologią. Oczywiście, nie byłem ekspertem po jednym tutorialu (daleka droga była jeszcze przede mną), ale cieszyłem się, że mogę już coś zrobić i to od razu na dwie dla mnie nowe platformy.

Jak i kiedy się uczyć?

Praca na pełen etat, a później obowiązki domowe, na pewno nie ułatwiają nauki nowej technologii, a przecież gdzieś w tym wszystkim trzeba znaleźć czas na relaks, żeby nie zwariować od nadmiaru pracy. Nie będę ściemniać, nauka nowej rzeczy w każdym przypadku to sporo wyrzeczeń i ogromna ilość samozaparcia. Przede wszystkim trzeba się przestawić na myślenie “chcę”, zamiast myśleć “muszę”. Jeśli rzeczywiście będziemy chcieli to łatwiej przyjdzie nam nauka, pod przymusem nie osiągniemy spodziewanych efektów, więc nie ma co się zmuszać tylko trzeba chcieć. Ja bardzo chciałem.

Jak wygospodarować sobie czas na naukę? Jeśli po przyjściu do domu rzucamy wszystko i rozkładamy się przed telewizorem/konsolą/itp. i do momentu pójścia spać nie robimy niczego poza słodkim lenistwem, to ciężko będzie nam zacząć uczyć się czegoś nowego. Najpierw trzeba zacząć od zmiany nawyków, które już posiadamy. A jak to zrobić? Zastąpić jeden nawyk drugim nawykiem – takim, który jest dla nas bardziej wartościowy. Na początku będzie ciężko, ponieważ starych nawyków jest ciężko się pozbyć, ale z każdym kolejnym razem będzie coraz łatwiej, aż w końcu nie będziemy się nad tym zastanawiać tylko robić.

Przeznacz wieczorem 20 min – nie więcej i nie mniej. 20 min z całego dnia to nie jest dużo – zamiast sprawdzać wieczorem Fejsa możesz zrobić coś dla siebie. W tym czasie zostaw telefon w pokoju obok, pozamykaj wszystko oprócz materiałów do nauki. Obiecaj sobie, że po 20 min dostaniesz nagrodę: zrobisz herbatę, zagrasz na konsoli, itp. Te 20 min pozwoli Ci w ogóle zacząć naukę nowego tematu. Po tym czasie powinieneś czuć niedosyt. I dobrze! Masz być głodny nowej wiedzy. Masz o tym myśleć następnego dnia i nie móc się doczekać kiedy znowu siądziesz do nauki.

W moim przypadku takie podejście sprawdziło się świetnie – wieczorna nauka weszła w nawyk i przeznaczałem na nią po pewnym czasie coraz więcej niż wspomniane 20 min. Obecnie wieczorem przeznaczam minimum 1h (lub więcej) na tzw. samorozwój: naukę, pisanie bloga, czytanie książek. Przestałem stosować nagrodę po 20 min, z racji tego, iż od jakiegoś czasu nie potrzebuję już tego – nagrodą samą w sobie jest poznawanie nowych rzeczy.

Jak się zmotywować?

Zrób prezentację w firmie! U mnie ten sposób zadziałał mega motywująco. Wysłałem zaproszenie na prezentację o Xamarinie, które miało odbyć się za 1.5 tygodnia – było więc sporo czasu, żeby się porządnie przygotować. Prezentację tworzyłem z myślą o tym, że nie mogę zawieść swoich kolegów z biura. W końcu poświęcą oni swój czas i przyjdą mnie posłuchać, więc wypadałoby to odpowiednio uszanować ciekawą prezentacją. Dzięki temu miałem większą motywację do nauki i poszerzenia wiedzy.

Kolejną rzeczą, która mnie motywowała podczas nauki Xamarina był zakup Maca Mini, za którego zapłaciłem 2200 netto na fakturę. Niby niedużo jak na sprzęt Apple, ale jednak to ciągle wydane ponad 2 tysiące zł. Nie chciałem, żeby zakup się zmarnował, więc działało to na mnie motywująco, żeby popisać coś w Xamarinie pod iOS. W ostatnich tygodniach przesiadłem się całkowicie na swojego Maca Mini, na którym wygodniej pracuje mi się w Xamarinie (jest to temat na kolejny post).

Jak zawodowo przejść na Xamarina?

Wiesz już, że chcesz przejść na Xamarina ale ciągle pracujesz jako programista WP. Jak to zmienić? To co możesz zrobić to porozmawiać ze swoim przełożonym w obecnej firmie i zaproponować użycie Xamarina w kolejnym projekcie. Nic Cię to nie kosztuje a warto dla samego siebie spróbować i poćwiczyć umiejętność przekonywania innych. Jeśli uda się wprowadzić Xamarina do firmy – świetnie! Jeśli nie to jeszcze nic straconego. Ucz się po godzinach Xamarina dla samego siebie i sprawdzaj oferty pracy. Prędzej czy później trafisz na odpowiednie ogłoszenie bo coraz więcej firm zaczyna inwestować w Xamarina.

Podsumowanie

Przejście z Windows Phone na Xamarina nie jest trudne i dla doświadczonego programisty nie zajmie dużo czasu. Jest wiele rzeczy, które już teraz umiesz i dzięki temu będziesz przydatny od pierwszego dnia w nowym projekcie. Podwiń więc rękawy i bierz się do nauki. Powodzenia!