Czym jest C#? Czy przydaje się w pracy testera? Od czego zacząć naukę i czy to dobry język dla początkujących?  Na te i inne pytania odpowiada Krystian Brożek – zapalony programista backend oraz trener szkoleń, z języków SQL i C#.

C# to nowoczesny język programowania stworzony i rozwijany przez Microsoft. Obecnie znajduje się w czołówce najpopularniejszych języków programowania na świecie. Używany jest głównie do tworzenia oprogramowania z wykorzystaniem platformy .NET. Poza tym wykorzystywany jest w projekcie Mono.

Największą zaletą i zarazem wadą C# jest względna zamkniętość. Prawie wszystkie narzędzia i rozwiązania pochodzą od Microsoft. Na plus działa wsteczna kompatybilność i wszystko trzymane jest w bardzo podobnym schemacie. Niestety, wszystkie nowości i plusy płynące z Open Source trafiają z opóźnieniem.

Co najczęściej powstaje w języku C#?

C# i cała platforma .NET to typowo korpo technologia. Powstają w tym duże i rozbudowane systemy. Dzięki Xamarin (darmowy ekosystem do tworzenia aplikacji w C#) coraz częściej zaczyna się tworzyć aplikacje mobilne działające na Androidzie, iOS i Windows 10 Mobile.

Pomijając oczywistości takie jak Microsoft Office, czy Visual Studio, jedne  z najpopularniejszych gier ostatnich miesięcy, czyli Pokemon GO, Angry Birds i Hearth Stone powstały w Unity, którego głównym językiem jest C#. Idąc dalej, w kilku bankach w Polsce wykorzystują ten język. Podobnie w wielu różnych branżach, jak edukacja, transport, czy rozrywka. Dzięki stworzonemu przez Microsoft Bot Fameworkowi, tworzone są też boty i rozwijana sztuczna inteligencja. Zdarzyło mi się nawet programować drona i robota :)

Czy warto uczyć się języka C#? Czy jest to język popularny i rozwijany?

Często dostaję pytanie, czy warto się uczyć C#. Zawsze odpowiadam, że… to zależy :) Jeśli ktoś chce zostać programistą, testerem lub działać w podobnych rzeczach, to jak najbardziej. Jak już wspomniałem, wcześniej jest to jeden z najpopularniejszych języków na świecie. Zostało w nim napisanych bardzo dużo różnych systemów, które przez wiele lat będą rozwijane i utrzymywane, więc pracy będzie aż nadto. Microsoft bardzo dba o C#, mocno go rozwija, wprowadza dużo ciekawych nowości i wspiera programistów. Polecam zobaczyć takie projekty jak: Microsoft Virtual Academy, Channel 9 i BizSpark.

Czy język C# jest prostym językiem na początek nauki programowania?

Na starcie wygląda to bardzo podobnie jak z innymi językami. Składnia podstawowych elementów jest bardzo podobna. Trzeba zrozumieć takie rzeczy jak pętle, warunki, wyjątki itd. Bardzo ważną umiejętnością jest wykorzystanie obiektowości tego języka. Z reguły sprawia to początkującym sporo problemów, ale to nie tylko tu, również w innych językach, takich jak Java, Python… Jeśli zrozumiemy programowanie zorientowane obiektowo i będziemy się sprawnie w tym poruszać, to większość obecnie popularnych języków nie będzie stanowiło problemów na podstawowym poziomie.

Największą zaletą jest środowisko Visual Studio. To ono mnie przyciągnęło do technologii Microsoftu i rozkochało w programowaniu. Jest to duże i ciężkie środowisko, więc dobrze zaopatrzyć się w trochę mocniejszy komputer, ale za to oferuje dużo pomocy dla programisty. InteliSense świetnie podpowiada kod, a narzędzia do testowania wydajności  oraz wbudowany Git i TFS potrafią dużo pomóc.

Dla początkującej osoby, świetny będzie kompilator Roslyn, wprowadzony w Visual Studio 2015. Pozwala uruchamiać pojedyncze fragmenty kodu bez uruchamiania całego programu. Dzięki temu sprawdzenie jak zadziała dany element kodu, to dwa kliknięcia. A to bardzo pomaga moim uczniom.

Dla kogo szczególnie polecany jest ten język?

Trudne pytanie. Dla każdego kto chce programować w tym języku :) Programiści na pewno znajdą pracę ze znajomością tego języka. Testerów również brakuje na rynku, więc znajomość C# i tworzenia testów jednostkowych, czy Selenium z wykorzystaniem tego języka, będzie bardzo pożądana wśród pracodawców.

Jakie umiejętności są potrzebne, aby zacząć uczyć się C#?

Bardzo ważna jest wytrwałość. Bez tego poddamy się bardzo szybko. Na początku studiów dorabiałem roznosząc ulotki i wpisałem to w CV szukając pierwszej pracy jako programista. Pytano mnie, po co to umieściłem. Zawsze mówiłem o wytrwałości, raz było -10 stopni, śnieg i wiatr zacinał prosto w oczy, ale trzeba było roznieść wszystko. Później przydało mi się to w pracy programisty. Przez kilka dni szukałem błędu w 8 linijkach kodu. Danych przewijających się przez ten mały fragment było kilka milionów i przez jeden drobny błąd wynik był inny niż oczekiwany. Udało się :)

Jedną z najważniejszych rzeczy jest język angielski. Dużo ciekawych materiałów wspomagających naukę, samo środowisko (choć jest wersja polska, to jednak nie polecam) i język C# są po angielsku. Często pracuje się też dla zagranicznego klienta, więc komunikacja, czy choćby dokumentacja jest również w tym języku.

Czy trzeba mieć specjalnie przygotowane środowisko do programowania w C#? Jak je przygotować?

Polecam Visual Studio. Jest to darmowa wersja Community do zastosowań komercyjnych (nie licząc dużych firm). Można ją pobrać ze strony Microsoft. Wystarczy w instalatorze potwierdzić domyślne ustawienia i poczekać kilkanaście lub kilkadziesiąt minut (niestety instalacja trwa dość długo). Na koniec ponowne uruchomienie komputera i możemy rozpocząć świetną przygodę.

Kilka wskazówek na początek: polecam ustawić schemat kolorów na dark - mniej oczy się męczą. Jest również bardzo fajny darmowy dodatek Productivity Tool, który wprowadza kilka drobnych, ale przydatnych usprawnień, a znajdziemy go w NuGet.

Na czym skupić się na początku nauki C#?

Polecam nie kupować książek ani kursów onlinowych. Na początek najlepsze jest pisanie programów. Zakładamy sobie cel, np. napisanie kalkulatora i piszemy. Ważne, żeby to były nieduże projekty, które uda się zrobić w maksymalnie kilka wieczorów. Gdy założymy tworzenie dużego projektu, to zanim zobaczymy jakikolwiek efekt, zniechęcimy się do dalszej pracy. Jeśli już stworzymy kilka programów i będziemy mieli ogólne pojęcie, wtedy można uzupełniać wiedzę książką czy kursem wideo.

Czy testerzy korzystają z C# i w jakich sytuacjach?

Oczywiście. Jeśli pracują przy projekcie tworzonym w oparciu o .NET, wtedy wszelkie testy automatyczne piszą z wykorzystaniem tego języka. Testując aplikację warto znać podstawy, aby ją skonfigurować odpowiednio i uruchomić ją w środowisku programistycznym, a jak coś wyskoczy, nie schować się w kącie :)

Bardzo dobrym sposobem jest tworzenie małych aplikacji, które pomagają w testowaniu, np. aplikacja tworząca i kopiująca odpowiednie pliki, wymagane do rozpoczęcia testów. Jeden z testerów, którego poznałem stworzył bardzo fajne gotowce do Selenium, dzięki czemu ja, jako programista, układałem wszystko jak z puzzli oprogramowując tylko specyficzne elementy.

Czy polecasz jakieś książki, szkolenia lub źródła internetowe do nauki C#?

Jeśli chodzi o książki, to polecam szczególnie dwie:

- C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych – Krzysztof Żydzik i Tomasz Rak. Skrótowo przedstawione zostały najważniejsze elementy platformy .NET. Jeśli już w miarę sprawnie poruszamy się po podstawach programowania, to warto ją przeczytać, aby dowiedzieć się o większości technologii wykorzystywanych w tworzeniu aplikacji.

- C# 6.0 w pigułce lub nowsze wydanie. Jest to gruba księga opisująca całego C#. Gdy czegoś nie rozumiemy warto tu zajrzeć i poczytać o wielu mechanizmach. Oczywiście na StackOverflow znajdziemy rozwiązanie problemu, ale najważniejsze jest zrozumienie dlaczego to akurat jest tak.

Darmowe materiały online to oczywiście MSDN, które jest całą dokumentacją .NETa, a w tym C#. Wcześniej wspomniane StackOverflow, czyli portal, gdzie znajdują się rozwiązania prawie wszystkich problemów jakie napotkamy podczas programowania. Microsoft Virtual Academy to zbiór darmowych kursów wideo nagrywanych m.in. przez pracowników Microsoftu i MVP (wyróżnionych programistów przez MS) w różnych językach o programowaniu, nie tylko w C# i .NET.

Czasem ciężko jest samemu zacząć, więc dobrym wyborem są szkolenia stacjonarne. Pod okiem specjalisty można nauczyć się wiele. Trener wytłumaczy wszelkie niejasności i podpowie na co zwracać szczególną uwagę. Często słyszę opinię: „po co mi szkolenie, mogę się tego nauczyć sam w domu”. Jest to oczywiście prawda, bo wszystko czego uczę (ja lub inni trenerzy) można nauczyć się w domu. Jednak z książką, czy wideo kursem nie da się porozmawiać, zapytać czy znaleźć błąd w aplikacji i tylko trener wytłumaczy tak, aby każdy zrozumiał.

Niestety przypadłością książek i kursów jest tworzenie ich przez programistów i bez podstawowej wiedzy ciężko cokolwiek zrozumieć.

Dzięki Krystian!

Czas na autopromocję:  Wszystkich zainteresowanych nauką C#, serdecznie zapraszamy na szkolenie, prowadzone przez Krystiana.

Podczas trzydniowego szkolenia zapoznasz się z Visual Studio 2017, poznasz składnię języka C# (zmienne, stałe, typy danych, pętle, tablice, instrukcję warunkową i wyboru oraz operatory, komentarze i typy generyczne), a następnie nauczysz się podstaw programowania obiektowego i tworzenia testów jednostkowych.

Szczegóły i zapisy znajdziesz tutaj: https://testuj.pl/karta-szkolenia/szkolenie-csharp-dla-testerow-oprogramowania