[PL] Dlaczego przesiadłem się na macOS jako programista Xamarin?
Wstęp
Aplikacje mobilne w Xamarinie można tworzyć zarówno pod Windows, jak i macOS. Jednak, który system wybrać do codziennej pracy? Wszystko zależy od tego na jakie platformy będziemy tworzyć nasze rozwiązania. Poniżej znajdziesz tabelkę, która pokazuje możliwości jakie mamy w kontekście kompilacji projektu pod różne platformy:
macOS | Windows | |
iOS | tak | tak (z pomocą Maca) |
Android | tak | tak |
Windows | nie | tak |
Osobiście, tworzę aplikacje mobilne pod iOS oraz Android, więc od jakiegoś czasu przesiadłem się tylko i wyłącznie na macOS. Wcześniej pracowałem na Windowsie z podłączonym Makiem do kompilacji iOS. Jednak takie podejście przysporzyło mi sporo problemów, o których będę pisać w dalszej części posta.
Co spowalnia w pracy nad iOS pod Windows?
1. Kompilacja aplikacji iOS
Z poziomu Windowsa łączymy się do Maca używając tzw. Xamarin Mac Agent, który będzie kompilować dla nas aplikację iOS. Niestety, sam proces połącznia może zająć trochę czasu, samo połączenie może zostać zerwane, albo połączenie w trakcie kompilacji może zostać zerwane i trzeba zaczynać cały proces od początku.
Często miałem również problemy z brakiem możliwości skompilowania aplikacji iOS jeśli do Maca był już połączony ktoś inny. Wtedy ta osoba musiała się odłączyć od Maca i dopiero ja mogłem rozpocząć kompilację.
Bywały też sytuacje kiedy za nic nie można było rozpocząć kompilacji iOS z jakiegoś powodu. W takich momentach zazwyczaj pomagał restart Visual Studio.
2. Testowanie aplikacji iOS
Jeśli chcielibyśmy sprawdzić na emulatorze iPhona naszą aplikację to mamy dwie możliwości:
- Fizycznie przełączyć się na Maca i bezpośrednio na nim sprawdzić aplikację. Wymaga to od nas oczywiście oderwania się od maszyny z Windowsem co w zależności gdzie mamy Maca może zająć chwilę czasu. Również taka sytuacja może być męcząca w dłuższej perspektywie czasu – zdecydowanie wygodniej jest korzystać cały czas z jednego komputera.
- Połączyć się do Maca z poziomu Windowsa przez VNC. W tym podejściu nie musimy już fizycznie przełączać się na komputera Apple, ale pojawia się tutaj inny problem. Najpierw musimy odczekać trochę czasu aż nawiążemy połączenie z Makiem przez VNC, a następnie trzeba się do Maca zalogować. Sam protokół VNC nie jest zbyt szybki i komfort pracy jest daleki od ideału – zapomnijcie o płynności animacji, ekran odświeża się zbyt wolno.
3. Współdzielenie Maca przez zespół
Jeśli mamy jednego Maca na kilka osób w zespole to pojawiają się tutaj problemy związane z dostępem do maszyny, które rozpraszają niepotrzebnie w pracy cały zespół.
Przykładowo: jeden z członków z zespołu pyta się pozostałych osób czy może zająć Maca, bo potrzebuje zbudować aplikację iOS. W tym momencie cały zespół zostaje wybity z rytmu przez jedno pytanie, bo dotyczy się ono wszystkich. Częste są sytuacje kiedy ktoś potrzebuje się skupić i pracuje na słuchawkach – wtedy takie pytanie może po prostu zirytować.
Jeśli już połączymy się do Maca to możemy zastać sytuację, w której w systemie jest pootwieranych pełno okien. Pierwsze skojarzenie jest takie, że właśnie komuś przeszkodziliśmy w pracy, więc ponownie zwracamy się do kolegów z zespołu z pytaniem czy ktoś używa teraz tej maszyny. Zazwyczaj w takich sytuacjach okazywało się, że ktoś po prostu zapomniał po sobie posprzątać i zostawił otwarte programy.
4. Zawieszające się budowanie Androida
Bardzo często pod Windowsem miałem problem, że proces budowania aplikacji Androidowej zawieszał się w pewnym momencie i nie chciał iść dalej. Rozwiązaniem była zmiana tzw. ‘package name’ w pliku manifestu na jakąś inna wartość, zapisanie pliku, a następnie zmiana wartości na oryginalna i ponowne zapisanie. Po takiej operacji budowanie Androida działało normalnie przez jakiś czas (zazwyczaj krótki).
5. Powolne Visual Studio
Środowisko od Microsoftu w połączeniu z ReSharperem jest moim zdaniem po prostu wolne. Używałem VS na wielu różnych konfiguracjach sprzętowych i niestety codzienna praca z tym IDE polega na oczekiwaniu aż GUI się “odwiesi”. Takie oczekiwanie potrafi na tyle skutecznie wybić z rytmu, że osobiście odechciewa mi się dalszej pracy, wiedząc że za chwilę znowu będę musiał czekać środowisko.
Wymienione problemy miałem na wersji VS 15. Z wersji VS 17 korzystałem na tyle krótko, że trudno mi się w tym kontekście wypowiedzieć.
6. Utrudniona praca zdalna
Jeśli zdarzy się nam potrzeba pracy zdalnej, to niestety pracując na samym Windowsie nie zrobimy nic w kontekście iOS, bo jak wiadomo potrzebny jest Mac do kompilacji. Będziemy mogli jedynie pracować nad wersją aplikacji pod Androida.
7. Windows
Sam Windows posiada moim zdaniem parę problemów, które czynią go dość irytującym podczas pracy:
Problemy z kompatybilnością Xamarina
Natrafiliśmy w zespole jakiś czas temu na problem, który wyłączył z pracy osoby korzystające z Windowsa na parę godzin. Na naszych Makach zaktualizowaliśmy Xamarina do najnowszej wersji oraz zastąpiliśmy Xamarin Studio przez Visual Studio for Mac. Niestety osoby korzystające z Visual Studio 2015 pod Windowsem przestały mieć możliwość kompilacji iOS, ponieważ instalacja VS for Mac okazała się niekompatybilna z VS 15 na Windowsie. Trzeba było poświęcić dobre pół dnia na instalację i konfigurację VS 17, żeby znowu mieć możliwość kompilowania iOS pod Windows.
Aktualizacje
Zauważyliście, że aktualizacje Windowsa zawsze chcą się instalować kiedy musimy zrobić coś ważnego? Zdarzało mi się to wielokrotnie kiedy:
- Wychodziłem z biura i musiałem zabrać ze sobą laptopa – aktualizacje zaczynały się instalować przy wyłączaniu komputera
- Włączałem komputer rano po przyjściu do biura i aktualizacja zaczynały się instalować odcinając mnie od możliwości pracy
- Pracowałem nad ważnymi dla mnie sprawami i nagle Windows oznajmiał mi, że za 15 minut rozpocznie aktualizacje i niestety nie dało się tego anulować.
Miałem również sytuację, kiedy po instalacji aktualizacji musiałem zrobić reinstalację Windowsa, bo system zaczął pokazywać tzw. Blue Screen of Death – nie dało się korzystać z komputera dłużej niż parę minut.
Bloatware
Każdy producent komputerów może dorzucić swoje własne aplikacje do preinstalowanego Windowsa, których zazwyczaj nie potrzebujemy. Takie oprogramowanie niepotrzebnie spowalnia system i atakuje różnymi powiadomieniami. Można to oczywiście odinstalować i robi się to tylko raz po kupnie komputera, ale jednak czas poświęcony na takie sprzątanie komputera jest czasem straconym.
Przełączajaca się klawiatura na Windows
Może wyjdzie, że marudzę, ale nie zliczę ile to już razy walczyłem z przełączającym się językiem na klawiaturze. Jedynym sensownym rozwiązaniem jakie udało mi się znaleźć to posiadać tylko jeden język klawiatury – w każdym innym przypadku język klawiatury potrafi się samoczynnie przełączać.
Pojedyncze problemy może nie są aż tak bardzo przeszkadzające w pracy, ale jednak jeśli wszystkie wymienione punkty zsumuje się w całość to wyjdą nam konkretne przestoje w pracy. Nie wspominając już ile nerwów się przy tym najemy, kiedy goni deadline.
Czy na Macu będzie lepiej?
Wszystkie wymienione wcześniej punkty nie dotyczą Maca. Nie będziemy mieli problemów z kompilacją iOS, bo pracujemy bezpośrednio na Macu. Co za tym idzie nie będzie problemu z dostępnością Maca w zespole, bo każdy pracuje na swojej maszynie. Powolne Visual Studio również przestaję być problemem bo wersja na Maca bazuje na Xamarin Studio, które jest o wiele szybsze od VS dla Windowsa. Alternatywnie możemy skorzystać ze środowiska Rider od JetBrains, które polecam. Nie straszne będą również systemowe aktualizacje, bo na macOS możemy odkładać je tak długo jak chcemy i instalować dopiero kiedy jest na to odpowiednia chwila. Również z budowaniem Androida pod macOS nie miałem jak na razie żadnych problemów.
Warto jeszcze zwrócić uwagę na fakt używania Maca przez prelegentów udzielających się np. na konferencjach Xamarin Evolve czy Microsoft Build. W kontekście prezentacji o Xamarinie to Mac króluje w prawie wszystkich przypadkach. Również szkoleniowcy z Xamarin University używają Maca podczas prowadzonych przez siebie zajęć.
Ale ja nie znam macOS, a na Windowsie znam skróty klawiszowe!!!111oneone
Po wielu latach używania Windowsa masz na pewno swoje przyzwyczajenia jak i bazę programów, z których korzystasz. W pierwszych chwilach używania macOS będziesz czuć się zagubiony, bo jednak mimo tego, że oba systemu oferują graficzny interfejs to trochę się różnią od siebie. Jednak nauczenie się nowego systemu to nie jest żaden rocket-science i jesteś w stanie w ciągu jednego wieczora przyswoić podstawy obsługi macOS.
Osobiście przesiadłem się tylko i wyłącznie na macOS i próbowałem wykonywać swoją programistyczną pracę. I moim zdaniem jest to świetny sposób nauki nowego systemu. Na początku będziemy pracować wolno, bo zwyczajnie nie znamy systemu. Jednak z każdym napotkanym problemem będziemy coraz sprawniejsi, a szybko okaże się, że jesteśmy już biegli w posługiwaniu się macOS. W takim podejściu dobre jest to, że uczymy się na bieżąco na praktycznych przykładach. Nie musimy uczyć się “na sucho” obsługi systemu – wystarczy go używać.
O temacie nauki macOS można napisać jeszcze parę osobnych akapitów, na które nie ma już miejsca w tym poście. Post na ten temat powinien pojawić się z jakiś czas na moim blogu. Stay tuned!
A co z narzędziami?
Na pewno korzystasz na co dzień z wielu różnych programów pod Windowsem i zastanawiasz się czy będą one dostępne też na macOS? Pozwól, że przytoczę parę narzędzi, z których korzystałem pod Windows w podziale na:
Narzędzia posiadające wersje na macOS:
Narzędzia posiadające alternatywy:
- Visual Studio – na macOS mamy dostępne Visual Studio for Mac, dla którego niestety nie ma ReSharpera, ale alternatywnie możemy skorzystać ze środowiska Rider od JetBrains, które zawiera funkcjonalności wspomnianego ReSharpera
- Notepad++ – Visual Studio Code
- Fiddler – Charles
Wymienione narzędzia są podstawowymi, z których korzystam na co dzień. Jak widać cześć z nich ma swoje wersje na macOS lub dobre alternatywy. Także przesiadka na nowy system będzie mniej bolesna bo cześć programów, które znamy będzie od razu dostępna.
Podsumowanie
Zachęcam wszystkich piszących w Xamarinie na przesiadkę na Maca lub przynajmniej spróbowanie. Osobiście pracuje mi się znacznie wygodniej i przyjemniej od kiedy używam sprzętu Apple. Sama przesiadka na macOS nie jest wcale bolesna i wystarczy trochę samozaparcia, żeby poznać nowy system.
Chciałbym na końcu podziękować Konradowi, z którym wspólnie w pracy tworzyliśmy listę przeszkadzających rzeczy podczas pracy na Windows.
Dodałbym jeszcze jakąś tabelkę w podsumowaniu, jakie są zalety i wady w przypadku każdego z systemów. Dodałbym również ze MacOS dobrze emuluje Windows i umożliwia prace na Windows Phone, a na odwrót niekoniecznie
Hej flowpad,
Dzięki za uwagi 🙂 To prawda, że na Mac OS można wirtualizować Windowsa – nawet sam kiedyś tak pracowałem. W drugą stronę, też można ale wchodzą już tutaj kwestie prawne 😉
Dobra robota Damian! Czekam na artykuł o przesiadaniu się na Maca 🙂
Dzięki 😉 Do nowego artykułu mam już trochę materiału, który powstał przy okazji tego posta, więc jest już bliżej niż dalej 🙂
Czekałem na ten post! Wreszcie mogłem przeczytać. Dostałem propozycję przesiadki z Windowsa na MAC. Miałem dylemat, ale ten post jest mega pomocny.
Dzięki Damian, good job! 😊
Myślę, że się nie zawiedziesz z pracy na Macu 🙂 Osobiście jestem bardzo zadowolony z tej zmiany.