Gdzie nauka?

Chodzę do 2 klasy Technikum na profilu informatyka(dokładniejszy profil będzie można wybrać w 3 klasie, ja wybiorę oczywiście Aplikacje Internetowe :P). Programuję w RoR już prawie 1.5 roku wcześniej robiłem w php, obj-c, delphi, c++(bardzo mało). Znam HTML(xHtml 1.1, trochę HTML5), CSS(1,2,3 - liźnięty), js(głównie z wykorzystaniem biblioteki prototype), SQL(co nie co ale muszę się bardziej douczyć). Mój główny na razie warsztat pracy to Mac OS X Tiger. Teraz moje pytanie. Wiem że chcę tworzyć aplikacje Webowe w przyszłości. Może to trochę za wcześnie ale gdzie iść najlepiej po technikum aby uczyć się tworzyć dobre i ciekawe serwisy. Czy zdawaliście maturę z informatyki aby się tam dostać?

Mam świeże przemyślenia na ten temat i przy każdej okazji dzielę się moją opinią więc nie omieszkam i tu:

Na kierunkach okołoinformatycznych będziesz przez n lat musiał oglądać i słuchać starych dziadków uczących od 30 lat tego samego tak samo. Będą próbowali Ci wmówić, że dobry informatyk == doskonały matematyk. Będziesz musiał przebrnąć przez tony przedmiotów, o których będziesz chciał jak najszybciej zapomnieć, a te, które sobie upatrzysz jako najbardziej obiecujące – będą potraktowane jedynie po łebkach.

Ponieważ to jest poważna decyzja i decyduje o tym, jak spędzisz kilka przyszłych lat, mówię to bez przymrużenia oka, całkiem na poważnie:

Jeśli interesują Cię aplikacje internetowe – zajmuj się aplikacjami internetowymi. Nikt nie nauczy Cię tego lepiej niż Ty sam, jeśli masz zapał i naprawdę Cię to interesuje.
A na studia idź na kierunek, na którym jest dużo dziewczyn.

Może i powyższa równość nie jest koniecznie prawdziwa, ale już
dobry programista == dobry (świetny) matematyk
jest całkiem bliska prawdy, więc bym matmy tak ostro nie skreślał :wink:

Najważniejsze to trafić na studia, które będą
a) dające satysfakcję (nie ma nic gorszego niż zanudzanie przez ww. dziadki na tematy, których się nie lubi)
b) wymagające (masz mieć umysł 3x sprawniejszy, szybszy i mocniejszy po studiach - inaczej zmarnowałeś 5 lat)
c) uczące ścisłego myślenia i inżynierskiego podejścia do problemów

Dziewczyny na sali wykładowej odciągają od nauki - integrację będziesz uprawiał wieczorami (i nocami :wink: ), a na wydziale masz się rozwijać intelektualnie.

BTW, “aplikacje internetowe” w sensie trzaskania prostego CMSa dla kolejnego klienta znudzą Ci się do wyrzygania po roku. Nie chodzi chyba o to, żeby być wyrobnikiem? A żeby robić coś ciekawszego (także ciekawe aplikacje internetowe, czy nawet frameworki itd.) to już trzeba mieć solidne podstawy, także z tematów ogólnych.

Idź na studia informatyczne inżynierskie (jeżeli na jakiekolwiek chcesz iść). Nie nauczą Cię tam programować w wybranym języku, nie nauczą również programowania aplikacji webowych, bo nie ma na to czasu i być może kompetencji niektórych wykładowców. Natomiast nauczą cię (lub jak ja to określam “wymuszą na tobie, abyś sam się nauczył”) inżynierskiego podejścia do problemu, nauczą cię rzeczy, które będą wydawały się bez sensu, a później okaże się, że jednak z czasem będą przydatne:) Ogólnie pewnie na każdych studiach będziesz narzekał, bo zawsze jest coś nie tak. Nie mniej studia np. na politechnice dadzą Ci pewien warsztat.
Oczywiście, kupując książkę z Helionu i programując w Ruby 1.5 roku będziesz wiedział więcej od absolwenta jakiegokolwiek kierunku. Pytanie jest jaki będzie poziom programowania jeżeli on również oprze swoją wiedzą na tej samej książce, w tym samym czasie, ale z doświadczeniem rozwiązywania przez 5 lat nawet najgłupszych problemów:) Pracodawca raczej (?) postawi na tego drugiego.

Słuchaj starszego, bo mądrze mówi :slight_smile: Matematyka to esencja informatyki (nie mylić z klepactwem) i naukowego/inżynierskiego podejścia do problemu.

Ale… jeśli tylko chcesz dobrze zarabiać, odpuść sobie stronki, pójdź na dobre studia, ucz się języków, czytaj dużo o .NET, JEE i bazach danych. Regularnie też czytaj komentarze pod artykułami dot. spółek informatycznych :wink:

Nie chcę nikomu układać życia osobistego, ale z tym rozwojem na studiach to prawda, zwłaszcza jeśli skończysz w tak zaściankowym mieście, jak Kraków, to dalej może nie być ku niemu wielu okazji.

Rails i PHP, Ruby i Java, ale też LISP czy SAS 4GL, to tylko narzędzia, trzeba je znać, tak jak architekt zna własności materiałów z vademecum. Ale jeśli chcesz być dobrym architektem, a nie rzemieślnikiem, skupiaj się na pomysłach i bryłach, nie na własnościach materiałów. Ich znajomość życie i tak na Tobie wymusi.

Ryzykowna teza, zwłaszcza jeśli będzie to ta gruba książka, która wprowadza w świat Rubyego tak prosto jak schemat montażu kabli TV w Twoim budynku w świat programowania Twojego magnetowidu :slight_smile: Aha, i nie zrobi raczej dobrego wrażenia na dziewczynach, więc jeśli masz, to naklej nadruk “historia filmu powszechnego” :wink:

Miałem na myśli, że będzie wiedział więcej o samym Rubym.

Ja właśnie jestem na studiach inżynierskich na kierunku informatyka. 3,5 roku to nie wiele więc większość tematów jest raczej dość powierzchownie przerabiana . Ale zgadzam się z przedmówcami ,że tu liczy się przede wszystkim inżynierskie myślenie i poznanie podstaw. Gdy szedłem na te studia znałem zaledwie podstawy Pascala (sic!), ale już po pierwszym semestrze przekonałem się że bez własnej pracy niewiele więcej się nauczę . Ruby zacząłem poznawać w tym roku od stycznia na skutek zawodu jakiego doznałem ze strony Javy. Owszem jest to ciekawy i potężny język ale niestety na mojej uczelni jest on beznadziejnie wykładany i nadużywany (prawie wszystkie projekty muszę robić właśnie w Javie, nie ma mowy o Ruby ani o Railsach !). Wracając do meritum : idź na studia informatyczne ale licz tylko na siebie. To co wyniesiesz z tych studiów zależy tylko od Ciebie.

PS. Odnośnie matematyki: jeśli nie masz jej za dużo w szkole to licz się z tym że na studiach będziesz się musiał wiele douczyć.

PS2. Ja pisałem maturę z informatyki ale to była totalna pomyłka. Poza tym większość uczelni jej nie wymaga.

Znowu studia :wink:

Temat rzeka. I każdy ma swoje własne zdanie.

Ja studiowałem informatykę na Wojskowej Akademii Technicznej przez dwa lata. I stwierdziłem, że to nie dla mnie. Dlaczego?

Kilka osób powyżej powtórzyło to, co cały czas bez zastanawiania powtarzają wszyscy dookoła, niezależnie od tego czy siedzą w temacie, czy też nie: Informatyk musi być przede wszystkim bardzo dobrym matematykiem.

Ja bym powiedział, że to jest okropne generalizowanie. Dobry matematyk może być kiepskim programistą, a dobry programista kiepskim matematykiem. I proszę mi tu nie wyjeżdżać z twierdzeniami, że bez matematyki, to taki delikwent będzie tylko rzemieślnikiem i marnym klepaczem kodu. Matematyka rozwija umysł, pozwala podejść do wielu spraw bardziej analitycznie, teoretycznie, pomaga w zrozumieniu niektórych mechanizmów. Ale bez przesady! Bardzo podobały mi się słowa Marcina Perego (wiceprezes Gemiusa), z którym miałem przyjemność mieć Wprowadzenie do programowania: “Żeby zostać dobrym programistą musimy mieć na koncie odpowiednio dużo dupogodzin.” Dobry programista powinien moim zdaniem przede wszystkim programować. Inne przedmioty są po to, żeby mu pomóc. A nie po to, żeby cały swój czas tracił na ich uczenie (wystarczy dodać jeszcze kiepskich wykładowców, którzy nie umieją przekazać swojej wiedzy i mają dziką satysfakcję z udupienia jak największej liczby studentów i mamy nieciekawą sytuację).

Nie wiem jak jest na innych uczelniach państwowych, ale na WAT przez pierwsze 2 lata były 4 przedmioty związane z programowaniem (ćwiczenia i laborki średnio raz na 2 tygodnie), na 3 roku tylko jeden - praca w grupie, czy coś takiego, na którym cała grupa robi jakiś projekt. (każdy z tych przedmiotów przez jeden semestr, nie rok). Dla mnie to stanowczo za mało.

Wracając jeszcze do matematyki, klepania kodu i rzemieślnictwa. Nie uważam się za klepacza kodu, potrafię myśleć abstrakcyjnie, właściwie to czym wyższy poziom abstrakcji tym lepiej. Kodzę już od długiego czasu i zauważyłem, że dobrego programistę cechuję rzeczy trochę inne niż znajomość matematyki. Na przykład dobry gust programistyczny (a ten najczęściej trzeba sobie wypracować wspomnianymi wyżej dupogodzinami). Bardzo ważne jest też podejście - rozwiązać problem szybkim hackiem, który już się zna, czy poświęcić trochę czasu na naukę i zrobić coś ładniej, przejrzyściej, lepiej. Przydaje się też umiejętność komunikowania się z innymi. Wytłumaczenia dlaczego chce się coś zrobić tak, a nie inaczej - odpowiedź: “bo tak mi się wydaje lepiej” jest mało satysfakcjonująca. Te cechy są moim zdaniem bardzo ważne. Za to nigdy nie zauważyłem, żeby przydała mi się gdzieś umiejętność całkowania i różniczkowania :wink:

I na koniec, żeby nie było, że dyskredytuję matematykę. Wszystko zależy od tego co się robi. Dla mnie najbardziej przydatne okazały się algebra i matematyka dyskretna (teoria grafów, z algebry macierze). Ale nie każdy ma ambicje zostać kryptologiem…

Od następnego roku planuję się zaczepić w PJWSTK. Jeżeli już rozmawiamy o nauce, to może jacyś studenci (albo exstudenci :wink: ) powiedzą coś na jej temat?

Drogus, to jest trochę jak rozmowa o wyższości jednych świąt nad innymi i nie mówię tego wcale z wrodzonej skłonności do kompromisu, bo z tym bywa różnie :slight_smile:

Wg mnie są ludzie, którzy lubią i wybierają karierę jako dobrzy programiści i wklepywanie kodu 8h dziennie, a potem być może wklepywanie zadań do jakiegoś projecta. Być może mają Agile modelling Amblera w domu od 2002, ale to dalej są fachowcy od wklepywania kodu, czy to od strony praktycznej, czy teoretycznej. Dla mnie wklepywanie kodu jest tylko określeniem czynności, być może można nazwać to wpisywanie kodu.

Inni (nie znaczy lepsi, bo na jakiej podstawie?) lubią informatykę teoretyczną, a tu poza wspomnianą inżynierią oprogramowania, mało który kierunek nie wymaga biegłej znajomości matematyki. Biegłej, nie znaczy zaawansowanej, na poziomie studiów informatycznych na ogół wystarczy. Fakt, częśćiej będzie to dyskretna, niż analiza, ale to zależy od dziedziny.

Według dużej części z nas istnieje dodatkowo przesłanka, że modelowanie matematyczne ułatwia modelowanie w ogóle, tak jak ułatwia fizykom, inżynierom innych branż, dlaczego miałoby nie ułatwiać nam, skoro też modelujemy. I tu jest wg mnie ukryta pewna pułapka myślowa, bo informatykom pierszej grupy nic nie ułatwia, jako że model jest na ogół zadany z góry, przez analityka - oni mają się tylko zastanowić jak ładnie go zaimplementować. Ale tym analitykiem, poza bankowcem czy chemikiem, może być po prostu informatyk z drugiej grupy :slight_smile:

Słowem - w moim przekonaniu - wolny wybór :slight_smile:

Ale w realu zdarza się często, że obie te funkcje się przenikają i nie zawsze z korzyścią dla jakości kodu napisanego przez teoretyka, podobnie jak z jakoścą modelu stworzonego przez praktyka. Dlatego, chociaż wolę teoretyzować, lubię czytać to forum o programowaniu, żeby - gdy mam takie zadanie - potrafić coś skrobnąć w miarę z sensem. Ale takiej biegłości, jak praktykujący 8h/dziennie nigdy nie osiągnę - używając Twojej metafory nie wysiedziałem dostatecznej ilości dupogodzin :slight_smile: I naprawdę podziwiam ludzi, którzy piszą, kodują, fajne rzeczy w Rubym w fajny sposób, tak jak duża część forumowiczów.

Tylko widzisz. Moim zdaniem model stworzony przez teoretyka, który nie zna wszystkich zalet i zawiłości języka, może być niekompletny, nie do końca optymalny. Szczególnie jeżeli tyczy się to Rubiego. Używając Javy, C++ czy innego “konwencjonalnego” języka zorientowanego obiektowo modelowanie jest o tyle łatwiejsze, że trzymają nas pewne ramy. Niektórych rzeczy się po prostu nie przeskoczy, są wzorce projektowe, są dobre praktyki OOP, są popularne biblioteki, których się używa. W językach dużo bardziej dynamicznych jest więcej swobody.

Najlepszym przykładem są tu frameworki napisane w Rubim. Nie wierzę w to, że teoretyk bez bardzo dobrej znajomości języka (i tzw przeze mnie “intuicji” w danym języku) zaprojektowałby tak fajne rozwiązanie jak Railsy. To jest skrajny przypadek, ale jest od cholery bibliotek z niesamowitymi DSLami i rozwiązaniami, które są niemożliwe do ogarnięcia osobie nie znającej zawiłości języka.

Dlatego właśnie piszę o łączeniu teorii z praktyką. Nigdzie nie napisałem, że matematyka jest w ogóle nie przydatna. Ale nie napisałem też i nie napiszę, że jest kluczowa.

I jeszcze na koniec: co dokładnie rozumiesz przez “modelowanie”? Tak, żeby było wiadomo czy mówimy o tym samym :slight_smile:

No właśnie chyba się nie zrozumieliśmy :slight_smile: Model, o którym ja piszę, to model jakiegoś problemu, który ma rozwiązać program docelowy, nie model samego programu. Chodzi tu o model procesu fizycznego, chemicznego, ekonomicznego czy bardziej związanego z IT: funckja jednokierunkowa, generowanie drzewo decyzyjnego, fst czy scheduler systemu operacyjnego. Tu na ogół używa się matematyki, bo to bardzo wygodne, żadne tam wydziwianie, sam z resztą wiesz. Nie jest kluczowa, tak jak kluczowa nie jest ekierka, ani monitor. Ale jest póki co niezbędna do wydajnej pracy.

A model oprogramowania, taki, o który wydaje mi się, że Ty piszesz, a jaki zwykle programiści rysują na tablicy, jak zabierają się do nowego dzieła, to dla mnie część praktyki, nie toerii.

Pytanie, czy w przypadku Railsów, efekt tworzenia praktyków jest tak ładny, jak byśmy chcieli - czy tylko się sprawdza. Dla mnie jest OK, ale na forum wielu ludzi ma chyba odmienne zdanie. Ale to już chyba filozofia informatyki :wink:

Ja również stoję przed wyborem ścieżki kształcenia. Mimo wielkiej sympatii jaką żywię do programowania oraz problemów z nią związanych postanowiłem pójść na studia, które pozwolą mi poznać jeszcze inna dziedzinę. Programowanie traktuję jako użyteczne narzędzie do rozwiązywania problemów i myślę, że nasi rodzice czasem mają rację: “języków trzeba się uczyć”. Dobrze jest gdy możemy jeszcze czerpać z tego zyski, ale należy pamiętać o korzyściach intelektualnych.

A wracając do tematu to chętnie posłucham sugestii odnośnie wybierania kierunku.

I na koniec: matura z informatyki to nieporozumienie. Koniec kropka. :slight_smile:
PS. Co sądzicie o AiR?

Nie przesadzajmy w drugą stronę. To nie jest tak, że ktoś Ci powie, co to jest wskaźnik, poczytasz sobie książkę do Rails i już jesteś dobrym programistą. Jeśli chcesz być dobrym programistą, a nie tylko umieć programować, masz zasadniczo w tej chwili dwie możliwości: albo przez 5 najbliższych lat się uczyć na studiach, albo w wolnym czasie: wybór należy do Ciebie, ale wybór drugiego oznacza de facto dwa kierunki. Jeśli nie masz żadnych szczególnych powodów, żeby iść na AiR, według mnie, daruj sobie.

A w tym, co napisałeś o nauce języków pewnie jest sporo racji, ale ja znam nieco inną interpretację tego powiedzenia: idź na filologię. Mam wrażenie, że Ty piszesz o zdobywaniu FCE.

+1. Lepiej bym tego nie ujął.

Istnieje wuchta fajnych kierunków inżynierskich “z okolic” informatyki, a nie będących informatyką. Ze swojej strony mogę polecić Fizykę Techniczną na PW, całkiem sensowni są też ludzie z matematyki [stosowanej] na MiNI PW.

Po chwili zastanowienia wszystko sprowadza się do ludzi. To właśnie z nimi będziesz spotykał się na co dzień. Z drugiej strony najlepiej podążać za swoją pasją, tak by nie mieć uczucia bezsensu (?). Jest też trochę racji w stwierdzeniu, że praca która kochasz i praca która nienawidzisz w równym stopniu prowadzą Cię w prostej linii ku wypaleniu.

Ja pewnie wybiorę się na jeden z ‘tych’ pokrewnych kierunków…

Ja jestem na EPI (Elektroniczne Przetwarzanie Informacji) na UJ. To jest wydział Zarzadzania i komunikacji spolecznej. Mozesz tam sprobowac. nie jest rewelka ale jak bedziesz chcial sie czegos nauczyc to sie nauczysz a jak nie to mozesz przebimbac 5 lat.