Rozmawiamy dziś na temat "Wykształcenie, a

Transkrypt

Rozmawiamy dziś na temat "Wykształcenie, a
Wrocław, baza firm, oferty pracy, branża IT :: WroclawIT.pl
Rozmawiamy dziś na temat "Wykształcenie, a umiejętności
programistyczne" Zaprosiliśmy do dyskusji...
Rozmawiamy dziś na temat Wykształcenie, a umiejętności programistyczne. Zaprosiliśmy do dyskusji
cztery osoby:
Przemysława Rosłona - trenera w firmie CTS Customized Training Solutions, prowadzącego szkolenia z
zakresu .NET Framework, Visual Studio i SQL Server, projektowania aplikacji internetowych, baz danych i
Business Intelligence, posiadającego wiele tytułów między innymi: MCT (Microsoft Certified Trainer),
MCSA, MCSE, MCSD, MCITP (Database Administrator, Database Developer), MCPD (Windows Developer,
Web Developer), MCTS
Sebastiana Malacę obecnie Scrum Mastera, członka zespołu developerów odpowiedzialnego za analizę
i projektowanie historii użytkownika, uczestniczącego również w implementacji back i front endu i
odpowiedzialnego za rekrutację zespołu projektowego, dbającego o to, aby kod pisany był czytelny i jak
najwyższej jakości, kładącego duży nacisk na proces refaktoryzacji oraz na to, aby implementowana
przez niego funkcjonalność była jak najlepiej przetestowana
Daniela Jankowskiego obecnie dyrektora ds. oprogramowania Commersoft odpowiedzialnego za rozwój
i utrzymanie internetowej platformy biznesowej Commersoftu, zarządzającego zespołem tworzącym
nowoczesne oprogramowanie w technologiach Silverlight,Html 5, Java, Object-C, .NET, MS SQL SERVER,
doświadczonego projektanta i programistę mającego na swoim koncie stworzenie silnika aplikacji Asseco
Softlab ERP oraz mobilnej platformy biznesowej iBusiness oraz iSoftlab dla Asseco Business Solutions
Bartłomieja Juszczyka dyrektora zarządzającego Grupą Adweb, managera, inwestora, eksperta
mediów, wykładowcę, prywatnie podróżnika, pasjonata motocykli, alpinistę, teoretyka nauk
ekonomicznych w trakcie rozprawy doktorskiej, autora kilkuset publikacji poświęconych budowaniu
marek, wizerunku, promocji firm, zagadnieniom strategii marketingowych
Proszę opowiedzieć jak uczyli się Państwo programowania ?
S.M. W przypadku pierwszych języków programowania (C++, PHP) nauka była równoważna siedzeniu
nad książką, przepisywaniu przykładów ze zrozumieniem, a następnie na próbie stworzenia czegoś
własnego (na podstawie wcześniej zebranej wiedzy).
Przy przyswajaniu kolejnych języków programowania przyjmowałem inną technikę, - gdy już wiedziałem,
do czego najczęściej wykorzystuje się język, w jakich przypadkach i przy jakich projektach najlepiej się
sprawdza, wymyślałem sobie prostą aplikację, która mogła przydać się mi albo komuś z mojego
otoczenia i zaczynałem pisać.
Odrębnym tematem jest nauka programowania obiektowego (w oderwaniu od konkretnego języka).
Muszę przyznać, że droga do poznania technik obiektowych w stopniu zadowalającym była moim zdaniem
dużo trudniejsza.
W każdej książce, którą miałem przyjemność czytać były albo informacje o strukturach (interfejsy, klasy
itp.) bez tłumaczenia idei, albo dotykały zbyt zaawansowanych (dla początkującej osoby) tematów jak
wzorce projektowe, zasady SOLID, GRASP itp.
Nauka programowania obiektowego polegała przede wszystkim na uczeniu się na własnych błędach i
sukcesach oraz w dużej mierze na rozmowach z ludźmi bardziej doświadczonymi w tym temacie.
D.J. Przygodę z programowaniem zacząłem na początku liceum. Jak napisać pierwszy program
zobaczyłem na lekcjach informatyki, a potem długimi nocami przy książkach uczyłem się samodzielnie.
Niestety nie miałem wtedy dostępu do Internetu i zostawały tylko książki. W 2 klasie liceum założyłem
stronę internetową, przez którą zgłaszali się do mnie studenci różnych kierunków, którzy mieli problemy
z programowaniem. Przez długi czas pisałem programy, o które mnie proszono i tak ćwiczyłem sztukę
rozwiązywania problemów na rzeczywistych problemach.
http://www.wroclawit.pl
Kreator PDF
Utworzono 3 March, 2017, 19:41
Wrocław, baza firm, oferty pracy, branża IT :: WroclawIT.pl
Gdy uważałem się za dobrego programistę, zacząłem pracę w firmie Softlab (byłem najmłodszym
pracownikiem firmy, obecnie jest to Asseco Business Solution) i tam uświadomiłem sobie, że tak na
prawdę byłem w błędzie, co do swojego poziomu. Potrafiłem programować, jednak nie znałem się na
porządnym debugowaniu, zarządzaniu pamięci. Przy pomocy doświadczonych kolegów, ciężkiej pracy i
ciągłym poszerzaniu wiedzy, nauczyłem się kunsztu programisty i odpowiedniego myślenia.
P.R. Jak widać większość programistów uczy się samodzielnie. Mimo, że na rynku są dostępne szkolenia,
które pokazują jak rozwiązać pewne problemy w najlepszy sposób to nic nie zastąpi zwykłego siedzenia i
ćwiczenia na własną rękę. Programiści muszą ciągle praktykować. Teoria jest równie ważna jak praktyka.
Często na szkoleniach człowiek uczy się rzeczy, które teoretycznie mu się nie przydają, a przy którymś
projekcie zamiast kombinować jak koń pod górkę i wymyślać na nowo rozwiązania korzysta z
istniejących. Ponadto zawsze warto wiedzieć co jest optymalniejsze od czegoś i w jakich przypadkach.
Panie Bartku bardzo proszę opisać pokrótce przy jakiego typu projektach pracują u Pana w firmie
programiści ? Czym się zajmują ?
B.J. Studio programistyczne, które uruchomiliśmy przed niespełna dwoma laty zajmuje się
realizowaniem przede wszystkim autorskich zamówień, w tym m.in. aplikacji mobilnych, jak również
systemów klasy CMS czy CRM. Programiści na co dzień programują także moduły niezbędne w realizacji
większych zleceń opartych o gotowe rozwiązania, np. korzystając z silników open source, jak Wordpress.
Czy najlepsza jest nauka w domu, nad konkretnymi projektami czy też szkolenia w firmach zewnętrznych
?
S.M. Uważam, że nauka w domu jest najtrudniejszą i najkosztowniejszą drogą, ponieważ uczymy się na
własnych błędach.
Gdy pracujemy nad konkretnymi projektami, z doświadczonymi ludźmi uczymy się dużo szybciej.
Największym plusem tego typu nauki jest moim zdaniem to, że często uczymy się na błędach innych
osób, a więc koszt przyswajania wiedzy jest znacznie mniejszy.
Szkolenia w firmach zewnętrznych są moim zdaniem najszybszym sposobem pozyskania nowej wiedzy
bądź poukładania tej, którą się obecnie posiada. Jednak w przypadku takiej formy nauki trzeba zwracać
uwagę na to, kto prowadzi szkolenie i w jaki sposób to robi, ponieważ jeżeli szkoleniowiec nie potrafi
zainteresować słuchaczy, to nawet najciekawszy temat może się zmienić w kilkugodzinny nudny wykład,
z którego ma się ochotę uciec.
D.J. Ciężko odpowiedzieć na takie pytanie, co jest lepsze z tych dwóch rzeczy. Tak na prawdę bez pracy
w domu i ciągłego samo-dokształcania, szkolenia zewnętrzne można sobie darować. Szkolenia oczywiście
uczą dużo (jeśli są dobre), jednak taką wiedzę trzeba wykorzystywać w praktyce inaczej staje się
bezużyteczna.
Czy warto zdobyć najpierw teoretyczne doświadczenie a potem wdrażać je w praktyce ?
S.M. Warto znać teorię, ale z doświadczenia wiem, że programiści dopiero w zetknięciu z praktyką
zaczynają ją rozumieć w pełni. Osobiście uważam, że najlepiej zacząć pracować jak najwcześniej i choć
na początku możemy nie czuć się zbyt pewnie wśród bardziej doświadczonych kolegów/koleżanek, to
jeżeli tylko mamy ochotę, aby się rozwijać, to takie środowisko jest idealne, gdyż gdzie nie spojrzymy, są
osoby, od których możemy się czegoś nauczyć.
D.J. Teoria jest dobra i trzeba ją znać. Jednak wszystko zależy od charakteru i predyspozycji danej
osoby. Na pewnym poziomie zaawansowania teorii mało się potrzebuje, ale jest ona jednak potrzebna.
Całkowicie początkująca osoba bez teorii według mnie nie ma, co podchodzić do programowania,
ponieważ nawet nie zacznie.
Jak sprawdza Pan przed zatrudnieniem nowej osoby umiejętności zawodowe danej osoby ?
B.J. Na całe szczęście posiadam fantastycznych ludzi z genialnymi umiejętnościami, którzy uczestnicząc
w procesie rekrutacji są w stanie ocenić umiejętności programistyczne. Moim zadaniem jest rozmowa o
kwestiach formalnych, jak również opinia na temat osobowości danej osoby rzecz dla mnie
najważniejsza; do moich ludzi zaś należy ocena umiejętności, którą sprawdzamy czy to poprzez pytania,
czy to analizę dotychczasowych dokonań, czy w końcu zadania, o których wykonanie prosimy.
P.R. Jeśli chodzi o sprawdzania potencjalnych kandydatów w grę wchodzą testy, sprawdziany oraz
certyfikacja. Spotkałem się z przypadkiem, gdzie pracodawca wolał zatrudnić kogoś w teorii słabszego ale
z certyfikatami (mógł się wykazać pracownikiem i zbierał dodatkowe punkty za niego w przetargach).Dziś
http://www.wroclawit.pl
Kreator PDF
Utworzono 3 March, 2017, 19:41
Wrocław, baza firm, oferty pracy, branża IT :: WroclawIT.pl
u programistów zwraca się uwagę na umiejętności miękkie. Programista już nie tylko musi umieć
kodować, ale też dogadać się z klientem/pracodawcą itd. Zgadzam się ponadto, że programista nie musi
być dobry z matematyki (sam znam wielu takich), jednakże w zadaniach, które wymagają wymyślenia
dobrego rozwiązania zdecydowanie lepiej sprawdzają się ci, którzy znają matematykę.
Jakie cechy wyróżniają dobrego programistę ?
S.M. Chęć rozwoju, brak strachu przed nowymi wyzwaniami/problemami, umiejętność ich rozwiązywania,
uciekanie od schematów, poszerzanie horyzontów i nieustanne poszukiwanie lepszych rozwiązań,
umiejętność pracy w grupie, chęć i umiejętność dzielenia się wiedzą.
D.J. Ja u swoich pracowników cenię przede wszystkim, zdolność logicznego myślenia i wykorzystywania
tego, co już jest do rozwiązywania problemów, a nie budowania wszystkiego od podstaw. Taka osoba
powinna umieć zaprojektować rozwiązanie od początku do końca, potrafić je obronić przed przełożonym,
jak również słuchać tego, co do niej się mówi. Współpracowałem z wieloma programistami i niestety
muszę z przykrością stwierdzić, że dobry programista jest na wagę złota i to towar deficytowy. Mój
dobry kolega twierdzi, że trzeba się urodzić programistą i albo po prostu się nim jest, albo nie.
B.J. Wydaje mi się z punktu widzenia pracodawcy i nie informatyka że zmysł analityczny, który
pozwala szybko ocenić zakres zadania przed programistą stojący oraz czas i nakład pracy nacelowany na
realizację określonego zlecenia. Cenię sobie w swoich programistach to, że są w stanie równolegle
pracować nad dwoma, trzema realizacjami, które wymagają odrębnego podejścia zatem ta cecha jest
niezbędna podczas pracy w agencji interaktywnej, w przeciwieństwie do dość mozolnego, ale jednak pracowania nad wielkim systemem, często przez lata, po stronie Klienta.
Jakie kompetencje są kluczowe, aby sprawnie wykonywać powierzone programiście w firmie zadania ?
B.J. W przypadku Grupy Adweb kluczowymi są wiedza i umiejętności, niezbędne do realizacji rozmaitych,
wszechstronnych zleceń programistycznych. Jak to bywa w agencji interaktywnej zamówienia Klientów
są różnorakie i każde z nich wymaga indywidualnego podejścia do realizacji zatem otwartość na
różnorodność jest kluczowa w pracy programisty.
Czy programista musi być dobry z matematyki ?
S.M. Posiadanie ścisłego umysłu pomaga. Matematyka to wiele gałęzi, ja osobiście zawsze miałem
problemy z analizą matematyczną i tematami pokrewnymi, co mi nigdy nie przeszkadzało. Jednak
znajomość i rozumienie logiki z pewnością jest bardzo istotne. Programista nie musi być dobrym
matematykiem, ale na pewno nie może to być ktoś, dla kogo ta dziedzina wiedzy jest czymś tajemniczym
i magicznym.
D.J. Jeśli popatrzeć na samo programowanie, to nie trzeba być orłem z matematyki, aby napisać
program. Osobiście uważam, że znajomość matematyki bardzo ułatwia, tak jak w matematyce, tak i w
programowaniu trzeba myśleć logicznie, analitycznie. Nie wystarczy nauczyć się kilku wzorów i zdać z
danej części egzamin. To coś więcej. Wszyscy, których znam i szanuje, jako programistów, tak się
składa, że z matematyką radzą sobie bardzo dobrze.
Czego się dziś uczą programiści ? spotkałam się w necie ze stwierdzeniem że dziś programowanie
sprowadza się do umiejętności wyboru odpowiednich kreatorów i jak ktoś ma dopisać kod z głowy to jest
przerażony.
S.M. Co do stwierdzenia, które Pani znalazła, to muszę przyznać, że narzędzia, które teraz programiści
mają do dyspozycji bardzo pomagają i rzeczywiście, wiele rzeczy można zrobić w stosunkowo krótkim
czasie.
Jednak cechą wspólną tych wszystkich rzeczy jest ich powtarzalność, musi istnieć jakiś wzorzec, część
wspólna, aby stworzyć taki kreator. Na szczęścia dla nas, programistów, nie wszystko da się stworzyć
w ten sposób i logika biznesowa najczęściej musi być implementowana manualnie. Czy kogoś to
http://www.wroclawit.pl
Kreator PDF
Utworzono 3 March, 2017, 19:41
Wrocław, baza firm, oferty pracy, branża IT :: WroclawIT.pl
przeraża? Jeżeli tak, to chyba nie jest to zawód dla niego.
Wracając do pytania czego programiści się uczą? Nowych bibliotek, ponieważ ich znajomość pozwala
niekiedy zaoszczędzić mnóstwo czasu, bo nie trzeba wynajdywać koła na nowo. Nowych języków,
które są zbudowane na podstawie innych paradygmatów programowania, niż te, z którymi mają
styczność na co dzień. Pomaga to w patrzeniu na problem z różnych perspektyw. Nowych narzędzi,
ponieważ coraz więcej rzeczy można zautomatyzować, a lepiej zaoszczędzić czas spędzany na
powtarzanych czynnościach, aby skupić się na rzeczach kreatywnych. Większość programistów, których
znam (w tym i ja) uczy się różnych rzeczy, niekoniecznie związanych z ich zawodem. Cały czas poznają i
szukają czegoś nowego. Może dlatego, że nie lubimy się nudzić?
D.J. Ciężko mi stwierdzić, czego się dziś uczą. Bardzo trudno jest zatrudnić młodą osobę, która poza tym,
że twierdzi, że jest programistą i co to ona nie umie, nic sobą nie reprezentuje a oczekuje wynagrodzenia
na poziomie seniora. Jednak zdarzają się na szczęście wyjątki. Jakiś czas temu jak przeprowadzałem
rekrutację, udało mi się zatrudnić programistę w wieku 21 lat. O tej osobie mogę z czystym sumieniem
powiedzieć, że będzie z niego bardzo dobry programista za parę lat, a w tej chwili od niego mogliby się
uczyć starsi. Ta osoba postawiła na rozwiązania mobilne i bardzo dobrze się w nich realizuje. Wyklinanie
jakiegoś programu za pomocą kreatorów, nie jest możliwe, oczywiście jeśli mówimy o programie który
ma spełniać dane kryteria i realizować bardziej złożoną funkcjonalność. Na studiach nie uczono mnie,
używania kreatorów tylko pokazywano jak rozwiązywać poszczególne przypadki. Niestety bardzo niewiele
rzeczy sprawdziło się podczas rozwiązywania realnych problemów.
P.R. Programiści często korzystają z generatorów. Nie ukrywam, że w wielu przypadkach się sprawdzają i
przyspieszają pracę, ale część albo działa nie do końca dobrze, albo nie generuje wszystkiego (np.: w
Symfony 2), albo da się pewne rzeczy rozwiązać lepiej. Także z generatorów trzeba korzystać z
rozsądkiem. Zgodzę się również, że tak jak w przypadku ASP.NET MVC4 nie trzeba pisać nawet
fragmentu kodu by stworzyć system CMS.
Programiści muszą zatem uczyć się nie tylko nowych bibliotek ale i śledzić konstrukcje językowe i mało
tego badać ich wydajność w odniesieniu do konkretnych sytuacji. Jeśli chodzi o języki z przyszłością to
HTML5 (HTML+CSS+Java Script), C#, Java, Objective-C, PHP. Nie ma jednego języka do wszystkiego. Do
jednych rzeczy lepszy będzie C#, do innych PHP.
Czy uważa Pan że warto wprowadzić w firmie systematyczny system podwyższania kompetencji
programistów poprzez delegowanie ich do udziału w szkoleniach ?
B.J. Oczywiście szkolenia, czy udział w spotkaniach branżowych, tudzież konferencjach to sposoby na
podwyższanie kompetencji ludzi. W studiu CodeFathers jest to pewnym standardem, przy czym kluczem
do decyzji o szkoleniach jest indywidualna rozmowa z wybranym człowiekiem i wsłuchanie się w jego
oczekiwania i chęci rozwoju w określonych kierunkach.
Przenieśmy się trochę do przyszłości. Jak Pan myśli jakie języki będą się rozwijać, jakie będą przydatne ?
Który z obecnych języków jest najbardziej perspektywiczny ?
S.M. W ostatnich latach popularność zdobywały języki obiektowe i wydaje mi się, że w tym kierunku będą
się rozwijały przyszłe języki. Z racji tego, że coraz większa część naszej rzeczywistości jest połączona z
Internetem i technologiami, są nam potrzebne języki, które będą w stanie tą rzeczywistość odwzorować
w jak najlepszy (najprostszy i najszybszy) sposób.
Przez jakiś czas będą się rozwijały i stawały coraz popularniejsze (co ma miejsce obecnie) języki
obiektowe, ale prawdziwy przełom moim zdaniem nie jest kwestią kolejnego języka, który pozwala
rozwiązać problemy w ten sam/podobny sposób. Prawdziwy przełom przyjdzie wraz z nowym
paradygmatem programowania, coś co będzie łatwiejsze w odbiorze dla zwykłego (nie związanego z IT)
człowieka.
D.J. Uważam, że bardzo dużą szansę na rozwój ma Html 5, wszystko powoli przenosi się na przeglądarki
internetowe i w rozwój tego języka są zaangażowani najwięksi gracze na rynku. Poza tym językiem
oczywiście Object-C oraz Java zatem rozwiązania mobilne na platformę Apple oraz Android.
Czy wybór technologii w programowaniu to sprawa wtórna ? Czy liczy się problem i do niego trzeba
dobrać rozwiązanie ?
S.M. Do każdego problemu/projektu należy podchodzić indywidualnie. Wybór moich ulubionych
technologii/języków może sprawić, że niepotrzebnie wydłużymy swoją pracę oraz koszty stworzenia
aplikacji, co bezpośrednio wpływa na zadowolenie klienta.
http://www.wroclawit.pl
Kreator PDF
Utworzono 3 March, 2017, 19:41
Wrocław, baza firm, oferty pracy, branża IT :: WroclawIT.pl
D.J. Wybór technologii to rzecz najważniejsza, jednak nie zawsze można sobie na to pozwolić. Jeśli mamy
taki komfort, że dostajemy zadanie i mamy zaproponować jego rozwiązanie i nie jesteśmy niczym
ograniczeni, wtedy możemy wybierać wśród technologii, która będzie najlepiej pasowała do rozwiązania.
Jednak to zdarza się bardzo rzadko. Najczęściej firmy mają już pracują już w oparciu o jakąś
technologię aplikacji i dane rozwiązanie problemu staramy się wpasować w tą technologię. Nie zawsze
zmiana technologii jest możliwa, z różnych względów.
Proszę powiedzieć czy dziś programowanie sprowadza się do umiejętności wyboru odpowiednich
kreatorów ?
D.J. Niestety nie, a tak na prawdę to bardzo dobrze, że nie. Prawdziwe programowanie to sztuka sama w
sobie. Czasem lepiej poświęcić dzień dwa, aby wymyśleć i dobrze zaprojektować a dopiero napisać, niż
zacząć pisać od razu. Osobiście nie spotkałem się w swojej historii programowania, aby można było
wyklinać rozwiązanie.
Spróbujmy na koniec podejść krytycznie do poszczególnych języków programowania. Czy każdy nadaje
się do tworzenia konkretnych aplikacji ?
S.M. Jeżeli tylko sama specyfikacja języka na to pozwala, to grupa doświadczonych programistów byłaby
w stanie zaimplementować dowolną aplikację w dowolnym języku. Inna sprawa, że grupa tych samych
programistów, gdyby stanęła przed realnym problemem, to wybrałaby język, który w najlepszy i
najefektywniejszy sposób pozwoliłby im na realizację zadania.
D.J. Tego nie da się tak określić. Każdy język ma swoje dobre i złe strony. Czasem po prostu nie mamy
wyboru. Jeśli chcemy napisać coś na urządzenia mobilne firmy Apple, nie ma żadnego wyboru. Co prawda
Apple nie jest już tak rygorystyczne i dopuszcza zewnętrzne kompilatory, jednak to nigdy nie będzie
taka, jakość programu jak coś napisanego natywnie.
Na studiach zawsze była grupka ludzi, która kłóciła się nad przewagą Javy nad C++ /C# i odwrotnie. Jeśli
mam napisać dany program i mam wybór nad technologią, wtedy zastanawiam się, w czym będzie lepiej,
co się nadaje bardziej, a co mniej. Osobiście uważam, że takie języki jak Java, C# uczą młodych
programistów niechlujstwa, nikt się nie przejmuje wyciekami pamięci, zarządzaniem kodem, bo wydaje
im się że wszystko robi się samo. Oczywiście są w błędzie i ich programy zazwyczaj działają, jednak nie
mają dobrej, jakości. Podsumowując uważam, ze prawie dowolny program można napisać w dowolnym
języku, wszystko kwestia kryteriów odbioru i czasu, a co za tym idzie i pieniędzy.
http://www.wroclawit.pl
Kreator PDF
Utworzono 3 March, 2017, 19:41