Możliwy duplikat:
ukończyłem studia informatyczne, ale nie wydaje mi się, żebym był prawie ekspertem programistycznym
Niedawno ukończyłem uniwersytet i od tego czasu dołączyłem do zespołu programistów, w którym jestem zdecydowanie najmniej doświadczonym programistą i może z kilkoma warunkami pracy. Tymczasem reszta zespołu zdobywa 5-10 lat doświadczenia.
Byłem bardzo dobrym studentem i całkiem dobrym programistą, jeśli chodzi o butelkowane zadania i testy. Pracowałem z powodzeniem nad niektórymi projektami, ale teraz pracuję z dużo większą bazą kodu, a krzywa uczenia się jest znacznie wyższa.
Zastanawiałem się, ilu innych programistów zaczynało swoją karierę w zespołach i odeszło, jakby byli do kitu. Kiedy to się zmienia? Jak mogę przyspieszyć proces? Moi seniorzy pomagają mi, ale chcę być świetny i pokazać moją wartość teraz.
źródło
University prepared me for computer science, but not really for software development.
Nie. Nauczyłem się znacznie więcej o programowaniu / inżynierii oprogramowania w ciągu pierwszych 6 miesięcy pracy po ukończeniu studiów niż w poprzednich latach. Nie oznacza to jednak, że uniwersytet był stratą czasu, przygotował mój umysł i zapewnił podstawową wiedzę, na której można budować.
Z drugiej strony, patrząc wstecz, wciąż nie wiedziałem, co robię za 6 miesięcy.
źródło
Edukacja daje podstawy, na których można budować, ale nie przygotuje Cię do rozwoju oprogramowania w prawdziwym życiu. To pochodzi z doświadczeniem. Na pewno byłem w takiej samej sytuacji jak Ty, kiedy zaczynałem programować pracę. Tak długo, jak będziesz się uczyć, czytać książki, posty na blogu i stosować to, czego nauczysz się w pracy , będziesz się doskonalić. Kluczem jest zastosowanie tego, czego się uczysz. Samo czytanie nie pomoże, musisz aktywnie zastosować nową wiedzę.
źródło
Zdecydowanie tak myślałem, ale nie byłem.
Zaufaj mi, w pewnym momencie swojej kariery zamierzasz wrócić i pracować nad kodem, który napisałeś, ale nie dotykałeś go od lat i desperacko chcę, aby żaden inny profesjonalny programista nigdy nie widział tego kodu ani nie wiedział, że go napisałeś. Oznacza to, że rośniesz.
źródło
Pod pewnymi względami wybór języka programowania jest podobny do wyboru języka naturalnego. Możesz nauczyć się sporo teorii w szkole. Uczysz się gramatyki i podstawowych elementów słownictwa i myślisz, że jesteś całkiem dobry, aż do prawdziwej rozmowy z native speakerem, a potem jesteś całkowicie zagubiony.
Sposób, w jaki naprawdę uczysz się języka, do tego stopnia, że możesz rozmawiać z rodzimymi użytkownikami języka, polega na tym, by mówić językiem, co godzinę każdego dnia. Zazwyczaj oznacza to zamieszkanie w miejscu, w którym się mówi. I wtedy dzieje się coś interesującego. Chociaż to, czego nauczyłeś się w szkole, jest samo w sobie bezwartościowe na ulicach obcego kraju, daje ci dobre, solidne podstawy teoretyczne, które znacznie ułatwiają naukę języka. (Przynajmniej takie było moje doświadczenie z hiszpańskim.)
Programowanie jest takie samo. To, czego uczysz się w szkole, nie przygotowuje cię do pracy, którą musisz wykonać jako prawdziwy programista, ale (zakładając, że jesteś w kompetentnej szkole, która nie głupi wszystkiego w interesie popularności), pomaga przygotować się twój umysł, aby kiedy nadszedł czas, aby nauczyć się być dobrym programistą, podstawowe pojęcia, których potrzebujesz, są już gotowe. (Przynajmniej takie było moje doświadczenie z programowaniem.) :-)
źródło
Wielu dobrych programistów pochodzi z uniwersyteckich stopni informatycznych, głównie tych samych, którzy do nich przystąpili.
W informatyce chodzi o to, że - jak ludzie mówili powyżej - nie jest tym samym, co programowanie. Wiele rzeczy studiowałem na uniwersytecie, na które w zasadzie nie byłem gotowy - było wiele rzeczy, które wydawały się bzdurnym nonsensem akademickim, kiedy słuchałem wykładów na ten temat, ale kilka lat później żałowałem, że nie zwróciłem na to większą uwagę, kiedy znów dowiedziałem się wielu rzeczy, które zapisałem jako bezużyteczne. Właściwie myślę, że można by zrobić kilka lat programowania w środowisku komercyjnym przed rozpoczęciem studiów informatycznych, jeśli to jest to, co chcesz zrobić.
Myślę też, że często na uniwersytecie niekoniecznie wiesz, jak się uczyć. Wiele rzeczy, których nauczyłem się przez pomyłkę lub naukę od innych programistów, to z pewnością rzeczy, które moi wykładowcy i studenci znali na uniwersytecie, ale nie miałem pojęcia, że przydałoby się je zrozumieć. Zapytanie ludzi o problemy, które masz podczas nauki czegoś (a dotyczy to naprawdę wszystkiego), sprawia, że proces uczenia się jest płynniejszy i mniej bolesny. Większość rzeczy, których możesz się nauczyć dla siebie lub od innych ludzi - biorąc pod uwagę, że wiele lekcji, których nauczyłem się dla siebie, zostało wyciągniętych z moich bolesnych błędów, postanowiłbym uczyć się od innych ludzi, kiedy mogę ...
źródło
Cytuję post Briana Hurta
który odnosi się również do programowania licencjackiego Joela Spolsky'ego i genialnego artykułu zatytułowanego Who Killed the Software Engineer
Wszystkie te dyskusje dość dobrze opisują rzeczywistość i, moim zdaniem, odpowiedzcie na swoje pytanie „Nie”, ponieważ uniwersytet nie uczyni was dobrym programistą. Musisz sam stać się dobrym programistą.
Nie mam dyplomu z CS, ale profesjonalnie programuję i rozwijam oprogramowanie od 8 lat. Wszystkie umiejętności programowania mam, sam się nauczyłem.
źródło
Nie, udawałem, że jestem programistą i nauczyłem się tego na własnej skórze. Dostałem pierwszego klienta jako freelancer i bardzo źle walczyłem z C / C ++ i ostatecznie wygrałem. Pamiętam, że zajęło mi to kilka godzin, aby zrozumieć, że wykonanie malloc na strukturze nie wystarczyło, aby przydzielić również pamięć wskaźnikom w strukturze.
źródło
Byłem dość dobrym programistą, kiedy ukończyłem uniwersytet. Miałem też niesamowitą ofertę pracy kilka miesięcy przed ukończeniem studiów (którą mogłem odrzucić, by uzyskać jeszcze bardziej snazzier).
Kluczem było to, że wykonałem dużo pracy jako hobbysta, pracując jako programista w ciągu roku szkolnego i odbywając wysokiej jakości letnie staże z IBM („Zespoły speedBlue ExtremeBlue” i odpowiedni program ExtremeBlue). Dobry preprofessional doświadczenie będzie pozwalają pominąć trochę rzeczy entry-level po przejściu.
(To powiedziawszy, nadal byłem znacznie lepszy w programowaniu przez pierwsze sześć miesięcy w prawdziwej pracy (tm). Nie to, że skończyłem później, ale wtedy naprawdę dużo pokazywałem.)
źródło
Mogę udzielić odpowiedzi odwrotnej, ponieważ przeszedłem prosto ze szkoły średniej do pracy. Zacząłem pracować jako samodzielny programista i niemal natychmiast byłem produktywny przy projekcie, który otrzymali ode mnie pracodawcy. Miałem kilku współpracowników, którzy uzyskali świeży stopień informatyki, i wcale nie byli produktywni.
Z czasem niektórzy dyplomowani współpracownicy znacznie poprawili swoje umiejętności, podczas gdy inni nie, i to nie było związane z ich GPA.
źródło
Uniwersytet nie uczy, jak zostać prawdziwym programistą. Domyślam się, że jest to podobne w przypadku wielu miejsc pracy w porównaniu do ich programów studiów. Nie powiedziałbym, że nie dostałem nic z mojego stopnia, ale było to o wiele mniej przydatne niż spędzanie 4 lat w pracy.
Ale jest dobrze. Do każdej rozpoczętej pracy prawdopodobnie nie miałem wystarczających kwalifikacji. Jeśli jesteś pewny swoich umiejętności i poświęcasz się nauce, możesz przyspieszyć i wykonać zadanie.
źródło
Chyba nie poznałem żadnych faktów na temat programowania w ogóle, na których przynajmniej nie byłem narażony na studiach. Jasne, tu i ówdzie wybrałem nowe języki programowania, nauczyłem się nowych interfejsów API, nowych baz kodu i nowych narzędzi, ale ogólne koncepcje były obecne zaraz po szkole.
To, co robisz z doświadczeniem, jest rodzajem instynktu, który przyspiesza zawężanie zgłaszanego błędu lub prowadzi prosto do najbardziej niezawodnego sposobu pisania nowego kodu. Gdy jesteś nowy, nadal możesz naprawić ten sam błąd lub wdrożyć tę samą funkcję, ale trwa to dłużej i prawdopodobnie będziesz musiał wrócić i naprawić go z powodu nieprzewidzianego problemu.
Dlatego ważne jest, aby bardziej doświadczeni koledzy mogli cię mentorować. Idź do nich i powiedz: „Tak myślę, że należy sobie z tym poradzić. Czy możesz wymyślić lepszy sposób?” Daje to korzyść zarówno z samodzielnego zrozumienia tego, jak i uczenia się z doświadczeń innych.
źródło
Byłem lepszym programistą niż moi nauczyciele na uniwersytecie.
Potem nauczyłem się wspaniałych praktyk programistycznych, kiedy zacząłem pracować.
źródło
Dobry programista zawsze uczy się ... uczy się innego sposobu na zrobienie tego lub lepszego sposobu na zrobienie tego. Cokolwiek wasi programiści muszą was nauczyć, słuchałbym.
źródło
Jedną z rzeczy, o których nikt nie wspominał, jest to, że problemy, które masz rozwiązywać w szkole, zostały celowo stępione, aby ułatwić zrozumienie, w jaki sposób używasz konkretnej techniki, której się uczysz. Zazwyczaj wiesz, jaką technikę zastosować do tego konkretnego problemu, ponieważ jest to ta, którą właśnie omówiłeś na zajęciach. Projekty całego semestru są trochę lepsze, ale nadal mają ograniczony zakres i złożoność w porównaniu do realnego świata.
Rzeczywiste projekty są chaotyczne i ewoluują przez lata (nasze oprogramowanie ma ponad dziesięć lat i ciągle się zmienia od tego czasu) i jest dotykane przez wiele różnych osób o różnych poziomach umiejętności. Być może nadal dotykasz 10-letniej wersji bazy danych i nie możesz w ogóle korzystać z nowszych technik SQL. Być może używasz narzędzia, które było świetne 8 lat temu, ale którego nie nauczyłeś się w szkole, ponieważ zostało ono zastąpione przez coś innego. Ale firma nie chce płacić za wiele miesięcy prac rozwojowych, aby całkowicie go zastąpić.
Utkniesz w świecie, w którym czas na rozwój jest poważnie ograniczony przez to, za co klient zapłaci i jakie są, czasem (OK zwykle) sztuczne terminy.
Możesz być zmuszony do korzystania z narzędzi, o które specjalnie poprosił klient. Możesz mieć niejasne wymagania lub te, które nie mają większego sensu. Być może masz do czynienia z bardzo złożoną domeną biznesową, o której nic nie wiesz, a zatem nie możesz nawet ocenić, czy wymagania mają sens.
Rzeczywiste problemy świata nie są w żaden sposób porównywalne z ładnymi, czystymi problemami, które dają ci w szkole. Jeśli przez większość pierwszego roku nie będziesz zdezorientowany i czujesz się nie na miejscu, martwię się o ciebie.
źródło
Jest jeszcze gorzej ... po kilku latach pracy będziesz dobrze się czuć z tym, czego się nauczyłeś. Ale wtedy zmienisz pracę, a twoja nowa firma (a może nawet nowa grupa w tej samej firmie) zrobi wszystko inaczej i poczujesz się, jakbyś był na pierwszym miejscu. Będzie inny kod, różne standardy kodowania, różne narzędzia i różne procesy, a po dwóch dniach będziesz się zastanawiać, czy naprawdę nauczyłeś się czegoś na ostatniej pracy. Tym razem szybciej poczujesz się jak z rybą, ale nadal potrwa to dłużej, niż chcesz.
Za każdym razem, gdy zmieniasz zadania, obowiązuje okres adaptacji. Skraca się w miarę zdobywania doświadczenia, ale zawsze tam jest.
źródło