Programisto .NET! Czy warto przesiadać się na MacBooka? Z jakich narzędzi korzystać pod systemem macOS? Czy sprzęt od Apple poradzi sobie z Twoim projektem? Oto moje przemyślenia i historia kilku lat pracy na Macu 🙂
Trochę historii – początki z macOS
Pamiętam, jak kilka lat temu (okolice 2015 roku) przesiadłem się z Windowsa na pierwszego MacBooka Pro. Pracowałem wtedy na etacie pisząc głównie aplikacje mobilne w Xamarinie, o którym przeczytasz więcej w artykule Xamarin, czyli natywna aplikacja mobilna 35% taniej i szybciej.
Technicznie była to przesiadka z klasycznego Visual Studio na ówczesne Xamarin Studio wraz z dodatkowymi narzędziami, takimi jak np. emulatory Androida. Sporadycznie prowadziłem zajęcia na uczelni z innych technologii, więc miałem okazję porównać, jak działa Android Studio, czy Eclipse na Windowsie, a jak na macOS.
Początkowo nie byłem w pełni przekonany do wszystkich rozwiązań dostępnych na Macu. Brakowało również wsparcia dla projektów .NET Framework, co za tym idzie dla aplikacji i usług sieciowych ASP.NET. W tamtym czasie nie znalazłem także sensownego narzędzia do zarządzania relacyjną bazą danych MS SQL.
Przygoda z Parallels Desktop
Jak to rozwiązałem? Zainstalowałem oprogramowanie Parallels Desktop i zwirtualizowałem Windowsa na MacBooku. W trybie koherencji Parallels uruchamia aplikacje z obu systemów obok siebie. Masz płynny dostęp do aplikacji z macOS i Windows na jednym urządzeniu.
Kiedy musiałem napisać API lub dostać się do bazy, to uruchamiałem klasyczne Visual Studio oraz SQL Server Management Studio (SSMS) przez Parallels – dwa rozbudowane środowiska, których wtedy mi brakowało.
Mimo wirtualnej maszyny, która zjadała część RAMu, po kilku tygodniach okazało się, że większość zadań w pracy wykonuję dwa razy szybciej. Czy była to zasługa nadgryzionego jabłka na obudowie? Efekt placebo? A może szybki, dopracowany system z aplikacjami szytymi na miarę dedykowanego sprzętu? Raczej to drugie 😉
Trochę o sprzęcie
Nie chcę rozpisywać się na temat sprzętu od Apple, ale wysoka rozdzielczość, długi czas pracy na baterii i solidna konstrukcja wpływają również na ergonomię pracy – nie tylko produktywność.
Ciepło nie jest odprowadzone dołem (brak dziur wentylacyjnych w podstawie obudowy), dlatego w przeciwieństwie do klasycznych laptopów możesz trzymać MacBooka na kolanach bez obawy o znaczne podniesienie temperatury.
Visual Studio for Mac
W 2016 roku Microsoft przejął Xamarina i przechrzcił Xamarin Studio na Visual Studio for Mac, stopniowo dodając nowe funkcjonalności i wsparcie dla kolejnych projektów. Świat zaczął zmierzać w kierunku wieloplatformowego .NET Core. Na macOS pojawiło się wsparcie dla aplikacji webowych ASP.NET Core.
Aktualnie Visual Studio for Mac to dojrzałe środowisko programistyczne, w którym na co dzień tworzę złożone usługi sieciowe. TUTAJ znajdziesz listę wszystkich składników i porównanie z klasycznym Visual Studio.
Czego brakuje?
Dość oczywiste jest, że na Macu nie stworzysz aplikacji desktopowej na Windowsa (WPF, Windows Forms, UWP), ale za to możesz napisać aplikację okienkową na macOS oraz aplikację mobilną na iOS. Bez Windowsa nie zbudujesz apki dla Windowsa, a bez macOS nie zbudujesz aplikacji dla systemów operacyjnych Apple.
VS for Mac nie posiada także wsparcia dla języka C++ oraz Python, z którymi od dawna nie miałem do czynienia. Jeśli jesteś fanem ReSharpera, to wiedz, że JetBrains nie planuje rozwijać wersji dla VS for Mac. Rekomendują przejście na konkurencyjnego Ridera, który swoją drogą jest ciekawą alternatywną. Masz jakieś doświadczenia z Riderem? Podziel się opinią w komentarzu 🙂
U mnie VS for Mac sprawdza się idealnie i w zupełności wystarcza do mojego stosu technologicznego. Tworzę głównie serwisy (API) w ASP.NET Core zintegrowane z usługami platformy Microsoft Azure, takimi jak kolejki, bazy SQL, NoSQL, czy przechowalnie plików.
Zdarza mi się pisać aplikacje mobilne w Xamarinie na Androida i iOS, bawić serverlessami, czy apkami desktopowymi na Maca. Testy jednostkowe piszę w xUnit – VS for Mac obsługuje również framework NUnit i MSTest.
Z czasem odinstalowałem Parallels Desktop i usunąłem wirtualną maszynę z Windowsem, całkowicie przesiadając się na rozwiązania dostępne na macOS.
Azure Data Studio
Zapytasz co z bazą danych? Microsoft wziął się do pracy i stworzył SQL Operations Studio, czyli odpowiednik wspomnianego wyżej SSMS – narzędzia do zarządzania relacyjnymi bazami danych.
Po czasie został przekształcony w Azure Data Studio, z którego aktualnie intensywnie korzystam na MacBooku. Zbudowany na bazie edytora Visual Studio Code umożliwia instalację wielu przydatnych rozszerzeń.
Co z frontendem?
Do frontu podobnie jak na Windowsie możesz zaprząc lekki Visual Studio Code. Ja wykorzystuję go bardziej do szybkiej edycji pojedynczych plików lub dokumentacji w Markdownie.
Osobiście uwielbiam WebStorma od JetBrains, w którym realizuje projekty frontendowe – głównie w Angularze. Pracowałem również w WebStormie na PC z Windowsem i według mnie wygląda i działa on zdecydowanie lepiej na macOS 😉
Dodatkowo na Macu masz dostęp do UNIXowego terminala, więc cała gama świetnych konsolowych narzędzi jest do Twojej dyspozycji.
Czy warto?
Nigdy nie byłem fanem rozwiązań Apple i przez długi czas uważałem je za przereklamowane. Po kilku latach pracy na MacBooku mogę śmiało stwierdzić, że nie ma obecnie lepszego sprzętu i systemu operacyjnego dla programisty. Według mnie Apple połączył zalety Windowsa i Linuxa w jeden spójny system – macOS.
Mały disclaimer: pracowałem zawsze na najwyższej lub prawie najwyższej konfiguracji MacBooka Pro. Być może modele o gorszych parametrach nie spełniałyby moich oczekiwań i wpłynęłyby na przedstawioną opinię.
Większe koszty, mniejsze podatki
A cena? Jest stosunkowo wysoka i za te pieniądze możesz złożyć potężny PC z lepszymi podzespołami. To trochę tak, jak z samochodem. W cenie auta luksusowego możesz kupić popularne auto z większym silnikiem. Pytanie czego potrzebujesz? Interesuje Cię tylko moc, czy całokształt i detale?
Masz już jakieś doświadczenia z programowaniem w C# pod macOS? A może planujesz przesiadkę? Zachęcam do zadawania pytań w komentarzach! 🙂