Kiedy pierwszy raz przyszło mi szukać do współpracy specjalisty w obszarze C#, wielu rzeczy nie rozumiałam – wiedziałam może tylko, że jest to jakiś tam język programowania. Natomiast w oczy rzuciły mi się dwa skille .NET i ASP.NET. które dość mocno wyróżniały się na profilach kandydatów. Część z nich konkretnie określała się jako .NET Developer. No i cholercia rozkmiń to, aby nie było przypału, że oferta nietrafiona, że to jakiś kolejny myk jak z tą Javą i JavaScriptem 🙂
Rozumiesz mój ówczesny ból? No to lecimy z tematem C#!
W poprzednich postach wspominałam, że jest spore podobieństwo tego języka do Javy. Najważniejsze: w C# również można napisać wszystko. Zaczynając od dużych, rozbudowanych systemów bankowych, księgowych, transportowych po aplikacje mobilne, gry, oprogramowanie dla dronów czy nawet robotów. Zadziała to na każdym systemie operacyjnym. No i podobnie jak Java, jest uniwersalny. Jak to się dzieje, że specjaliści decydują się na któryś z nich? Dyskusja na ten temat mogłaby trwać godzinami, niczym rozmowa właściciela Audi z pasjonatem BMW 🙂 Kwestia wyboru leży po prostu w preferencjach. I kropka.
Zanim przejdę do szczegółów, jedna ważna kwestia dla rekruterów IT. Prawdopodobieństwo, że popełnisz jakiś kardynalny błąd szukając specjalistów z C#, jest prawie znikome – uff 🙂 Serio myślę, że to mega dobra wiadomość. Zrobienie głupotki z braku wiedzy raczej się nie zdarza. Niemniej uważam, że znajomość technicznych aspektów pozwoli Ci nieco lepiej zrozumieć świat programistów C#.
Pochylmy się zatem nad dodatkowymi skillami, które z naszego rekruterskiego punktu widzenia mogą być problematyczne, a z pewnością je kojarzysz z Linkedina – mówię o chociażby: WinForms, .NET Core, ASP.NET, MVC, WF, WPF, WCF (aż by się chciało dodać WTF 😉 ).
Aby to rozkminić, należy uświadomić sobie fakt, że C# – jako produkt Microsoftu – miał być konkurencyjny do Javy. Firma zajęła się stworzeniem nie tylko nowego języka, ale całej platformy wraz ze środowiskiem, bibliotekami i narzędziami – które w jednym kombo miały na celu usprawnić programiście robotę. Ta platforma to właśnie .NET. Miała ona różne odmiany, zaczynając od pierwotnej: .NET Framework, która umożliwiała pisanie wszelkich aplikacji desktopowych i webowych, ale tylko na środowisko Windows. Po latach na jej podstawie stworzono .NET Core, który dał możliwość odpalania programów desktopowych i webowych na Linuksie i MacOS. W międzyczasie pojawił się też Xamarin, który umożliwił programistom C# tworzenie aplikacji na Androida, iOS i MacOS. W końcu postanowiono wszystko to połączyć w jedną całość i nazwać po prostu “.NET”. Nie zagłębiając się w meandry numerowania wersji przez Microsoft, dodam, że pierwszą wersją był .NET 5, aktualną jest .NET 6, a prace nad kolejnymi są intensywnie prowadzone.
Dla Ciebie – jako rekrutera – znajomość tych różnic może być o tyle istotna, że wypada dać znać kandydatowi, z którą wersją będzie pracować. Tak, ma to znaczenie 🙂 Nikt nie chce robić w starociach, jak .NET Framework, gdzie praca wiąże się raczej z utrzymaniem, niż rozwijaniem nowych funkcjonalności. Zatem: jeśli oferta nie precyzuje wersji, kandydat do końca nie wie, w którą stronę z Tobą zmierza.
Platforma .NET, jak wcześniej wspomniałam, zawiera w sobie wiele narzędzi – najczęściej widzisz je jako skróty, przeglądając profile kandydatów. Szczegóły zostawmy na boku, bo głowa może się zlasować – wiem co mówię 🙂 Ale tak myśląc, jak to ugryźć najprościej i co może być szczególnie pomocne w Twojej pracy rekruterskej, to po prostu podzielenie ich pod kątem obszarów, w których specjalizuje się kandydat. Czy ma to znaczenie, gdy wysyłasz ofertę? Może trochę… Istnieje szansa, że programista pracujący przy aplikacjach mobilnych, niechętnie wejdzie na pole webowe.
No to po kolei pogrupujmy sobie te dziwne skróty 🙂
APLIKACJE DESKTOPOWE
- aplikacje desktopowe – dla przypomnienia, to aplikacje z interfejsem użytkownika, które instalują się na komputerze PC lub laptopie: zwykły notatnik, program księgowy, czy po prostu pakiet office – och tego jest wiele, ale mam nadzieję, że łapiesz o co chodzi.
Windows Forms (WinForms) – narzędzie, takie archaiczne podejście do tworzenia aplikacji, możesz wrzucić listy, obrazki, ułożyć proste schematy działań, a jak klikniesz w jakąś ikonkę ona zareaguje, coś się zadzieje. Programy utworzone przy pomocy Windows Forms wyglądają jak typowe aplikacje Windows 95, XP czy Windows 7.
WPF – nowsza technologia, bardzo podobne działanie, ale zupełnie inna metoda tworzenia, plus większa gama możliwości, opcji zadań, ładniejszy wygląd (ładniejsze obrazki, ikonki, zaokrąglone kształty), nie takie toporne, jak w WinForms.
Dobra prosty przykład, aby odróżnić. Wyobraź sobie, jakiś prosty program do księgowania, zrobiony w WinForms – meh, taki brzydki, prosty, podstawowy, a jak zrobiony w WPF to poznasz, że przyciski są takie ładne, nowoczesne, zgodne z nowymi wersjami Windowsa chociażby.
Tutaj możesz jeszcze spotkać się z takim skrótem:
UWP – kolejna technologia, zbliżona koncepcyjnie do WPF, pozwala uruchomić napisany w niej program (powiedzmy komunikator) w systemie Windows oraz na komórce z Windows Phone (świeć panie nad jego duszą).
APLIKACJE WEBOWE
- aplikacje webowe – czyli w dużym skrócie myślowym, strony internetowe
ASP.NET – zestaw narzędzi, dostępnych w ramach platformy .NET, pozwalający tworzyć strony internetowe (głównie na Windowsa, choć da się je uruchomić również na Linuksie)
ASP.NET Core – jak wyżej, ale korzystając z tej technologii można natywnie odpalać strony na wszystkich środowiskach: Windows, Linux oraz MacOS.
WebForms – biblioteki, które wspierają programowania webowe, obecnie już rzadko używane, zastąpione przez Razor i najnowszą: Blazor.
Po czym możesz poznać, że dana strona internetowa została zrobiona z wykorzystaniem najnowszej technologii Blazor? Będzie się chwilę ładować, zazwyczaj wtedy widzisz jakąś animację: kręcący się samolocik, jakiś wężyk etc.
APLIKACJE MOBILNE
- aplikacje mobilne – zazwyczaj specjaliści z tego obszaru mają w skillach standarowe hasło:
Xamarin – framework oparty o język opisu strony XAML, z własnymi bibliotekami i toolami. Co ciekawe Xamarin nie jest wbudowany w platformę .NET – jest to niezależne narzędzie, które pozwala odpalać aplikację na telefonach z każdym środowiskiem: Windows, Android, iOS.
DODATKOWE INFORMACJE
- dodatkowe hasłowe skille, które możesz zobaczyć na profilach kandydatów:
Unity – sugeruje, że dana osoba działa w obszarze gier
ML.NET – specjalista działający w obszarze sztucznej inteligencji
I jeszcze jedno, które nie jest związane z żadnym konkretnym obszarem, a możesz je kojarzyć:
Entity Framework – to rodzaj narzędzia, które odpowiada za kontakt z relacyjną bazą danych (w Javie był to np. Hibernate).
Dla przypomnienia: narzędzia tego typu, zwane ORM, to frameworki, służą do rozbudowanej komunikacji z bazą danych. Przed pojawieniem się tego rodzaju narzędzi, aby współpracować z bazą danych i wyciągnąć z niej to, co chcemy, trzeba było samemu pisać w kod w SQL, a potem zamieniać uzyskane wyniki na formę użyteczną w używanym języku programowania. Robota uciążliwa, a i o błąd było łatwo. Aktualnie owe toole “odwalają” tę całą pracę za specjalistę.
I w sumie to tyle o C# i technologiach z tym językiem związanych, gdy – oczywiście – mówimy o podstawach. Uważam, że nie ma sensu zagłębiać się bardziej w temat, w bardziej szczegółowe aspekty. Wszystko powyżej powinno Wam wystarczyć, aby zrozumieć specjalistów ze świata .NET.
*Photo: Diego Jimenez (unplash.com)