Ja oceniam to tak, że jeśli ominiesz studia i zostaniesz programistą, wzrastają Twoje szanse na dwie skrajne możliwości:
-
Będziesz bardzo kiepski. Będziesz należał do najgorzej zarabiających koderów. Na początku może i jeszcze gorzej niż zwykli (tj. słabi w programowaniu) studenci. Z czasem może awansujesz na tę pensję studencką. Nie przyłożysz się do nauki programowania i nie będziesz miał zbyt wysokich umiejętności, a do tego nie będziesz miał nawet wykształcenia, które coś tam czasem jednak daje -- część wiedzy może zostać.
-
Przyłożysz się do samodzielnej nauki. Będziesz systematyczny, metodyczny. Postawisz sobie poprzeczkę wysoko i będziesz gotów zapłacić odpowiednio wysoką cenę, by ją przeskoczyć. Samo to (prawdziwa chęć polepszania się wraz z gotowością do poświęcenia na to sporej ilości czasu, krwi, potu i łez ;) ) sprawi, że niemal na pewno tę poprzeczkę osiągniesz. Będziesz lepszy od tych zwykłych studentów i będziesz lepiej zarabiał. Twoje umiejętności będą Twoim mocnym atutem -- a jest to dla programisty znacznie, znacznie ważniejszy atut niż samo wykształcenie.
Zastanów się, którą drogą będziesz w stanie pójść.
Są programiści, którzy należą do tych lepszych -- lub do tych najlepszych -- z danej branży, a wykształcenia kierunkowego nie mają. Żeby być dobrym, to zdecydowanie MUSISZ -- tak czy siak -- pracować nad swoimi umiejętnościami poza studiami. I to dużo. Jeśli będziesz dobrym programistą, to poza uczelnią zdobędziesz zawsze znacznie większą część swoich umiejętności niż na uczelni. Uczelnia daje pewne teoretyczne podstawy. One są przydatne, ale tylko niewielki procent studentów potrafi je połączyć z praktyką. A praca to praktyka.
Co do tego, czy umiejętności matematyczne są konieczne w programowaniu... To w sporym stopniu zależy od tego, co chcesz programować. Jeśli chcesz robić strony internetowe w PHP czy C#, to za wiele z tej matmy prawdopodobnie nie skorzystasz.
Musisz natomiast umieć myśleć logicznie. Musisz być w stanie widzieć równoważności czy różnice pomiędzy różnymi rzeczami. Musisz umieć manipulować podstawowymi relacjami. Logika w ogóle jest przydatna, używa się jej non stop (choćby Prawa De Morgana, bardzo często napotyka się też na poukrywane w funkcjach kwantyfikatory). Musisz umieć myśleć i wyrażać się ściśle. Rozumieć, że wszystko, czego nie powiedziałeś (lub nie usłyszałeś), jest nieokreślone i nie można na tym polegać.
Z Twojego posta wynika, że być może jesteś tym lepszym współczesnym humanistą. Bo w ostatnich czasach humanistą szumnie się nazywa ten, co nie umie matmy. A Ty przynajmniej z językami nie masz problemów.
I dobrze. Są pewne podobieństwa pomiędzy językami naturalnymi i językami programowania, choć rzadko kto je dostrzega. Może dlatego, że mało kto interesuje się z jednej strony gramatykami formalnymi, a z drugiej -- dobrze zna gramatyki języków naturalnych.
Być może nie boisz się czytania książek. Może nawet to lubisz. To super. Ja -- choć raczej nie jestem pod tym względem normalny -- na i po studiach przeczytałem ze 40 książek związanych z programowaniem.
Znajomość języka angielskiego może Ci się bardzo przydać. Programista MUSI mieć przyzwoitą bierną znajomość angielskiego. Specyfikacje są po angielsku. Materiały edukacyjne są po angielsku. W Necie można znaleźć sporo filmików z konferencji i wykładów udzielanych przez najlepszych programistów. Sporo wiedzy. W dodatku praktycznej, bo na tych wykładach nikt o pierdołach nie opowiada -- to nie jest państwowa uczelnia. Nic tylko czerpać.
W słynnej książce "Pragmatyczny programista" jest rozdział zatytułowany "Wszystko jest pisaniem". Mówi o tym, jak wiele czynności wykonywanych podczas programowania jest w zasadzie pisaniem tekstu w języku naturalnym. Dokumentacja. Komentarze. E-maile dotyczące wymagań, wymieniane z klientem lub managerem. A w kodzie -- nazwy zmiennych, klas, procedur. Umiejętności językowe zdecydowanie się przydają.
Także IMO szanse są, ale musisz się starać. Musisz chcieć być dobry i musisz do tego naprawdę dążyć. Ale nie głupim gadaniem, tylko konkretnymi działaniami. Które sam będziesz identyfikował, wybierał i wprowadzał w życie. Jak się nie przyłożysz, to będzie bardzo źle. I wtedy bym na Twoim miejscu w ten zawód nie szedł. Chociaż... w jaki zawód miałbyś iść? W czym by Ci było lepiej? Może i w niczym. Może i w dowolnym zawodzie, jeśli nie miałbyś super szczęścia czy znajomości oraz nie pracowałbyś ciągle nad tym, by być jak najlepszym -- skończyłbyś mając niezbyt duże pieniądze i niezbyt dużą satysfakcję z pracy. Może i większość ludzi w Polsce (i nie tylko?) tak właśnie ma. Kiepscy programiści mają podobnie.
Dobrzy programiści mają ździebko lepiej. Ale dobrym programistą trzeba umieć się stać (i można tego się nauczyć!). Po dobrych studiach i przy marnej pracy nad swoimi umiejętnościami, będziesz co najwyżej średnim programistą. Szczerze mówiąc, takim też bym się nie chciał stać. Jeśli naprawdę czujesz w sobie tę siłę, która mówi Ci, że chcesz być po prostu dobry, coraz lepszy i że zrobisz wiele/wszystko by to osiągnąć -- brak studiów nie będzie dla Ciebie przeszkodą nie do pokonania. Może nawet w ogóle nie będzie istotną przeszkodą.