Jak odnieść sukces jako programista bez dyplomu CS [zamknięte]

46

Zastrzeżenia (proszę przeczytać przed przejściem do odpowiedzi):

Widziałem wiele pytań podobnych do tego, które chciałbym zadać, więc oto kilka podobnych pytań.

IMHO Nie są ani tym, o co pytam, ani nie są tak dokładne, na jakie mam nadzieję (nie mam zamiaru odpierać odpowiedzi na poniższe pytania, ani nie dyskredytuję pytających, po prostu chcę być trochę dokładniej):

Czy dyplom CS może być korzystny dla starszego programisty?

https://softwareengineering.stackexchange.com/questions/80024/importance-of-certifications-for-java-programmer-without-bs-degree

https://softwareengineering.stackexchange.com/questions/81591/in-the-absense-of-a-cs-degree-how-can-i-fill-in-the-gaps-so-to-speak

Czy stopień CS ma znaczenie przy ubieganiu się o stanowiska programistyczne?

Pozwólcie, że wyrażę się jasno, nie pytam:

  • Jak nauczyć się programowania od zera (bez dyplomu z CS)
  • Jak reklamować się jako dobry programista (bez dyplomu z CS)
  • Jak zdobyć świetnie płatną pracę jako programista (bez dyplomu z CS)

Mały kontekst:

Teraz, gdy nie mam już żadnych zastrzeżeń, pozwólcie, że omówię moje pytanie, zaczynając od krótkiej historii mojego doświadczenia jako programisty.

Po pierwsze, miałem niewiarygodne szczęście. Dano mi kilka możliwości pracy (kilka ciężkich projektów PHP / MySQL z zapleczem i kilka aplikacji WP7 w XAML / C #), dzięki którym naprawdę nauczyłem się wszystkiego, co wiem o tworzeniu oprogramowania. Prawie wszystkie zadania związane z programowaniem, które miałem, były tymi, do których nie miałem odpowiednich kwalifikacji (i wyjaśniłem to moim pracodawcom, zanim mnie zatrudnili). Nie chcę przypisywać sobie uznania, gdy nie jest to należne, ale powiedziałbym, że doskonała pokora obala skromność .

W prawie każdej pracy, jaką wykonałem, przekroczyłem oczekiwania mojego pracodawcy i okazałem się cennym atutem. Istnieją oczywiście wyjątki 1 . Ale chodzi mi o to, że jestem dość inteligentny i mogłem nauczyć się tego, co musiałem wiedzieć, aby odnieść sukces w swojej pracy. Z każdą moją pracą byłem coraz bardziej naciągany.

Uczęszczam do kampusu Uniwersytetu Waszyngtońskiego w Seattle, a obecnie jestem na czwartym roku, kiedy pozostały mi dwa lata, pracując na kierunku matematyka. Podczas różnych prac, które miałem (patrz życiorys, jeśli chcesz tę listę) uczęszczałem również do szkoły jako student na pełen etat.

Jak myślę, że większość programistów zgodzi, studiując typowe ed ogóle licencjackich, w tym wprowadzających programowych kursów absolutnie blednie w porównaniu z pisania prawdziwy kod, budując prawdziwe 2 produkty, współpracując z wspaniałych ludzi i pozytywnie wpływając na życie użytkowników 3 .

Więc ... w miarę upływu czasu ... spędziłem znacznie więcej czasu i energii, pracując zamiast skupiać się na studiach. Czasami występowałem bardzo okropnie , ale w większości byłem w stanie utrzymać się na powierzchni z moimi ocenami.

Jednak program informatyczny na UW jest bardzo , bardzo , bardzo , bardzo konkurencyjny.

Nic więc dziwnego, że zostałem odrzucony przez program. Dwa razy. Jak na ironię, w tym samym półgodzinnym oknie, w którym otrzymałem zawsze uprzejme, choć rozczarowujące powiadomienie o odrzuceniu za pośrednictwem e-maila, dostałem telefon od Amazon oferujący mi letni staż 4 jako SDE.

Kiedy patrzę na innych mężczyzn w moim wieku (21), którzy mają takie same cele jak ja w rozwoju oprogramowania, czuję się całkiem dobrze z tym, gdzie jestem, czego się uczę, kim jestem i co Potrafię. Jest oczywiście o wiele, wiele, znacznie więcej genialnych 21-latków niż ja, nie chcę powiedzieć, że wyróżniam się w tłumie, po prostu czuję, że nie jestem beznadziejnie za postępem mojego przeciętnego rówieśnika .

Jestem przekonany, że mogę odnieść sukces w świecie oprogramowania. Co ważniejsze, czuję się pewny swoich umiejętności i chęci dalszego rozwoju, nauki i krępowania, kiedy naprawdę tego potrzebuję.

Stopień matematyki

Uczę się matematyki wyłącznie w celu uzyskania dyplomu. Są tacy, którzy mówią, że powinienem zrezygnować i zacząć pracę teraz (jak miałem okazję to zrobić), i tacy, którzy mówią, że powinienem naprawdę skończyć studia. Podjąłem decyzję, aby kontynuować studia z zupełnie innych powodów, niż którykolwiek z obozów ma tendencję do poruszania, więc proszę nie zachęcaj mnie w ten czy inny sposób. Rozważ problem „zamknięty” :)

* GŁĘBOKIE ODDECH ​​* ... przepraszam, że jest dłuższy niż się spodziewałem

To w istocie moje pytanie:

  • Jak obiektywnie określić, jakie obszary studiów, wiedzę ogólną i inne umiejętności zdobyłbym dzięki dyplomowi CS, którego teraz mogę nie mieć?
  • Jak posortować te umiejętności w kolejności od najważniejszej?

  • Jaki jest najlepszy sposób (w ciągu najbliższych dwóch lat), aby uzupełnić moją edukację, aby uzyskać te atrybuty w taki sposób, aby dopasować lub nawet przekroczyć poziom licencjata CS z najlepszego uniwersytetu?

Oto kroki, które już podejmuję:

  1. Zapytaj społeczność programistów (ten post)
  2. Kontynuujcie mentoring u doświadczonych programistów, którzy dzielą ze mną podobną ścieżkę kariery
  3. Zdefiniuj krótko- i długoterminowe cele „uczenia się” oraz kolejne sylaby przedstawiające tematy badań
  4. Kontynuuj pisanie kodu i pracuj nad projektami, które mnie pasjonują

Jeśli zaszedłeś tak daleko, zasługujesz na ciasteczko :) Doceniam twoją postawę wobec mnie.

Więc ... społeczność programistów, doświadczeni programiści, koledzy, którzy są na tej samej łodzi co ja, jaką radę byś otrzymał?

Ponadto ... proszę pamiętać o moich zastrzeżeniach na górze tego postu dotyczących tego, o co NIE proszę .

Aktualizacja:

Zdaję sobie sprawę, że nie podałem bardzo konkretnych parametrów dla tego, co uważam za udaną „odpowiedź” na moje pytanie (pytania). Myślę, że pytanie jest bardzo niejasne i może uzasadniać wiele „poprawnych” odpowiedzi.

Po rozsądnym czasie wybiorę odpowiedź, która pasuje do następujących atrybutów:

  • Wyjaśnia, dlaczego stoi za ich odpowiedzią
  • Potrafi mówić z pewnego poziomu doświadczenia (czy to zatrudniania / interakcji lub bycia kimś, kto ma / jest w moich butach)
  • Jest zwięzły, ale dokładny, podaje ogólne zasady, najlepiej w połączeniu z konkretnymi przykładami
  • Na koniec, biorąc pod uwagę długość, jakiej wydaje się wymagać dopasowanie do powyższego, spraw, aby była to dobrze przekazana odpowiedź, którą można przyjemnie przeczytać. Mam nadzieję, że inni, którzy mogą być tym zainteresowani w przyszłości, zapewnią rozrywkę i edukację dzięki tej odpowiedzi.

Są więc parametry „poprawne”. Wydaje mi się, że są bardzo wysokie, ale zaprojektowałem je jako zarys tego, co według mnie byłoby „najlepszą” odpowiedzią. Oczywiście, mając wystarczająco dużo czasu, jako „odpowiedź” wybiorę najbliższą pasującą odpowiedź.


(1) - Pracowałem nad wcześniejszą wersją tej witryny i chociaż nie mieliśmy wyraźnego 
      rozmawiając o tym, czułem, że w ogóle nie byłem w stanie dobrze (to może być 
      o czym świadczy fakt, że od tego czasu całkowicie zmienili swoją stronę internetową)
(2) - Po pierwsze, tak, to prawdziwy produkt (mimo że piszę ten post w Chrome ...) i
      kopie tyłek. Po drugie, byłem programistą stażystów w testach, napisałem dowód
      kod koncepcyjny niektórych nowych funkcji dla IE8 ... tak było dawno temu.
(3) - W chwili pisania tego posta jestem programistą, który napisał tę aplikację, już nie jestem
      odpowiedzialny za jego bazę kodu
(4) - Mój staż rozpocznie się w czerwcu 2012 roku i będę pracował w sklepie internetowym 
      zespół.
Paul Hazen
źródło
17
Świat potrzebuje więcej programistów ze stopniem matematyki. Powiedział Nuff.
Pieter B
1
Rynek psychologów i innych indywidualnych usług doradczych lub doradczych musi być ogromny. Zastanawiam się nad zmianą pracy ...
Ingo
16
Zacznij od edycji tego pytania i podziel je na pół.
JeffO
8
@PaulHazen po usunięciu bardzo szczegółowego tła i zrzeczenia się odpowiedzialności i przejściu do rzeczywistych pytań zadajesz trzy rzeczy: jak ustalić, czego brakuje, nie mając dyplomu CS, jak zdobyć to, czego brakuje i jak ustalić priorytety tego, czego brakuje. Wszystkie trzy pytania są całkowicie objęte duplikatem pytania. Jeśli nie podoba ci się odpowiedź, zaoferuj nagrodę : po to są.
7
@PaulHazen Alternatywnie, jeśli nie interesuje się pytań wymienionych (będących duplikatami wcześniejszym pytaniu), zrewidować swoje pytanie konkretnie zapytać tylko o czymś nowym. Twoje pytanie zawiera zbyt wiele informacji - z których większość jest prawdopodobnie niepotrzebna w stosunku do Twojego problemu - i należy je sparować, aby zapytać o bardzo konkretny problem, który nie jest już objęty innymi pytaniami.

Odpowiedzi:

17

OK, uważam, że zbyt kuszące jest nie odpowiadanie na twoje pytanie, więc oto jestem ...


Najpierw kilka rzeczy o mnie


Mam 26 lat i dzięki mojemu ojcu (btw, matematykowi i obecnie profesorowi) miałem szansę od bardzo wczesnego etapu mojego życia być przy komputerach. (w 1986 roku, kiedy się urodziłem, choć nie jest to najczęstsza rzecz w tamtych czasach, zawsze mieliśmy jeden lub dwa komputery w domu). To powiedziawszy, i - oczywiście z powodu mojej ciekawej i skłonnej do matematyki / rozwiązywania problemów natury - nie trwało długo, zanim zakochałem się w programowaniu. Najpierw u Pascala w wieku 7-8 lat, a potem właściwie wszystko inne.

Po pierwsze, pozwól mi powiedzieć, że będąc w szkole, zawsze przodowałem we wszystkim, co dotyczy matematyki, po prostu dlatego, że mi się podobało, i szczerze mówiąc, mogłem łatwo pójść za przykładem ojca i zostać matematykiem. Ale tak się nie stało.

To, co się stało, było prawdopodobnie największym błędem w moim życiu (jak dotąd): jak byś to nazwał, gdy ktoś zakochany w kodzie , który mówi ponad 15 językami i napisał tysiące wierszy kodu (od kompilatorów po mikro-jądra i sieć) ramy) w wieku 18 lat, nagle (powody są wciąż zbyt niejasne w moim umyśle, ale ogólny, nawet jeśli subtelny wpływ twojego środowiska nigdy nie jest zbyt nieistotny) postanawia kontynuować karierę w medycynie ? Chyba „błąd”.

Wynik? 5 lat później (w wieku 23 lat) i 1 rok przed ukończeniem studiów medycznych (ciągle pracuję nad hobby jako osobiste projekty programistyczne) zdecydowałem, że mam dość i postanowiłem zrezygnować. I nie tylko tak bardzo nienawidziłem tej nowej dziedziny (medycyny), ale także, że było coś niepokojącego w tej całej sytuacji, nienasycony świąd ukryty głęboko w środku ... ( co by to było, gdyby ...? ) Co więcej, właśnie zdałem sobie sprawę, że moje hobby , które uważałem za wspaniałe, ale nawet nie wyobrażałem sobie, że jest prawdziwą pracą, może nie tylko przynieść trochę pieniędzy, ale także przynieść mi dużo + + utrzymać mnie jako indywidualną osobę. Więc zdecydowałem się rzucić. (= najlepszy wybór, nawet jeśli trochę się spóźniłem).

Oto jestem teraz doktorem (a konkretnie psychiatrą z załamaniem nerwowym, a ściślej mnie!) Idącym na stopień CS (właściwie na trzecim roku; i, szczerze mówiąc, dążenie do tego, aby nie skończyć z brakiem tych przerażających typowych kwalifikacji ...) i bardziej niż szczęśliwy zawodowiec pracujący nad czymś, co uwielbiam i zdecydowanie temat, który mam do zaoferowania najbardziej.


Kilka uwag (z własnego doświadczenia)


  • Programowanie jest jedną z niewielu dziedzin, w których naprawdę dobre zawsze znajdą się na górze, bez względu na wszystko. I to zdecydowanie NIE jest kwestia typowych kwalifikacji (szczerze mówiąc, gdybym miał firmę i chciałem zrekrutować programistów, w ciągu kilku minut mogę z łatwością stwierdzić, kto jest dobry - niezależnie od tego, czy w ogóle ma dyplom, czy nie)

  • Aby być dobrym programistą, należy: inteligencja zorientowana na matematykę (ale NIE sama matematyka) i pasja (które sprawią, że niekończące się godziny nauki będą przyjemnością zamiast ciężarem; i nawet jeśli nie zdawałem sobie z tego sprawy, zaufaj ja studiowałem TONY materiału na ten temat w moim życiu, wyłącznie na własną rękę) . Edukacja formalna jest fajna, ale jest nieco przereklamowana. Podstawowymi składnikami sukcesu są pierwsze dwa.

  • Matematyka jest zdecydowanie miejscem narodzin CS. Ale CS to już nie tylko matematyka. Zawsze miałem silny mózg zorientowany na matematykę, ale w żadnym wypadku nie jestem guru matematyki. I szczerze mówiąc, w codziennym programowaniu (chyba że zajmujesz się budowaniem silnika graficznego lub czymś zbyt zlokalizowanym) najprawdopodobniej nigdy nie potrzebujesz niczego innego niż prosta arytmetyka (dodawanie, odejmowanie, mnożenie, dzielenie, modulo) i kilka rzeczy o tablicach. (wielu nie zgodzi się ze mną, prawdopodobnie matematykami lub zbyt zorientowanymi na naukowców programistami, ale zdecydowanie opanowanie rachunku nie jest tym, czego potrzeba, aby być dobrym programistą). Posiadanie dobrego zaplecza matematycznego może ci pomóc, ale NIE z powodu samej matematyki; pomoże ci to wyłącznie w oparciu o jedną wspólną rzecz, którą dzielą te dwa pola: umiejętności rozwiązywania problemów.

  • Matematyka jest nauką (i nauką, którą szanuję).

  • Programowanie to sztuka. (Oraz naukę stosowaną, jeśli nalegasz) Ale pamiętaj o tym: sztuka - i tak zawsze ją traktowałem. I jak w przypadku wszystkich sztuk, nie można się tego nauczyć. Mogę nauczyć cię formalnego rysowania twarzy i uczynić cię lepszym niż przeciętna, ale to nie uczyni cię ani Da Vinci, ani Klimtem. Mona Lisas maluje Da Vincis, a nie starannie wykształceni malarze. Świetny kod jest pisany przez wielkich artystów kodu. A umiejętności i oddanie mogą łatwo zrównoważyć formalną edukację.


Co trzeba zrobić, aby zostać * naprawdę * dobrym programistą?


  • Bycie inteligentnym, świetne umiejętności rozwiązywania problemów i pasja do tematu (jeśli go nie masz, po prostu zostaw to; bycie przeciętnym nie jest usprawiedliwieniem)
  • Dużo czasu na poświęcenie temu tematowi
  • Studiowanie przez cały czas (bo po prostu nigdy tego nie poznasz; i pamiętaj: dlaczego „studiowanie” musi być do pewnego stopnia powiązane? Zawsze czerpałem przyjemność z robienia rzeczy we własnym tempie ... )
  • Ciągłe pisanie kodu (bez względu na to, ile książek przeczytałeś; poziom kodowania odpowiada bezpośrednio ilości napisanego kodu)
  • I znowu, UWIELBIAM ten temat (jeśli nie kochasz go wystarczająco, a mam na myśli to, że naprawdę go kocham, wszystkie powyższe prędzej czy później staną się nie do zniesienia; dla mnie kodowanie jako praca wciąż przypomina zarabianie ... , oglądanie filmów: absolutnie absurdalne, ale po prostu świetne)

Na twoje pytania


  • Jak obiektywnie określić, jakie obszary studiów, wiedzę ogólną i inne umiejętności zdobyłbym dzięki dyplomowi CS, którego teraz mogę nie mieć?

Chociaż musiałbym naprawdę wiedzieć, co obejmuje dyplom z matematyki, pozwól mi podsumować to, czego najprawdopodobniej będziesz brakować na studiach CS (jako kursy / przedmioty / itp. - inspirowane programem studiów mojego uni ) w żadnej kolejności :

  • Projektowanie logiczne systemów cyfrowych (niektóre elementy obwodów niskiego poziomu i / lub / xors / etc - pozornie niezbyt powiązane, ale wciąż naprawdę edukacyjne)
  • Architektura komputerów (wraz z kodowaniem asemblera; najprawdopodobniej nigdy go nie użyjesz, ale nie wiesz, jak bardzo może to kształtować twoje nastawienie jako programisty)
  • Struktury danych (od połączonej listy, po złożone drzewa itp.; Tak proste, jak mogą się wydawać, prędzej czy później będziesz potrzebować dobrego ich tła; stosowanie gotowych rozwiązań, których nie rozumiesz, nie jest dobrym programistą zrobiłaby)
  • Kompilatory (tak, kompilatory! Czy kiedykolwiek napiszesz kompilator? Prawdopodobnie nie; ale jeśli nie możesz go napisać, nigdy tak naprawdę nie wiesz, jak to działa ...)
  • Systemy operacyjne (takie same jak powyżej)
  • Sieć komputerowa
  • Sztuczna inteligencja i systemy eksperckie (najprawdopodobniej też nigdy nie kodujesz w Prologu, ale wciąż jest to jedna z rzeczy, które mogą kształtować twój kodujący mózg i sprawić, że zobaczy rzeczy z radykalnie innej perspektywy)
  • Jak posortować te umiejętności w kolejności od najważniejszej?

Wiedząc, co należy traktować priorytetowo w ciągle zmieniającej się dziedzinie, jako CS, zawsze będzie hazardem - gra polegająca na zgadywaniu .

Dowiedz się, co chcesz zrobić, i zaufaj swojemu instynktowi. Oczywiście posiadanie solidnej podstawowej wiedzy jest koniecznością. Ale w co zagłębisz się, zależy to wyłącznie od Ciebie. Ponadto starannie zaplanuj swoją karierę: jeśli chcesz zostać zatrudnionym, wybierz swój cel i bądź w tym świetny (np. Chęć zatrudnienia przez Google i nieumiejętność czytania prostego skryptu Python jest prawdopodobnie jedną z takich sytuacji ) . Jeśli zaczynasz coś sam (firma), to nie masz „szefa” do zaspokojenia; po prostu wybierz to, co najbardziej Ci odpowiada.

Na przykład, jeśli chcesz zrobić coś związanego z Internetem, zdecydowanie radzę wybrać: PHP / MySQL / HTML / CSS / JavaScript (+ jQuery / AJAX) . Ale to tylko ja. Ktoś może polubić (lub zobaczyć więcej w przyszłości) Ruby / Rails niż w PHP.

Na przykład teraz koduję przede wszystkim w Objective-C / Cocoa . Czy radziłbym ci to kontynuować? Absolutnie nie. To znaczy: chyba że interesujesz się komputerami Mac i nie chcesz kariery zawodowej sprzedającej oprogramowanie związane z komputerami Mac / iPhone. Jeśli jesteś zainteresowany programowaniem w systemie Windows, wybór C # / .NET Framework byłby prawdopodobnie najlepszym wyborem. (jeśli chcesz dowiedzieć się, co mnie interesuje, po prostu spójrz na mój profil StackOverflow )

  • Jaki jest najlepszy sposób (w ciągu najbliższych dwóch lat), aby uzupełnić moją edukację, aby uzyskać te atrybuty w taki sposób, aby dopasować lub nawet przekroczyć poziom licencjata CS z najlepszego uniwersytetu?

Studiuj dużo (książki, internet, kod innych ludzi, cokolwiek) i pisz jak najwięcej kodu.

Ach, i spróbuj znaleźć pracę w dowolnym kodzie związanym z kodem. (Po raz pierwszy zacząłem pracować jako wolny strzelec i było to naprawdę cenne doświadczenie, aby zobaczyć, jak rzeczy naprawdę działają w prawdziwym świecie).


Tylko moje .2 przyjazne centy ... :-)

Sidenote: Wiem, że niektóre z moich kwestii mogą wydawać się kontrowersyjne i jestem pewien, że będzie wielu, którzy się ze mną nie zgodzą. To jest do przyjęcia. Ale to nie zmienia sposobu, w jaki postrzegam rzeczy - a zwłaszcza rzeczy, które kocham.

rev. Dr.Kameleon
źródło
Właśnie tego szukałem. Dzięki! Prawie każda inna odpowiedź była również dobra, bardzo niewiele zawierało wszystko, co było złe lub nieprzydatne. Będę aktualizować pytanie, dodając krótką sekcję o tym, dlaczego to wybrałem, oraz link do postu na blogu, który uszczegóławia go (powód umieszczenia takiego wyjaśnienia na moim blogu zamiast programistów wynika z już OGROMNA długość postu, a także rosnąca liczba zaniepokojonych moderatorów, którzy już uważają, że pytanie jest nieodpowiednie dla tej witryny). Bądź na bieżąco. I jeszcze raz dziękuję.
Paul Hazen
@PaulHazen Nie ma za co! Cieszę się, że pomogłem (JEŚLI zrobiłem) ... (Teraz, jeśli chodzi o OGROMNĄ długość mojej odpowiedzi ... argh ... System automatycznie rozpoznał ją jako post „wiki wiki” i próbuję uzyskać moderatorzy przywracają go do stanu początkowego: prosta - choć nieco przerobiona - odpowiedź)
Dr.Kameleon
Na stronie meta ( meta.programmers.stackexchange.com/questions/3513/... ) Właściwie zachęcam ich do przeniesienia go w bardziej odpowiednie miejsce. Według oficjalnego FAQ pytanie nie jest odpowiednie dla tego forum. Jednak obserwując faktyczne wykorzystanie programistów, uważam, że warto tu być. Moderatorzy mogą zdecydować, gdzie najlepiej to pasuje. Podsumowując moje przemyślenia na temat przenoszenia: Zgodnie z tym, co ma być Programistą, nie należy tutaj, ale zgodnie z tym, co to jest Programowanie , idealnie pasuje.
Paul Hazen,
@PaulHazen Cóż, przynajmniej dla mnie (choć nie jestem ekspertem od SO), wydaje się to absolutnie właściwe.
Dr.Kameleon,
Tak, po prostu podniosę ręce w powietrze. Tak długo, jak ludzie mogą korzystać z google lub wymiany stosów, aby przynajmniej znaleźć odpowiedzi, jestem szczęśliwy. Treść musi być łatwo dostępna w przyszłości dla osób, które mają to samo pytanie.
Paul Hazen,
18

Jak obiektywnie określić, jakie obszary studiów, wiedzę ogólną i inne umiejętności zdobyłbym dzięki dyplomowi CS, którego teraz mogę nie mieć?

Przeglądaj program nauczania działu CS na UW, pożyczaj i przeglądaj wymagane lektury, spójrz na poprzednie egzaminy i ćwiczenia laboratoryjne (zadania domowe). Jeśli nie masz pojęcia, jak podejdziesz do problemu, masz dziurę w swojej wiedzy.

Jak posortować te umiejętności w kolejności od najważniejszej?

Zastanów się, jakiego rodzaju programowanie chciałbyś robić w przyszłości. Jeśli lubisz budować witryny i aplikacje CRUD, wydaje się, że masz już całą potrzebną wiedzę.

Edukacja CS wchodzi w grę, jeśli jesteś zainteresowany zrozumieniem, w jaki sposób [rozproszone] bazy danych, serwery internetowe, kompilatory i interpretatory, systemy operacyjne, protokoły sieciowe itp. Działają pod maską , i jesteś zainteresowany samodzielnym budowaniem takich systemów.

Jaki jest najlepszy sposób (w ciągu najbliższych dwóch lat), aby uzupełnić moją edukację, aby uzyskać te atrybuty w taki sposób, aby dopasować lub nawet przekroczyć poziom licencjata CS z najlepszego uniwersytetu?

Nie wiem. Dla mnie największą korzyścią uniwersytetu było 1) poszerzenie moich horyzontów (zapomniałem 90% szczegółów, których nauczyłem się na uniwersytecie, ale pamiętam koncepcje i pomysły), oraz 2) zachowanie wewnętrznej motywacji do nauki rzeczy z zanikanie: Łatwiej jest utrzymać motywację, gdy dążysz do celu - egzaminu, kolejnego egzaminu itp. aż do ukończenia szkoły. (Także tworzenie samokształcenia nie jest łatwym zadaniem).

[Dodano: wybierz uniwersytet, którego program CS chcesz śledzić, wybierz kursy z interesujących Cię tematów i sam przejrzyj program nauczania: zadania domowe, egzaminy itp. Większość kursów publikuje slajdy z wykładów i zadania / egzaminy z wcześniejszych lat .]

Kilka rad: NIE rezygnuj z dyplomu z matematyki. Każda błyskotliwa osoba może nauczyć się programowania, ale matematyka zapewni ci przewagę konkurencyjną, jeśli kiedykolwiek będziesz chciał pracować nad aplikacjami innymi niż CRUD / frontend, na przykład płynami i symulacjami mechanicznymi, grafiką komputerową, przetwarzaniem obrazu, rozpoznawaniem i uczeniem maszynowym, (nawet finanse!) itp.

AKTUALIZACJA 2 - doświadczenie [długie]: uzyskałem tytuł magistra na wydziale EE: pierwsze dwa lata były wspólnym programem nauczania (fizyka, elektrotechnika, elektronika analogowa i cyfrowa oraz dużo matematyki - algebra liniowa; matematyka dyskretna; rzeczywista, wektorowa i złożona analiza stosowana.) Było to bardzo cenne, zwłaszcza. część EE i elektronika - pozwoliło mi to pracować nad mieszanymi projektami HW-SW, a współpraca z projektantami HW była bardzo ekscytująca. Nie włączyłem niczego w projektowanie HW, ale mogłem śledzić projektanta HW „debugującego” jego schemat i zadawać sensowne pytania [nie byliśmy pewni, czy błąd był w SW czy HW - okazało się, że to w HW: -)].

Następnie linie rozgałęziają się i wybieram linię CS. Niektóre z „szczegółów” przyczyniły się do zakorzenienia pojęć (np. „Ręczne uruchomienie algorytmu Dijkstry”). Dowiedziałem się także szczegółów o tym, jak działają procesory (sygnały magistrali, interpretacja diagramów magistrali, wykonanie itp.) Na przykładzie już wtedy przestarzałej Motoroli 68000, ale koncepcje wyuczone przez szczegóły nie są bardzo różne dla współczesnych procesorów.

Inne szczegóły, zwłaszcza Implementacje SW (np. Implementacja Dijkstry) były dla mnie [odkąd całkiem nieźle kodowałem w liceum] bezcelowe ćwiczenie w debugowaniu i przyczyniło się do ZERO w zrozumieniu pojęć.

A potem zapisałem się na program doktorancki, na którym musiałem wziąć udział w obowiązkowych kursach. Byłem rozczarowany wyborem kursów, ponieważ wiele z nich wydawało się bardziej zorientowanych na wymagania branży (np. Używanie Pythona do analizy danych naukowych - dziękuję, mogę programować i jestem w stanie sam się tego nauczyć - - co znowu wymagało dużo bezsensownego kodowania) niż nauczanie podstawowych pojęć (na szczęście wykopałem kursy dotyczące dyskretnej optymalizacji, analizy statycznej programów i analizy formalnej za pomocą Promela).

Tak więc niektóre szczegóły były przydatne do zakorzenienia pojęć, a niektóre były wręcz niepotrzebnym obciążeniem (inny przykład: programowanie komunikacji portu szeregowego między dwoma komputerami. Byłem już wtedy przyzwyczajony do czytania i interpretowania specyfikacji HW i programowania HW przez rejestry, więc było po prostu. nudne. Może jestem naiwny, zakładając, że przeciętni inżynierowie CS nie muszą być wykształceni na temat czytania dokumentów HW).

Podsumowując: wystaw się na wiele różnych koncepcji (pomysły na wysokim poziomie) i opisz szczegółowo te, w których chcesz nadać priorytet i stać się wyjątkowo dobrym. [NIE MOŻESZ być wyjątkowo dobry we wszystkim!]

zvrba
źródło
+1 na pewno. Pomimo faktu, że zapomniałeś 90% szczegółów, czy powiedziałbyś, że doświadczenie związane z poznaniem tych szczegółów było tym, co zakorzeniło koncepcje i pomysły, czy też bardziej cenne byłoby poświęcenie czasu na naukę mniejszej liczby szczegółów i pomysłów na wyższym poziomie koncepcyjnym / wyższym ?
Paul Hazen
@PaulHazen Zobacz nową edycję (począwszy od UPDATE2 - nie mieściła się w polu komentarza;))
zvrba
Bardzo potwierdzam kroki, które obecnie podejmuję. Dodana sekcja jest nieoceniona. Wydaje mi się, że lista rzeczy, o których chcę dowiedzieć się szczegółów, jest zbyt długa, aby była rozsądna, w przeszłości mam problem z określeniem zakresu w tym zakresie. Czy istnieje dobry sposób, aby spojrzeć na branżę i określić, które tematy w tych, które mnie interesują, byłyby najbardziej przydatne, aby dowiedzieć się szczegółów? A może powiedziałbyś, że tak naprawdę nie ma znaczenia, których się uczę, dopóki nurkuję na mniejszym zestawie? Wydaje się, że branża może być trudna do przewidzenia w tym zakresie.
Paul Hazen,
1
Prognozowanie branży to gra przegrana z góry [np. Nie jestem pewien, czy ktokolwiek mógł zgadnąć, że Twitter - (prawie) klon IRC do Internetu - stałby się taką modą. Nadal jest dla mnie tajemnicą, jak zamierzają zarabiać pieniądze na dłuższą metę.]. Musisz proaktywnie wybrać rodzaj pracy, którą chcesz wykonać, i dowiedzieć się, co trzeba zrobić, aby to zrobić. W jaki sposób? Znajdź kogoś, kto już pracuje w Twojej grupie docelowej (y) i porozmawiaj z nim.
zvrba
1
@Paul Pojęcia są istotne, ale szczegóły (zwykle) nie są. Możesz zajrzeć do szczegółów, kiedy ich potrzebujesz, ale musisz nauczyć się dużego obrazu, aby wiedzieć, że w tej okolicy jest coś wartego obejrzenia.
Donal Fellows,
7

Przeprowadzam wywiad i biorę udział w rekrutacji wielu młodszych osób po studiach. Jeszcze nie zatrudniłem nikogo w oparciu o umiejętności merytoryczne, które wybrali z dowolnego programu, który wybrali. Powód tego jest prosty: żaden program CS (ani żaden inny program), z którym się spotkałem, nie uczy żadnych konkretnych umiejętności związanych z programowaniem lub tworzeniem oprogramowania na profesjonalnym, komercyjnym poziomie. Zdolność do wypracowania modeli i rozwiązań złożonych równań różniczkowych oraz pisania zoptymalizowanych algorytmów sortowania specjalnego przeznaczenia może mieć wartość akademicką i / lub naukową, ale nie ma wpływu na ogólny rozwój oprogramowania.

Czego więc szukam? Cóż, oczekuję, że absolwent uczelni doskonali sztukę uczenia się. W końcu to właśnie dobre uczelnie powinny uczyć swoich studentów. Jak analizować i rozkładać ogólne problemy na logiczne, dyskretne komponenty, które można w przewidywalny sposób rozwiązać. Metodyczne podejście do znajdowania, oceny, organizowania i stosowania wiedzy i informacji w celu znalezienia rozwiązania.

Poszukuję także ludzi, którzy rozumieją, że grupa ludzi pracujących razem i komunikujących się jest warta znacznie więcej niż suma jej jednostek. Wymaga to dojrzałości i pokory oraz umiejętności udzielania i proszenia o pomoc.

Tak więc, aby powrócić do zakresu pytania: chociaż dyplom CS może zwiększyć twoje szanse na uzyskanie pierwszego wywiadu po studiach, uważam, że nie ma to żadnego wpływu na twój sukces lub biegłość programistyczną. Zawsze postępowałem zgodnie z filozofią „zatrudniaj do nastawienia, trenuj umiejętności” i dobrze się to opłaciło.

Moja rada: kontynuuj naukę matematyki, jeśli to Cię interesuje. Każda edukacja naukowa będzie dobrze służyć, więc wybierz ten, który najbardziej ci się podoba, ponieważ najbardziej prawdopodobne jest, że będziesz go wyróżniał. Następnie skup się na nauce ważnych rzeczy: jak się uczyć, jak analizować i podejść do rozwiązania problemu w ustrukturyzowany sposób, jak współdziałać i współpracować z innymi ludźmi, jak przejąć przywództwo i odpowiedzialność za dostarczanie własnych i członków zespołu. Reszta to tylko technologia i kodowanie, narzędzia handlu. Te możesz i nauczysz się samodzielnie. Zdobądź i przestudiuj wiedzę o ogólnym zastosowaniu, taką jak popularne wzorce projektowe i paradygmaty architektoniczne. Zacznij pisać programy do ćwiczeń. Wybierz bazę językową i technologiczną, która jest dość aktualna, ale nie popełnij błędu, myśląc o tym ” ostatni, którego się nauczysz. Narzędzia i języki zmieniają się przez cały czas, więc tworzenie oprogramowania jest ciągłym procesem uczenia się.

papka
źródło
Czy uczciwie byłoby powiedzieć, że z twojego punktu widzenia nie ma nic do zdobycia dyplomu CS, co samo w sobie jest pomocne w osiągnięciu sukcesu programisty? Obecnie najbardziej podoba mi się twoja odpowiedź, na pewno trafiłeś w wiele rzeczy, które staram się zrozumieć i zrozumieć. Czy mógłbyś nadać dodatkowy kontekst jakim obszarom CS, do którego rekrutujesz? Wyobrażam sobie, że rekruterzy zatrudniający nowe stopnie do pracy nad systemami operacyjnymi mogą mieć inne perspektywy niż ty (ale mogę się całkowicie mylić). Doceń czas, który poświęciłeś, jest to bardzo pomocne
Paul Hazen
Pracuję dla firmy konsultingowej IT, która rekrutuje dość mocno w przedziale 0-1 lat doświadczenia. Nie mogę odpowiedzieć z ufnością na temat sklepów programistycznych dla systemu operacyjnego (ile ich jest?), Ale zakładam, że to samo dotyczy tam, jeśli są inteligentne. Bardzo niewielu absolwentów będzie miało wystarczającą umiejętność merytoryczną, aby konkurować na tym samym poziomie, więc zatrudniasz ze względu na postawę, potencjał i zdolność uczenia się.
pap.
Ciekawy. Dał ci „+1” i podoba mi się to, co masz do powiedzenia bardziej niż ktokolwiek inny, jednak dokładniej odpowiadasz na pytanie: „jak skutecznie wejść w dziedzinę rozwoju oprogramowania” Aby mieć pewność, bezcenne informacje , ale moim zainteresowaniem jest zrozumienie atrybutów odnoszącego sukcesy programisty, a nie atrybutów habilistycznego programisty (tak, oczywiście, programiści odnoszący sukcesy są również pożądani, ale nie zawsze jest odwrotnie).
Paul Hazen
Nie zatrudniam ludzi, których nie uważam, albo już odnoszą sukcesy, albo mają potencjał i możliwości, by odnieść sukces. Dla mnie „hiable” i „sukces” to to samo. Jeśli ktoś rekrutuje według innych kryteriów, jest w błędzie lub źle widzi talent. Tak czy inaczej, prawdopodobnie nie jest to dobre miejsce do pracy. Kluczem jednak jako pracodawcy jest umiejętność wykorzystania potencjału swoich pracowników i przekształcenia ich w rzeczywisty sukces. To połączenie treningu, mentoringu i coachingu, a jeśli go nie masz, nie ma znaczenia, jak zatrudnisz utalentowanych ludzi.
pap.
7

To w istocie moje pytanie: w jaki sposób obiektywnie określić, jakie obszary studiów, wiedzę ogólną i inne umiejętności zdobyłbym dzięki dyplomowi z zakresu CS, którego może mi teraz brakować?

odpowiedź 1

Jeśli nauczysz się czegoś nowego ze swojego badania. Następnie możesz obiektywnie powiedzieć, że osiągnąłeś to dzięki dyplomowi CS.

A1. Dlaczego

Stopień CS koncepcyjnie dotyczy nauki. Jeśli ktoś wraca z dyplomu CS bez różnicy netto, wówczas jego główny cel nie jest spełniony. Egzaminy i zajęcia są „oficjalną” miarą tego, czego się nauczyliśmy. Jednak indywidualne rozumienie (czy nauczyłem się czegoś nowego?) Powinno być lepszym obiektywnym miernikiem.

A1. Doświadczenie

Oboje studiowałem w środowisku akademickim, a teraz pracuję zawodowo. Wybrałem tytuł magistra informatyki, ponieważ chciałem poszerzyć swoje zrozumienie i mam pasję do nauki.

Mój świat rozwinął się w wyniku zdobycia tytułu magistra w dziedzinie informatyki. Mój świat rozwinął się także z pracy zawodowej.

Jak posortować te umiejętności w kolejności od najważniejszej?

Odpowiedź 2

Znaczenie jest względne , kto pyta pytanie i na jakiej sytuacji. Jeśli chodzi o rozwój osobisty , to wszystko jest ważne. Jeśli jest to dla przemysłu, ważne są takie rzeczy jak algorytmy i dobre praktyki OOP / standardowe oprogramowanie.

A2 Dlaczego

„Zakres” znaczenia jest wysoce zależny od „kontekstu”. Bez kontekstu zalety umiejętności są trudne do sortowania.

A2 Doświadczenie

Przekonałem się, że umiejętności uzyskane od „uniwersytetu” kontra „w terenie” są różne. „Umiejętności” na uniwersytecie są bardziej „teorią”, od przemysłu bardziej „praktyką”. Z tego powodu ta różnica oznacza, że ​​umiejętności są rzeczywiście różnie uszeregowane pod względem ważności.

Jaki jest najlepszy sposób (w ciągu najbliższych dwóch lat), aby uzupełnić moją edukację, aby uzyskać te atrybuty w taki sposób, aby dopasować lub nawet przekroczyć poziom licencjata CS z najlepszego uniwersytetu?

Odpowiedź 3

Popchnij siebie ponad punkt krytyczny, a kiedy się zepsujesz, nie poddawaj się.

Co mam na myśli?

Jeśli dojdziesz do punktu, w którym nie rozumiesz, to się złamałeś. Ucz się dalej, zrozumiesz. Następnie posuwaj się dalej, aż znajdziesz coś, czego nie rozumiesz (ad infinitum) .

A3 Dlaczego

Jeśli tylko uczysz się i pozostajesz w obrębie swoich granic, będziesz tylko „ok”. Nie chcesz być po prostu „ok”. Chcesz być „najlepszym”, jakim możesz być. Nie możesz osiągnąć swojego prawdziwego potencjału, jeśli NIE WYMUSZASZ STAŁO przekraczania swoich granic.

A3 Doświadczenie

Zawsze będę studentem przez całe życie, nie będę wyliczał mojego obecnego zestawu umiejętności, jeśli jesteś ciekawy, możesz po prostu zobaczyć mój profil.

Powiem tylko, że to jedno. Nigdy nie jestem zadowolony z mojej obecnej wiedzy. Chcę latać wyżej, widzieć dalej i schodzić głębiej.

Ciemna noc
źródło
Dobre uwagi na pewno, to rezonuje ze mną. Zobacz aktualizację, jeśli zastanawiasz się, dlaczego powstrzymuję się od oznaczania odpowiedzi jako „poprawnej”.
Paul Hazen
I ładne aktualizacje. Zachowaj wiarę, nie zapomnę zaznaczyć odpowiedzi jako takiej, kiedy nadejdzie czas.
Paul Hazen
1
Czy możesz wyczyścić swoją odpowiedź? Masz dwa powtarzające się nagłówki sekcji, z których każda zawiera inną, ale podobną treść.
Paul Hazen
Witaj Paul, nie jestem pewien, jak chciałbyś, abym to posprzątał. Wydaje mi się, że to trochę zagmatwane. Każdy nagłówek podrzędny odnosi się do każdego pytania, tzn. Każde „pytanie” ma „Dlaczego” i „Doświadczenie”, aby poprzeć odpowiedź zgodnie z żądaniem w aktualizacji. Z przyjemnością wprowadzam wszelkie zmiany w zakresie przejrzystości.
Darknight
Ohhh ... to było dla mnie tak mylące, czy możesz zwiększyć nagłówki lub użyć ** pogrubionego ** tekstu, aby zaznaczyć podtytuły? Myślę, że poprawiłoby to przejrzystość.
Paul Hazen
4

Jak obiektywnie określić, jakie obszary studiów, wiedzę ogólną i inne umiejętności zdobyłbym dzięki dyplomowi CS, którego teraz mogę nie mieć?

Wystarczy spojrzeć na wymagania dotyczące stopnia, a następnie przejrzeć sylabus dla każdej klasy.

Jak posortować te umiejętności w kolejności od najważniejszej?

Naprawdę nie możesz tego zrobić samemu bez perspektywy czasu. Powiedziałbym, że najważniejszą rzeczą, której brakuje większości samouków, jest analiza i projektowanie algorytmów. Resztę można odebrać z kawałka.

Jaki jest najlepszy sposób (w ciągu najbliższych dwóch lat), aby uzupełnić moją edukację, aby uzyskać te atrybuty w taki sposób, aby dopasować lub nawet przekroczyć poziom licencjata CS z najlepszego uniwersytetu?

Nawet jeśli nie jesteś dopuszczony do programu, często możesz wziąć zajęcia z innych wydziałów jako przedmioty do wyboru. Jedną z moich ulubionych klas była klasa projektowa z inżynierii lotniczej, w której pracowałem nad elektroniką i oprogramowaniem dla małego satelity.

Możesz także kupić podręcznik, z którego korzysta wybrana klasa. Zrobiłem to przez kilka zajęć, których nie mogłem dopasować do mojego harmonogramu. Inną opcją jest otwarte oprogramowanie szkoleniowe MIT .

Karl Bielefeldt
źródło
Taki doświadczony użytkownik, zaskoczony, że nie poświęciłeś czasu na przeczytanie odpowiedzi opublikowanych przez innego użytkownika, twoja odpowiedź jest prawie identyczna z niektórymi, które już tu są. Proszę uważnie przejrzeć wcześniej istniejące odpowiedzi, a jeśli uważasz, że Twoja odpowiedź jest inna, pomóż mi to wyjaśnić.
Paul Hazen
Nie widziałem, żeby ktokolwiek inny zalecał uczęszczanie na lekcje CS na zajęcia do wyboru, o których wiele osób nie wie, że jest dozwolone. Niemal duplikacja reszty jest wynikiem zadania wieloczęściowego pytania :-)
Karl Bielefeldt
Przepraszam, masz rację. Nikt inny nie sugerował zajęć z CS jako przedmiotów do wyboru. Chociaż jest to dobra rada, a na pewno nie jest zła , niektóre inne odpowiedzi były dokładniejsze i dotyczyły trzech pytań w lepszym kontekście z resztą mojego pytania. Nie negując żadnej porady, którą dajesz (daję +1), na pewno zostanie ona wzięta do serca, szczerze dziękuję bardzo i jeszcze raz przepraszam za mój błąd.
Paul Hazen,
3

Dlaczego uważasz, że dyplom CS jest tak ważny, aby odnieść sukces jako programista ?

Aby odnieść sukces jako programista, potrzebujesz:

  • Pasja do programowania
  • Niekończące się pragnienie wiedzy o nowych technologiach
  • Jakoś wejdź do branży

Zazwyczaj dyplom CS wprowadzi cię do branży, ale jeśli nie masz pasji i pragnienia wiedzy, cierpisz i nigdy nie będziesz dobrym programistą.

Wygląda na to, że już wkroczyłeś do branży i na pewno czujesz, że masz zarówno pasję, jak i pragnienie wiedzy.

Musisz dalej badać, uczyć się i zdobywać doświadczenie, a przemysł będzie wiedział, jak docenić cię bez dyplomu.

Przykład od kogoś, z kim pracuję

jeden z programistów pracujących w moim zespole ma wykształcenie prawnicze ... po kilku latach zrozumiała, że ​​w ogóle nie lubi prawa i chce zostać programistą. nie mogła dostać pracy jako programista (bez doświadczenia, bez dyplomu), więc zrobiła 6-miesięczny kurs komputerowy, potem dostała pracę i od tego czasu jest świetnym programistą.

Mithir
źródło
Chociaż jest to świetna treść, wydaje mi się, że nie trafiła w sedno odpowiedzi na moje pytanie (coś, co równie dobrze może być moją winą za złe sformułowanie). Nie jestem przekonany, że posiadanie dyplomu CS czyni programistę odnoszącym sukcesy. Moje pytanie brzmi bardziej: „Które z tematów nauczanych w ramach dyplomu CS mają tendencję do przyczyniania się do sukcesu programisty i jak obiektywnie określam, jak oceniam te tematy i jak uzupełnić / wzbogacić moją istniejącą pasję, głód wiedzy i doświadczenia branżowego w takich tematach? ” Twoja odpowiedź z pewnością nie jest zła.
Paul Hazen
2

IMHO nie ma zadań programistycznych (ani zadań sprzedażowych, sysadminowych itp.), Są tylko zadania rozwiązywania problemów. Zatrudniamy i płacimy ludziom za rozwiązywanie problemów, pisanie kodu to tylko część rozwiązania problemu. Tak, nawet sprzedaż jest formą rozwiązywania problemów. Więc stopień matematyki dowodzi, że możesz rozwiązać problem, a także stopień CS.

Z twojego postu wynika, że ​​masz duże doświadczenie / staże. Wspaniały! nie martw się o znalezienie pracy po ukończeniu studiów.

Aby spróbować odpowiedzieć na twoje pytania:

zajęcia? wybierz teoretyczne klasy CS zamiast klas pisania kodu. Znajdź niektóre klasy inne niż CS / matematyczne, np. filozofia pomoże ci wyróżnić się z tłumu

priorytety? ucz się nowych rzeczy (nie tylko łatwych zajęć, które już znasz)

następne dwa lata? rozmawiać z ludźmi, uczyć się, budować relacje, szukać działań na zewnątrz. (Hobby / sport / rozrywki poza pracą / nauką to jedna z wskazówek, jak przekonać się o motywacji kandydata).

Końcowe wskazówki: ukończ jak najszybciej. Zbuduj sieć kontaktów. A jedyną bezpieczną pracą jest tworzenie własnej pracy. Poszukaj pomysłów / możliwości, w których możesz założyć własny biznes. Powodzenia.

jqa
źródło
To wspaniale, dziękuję za odpowiedź. Daję „+1”, jednak nie mogę zaznaczyć tego jako odpowiedzi, inne odpowiedzi dokładnie opisały powód , a także zidentyfikowały sposoby obiektywnego określenia celów uczenia się. Nic z tego nie neguje twojej odpowiedzi, biorę sobie do serca to, co mówisz i jest to naprawdę pomocne, więc jeszcze raz dziękuję.
Paul Hazen,
@PaulHazen - jeśli chcesz wiedzieć „dlaczego?” potem wybierz klasę filozofii :-) Ale poważnie, zrobiłem 4-letni teoretyczny dyplom CS, w którym nie było kursu C, ponieważ „tego można się nauczyć” Aby rozjaśnić, wybrałem małą klasę filozofii w jednym semestrze, a potem zrobiłem inną. Oprócz wyzwania była to świetna grupa ludzi i odświeżające pomysły. A twoje pytanie wyraźnie pokazuje, że masz umiejętności pisania wymagane na każdej lekcji innej niż matematyka / CS.
jqa
1

Po pierwsze, pozwól mi powiedzieć, że bardzo się cieszę, że zadałeś to pytanie, ponieważ zadawałem sobie to pytanie przez lata.

Wydaje mi się, że do tej pory mogłem uznać się za sukces w tej dziedzinie. Mam trochę doświadczenia na studiach i chciałbym w końcu ukończyć studia na kierunku informatyka, ale nie zasłużyłem na dyplom w tym momencie w moim życiu. Miałem jednak spory sukces w inżynierii oprogramowania pomimo tej wady (trwającej 10 lat). Muszę jednak być z tobą szczery, niekoniecznie była to łatwa rzecz (oczywiście postawiłbym na to, że cokolwiek warte jest najczęściej NIE jest najłatwiejsze). Powiem też, że wciąż nie jest to najłatwiejsza rzecz. Istnieje wiele firm, które chcą dać szansę odpowiedniemu kandydatowi, ale nawiązałem kontakt z innymi, które będą przeszkadzać z powodu braku tej „pieczęci aprobaty” uczelni. Jednak,

Zaczęło się w .net w bardzo dużej firmie. Jako mały programista (w tym czasie pracował jako przedstawiciel wsparcia technicznego) nauczyłem się wszystkiego, co mogłem, o językach i technologiach stosowanych w firmie, w której pracowałem. Co więcej, i to jest chyba najważniejsza rzecz, którą połączyłem w sieć. Wystrzeliłem wiadomość e-mail do każdej osoby, którą mogłem znaleźć w katalogu, w którym był Inżynier Oprogramowania. Czy byłem denerwujący? Prawdopodobnie. Byłem zawsze uprzejmy i pełen szacunku, chętny do nauki. Zaplanowałem lunch lub po prostu znajdę je w stołówce i usiądę, żeby spróbować porozmawiać. Czasami było to zawstydzające lub mnie lekceważyło, ale ostatecznie przyniosło oczekiwane rezultaty. Udało mi się uzyskać tymczasowe dane uwierzytelniające do niektórych wewnętrznych baz danych, a po pewnym czasie uzyskałem wymagane dane do opracowania oprogramowania na ich zastrzeżonej platformie. Niedługo potem znalazłem się w firmie, mogąc pożyczyć pewne umiejętności w zakresie tworzenia wewnętrznych narzędzi dla zespołu analitycznego, nad którym wtedy pracowałem. Odtąd zawsze starałem się być najmądrzejszym facetem w pokoju w możliwie najbardziej bezpretensjonalny sposób. Byłem chętny i upewniłem się, że wszyscy to wiedzą. Zawsze starałem się znaleźć rozwiązanie tam, gdzie było to możliwe, i stwierdziłem, że jeśli spróbujesz wystarczająco mocno, jest bardzo mało domen problemowych, których nie da się rozwiązać (być może poza teorią kwantową). Znalazłem się w pozycji wewnątrz firmy, która mogłaby pożyczyć pewne umiejętności w zakresie wewnętrznego opracowywania narzędzi dla zespołu analitycznego, nad którym wtedy pracowałem. Odtąd zawsze starałem się być najmądrzejszym facetem w pokoju w możliwie najbardziej bezpretensjonalny sposób. Byłem chętny i upewniłem się, że wszyscy to wiedzą. Zawsze starałem się znaleźć rozwiązanie tam, gdzie było to możliwe, i stwierdziłem, że jeśli spróbujesz wystarczająco mocno, jest bardzo mało domen problemowych, których nie da się rozwiązać (być może poza teorią kwantową). Znalazłem się w pozycji wewnątrz firmy, która mogłaby pożyczyć pewne umiejętności w zakresie wewnętrznego opracowywania narzędzi dla zespołu analitycznego, nad którym wtedy pracowałem. Odtąd zawsze starałem się być najmądrzejszym facetem w pokoju w możliwie najbardziej bezpretensjonalny sposób. Byłem chętny i upewniłem się, że wszyscy to wiedzą. Zawsze starałem się znaleźć rozwiązanie tam, gdzie było to możliwe, i stwierdziłem, że jeśli spróbujesz wystarczająco mocno, jest bardzo mało domen problemowych, których nie da się rozwiązać (być może poza teorią kwantową).

Podsumowując, co może być długą historią (a jeśli jesteś na północno-zachodnim wybrzeżu Pacyfiku, chciałbym porozmawiać przy piwie), dostałem swoją „wielką przerwę” przy małym małym startupie, który był gotów dać mi szansę . Wymieniłem mój brak doświadczenia na nieco mniejszą pensję, a ja uderzyłem o ziemię. Następnie w ciągu następnych kilku lat przeszedłem z jednego małego sklepu deweloperskiego do następnego, zdobywając przyjaźnie i umiejętności po drodze, do miejsca, w którym w końcu jestem głównym programistą i dyrektorem małej firmy inżynierskiej.

Kluczową kwestią tutaj, jeśli nie komunikowałem się wystarczająco skutecznie, jest to, że musisz się połączyć. Poznawaj przyjaciół, pij piwo i śmiej się, a także znajdź ludzi w dziedzinie, w której chcesz pracować (najlepiej w ramach stosu technologii do wyboru). Upewnij się, że ludzie znają Twoją gotowość do zrobienia czegokolwiek i chęć wykonania pracy, bez względu na to, jak monumentalna może być. Zasadniczo musisz „przezwyciężyć” brak formalnego wykształcenia. Wskocz i baw się dobrze. Ta branża jest najlepsza na świecie, IMHO. Nawiązałem trwałe przyjaźnie i kontakty, które pomogły mi z jednego miejsca do drugiego i będę nadal robił to samo dla nich, ilekroć nadarzy się okazja.

Paul Shoemaker
źródło
1
Czuję się naprawdę źle, że nie mogę zaznaczyć tego jako odpowiedzi. Podobnie jak w przypadku wielu innych odpowiedzi, które według ciebie uważam za błędne , skupiasz się całkowicie na tym, jak rozwinąć moją karierę, kiedy sednem mojego pytania jest sukces programisty. Podczas gdy sukces programisty oznacza dobrą karierę, wolę skupić się na aspekcie „sukcesu programisty” i pozwolić, aby część kariery była (ważna i bardzo celowa) po przemyśleniu. Daję ci jednak „+1” za cenne informacje, które częściowo odpowiadają na moje pytanie.
Paul Hazen,
Aha, a mówiąc o sieci, chciałbym usłyszeć więcej o twojej historii! Wygląda na to, że dzielimy wiele takich samych ścieżek / celów. Wybierz dowolną metodę kontaktu, która najlepiej Ci odpowiada na paulhazen.net/about , a my złapiemy to piwo.
Paul Hazen,
1

Po pierwsze, pozwólcie mi LOL na „zwięzłe, ale dokładne” postanowienie pod koniec waszego wielkiego dzieła. W dół do biznesu:

Jak obiektywnie określić, jakie obszary studiów, wiedzę ogólną i inne umiejętności zdobyłbym dzięki dyplomowi CS, którego teraz mogę nie mieć?

Jak wspomniano inni, możesz zacząć od katalogu kursów . Ale zachęcam cię do wyjścia poza granice tej listy. To naprawdę dobrze , że studiujesz matematykę. Wielu inżynierów, z którymi pracowałem, nie pamięta, jak przeprowadzić prostą integrację i nigdy nie badałem poza murami tradycyjnego kursu matematyki CS.

Ta odpowiedź wydaje się dość rzadka pod względem szczegółowym. Nie mam dyplomu CS i nie stwierdziłem, że brakuje mi niezbędnych obszarów. Żałuję jednak, że nie poświęciłem więcej czasu na inne rzeczy, które mnie zainteresowały. Na przykład historia, językoznawstwo i angielski.

Jak posortować te umiejętności w kolejności od najważniejszej?

Dowiedz się, co kochasz

Co jest dla ciebie ważne Co jest ważne dla pracodawców? Moją osobistą heurystką zawsze było uczyć się tego, co wydaje mi się najbardziej interesujące - musisz kochać to, co robisz; w przeciwnym razie wypalisz się. Oprogramowanie jest tak rozległym obszarem działań, że wydaje się, że zawsze jest dostępna praca dla kompetentnego programisty, który pasjonuje się którąkolwiek z tych umiejętności.

Naucz się uczyć i pchaj się

Wydaje mi się, że prowadzi mnie to do dwóch meta-umiejętności, które chciałbym postawić ponad resztę: uczyć się żarłocznie i ciężko pracować. Mogą to brzmieć banalnie i boleśnie oczywiste, ale połączenie jest rzadkie. Byłem na całej mapie pod względem umiejętności „potrzebnych” - frontonu HTML / javascript do rozszerzeń językowych do rozwoju mobilnego do wizji komputerowej do administrowania systemami iz powrotem, ponad 7+ języków. Jedyną prawdziwą umiejętnością podstawową, która sprawiła, że ​​zwyciestwo mojej własnej ignorancji stało się nawykiem.

Naprawdę uwielbiam filozofię Jacka White'a dotyczącą gitar i muzyki (poważnie, obejrzyj to) i myślę, że ma ona największe zastosowanie w świecie programowania. Postaw rzeczy nieco poza zasięgiem. Wcisnąć się. Wtedy będzie to wydawać się łatwe, gdy wszystko, co ktoś chce dla ciebie, to twoja praca.

Jaki jest najlepszy sposób (w ciągu najbliższych dwóch lat), aby uzupełnić moją edukację, aby uzyskać te atrybuty w taki sposób, aby dopasować lub nawet przekroczyć poziom licencjata CS z najlepszego uniwersytetu?

  1. Nieszlachetne klasy CS

    Podobnie jak ty, dział CS w UW odrzucił mnie ... chociaż myślę, że pozwoliłem im to zrobić po raz trzeci, zanim przejdę do zmysłów. Skończyłem specjalizację z informatyki i pracę w matematyce stosowanej. Ale nadal wybrałem cały nieszytki kawałek CS. To CSE 373, 410, 413, 415 i 417. Tak więc, na pewno wierzę, że powinieneś najpierw podążać za swoją pasją. Moje prowadzą mnie na te zajęcia. I myślę, że masz z nimi dość kompleksową edukację podstawową, chociaż może to być trochę światła z teoretycznej strony rzeczy.

    A teraz fajna rzecz: w informatyce większość z nich wliczała się do moich wymaganych przedmiotów do wyboru. W dziale matematycznym może być konieczne uzyskanie wyraźnej zgody, a może to być rozciągnięcie na każdy z wyjątkiem CSE 417.

    Przywołaj zapytanie DARS (prawdopodobnie link tylko do UWNetID) i sprawdź, co się dzieje. Robiłem to dla różnych kierunków reklamowych na muzeum .

  2. Klasy AMATH

    Zgodnie z tymi samymi zasadami, dział matematyki stosowanej ma pewne klasy, które można wykorzystać jako wymagania do wyboru. Możecie nawet nieletni w AMATH tak jak naprawdę.

    Dlaczego o tym wspominam? Obliczenia numeryczne - np. AMATH 301/352 - to ogromna tajemnica dla większości programistów. Jeśli nic więcej z tego nie otrzymasz, będziesz mógł pisać ciekawe posty na blogu . Twierdzę jednak, że znajomość problemów związanych z typami liczbowymi języka oraz wiedza na temat ich pomiaru i poprawy jest bardzo ważna.

  3. Zbuduj coś!

    Najważniejsze, co możesz zrobić, to zbudować coś nowego. Pomyśl od początku do końca. Nie pozwól, aby było to coś łatwego w twojej strefie komfortu.

    Najbardziej owocne zajęcia z programowania, które brałem, zawsze miały duży praktyczny komponent programowania. Dla inżyniera teoria jest niezwykle ważna - o ile można ją przekształcić w coś prawdziwego. Więc znajdź fajnie brzmiący papier CS i spróbuj go wdrożyć. Poważnie.

  4. Dostać pracę

    Wspomniałeś już, że masz staż w Amazon. To wspaniale. Rzeczywiste doświadczenie zawodowe jest naprawdę kluczowe! Istnieje wiele osób z dyplomem CS, które nie mogą zaprogramować wyjścia z mokrej papierowej torby. Mając dobre doświadczenia w pracy jest warta sposób ponad stopnia.

abscondment
źródło
TO. To jest bardzo dobre. W rzeczywistości uważam to za bardziej niż prawidłową odpowiedź. Oznaczona odpowiedź była tylko trochę bardziej wiarygodna ... * westchnienie * tak trudne do oceny z tyloma świetnymi odpowiedziami :( Chciałbym pomóc twojemu przedstawicielowi bardziej. Ale ponieważ znam cię w prawdziwym życiu (ale głównie przez Twittera, kiedy my wcześniej omawiałem haha), będę musiał kupić ci piwo lub whisky jako nagrodę pocieszenia.
Paul Hazen
-2

Jest więcej niż kilka historii o milionerach, którzy ukończyli studia, być może najbardziej słyszałem o Billu Gatesie. Ludzie z umiejętnościami niszowymi radzą sobie lepiej bez dyplomu niż absolwent CS z pieczęcią cookie.

Znajdź coś, w co niewielu ludzi jest zaangażowanych, zwykle coś nudnego, nudnego lub trudnego do nauczenia się, i naucz się dobrze, popadaj w obsesję. Niektóre obszary, o których słyszałem, to zaplecze uniksowe (nie Linux, chociaż Linux nie jest daleko w tyle), Flash (nie wiem wystarczająco dużo o Flashu, aby zapamiętać dokładnie, co to było, ale znam faceta, który się przeprowadził szybko wiedząc o tym i powiedział, że wciąż jest na to rynek, głównie dlatego, że ludzie mówią, że umiera i nie będzie się tego uczył). Być może będziesz musiał wziąć udział w kilku zajęciach, ale jeśli znasz swoje rzeczy i masz imponujące portfolio, są firmy, które będą cię potrzebować!

BillyNair
źródło
1
-1 za brak odpowiedzi na moje pytanie. Nie mylisz się, ale chyba ominąłeś moją sekcję „czego nie szukam” i nie trafiłeś na żadną z rzeczy, których szukałem.
Paul Hazen