Nauka programowania na studiach vs realia

0

Hejka. Post powstał tylko i wyłącznie czysto z ciekawości.

Chciałem zapytać was o zdanie, mianowicie: czego uczą nas na studiach jeżeli chodzi o dany język programowania (np. C#) a co tak na prawdę przydaje się w pracy jako programista? Czy według was uczą rzeczy, które są mało istotne patrząc pod kątem przyszłej pracy? Jeśli tak, to jakie są to rzeczy?

Zachęcam do dyskusji.

10
  1. Nauka programowania to nie to samo co nauka języka programowania i nie to samo co inżynieria oprogramowania (edit: i oczywiście nie to samo co informatyka - nauka o przetwarzaniu informacji!)
  2. Każdy ze studentów trafi do zupełnie innej firmy do różnych projektów i jednemu przyda się X a drugiemu Y, więc taka licytacja czy uczą rzeczy które konkretnej osobie się nie przydały nie ma sensu. Studia z definicji są "ogólnokształące" i mają pokazać daną dziedzinę nauki możliwie szeroko, a to od studenta zależy na czym się skupi i będzie specjalizować.
5

Nie skupiaj się na językach programowania, to jest najmniej ważna działka. Nic ci z dobrej znajomości budowy młotka jak nic nim nie umiesz zbudować.

Jak studiowałem to dla większości problemów takimi podstawowymi wyznacznikami jakości rozwiązania były:

  • zrobienie przed deadlinem - lepiej było przepchać gniota bez połowy funkcjonalności niż nie oddać nic
  • działanie happy case jakiejś konkretnej funkcjonalności
  • stworzenie jakiegoś sensownego podsumowania/raportu

cykl pracy z tym co napiszesz wynosił gdzieś od kilku godzin do max kilku miesięcy. W pracy takie projekty się zdarzają w zasadzie tylko w formie spikeów albo jakichś szybkich PoC które się raz na jakiś czas robi, ale znaczna większość pracy ma zupełnie inną charakterystykę:

  • oczekiwany czas życia systemów w latach
  • większa złożoność problemów (chociaż indywidualne problemiki są typowo mniej ciekawe niż na studiach)
  • praca w zespole + z różnymi innymi ludźmi w koło
  • oczekiwane jest dowiezienie działającej funkcjonalności
  • rozwiązania działają w kontekście jakichś innych systemów z różnymi dziwnymi założeniami i ograniczeniami
  • obsługa błędów to nie jest nice-to-have
  • konieczna jest operowalność - pojawiają się tematy takie jak deploymenty, logi, metryki, tracing, alerting
0

@Shalom: Tak z ciekawości: jaka jest szansa na znalezienie stażu/pracy (UoP lub Zlecenie) w IT jeszcze w czasie studiów, np. na 2 roku? (wiem, że to zależy od umiejętności, dlatego chciałbym abyśmy założyli umiejętności typowego studenta informatyki, takiego przeciętnego "Kowalskiego")

0

@MatheoMONSTER: zależy jaki poziom prezentuje student 2 roku, który startuje na staż. Może to być osoba, która zrobiła jaką appkę z tutoriala i tyle. Może to być również osoba, z którą można pogadać na dany temat, orientuje się w języku oraz technologiach, które wykorzystuje w swoich projektach. Osoba, która nic nie robiła poza uczelnianym programem raczej ma małe szanse. Dodatkiem do tego na pewno jest umiejętność zaprezentowania się na rozmowie.

2

Studia uczą podstaw - bazowej wiedzy którą się potem rozwija. Mają dać szerokie podstawy do rozwoju myślenia i kojarzenia.

0

Zależy od:

uczelni, wydziału, roku, profków, trybu, ludzi na kierunku.

Może być tak że będziesz narzekać że tylko pierdółki i teorie miałeś na studiach i generalnie nic ci się z tego nie przydało, a może też być tak, że trafisz na kogoś z branży i będziesz zadowolony pod względem łatwości znalezienia pracy. Oraz oczywiście dużo więcej możliwych outcomów.

1

U mnie na studiach raczej żadne przedmioty uczące języka programowania, nie uczyły go wystarczająco dobrze. Przedmioty takie jak: Wstęp do programowania, Programowanie w języku C, programowanie w języku C++, Programowanie w języku Java.

Ale za to przedmioty, na których trzeba było używać języka programowania, wymagały znacznie więcej wprawy niż było wymagane do zdania tych powyższych :] Np. Mikronapędy w systemach komputerowych, Algorytmy Genetyczne, Metody numeryczne, Matematyka dyskretna, Systemy wbudowane.

Nie żebym ja miał z tym problem, bo ogarnąłem kilka języków programowania jeszcze przed studiami. Ale ludzie, którzy liczyli na to, że studia nauczą ich programować, się przeliczyli i większość ludzi na roku wybrała specjalność sieci komputerowe, żeby ograniczyć ilość programowania.

Wstęp do programowania co prawda mieliśmy w języku Pascal (jakieś Turbo Delphi), ale prowadzący całkiem poważnie traktował przedmiot i zwracał uwagę na styl programowania - wcięcia, przecinki, odstępy, nazewnictwo zmiennych, procedur itd.

Język C był prowadzony równolegle z Algorytmami i Strukturami Danych, więc mogliśmy teorię poćwiczyć w praktyce, pod nadzorem.

Na Programowaniu w języku C++ można było sobie trochę uporządkować wiedzę o programowaniu obiektowym.

Javę kiepsko wspominam... Prowadzący nam np. pokazywał wszystkie sposoby parsowania XML :D

Na Systemach wbudowanych obsesyjnie ćwiczyliśmy implementację maszyny stanów razem z dokumentacją.

1

U mnie na pierwszym roku pokazali jak zaimplementować przeróżne struktury danych za pomocą wskaźników w C/C++. Nauczyli asemblera i każdy musiał napisać kompilator asemblera dla przykładowej architektury CPU. Na laboratoriach z programowania była masa przeróżnych zadań. np. musieliśmy napisać mnożenie dużych liczb za pomocą operacji bitowych. To tylko przykłady ale tego raczej nie nauczysz się na bootcampie. Ponadto w każdym semestrze były kursy oraz laboratoria z innego języka programowania. Dzięki tej wiedzy poprawiam programy po innych programistach, którzy napisali kod który działa bardzo wolno.

1

Te młode to myślą, że studia to 5-letni kurs programowania.

Tak nie jest.

0

Ja na swoich przedmiotach uczę Pythona w sposób praktyczny i dobieram zadania tak, aby symulowały dobre rozwiązania i praktyki, które stosujemy w pracy. Potem oddawanie zadań to codereview z skupieniem się na najważniejszych szczegółach.

Prowadzący z działu, przedmiotów obok np. bardzo minimalistycznie wykładają języki i frameworki. Studenci skarżą się, że wtedy niewiele się uczą.

Niestety zależy na kogo trafisz.

0

Ja studiowaem na : [CIACH!] i wykadowcy zawsze powtarzali e to czego uczą to są podstawy i aby dobrze nauczyc się danego języka programowania trzeba wiele godzin spędzić na czytaniu o nim i nauce.

0

@wqeqwdcs: To zależy: czy chce się umieć napisać aplikację, czy pisać ją w nieskończoność bo klient płaci, czy zapewnić współkoderów że umie się programować towarzysko z nimi rozmawiając o programowaniu, czy może po prostu przejść procesy rekrutacyjne na deva i zostać zatrudnionym. Bo to są 4 różne rzeczy które czasem siebie wykluczają.

1
MatheoMONSTER napisał(a):

Hejka. Post powstał tylko i wyłącznie czysto z ciekawości.

Chciałem zapytać was o zdanie, mianowicie: czego uczą nas na studiach jeżeli chodzi o dany język programowania (np. C#) a co tak na prawdę przydaje się w pracy jako programista? Czy według was uczą rzeczy, które są mało istotne patrząc pod kątem przyszłej pracy? Jeśli tak, to jakie są to rzeczy?

Zachęcam do dyskusji.

No więc, ja nie słyszałem o studiach z programowania. Są różne -- informatyka (w wielu odmianach) i inne rzeczy, ale programowanie? Jest ktoś z tu obecnych inż./lic./mgr/dr programowania???

0

Trochę odświeżę temat.
Studiuję na kierunku Web and Mobile Development w UK i zostały mi jeszcze 2 tygodnie do końca studiów. Dziś z ciekawości sprawdzałem kierunki w Polsce, żeby porównać sobie program i to czego tam mógłbym się nauczyć. Nie znalazłem żadnego kierunku związanego z web devem na żadnym uniwersytecie ani politechnice. Jak to wyglada w takim razie w Polsce? Zakładając, że chciałbym się rozwinąć w web devie, nauczyć się dobrych praktyk użytku popularnych frameworków, struktur baz danych, cyber-security, CMSów, HTML/CSS/JS itp. to jest szansa nauczyć się tego na jakiejs uczelni? Czy trzeba iść na informatykę, użerać się z matematyką i klepać w C przez 3 lata? Są może jakieś specjalizacje do wyboru na informatyce?

1

@sebas-jpg:

Są kursy z aplikacji webowych (js, spa, www itd.), baz danych oraz inżynierii oprogramowania.

To co będziesz robił na aplikacjach webowych zależy od tego, na kogo trafisz.

CMSów nikt raczej nie wykłada.

0

@WeiXiao: ta, moja uczelnia zrobiła tak: było kilka grup na 1 roku, po czym dają nam możliwość wyboru specjalizacji, rzekomo, bo i tak wszyscy zostali skierowani na sieci albo grafikę. W efekcie nikt nie miał wyboru. Oczywiście pomijam w tym momencie, że była ustalona grupa wykładowców, więc nawet gdyby więcej osób chciało inny kierunek to nie ma mowy, bo nie ma od tego wykładowców.

0

W projektach robionych komercyjnie, są 2 problemy nie występujące w projektach ze studiów:

  1. poziom skomplikowania
  2. ma działać

W dodatku praktycznie każdy język programowania to przypisanie wartości do zmiennej, instrukcja warunkowa i skok. Problem w tym, jak te banały przełożyć na działający system.

1

@sebas-jpg: u mnie C, C++, algorytmy to był 1 rok. Ale to są 3 przedmioty trwające po jeden semestr.

Technologie sieci Web trwały niby 2 semestry. Ale 1 część była na inż, druga na mgr. Na mgr był taki prowadzący, że przedmiot wyglądał jak powtórka z inż. Nawet mniej szczegółowo. Pod weba osobno były bazy danych i inżynieria oprogramowania (2 przedmioty w jednym semestrze).

Jak widać, to nie jest tak, że przez 3 lata się męczysz z pierdołami. Są też inne przedmioty.

Ale i tak uczelnia to nie zawodówka. Gotów do pracy będziesz tylko, jeśli sam się do tego przyłożysz...

1 użytkowników online, w tym zalogowanych: 0, gości: 1