Ukończyłem studia informatyczne, ale nie mam ochoty programować


1050

Ukończyłem studia informatyczne, ale widzę witryny takie jak Stack Overflow i wyszukiwarki takie jak Google i nie wiem, gdzie bym coś takiego napisał. Podczas jednego lata miałem okazję pracować jako programista iPhone'ów, ale czułem, że głównie skleiłem ze sobą biblioteki, które inni pisali, nie rozumiejąc mechaniki, która dzieje się pod maską.

Próbuję poprawić swoją wiedzę, studiując algorytmy, ale jest to długi i bolesny proces. Algorytmy uważam za trudne i w tempie, którego się uczę, minęła dekada, zanim opanuję materiał z książki. Biorąc pod uwagę moją obecną sytuację, spędziłem miesiąc na poszukiwaniu pracy, ale moje umiejętności (C, Python, Objective-C) są stosunkowo płytkie i nie są tak pożądane na rynku lokalnym, gdzie C #, Java i tworzenie stron internetowych są znacznie wyższe cieszący się popytem. Nie oznacza to, że możliwości C i Python nie istnieją, ale wymagają one ponad 3 lat doświadczenia, którego nie mam. Mój GPA jest w porządku (3.0), ale nie jest wystarczająco wysoki, aby aplikować do dużych firm, takich jak IBM lub wracać na studia podyplomowe.

Zasadniczo kończę studia informatyczne, ale nie wydaje mi się, żebym nauczył się programować. Myślałem, że dołączenie do firmy i programowanie w pełnym wymiarze godzin dałoby mi szansę rozwinięcia umiejętności i uczenia się od osób bardziej doświadczonych niż ja, ale staram się znaleźć pracę i zaczynam się naprawdę denerwować.

Mam zamiar zarzucić swoją sieć i spojrzeć poza miasto, w którym dorastałem, ale co próbowali zrobić inni ludzie w podobnej sytuacji? Ciężko pracowałem, ale nie mam pewności, aby wyjść na własną rękę i napisać własną aplikację. (To znaczy, zostań niezależnym programistą na rynku aplikacji na iPhone'a). Jeśli nic się nie pojawi, będę musiał rozważyć uaktualnienie i nauczenie się bardziej popularnych umiejętności lub wypróbować coś marginalnie związanego z IT, ale biorąc pod uwagę cały wysiłek, jaki włożyłem, czuję jak wyrzucanie.

Odpowiedzi:


533

Najlepszym sposobem na naukę programowania jest pisanie programów.

Dwie sugestie:

  • opracować grę
  • stworzyć stronę internetową

Algorytmy, chociaż użyteczne i powinny być zrozumiane, w rzeczywistości odgrywają drugą rolę w projektowaniu oprogramowania. TDD / Wzory projektowe / Architektura / Refaktoryzacja / Testowanie jednostkowe / Proces łączenia kodu / etc jest zwykle znacznie ważniejszą umiejętnością.

O wiele lepiej zrobić to w swoim czasie. Nie czekaj, aby opracować te rzeczy w pracy. Uważam, że ludzie, którzy zwykle radzą sobie lepiej, to ci, którzy na początku kariery starali się rozwijać swoje umiejętności w swoim własnym czasie. Zwykle dlatego, że naprawdę pasjonują się tworzeniem oprogramowania

  • Jeszcze jedna rzecz to „ Czytaj książki i próbki ” i nie wstydź się pytać. Jeśli chcesz się uczyć, powinieneś zapytać :)

70
+1 uzgodnione. A jeśli nie chcesz robić tego w swoim własnym czasie, może to nie być najlepsza ścieżka kariery dla Ciebie. Jeśli teraz poskładasz wszystko, możesz zbudować portfolio, które może uzupełnić Twój GPA.
Chris

68
@Chris, -1. To tak, jakby powiedzieć, że prawnik, który nie wykonuje prac pro bono dla ubogich we własnym czasie, ma niewłaściwą karierę. Wielu programistów, których znam, lepiej byłoby poświęcić mniej czasu na programowanie i więcej czasu na robienie niemal wszystkiego innego.

21
w rzeczywistości wielu prawników, którzy obcinają zęby, zarabiają źle i poświęcają wiele dodatkowych godzin, aby awansować.

22
Naprawdę nie można porównać pracy prawnika z pracą programisty. Dzięki programowaniu możesz samodzielnie zdobywać umiejętności; nie potrzebujesz żadnego pracodawcy ani klientów, aby poprawić tę część.

31
Naprawdę musisz przestać myśleć, że programowanie jest wyjątkowe. Prawnicy mogą pracować / uczyć się samodzielnie, tak jak my. Mogą zacząć od słabo płatnych prac i długich godzin pracy, ale podobnie jak wielu programistów ... wiersz „jeśli nie programujesz jako hobby, nie powinieneś być programistą” jest naprawdę bardzo subiektywny.

388

Czułem się, jakbym sklejał biblioteki, które napisali inni ludzie

Rozumiem, dlaczego uważasz, że to nie było „prawdziwe programowanie”, prawda jest taka, że ​​praca integracyjna stanowi znaczny procent typowego obciążenia dla programisty korporacyjnego. Twoje doświadczenie może być trochę bardziej cenne niż myślisz :)


126
+1 za klej. Nikt nie zatrudni grupy profesjonalistów do budowy nowego domu i nie spodziewa się, że wymyślą w tym procesie zupełnie nowe techniki budowania domów. W rzeczywistości każdy zainteresowany zarządzaniem ryzykiem i budżetem prawdopodobnie wolałby tego nie robić.
Dan Bryant

14
Zgadzam się, że istnieją pewne wyjątkowe przypadki, ale powiedziałbym, że 75-80% zadań programistycznych tam jest takich, w których po prostu sklejasz biblioteki razem.

15
I nie ma nic złego w samym sklejaniu bibliotek. To sprawia, że ​​jesteś produktywny!

10
Zdecydowanie 90% mojej pracy polega na podłączaniu kodu innej osoby (bibliotek lub starszego kodu) lub utrzymywaniu starszego kodu. Ale spędzam swój dodatkowy czas, ucząc się drobiazgów, gdy idę, więc teraz wiem, jak działa wiele z tych bibliotek i mam o wiele głębsze zrozumienie tego, co dzieje się pod maską. Bądź uczniem na całe życie, a ostatecznie to wszystko odbierzesz.
CodexArcanum

53
Kiedy nie sklejam bibliotek, zwykle tworzę biblioteki, które później skleję.

238

Po pierwsze, dziękuję za niezwykle uczciwe pytanie. Istnieje wiele sposobów rozwiązania bieżących problemów. Oto kilka wskazówek, które uważałem za bardzo pomocne w przeszłości i nadal wykorzystuję je do poszerzania mojej wiedzy.

  1. Ucz się, ucz się i ucz się więcej. To prawdopodobnie najważniejsza wskazówka, jaką mogę ci dać. Nigdy nie przestawaj się uczyć . Znajomość jednego języka jest dobra, znajomość wielu jest jeszcze lepsza. Posiadanie znajomości innych języków sprawi, że będziesz lepszym programistą i ułatwisz sobie wykonanie niektórych zadań i pomoże ci lepiej poznać wspólne struktury danych.

  2. Zacznij od małego .

  3. Rozpocznij projekt hobby w wolnym czasie. Nie rób czegoś, co możesz dość łatwo osiągnąć. Podejmij projekt, w którym nie masz pojęcia, od czego zacząć. Rzuć się w głęboki koniec. Zaletą tego jest to, że nauczysz się rzeczy, o których istnieniu nigdy nie wiedziałeś, a kiedy to zrobisz, poczujesz ogromną dumę i satysfakcję. To mnie podtrzymuje.

  4. Miej prawdziwą pasję do tego, co robisz. Chociaż ludzie nie zgodzą się ze mną w tej sprawie. Nie wierzę, że możesz wyróżniać się w tej dziedzinie, jeśli po prostu uważasz, że jest to praca 9-5. Musi to być pasja.

  5. Pomóż innym osobom na SO! Najlepszym sposobem na zrozumienie jest nauczenie go innych ludzi.

  6. Studiuj programy innych ludzi i spróbuj dowiedzieć się, jak one działają, a następnie zastosuj podobne techniki we własnych programach. Spróbuj przeczytać i zrozumieć, a następnie zrób to na podstawie tego zrozumienia, zamiast kopiować i wklejać.

  7. Trzymaj się tego . Czasami rzeczy mogą być bardzo frustrujące, ale bardzo satysfakcjonujące po zakończeniu. Jeśli czegoś nie rozumiesz, zrób sobie przerwę, oczyść swoje myśli i spróbuj ponownie. Zapytaj nas w SO! Jesteśmy chętni…

  8. Nigdy nie przestawaj uczyć się nowych technologii.

  9. Przeczytaj kilka książek. Rozumiem, że będąc studentem, zrobiłbyś mnóstwo czytania. Oto kilka praktycznych książek, które mogą Ci się przydać… mam nadzieję - Pragmatic Programmer: Od Journeyman do Master - Code Complete: Praktyczny podręcznik budowy oprogramowania


13
Dodaj czysty kod do swoich list do przeczytania, jest całkiem niezły.

7
„Znajomość jednego języka jest dobra” -> błędna. Znajomość jednego języka nie wystarczy. Znajomość wielu języków jest dobra, nauka jeszcze większej liczby języków jest jeszcze lepsza.
Denilson Sá Maia

10
„Rozpocznij od małego” odnosi się nie tylko do wyboru przystępnych projektów, ale także do rozpoczęcia wdrażania wykonalnych części w ramach projektu. Mój projekt rozpoczął się od małego eksperymentu w paralaksie, a ja myślę, że „wygląda to całkiem fajne pole gwiazd na tle gry”. Dodaj statek ... dodaj kosmitę ... dodaj kilka pocisków, sterowanie klawiaturą i wykrywanie kolizji (każdy z prostych problemów, same w sobie) pojedynczo i wkrótce miałem komercyjną grę, za którą sprzedałem (co myślałem na czas) sporo gotówki. Z drugiej strony „napisanie gry” jest niejasnym, niedostępnym zadaniem. Po trochu.
mmc

2
@Denilson OP stwierdziła, że ​​nie czuje, że wie, jak programować. Znajomość jednego języka dla kogoś, kto nie jest pewien programowania, jest dobra. Moja lista dotyczy tylko tego kontekstu.

7
@Denilson, czy nauczyłeś się wielu języków bez nauki jednego języka?
Péter Török

141

Rozpocznij osobisty projekt. Problem ze szkołą polega na tym, że najbardziej skomplikowaną rzeczą był projekt, który trwał od 15 tygodni do roku i obejmował kilka innych osób. Problematyka była dobrze zrozumiana (twój profesor nie dał ci żadnych zadań, które nie pasowałyby do twojego semestru). To nie jest luksus, jaki daje prawdziwy świat.

Jeśli musisz zrobić coś poważnego, od początku do końca, co możesz być pasjonatem, twój mózg zacznie się owijać wokół tego procesu. Dopóki jest to tylko kariera i nie kochasz jej, nadal będziesz się czuł, jakbyś jej jeszcze nie zrobił.


Dzielę dni między 1) wysyłanie CV 2) czytanie książek, ale wygląda na to, że 2) lepiej byłoby spędzić pisanie kodu. Myślę, że wielu pracodawców nie chce ryzykować zatrudnienia kogoś z bardzo małym doświadczeniem w branży, więc staż, którego nie podjąłem, wygląda naprawdę atrakcyjnie.

5
+1. Zgadzam się całkowicie. Uruchom małą aplikację, a następnie dodaj funkcjonalność tak, jak chcesz. W miarę jak budynek się

11
„Domena problemów była dobrze zrozumiana (twój profesor nie dał ci żadnych zadań, które nie pasowałyby do twojego semestru.)” Jest to jeden z największych problemów z edukacją informatyczną. Istnieje kilka programów CS lub inżynierii oprogramowania, które rozwiązują ten problem, ale większość nie każe myśleć nieszablonowo. Naprawdę musisz podjąć własne projekty. Jeśli nie wiesz, jak zbudowano Stackoverflow, spróbuj samodzielnie utworzyć klon. Dowiesz się o wiele więcej niż jakakolwiek klasa może cię nauczyć.
Matt Olenik

świetny pomysł. Ale zacznij od czegoś małego z podstawowymi funkcjami i powoli dodawaj do tego. W ten sposób będzie bardziej motywująca niż próba uzyskania jednej gigantycznej idealnej aplikacji. Myślę też, że nigdy nie znajdziesz tyle informacji i samouczków, co bogactwo informacji w książkach
Xster

@Xster, o to mi chodzi. Zadanie napisania aplikacji „pytanie i odpowiedź”, która ma bardzo podstawową funkcjonalność, jest dobrym miejscem do rozpoczęcia.
Matt Olenik

106
  1. Zacznij od jednego z tych popularnych języków, korzystając z projektu, jak mówi K. Nicholas.
  2. Nie mierz się przez StackOverflow. To Cię zniechęci niepotrzebnie.

81
+1 za # 2 - nie porównuj siebie i wiedzy tłumu.
gf

8
Sam StakOverflow jest produktem wirtuozowskim. Nie wspominając, że są ludzie, którzy wnoszą wiele dziesięcioleci doświadczenia w szerokiej gamie produktów.

6
Nie uważałbym za złe porównywanie się z StackOverflow, jest tu wielu inteligentnych ludzi. Niektóre są mądrzejsze niż kiedykolwiek. Jednak to ludzie sprawiają, że chcesz się uczyć.

15
Hej, wiem dlaczego jestem uzależniony od SO! To wspaniałe z kilkunastu powodów. Ale pokorą jest ciągłe narażanie się na wszystkie rzeczy, których nie znasz. Trzeba być trochę ostrożnym, aby nie poczuć się zniechęconym, to wszystko.

@Georg - Nice gra-of-go gravitar. KGS Smandoli

72

Nie mogę pomóc w twojej sytuacji zawodowej, ale mam nadzieję, że pomogę ci rozwinąć umiejętności, a także spojrzeć na twoje uczucia dotyczące własnych umiejętności.

Ukończyłem studia informatyczne, ale nie mam ochoty programować.

Możliwe, że twoi instruktorzy mają się czego wstydzić. Możliwe jest również, że twoje poczucie nieumiejętności programowania jest naturalne i odpowiednie dla tego etapu twojego życia i edukacji. Oto kilka pomysłów, które mogą pomóc:

  • Wielu pracodawców nie obchodzi, jakie kursy znajdują się w Twojej transkrypcji, a nawet jaki jest Twój GPA. Zamiast tego chcą wiedzieć, co możesz zrobić, a zwłaszcza co zbudowałeś. Dla dobrej pracy to, co zbudowałeś, jest ważniejsze niż technologia (C, C #, co masz) w twoim CV.

  • Jeśli podczas edukacji nie miałeś okazji zbudować wielu interesujących projektów, wstydź się swoim instruktorom. Ale możesz teraz budować te projekty. Przejrzyj strony internetowe w poszukiwaniu interesujących problemów. Nasi studenci w drugim semestrze właśnie kończą „Wyszukiwanie utworu” - ściągnęliśmy ogromną liczbę tekstów na stronę internetową, tworzymy odwrócony indeks, podajesz słowa kluczowe i pokazuje ci teksty zawierające te słowa w kontekście. To nie jest Google, ale jest oparte na tych samych zasadach z podobnymi strukturami danych i możesz zacząć je budować już teraz.

Ciężko pracowałem, ale nie mam pewności, aby wyjść sam i napisać moją aplikację.

Może nie ciężko pracowałeś nad odpowiednimi problemami? Dobrze jest znaleźć problemy, które

  • Są otwarte
  • Masz więcej niż jedno dobre rozwiązanie
  • Mają wiele złych rozwiązań

Jeśli poradzisz sobie z tego rodzaju problemami, nauczysz się dokonywać wyborów, żyć z konsekwencjami, a jeśli coś nie działa, wracać i ponownie wybierać. Nauczysz się więcej o swoich niepowodzeniach niż o sukcesach, ale zyskasz większą pewność siebie dzięki sukcesom niż porażkom.

Dobre problemy - z właściwościami takimi jak te, które wymieniłem powyżej - są jak złoto, z tym wyjątkiem, że jeśli dostaniesz dobry problem od kogoś innego, nic nie stracą. Przeszukuj sieć w poszukiwaniu dobrych problemów i ćwicz, ćwicz, ćwicz. Jeśli musisz zacząć od problemów z Eulerem, to są one w porządku dla początkujących. Ale wkrótce będziesz chciał budować małe lub średnie projekty, które Twoim zdaniem są naprawdę fajne . Jeśli jesteś podekscytowany czymś, co zbudowałeś, zrobi to wrażenie na potencjalnych pracodawcach. Jeśli nie jesteś podekscytowany, trudno cię zatrudnić.

Peter Norvig informuje, że dziesięć lat zajmuje stanowisko eksperta . Oczywiście nie czujesz się ekspertem zaraz po uzyskaniu stopnia naukowego. Pozwolę ci powiedzieć o małej tajemnicy: większość członków wydziału Harvarda (ja byłem przez osiem lat) czuje, że tak naprawdę nie należą do Harvardu, nie wiedzą wystarczająco dużo i to musiał być jakiś błąd, że zostali zatrudnieni. Tego rodzaju odczucia są bardzo, bardzo powszechne u osób przechodzących ze szkoły do ​​pracy lub z jednego rodzaju pracy do drugiego. Tak powszechne jest jego nazwa: „zespół oszusta”.

Nawet jeśli masz dyplom, uniwersytet nadal będzie z tobą rozmawiać. Jeśli miałeś naprawdę dobrych profesorów, prawdopodobnie nadal o ciebie dbają. Z pewnością obchodzi ich to, że jeden z ich studentów ukończył szkołę średnią B, a mimo to uważa, że ​​nie opanowała podstawowych umiejętności swojego zawodu. Odszukaj więc jednego lub dwóch najbardziej energicznych, najbardziej życzliwych profesorów ze swojego programu i uzyskaj pomoc w znalezieniu dobrych problemów. Następnie położyć się odpowiedzialny za swoich umiejętności, wiedzy i uczuć o nich. Zbuduj coś małego każdego dnia i nie marnuj swojego cennego czasu na budowanie czegoś, co nie jest naprawdę fajne. Obiecuję, że w końcu poczujesz podekscytowanie związane z programowaniem, a następnie będziesz w stanie zbudować zaufanie do siebie.


Muszę się zgodzić. Idź tam i udowodnij swoim przyszłym pracodawcom, że znasz C, Python, Objective-C i zbudujesz niezależną aplikację, która coś robi. Ludzie często wybierają gry, ponieważ w zależności od gry mogą wiązać się z trudnym projektowaniem i wdrażaniem, a wiele bibliotek wokół jest bezpłatnych. Jeśli tworzysz grę dla systemu Windows, GDI / + lub DirectX są darmowymi bibliotekami, z których możesz korzystać itp.
DeadMG

Część „Większość członków wydziału Harvarda (ja byłem przez osiem lat) czuje się tak, jakby tak naprawdę nie należało do Harvardu, nie wie wystarczająco dużo i to musiał być jakiś błąd, że zostali zatrudnieni”. efektu Dunning – Kruger =)

2
+1, aby coś zbudować: wyróżnia cię spośród tłumu, szczególnie jeśli jest to coś przydatnego.

5
@Alex, nigdy nie przechodź przez HR. Jeśli masz szczęście, ktoś, kogo znasz, zna kogoś, gdzie chcesz pracować.
Norman Ramsey

1
Wiesz, teraz, kiedy o tym wspominasz, tak zwykle znajduję pracę. Chyba w przyszłości powinienem bardziej skupić się na zadaniach w obrębie mojej sieci (lub na jej obrzeżach) i oszczędzić sobie oburzenia skanerów słów kluczowych.

59

Była scena na starym Law & Order, w której prokurator okręgowy skarży się, że nic nie dowiedziała się, jak wykonywać swoją pracę w szkole prawniczej, że nie dowiedziała się niczego o prawdziwym świecie. Profesor, na którego skarży się, odpowiada: „To szkoła prawnicza, a nie prawnicza”.

To samo dotyczy informatyki. Być może nie nauczyłeś się, jak od razu wnieść wkład w jakiś projekt, który widzisz online, ale prawdopodobnie opracowałeś fundament, którego potrzebujesz, aby odnieść sukces na dłuższą metę.

Najpierw znajdź pracę, każdą pracę. Stań się samowystarczalny. Zwłaszcza w obecnej gospodarce nigdy nie obwiniłbym żadnego kandydata za pracę w księgarni lub cokolwiek innego, podczas gdy oni szukają bardziej odpowiedniego zatrudnienia. Mam pytania do ludzi, którzy siedzą i nic nie robią.

Znajdź projekt, każdy projekt. Na przykład na github.com istnieje wiele odpowiednich projektów.

Dobrą wiadomością jest to, że o wiele wcześniej niż myślisz, nikomu nie będzie zależeć, gdzie poszedłeś do szkoły, jaki był twój GPA lub coś takiego.

Powieś tam! To może być trudne, ale pewnego dnia będziesz zadowolony z tego doświadczenia.


8
Niedawno rozmawiamy na ten temat w pracy. Czy naprawdę uważasz, że znalezienie niezwiązanej pracy z karierą w ogóle pomoże cv? Jeśli musisz zbierać owoce z powodów finansowych, dobrze, ale nie sądzę, że ma to miejsce w twoim CV, jeśli próbujesz zbudować karierę jako programista. Jeśli nie masz ograniczeń finansowych, lepiej wziąć udział w projekcie bez rekompensaty ekonomicznej lub próby założenia własnej firmy. Udział w projektach typu open source lub coś związanego z dziedziną, nawet jako technik terenowy, jest moim zdaniem znacznie lepszy.

1
@piotr - Sam to powiedziałeś - „Jeśli nie masz żadnych ograniczeń finansowych”. Każdy absolwent college'u będzie miał ten problem, chyba że mieszka z mamą i tatą. Zgadzam się z Davidem M. - jeśli nie możesz znaleźć pracy bezpośrednio w swojej dziedzinie, znajdź pracę. Pokaż, że nie tylko siedzisz. Następnie, kiedy nie pracujesz w pracy, kontynuuj naukę w nocy i zrozumienie swojej dziedziny dzięki projektom itp. Oczywiście dzwoni i wysyła również CV.

Każda praca wygląda lepiej na CV niż luka.
Jim C

Moim zdaniem na początku twojej kariery praca niezwiązana z pracą jest lepsza niż brak pracy. Jednak nie zgadzam się, że każda praca jest lepsza na wznowie niż brak pracy. Jeśli istnieje dobry powód „braku pracy”, może być lepszy niż „jakakolwiek praca”. Dobrowolnie przeszedłem długie okresy bezrobocia, ale miałem uzasadnione powody, które mogę w spójny sposób wyjaśnić.

5
piotr: „Czy naprawdę uważasz, że znalezienie niezwiązanej pracy z karierą w ogóle pomoże cv?” Tak, absolutnie. Zdecydowanie bardziej pomyślałbym o programistyce pracującej podczas przestoju niż o programatorze siedzącym w domu przez cały dzień. Pokazuje etykę pracy. Nigdy nie chciałem zatrudnić samotnego geniusza, który siedzi w domu i pisze sam kod. Nie wiedzą, jak dobrze współpracować z innymi lub wykonywać brudnych prac.

59

Czy spojrzałeś na ProjectEuler ? Nauczyłem się Python, wykonując problemy na tej stronie. :] Jeśli uczysz się języka Java lub C #, możesz to wypróbować. Polecam także spróbowanie programowania GUI.

Edytować:

Oto świetny temat na temat SO dla wielu linków, na które możesz poszukać praktyki kodowania:

https://stackoverflow.com/questions/662283/websites-like-projecteuler-net


4
Dużo słyszałem o tej stronie, ale nigdy nie miałem czasu na próby rozwiązania problemów, ale obecnie wydaje mi się, że jedyne, co mam, to czas wolny, więc równie dobrze mogę być zajęty.

44
Project Euler jest bardzo mało użyteczny dla początkującego programisty, który chce budować wiedzę programistyczną. Ma na celu znalezienie sposobu rozwiązania problemów matematycznych za pomocą algorytmów kodujących. Możesz zrobić milion takich programów, nie zostając dobrym programistą (prawdopodobnie staniesz się wielkim matematykiem). Pisanie świetnych algorytmów nie jest priorytetem w większości prac programistycznych.

1
Nie zgadzam się z Charlesem - Euler zapewni motywację do zrozumienia niektórych koncepcji i ich realizacji.
Broam

Używanie go tak, jak robił to Xavier Ho, wydaje się interesujące i przydatne. Oznacza to, że musisz opanować podstawy nowego języka. Podejrzewam, że WF pomoże ci w programowaniu (w małej skali) LUB w matematyce; więc możesz zanurzyć się w dowolny sposób. Pomijając te kwestie, zgadzam się z Charlesem.

6
pythonchallenge.com jest kluczem! Podczas gdy Euler to problemy matematyczne do rozwiązania przez programowanie, pythonchallenge to czysto problemy programistyczne
Xster

48

Zgaduję z twojej nazwy użytkownika, że ​​jesteś kobietą ... Jeśli nie, możesz to zignorować lub dostosować do własnego punktu widzenia.

Z mojego doświadczenia wynika, że ​​kobiety kończące studia informatyczne uważają się za znacznie mniej kompetentne niż mężczyźni o podobnych umiejętnościach. Ktoś mógłby powiedzieć, że kobiety są (lub, mówiąc dokładniej, kobiety, o których wiem, że są) po prostu bardziej uczciwe w stosunku do własnych wad, ale w końcu mają większe problemy ze sprzedaniem się pracodawcom.

(Spędziłem większość szkoły, czując się totalnie porażką w porównaniu do moich rówieśników, i skończyłem na szczycie mojej klasy.)

Tak więc radzę pozostać uczciwym wobec siebie i ciężko pracować nad rozwijaniem swoich umiejętności. Ale nie lekceważ tego, co wiesz, szukając pracy i nie powstrzymuj się od ubiegania się o pracę „sięgającą”.

  • Znajdź mentora, który może naprawdę ocenić Twoją wartość.
  • Przeprowadzaj fałszywe wywiady i dowiedz się, jak projektować pewność siebie, energię i pasję.
  • Kiedy kończysz wywiad, mów o swoich osobistych projektach i zadawaj pytania techniczne. Twoje dążenie do nauki i energia to Twój najlepszy atut.

Dodano jako uzupełnienie:

  • Kiedy kończysz swoją pierwszą pracę, nie bój się negocjować pensji. Zbyt wiele kobiet po prostu z wdzięcznością przyjmuje pierwszą ofertę i nigdy nie dostaje tego, na co zasługuje.

Dotyczy to ...
Paul Nathan

+1, wszystkie dobre punkty. Podobne uczucia spotkałem u koleżanek, gdy byłem w szkole.
Heather M

6
Nie tylko kobieca sprawa; Ludzie, którzy są już kompetentni lub potrafią dostrzec, że muszą się rozwijać (tak!) Częściej kwestionują swoje kompetencje niż ci, którzy nie zaczynają podejrzewać własnej niekompetencji. Nazywa się to zjawisko. Efekt Dunninga-Krugera. Twoje doświadczenie w szkole było fenomenalnym sukcesem, jeśli opuścisz szkołę i będziesz mógł kontynuować naukę przez całe życie, w jakiejkolwiek karierze, w której się znajdziesz. Życzę powodzenia !!!
Warren P,

1
Warren: absolutnie prawdziwa; wielu moich mniej wypowiadanych mężczyzn miało ten sam problem. W wielu kulturach na całym świecie, w tym w Ameryce Północnej, małe dziewczynki nie są zachęcane do agresywnej rywalizacji i popisywania się swoimi umiejętnościami tak samo jak mali chłopcy, więc częściej widziałem tę cechę u kobiet. Ale to zdecydowanie nie jest kobieca sprawa.

Świetna odpowiedź, całkowicie się zgadzam. Zauważyłem też w mojej klasie kończącej, że kobiety, które to wyróżniały, były często najlepszymi uczniami. (To znaczy, niestety, wiele kobiet, które odpadły, mogło być doskonale kompetentnymi programistami ...)

39

Wiele osób mówi, że powinieneś rozpocząć osobisty projekt. Moim zdaniem jest to najlepsza rada tutaj. Dodałbym kilka rzeczy, których nie widziałem, gdy czytałem inne odpowiedzi ...

  • Wybierz coś w obszarze, który jesteś pasjonatem temat . Najlepszym miejscem do znalezienia tego może być twoje zainteresowania poza informatyką. Może to być non-profit, w który jesteś zaangażowany, hobby, które Cię pasjonuje, sport, który uprawiasz.

  • Znajdź współpracownika . Sam kodowanie jest trudne, więc kolejną rzeczą, która bardzo by pomogła, jest znalezienie partnera do współpracy przy tym projekcie. To sprawia, że ​​jest o wiele bardziej zabawny i motywuje. W swoim niedawnym wpisie na blogu Jeff Attwood mówi o tym dokładnie w swoim doświadczeniu w budowaniu SO. http://www.codinghorror.com/blog/2010/05/on-working-remotely.html

  • Wybierz coś skromnego (początkowo) . Idealny projekt zaczynałby się od czegoś małego. Jeśli cel z bramki jest zbyt ambitny, stanie się zbyt zniechęcający. Po opracowaniu oprogramowania na komputery PC, telefony, systemy wbudowane i Internet powiedziałbym, że Internet jest najlepszym miejscem do poszukiwania czegoś osiągalnego, z czego inni ludzie mogliby zacząć korzystać od razu.

  • Jeśli to możliwe, wybierz coś, z czego będą korzystać inni ludzie . Nawet jeśli masz tylko dziesięciu „klientów”, poczucie, że inni ludzie używają tego, co zbudowałeś, jest jak narkotyk. Niesamowicie satysfakcjonujące. Uczenie się od klientów i reagowanie na nie jest również bardzo cennym doświadczeniem edukacyjnym.

Jeśli ten projekt jest dziełem miłości, nad którym z radością pracujesz głęboko w nocy, a następnie następnego ranka wyskakujesz z łóżka, aby wrócić do niego, to dobre rzeczy się pojawią. Dowiesz się, zaufanie wzrośnie. A kiedy już znajdziesz coś, co ludzie mogą zobaczyć, staje się to początkiem twojego portfolio. Nic nie robi wrażenia na programistach i (przyzwoitym) zatrudnianiu menedżerów niż coś prawdziwego.


Jeśli to możliwe, wybierz coś, z czego skorzystają inni ludzie ... to najlepszy sposób na uzyskanie opinii
balalakshmi

34

Kilka komentarzy z perspektywy kogoś, kto jest programistą od ponad 20 lat:

Widzę witryny takie jak Stackoverflow i wyszukiwarki takie jak Google i nie wiem, gdzie w ogóle zacznę pisać coś takiego.

Są produktem zespołów, w większości opartych na bibliotekach i infrastrukturze (.net, java, asp.net itp.) Produkowanych przez inne zespoły i wspieranych doświadczeniem i zasobami. To, że ty indywidualnie nie wiesz, od czego zacząć robić coś podobnego, jest całkowicie zrozumiałe. Nie martw się o to.

Podczas jednego lata miałem okazję pracować jako programista iPhone'ów, ale czułem, że głównie skleiłem ze sobą biblioteki, które inni pisali, nie rozumiejąc mechaniki, która dzieje się pod maską.

Obawiam się, że wiele prac rozwojowych jest teraz takich. Ale istnieje wiele możliwości wykonywania interesujących prac „nad” tymi bibliotekami. I nie martw się o znalezienie algorytmów trudnych - prawie na pewno nigdy nie będziesz musiał wdrożyć szybkiej listy, powiązanej listy lub czegokolwiek w trakcie swojej kariery. Po to są biblioteki.

Zasadniczo kończę studia informatyczne, ale nie wydaje mi się, żebym nauczył się programować.

Umiejętność programowania i umiejętność działania jako profesjonalny programista to dwie bardzo różne rzeczy. Potrzebujesz tylko doświadczenia, najlepiej współpracy z innymi programistami w rzeczywistych systemach. Spróbuj dodać C # lub Java do swojego zestawu umiejętności - nie ma między nimi dużej różnicy, więc wiedzę można przenosić. Uważaj, aby zbyt wcześnie się nie wyspecjalizować. Być może będziesz musiał zaakceptować fakt, że nie zarobisz od razu dużych pieniędzy, więc jeśli to możliwe, utrzymaj na chwilę koszty osobiste.

Rozpocznij pracę nad projektem, o którym wspomniałeś, ale oprócz poszerzenia wiedzy na temat programowania, spróbuj go użyć, by uzyskać doświadczenie w zakresie powiązanych umiejętności, takich jak kontrola wersji, testy jednostkowe i integracyjne, a nawet pisanie prostej dokumentacji. Tego rodzaju umiejętności odróżniają programistę od programisty i stanowią dobrą wizytówkę dla potencjalnego pracodawcy. Dostępnych jest wiele bezpłatnych narzędzi (wersje ekspresowe Visual Studio, github, nunit, aplikacje Google), które mogą pomóc.

Z tego, co napisałeś, brzmi to tak, jakby twój stopień CS nauczył cię myśleć o problemach technicznych. Wygląda na to, że masz dobry poziom samoświadomości, w tym na temat swoich obecnych ograniczeń technicznych i doświadczenia. Wykorzystaj je jako zalety. Teraz nie jest dobry moment na wejście na rynek pracy, ale jeśli będziesz ciężko nad tym pracować, nic ci nie będzie. Nie martw się, ucz się, zdobywaj doświadczenie, bądź na bieżąco, staraj się robić rzeczy, które lubisz.

Powodzenia!


„prawie na pewno nigdy nie będziesz musiał wdrożyć szybkiejortacji, powiązanych list ani niczego takiego w trakcie swojej kariery” Na moim obecnym stanowisku musiałem wdrożyć szybkozłącze dla niestandardowej pisemnej listy łączonej. Nie musiałem jednak implementować tej listy. Wiedza o tym, jak działają podstawowe rzeczy, ma określoną wartość.

Zgadzam się, że dobry programista powinien wiedzieć, jak działają te podstawowe struktury danych i algorytmy, i być w stanie je wdrożyć. Kilka razy musiałem rzucić własne listy, ale nigdy (na szczęście dla mnie) nie musiałem pisać krótkiej listy. Chodzi mi o to, że OP nie powinna się zbytnio przejmować algorytmami, które mogła studiować podczas studiów, ponieważ wiele języków / platform (.net, Java, C ++ itp.) Prawdopodobnie będzie zawierało wcześniej napisane implementacje.

31

Programowanie nie polega wyłącznie na zrozumieniu algorytmów lub GPA podczas studiów. Programowanie polega na zdolności do myślenia nieszablonowego, chęci i chęci do nauki, a przede wszystkim kreatywności.

Osobiście, właśnie ukończyłem studia w maju zeszłego roku i miałem okropny GPA. Skoncentrowałem się bardziej na moim życiu społecznym niż na środowisku akademickim i zapłaciłem cenę.

Jednak podczas mojej ostatniej rozmowy o pracę po studiach ( która zajęła mi mniej niż rok na wylądowanie ) pokazałem swoją kreatywność, pasję do nauki i umiejętności analityczne, które pomogły mi znaleźć pracę.


27

Uwaga: oczekuję, że ten post zostanie odrzucony. To nie jest odpowiedź na oryginalny plakat, ale spostrzeżenie na temat większości komentarzy, które przeczytałem powyżej.

Odpowiedzi, które czytam powyżej, naprawdę mnie przerażają. Wydaje się, że niemal powszechne jest poczucie, że stopnie comp.sci są bezużyteczne lub nieistotne, lub niczego nie uczą. Czy stopnie comp.sci naprawdę stały się tak złe, czy to wszystko jest tylko gorącym powietrzem od twórców bez stopni próbujących uzasadnić ich brak?

Poważnie ludzie, czego obecnie uczą ludzie na uniwersytecie? Kiedy zdobędziesz dyplom CS (przynajmniej gdy byłem studentem) do czasu ukończenia studiów, będziesz dobrze orientował się w projektowaniu kompilatora, komp. złożoność, metody i logika formalna, całe zoo struktur i algorytmów danych, podstawowe badania operacyjne (LP itp.), bazy danych, cyptografia i bezpieczeństwo, algorytmy planowania, protokoły sieciowe, rozwój Internetu, projektowanie systemu operacyjnego i jądra, algorytmy równoległe i struktury danych, algorytmy numeryczne i wiele więcej. Całość jest zazwyczaj uzupełniana przez ogromny projekt programistyczny, który stanowi część końcowej rozprawy. Nie mów mi, że absolwenci comp.sci nie mają wystarczającej praktyki w programowaniu.

Doceniam również fakt, że niektóre bardziej tradycyjne stopnie comp.sci pomijają niektóre aspekty cyklu tworzenia oprogramowania, prawdopodobnie nie usłyszysz wiele o TDD, testowaniu jednostkowym. Ale bądźmy brutalnie szczerzy: to nie jest tak naprawdę nauka rakietowa, prawda? Nie usłyszysz także o SCRUM ani analizie punktu funkcji. Nauczanie szczegółowych kursów na takie podstawowe zagadnienia byłoby dość zbędne, choć obecnie wiele stopni ma kurs projektowania systemu, w którym dają studentom pojęcie o tym, jak te rzeczy działają.

To prawda, że ​​nie jesteś ekspertem w dziedzinie .NET, PHP lub innych obecnych standardów branżowych, ale to nie powinno mieć znaczenia. Za 5-10 lat i tak języki się zmienią. To, że uczysz się jeździć Peugeotem, nie oznacza, że ​​nie powinieneś być w stanie prowadzić Fiata, to samo powinno dotyczyć języków programowania. Ćwiczenie kilku dobrych książek w kilku językach powinno zająć kilka miesięcy.

Z pewnością, jeśli coś jest stratą czasu, to te kosztowne „certyfikaty”, które w zasadzie polegają na zasiadaniu do elektronicznego egzaminu wielokrotnego wyboru i pytaniu o (zwykle bezcelowe) szczegóły dotyczące konkretnej architektury lub języka. Mają tendencję do mierzenia kompetencji programisty na podstawie jego wiedzy na temat niektórych patologicznych przypadków programowania.

Pracowałem w branży IT w różnych firmach, a także brałem udział w procesie wywiadu dla innych programistów. Przedstawiliśmy kilka typowych pytań dotyczących fizzbuzz, ale były one skierowane głównie do osób bez formalnego szkolenia lub stażystów. Nigdy nie spotkałem absolwenta comp.sci, który nie byłby w stanie odpowiedzieć na podstawowe i nie tak podstawowe pytania programistyczne.

Uwaga: Mieszkam w Europie i znam tylko europejskie stopnie uniwersyteckie. Jestem jednak całkiem pewien, że standard uniwersytecki w USA jest znacznie wyższy niż w UE.


4
W ten sam sposób wszyscy odczuwają wszystkie stopnie, gdy je otrzymają. Szkoła w ogóle przygotowuje cię na wiele różnych sytuacji. Kiedy zaczniesz pracować, możesz stać się bardziej wyspecjalizowany i być może poczujesz się, jakbyś marnował całą energię na szkołę, ale skąd wiedziałeś, co właściwie skończysz? Lepiej jest bezpiecznie dowiedzieć się o wielu elementach, na których można budować, niż nigdy się o tym nie dowiedzieć.

1
Widzę obie strony argumentu. Spotkałem naprawdę inteligentne stopnie CompSci, ale spotkałem też facetów ze stopniami CompSci, którzy pracują teraz w call center, ponieważ tak naprawdę nie dbali o CompSci. Wiele się nauczyłem na kursach CompSci, ale muszę przyznać, że większość umiejętności technicznych, które przyniosły mi pracę, nauczyłem się poza szkołą w swoim własnym czasie. Kiedy przeprowadzam rozmowę kwalifikacyjną w sprawie inżynierii oprogramowania, zazwyczaj sprawdzają twoją wiedzę pod kątem określonych technologii, strategii rozwiązywania problemów i umiejętności interpersonalnych. Żaden z nich nie jest wyraźnie nauczany na studiach.
Cerin,

1
Spotkałem dziesiątki stopni CS - podczas przeprowadzania z nimi wywiadu - które nie potrafiłyby wyjaśnić żadnych algorytmów sortowania, nawet gdybyśmy zastanowili się przez pięć minut. Być może standard uniwersytecki tutaj w stanach nie jest dobrze stosowany we wszystkich dziedzinach. Jak zauważa @Chris S, łatwo jest przejść przez stopień bez dużej wiedzy.
Dean J

Mieszacie tutaj dwie rzeczy. Znalazłem stopień niezwykle przydatny - wiem, że to uczyniło mnie znacznie lepszym koderem, ale nigdy nie mogę dokładnie zrozumieć, dlaczego (prawdopodobnie połączenie odrobiny wiedzy i lepszego podejścia do rozwiązywania problemów). To powiedziawszy, jest wielu absolwentów (z dość prestiżowego uniwersytetu), którzy nie mogą nawet wymyślić, jak wdrożyć (9,5) ECC z 512-bajtową tabelą odnośników. Dobrzy koderzy to ci, którzy wykraczają poza „nie rozumiem tego, ale mogę wykonać pytania egzaminacyjne”.

1
ciekawy problem, ale dlaczego miałbyś normalnie wykonać test ECC;), oczywiście poza sprzętem Ale to dobry przykład rzeczy samowstrząsających, których nie możesz / nie możesz? uczyć się w compSci

24

Wasza pokora będzie wam dobrze służyć. Przez umysł początkujących jest pomocne dla wszystkich rodzajów uczenia się, bez względu na to ile wykształcenie i doświadczenie mamy.

Wykonuj ćwiczenia, jak sugerowali inni - w Project Euler i gdzie indziej.

Opracuj rozwiązania, aby pomóc innym tutaj na SO. Ćwiczenie ze zrozumieniem pytania, ustalenie, co wiesz, co można zastosować, i wreszcie sformułowanie odpowiedzi pomoże budować pewność siebie, ponieważ ćwiczenia budują twoje umiejętności.

Zostać przy tym; wydobrzejesz.


9
Pokora będzie ci dobrze służyć, z wyjątkiem sytuacji, gdy tak nie jest - aby dostać się do drzwi (w tym w ramach osobistego projektu) potrzebujesz pewnej ilości chutzpy, być może będziesz musiał być irracjonalnie pewny siebie.

@Ian, pokornie przyjmuję twoją poprawkę. ;-) Poważnie - to dobra uwaga i dobry artykuł. Nie podoba mi się wniosek, że kobiety powinny być dupkami tak jak mężczyźni, ale trudno jest kłócić się z praktycznością tego.
Carl Manaster

@Carl - zbyt szybkie wyciąganie wniosków :-) Zatrudnianie pracowników / menedżerów zjada arogancję / autopromocję. Zwłaszcza przy ocenie kandydatów na stanowiska techniczne, których nie zaczynają rozumieć. Widziałem wielu bardzo wykwalifikowanych mężczyzn na tej samej łodzi, co te biedne kobiety, kiedy ta pewna siebie, promująca siebie osoba pojawia się i kradnie serial. Nie sądzę, że możemy uznać to za zwycięstwo, aby zachęcić więcej kobiet do nadmiernej pewności siebie. Miejsce, w którym możemy zrobić najlepiej, IMHO, polega na szkoleniu pracowników działu HR w podejmowaniu lepszych decyzji lub ponownym wampirowaniu procesu.

23

Ukończenie studiów podyplomowych nie czyni z ciebie wielkiego programisty niż ukończenie programu muzycznego czyni cię świetnym muzykiem.

Nic nie zastąpi praktyki, praktyki, praktyki i doświadczenia. Programuj 8 godzin dziennie, a za 5 lat możesz mieć zrozumienie, którego teraz brakuje.


6
To jest haczyk 22, prawda? Zaprogramuj pełny etat, aby uzyskać pożądaną pracę.
Jim Schubert

16
Nie, za 5 lat zdasz sobie sprawę, że nic nie wiesz :)
Earlz

1
@Ellz, a nic, co wiesz, jest już nieaktualne.
Dan Bryant

4
Rzeczywiście - przy wszystkich „szkołach Java” (które mogą być tutaj, ale nie muszą), łatwo zapomnieć, że informatyka nie jest programowaniem. Znam ludzi, którzy zdobyli dyplom CS i poszli do szkoły medycznej, i biologów, którzy skończyli jako programiści. Jednak nikt nigdy nie pyta, dlaczego dyplom z biologii nie uczynił ich chirurgiem: wszyscy wiedzą, że studiowanie biologii nie uprawia medycyny.

1
@Earlz jak bardzo Zen :)
Tullo_x86

23

Takie szczere pytanie, świetne odpowiedzi - wrócę krótko :)

Odpowiedzi do tej pory trochę mnie lolowały - potencjalnie ironicznie celebrują naszą wielkość. Przychodzę do SO z powodu złej dokumentacji i błędów w frameworkach. Jest oczywiście inne złoto, ale warto zachować swoją pokorę, nawet jeśli zostaniesz wielkim twórcą - i mówię to z perspektywy osobistej (?) Arogancji historycznej.

Pamiętaj, że możesz nie zostać (prawdopodobnie nie) zatrudniony przez technika, chociaż lepsi pracownicy działu kadr i menedżerowie wykorzystają go do oceny.

Pracodawcy mają plan dla swoich pracowników, spróbuj je dostrzec przez całą drogę i z szacunkiem wciel się w niego, być może nadając mu nieco osobistego charakteru i ulepszeń. Trudności i możliwości mogą się pojawić, gdy pracodawca tak naprawdę nie ma konkretnego planu - zadawanie dobrych pytań i pomoc w określeniu planu może naprawdę sprawić, że będziesz się trzymać w takich sytuacjach.

Ludzie biznesu mogą (słusznie) być paranoikiem na temat patronowania ich przez deweloperów, ponieważ często musimy nieco zarządzać ich spostrzeżeniami, aby pomóc im w podejmowaniu decyzji, których nie rozumieją - i mówię to, mówiąc z przymrużeniem oka, aby pokazać wam perspektywę NIE lub rozwijaj swoich współpracowników nietechnicznych. Pokornie uważam, że zrozumienie, że często jest to istota relacji między technikami a nie-technikami, jest ważne - i trudno tego uniknąć, to, co robimy, jest tępe.

Bycie profesjonalistą, otwartym i pełnym szacunku dostaje pracę - jeśli nie rozumiesz, czym jest profesjonalista, jestem pewien, że są miejsca do pracy w Internecie - chciałbym, żeby ktoś mi o tym powiedział, kiedy zaczynałem. :)

Ostatnią rzeczą, którą powiem, jest to, że gdy stajesz się lepszy w programowaniu i architekturze, i już brzmisz, jakbyś wszedł na tę ścieżkę, może się okazać, że Twój profesjonalny kod może stać się bardzo niezadowalający, nawet jeśli jest to odpowiednie rozwiązanie.

Nie jestem pewien, jakie jest rozwiązanie, ale spróbuj znaleźć ujście i być mniej zaangażowanym emocjonalnie w swoją pracę, pomoże ci to zrobić krok i żyć lepiej - zachowaj szczególną ostrożność, starając się włożyć dodatkowy wysiłek, aby zrobić coś „właściwego” - przez większość czasu będziesz tworzyć komplikacje dla swoich współpracowników i prawie nigdy nie będziesz w stanie poświęcić tyle czasu, ile potrzebujesz, aby je zrealizować w ramach czasowych swojego projektu. Objawem tego jest „ciemnienie” - kiedy nie chcesz wyjaśniać nikomu tego, co chcesz zrobić. Wielu najlepszych deweloperów może wyjaśnić istotę tego, co robią laikom - jest to świetna umiejętność do nauki i odkryłem, że intelektualnie wyzwala ją praktyka.

Heh, i przy szacowaniu, na początek podziel swoje zadanie na części, zsumuj czas, a następnie podwoj go (nazywa się to, dziel, podbijaj, maszeruj do domu;)

Powodzenia! Porzuciłem szkołę, oczekując, że będę instruktorem narciarstwa i skończyłem jako główny programista. Jestem pewien, że poradzisz sobie z tym, co skończysz.


10
Twoje pierwsze zdanie mówiło, że włączysz krótko ... ale masz tutaj jedną z najdłuższych odpowiedzi. ;)

+1 za „podziel swoje zadanie na części, zsumuj czas, a następnie podwoj je (nazywa się to, dziel, podbijaj, maszeruj do domu;)”… chociaż w wielu miejscach pracy powinieneś go czterokrotnie zwiększyć, ponieważ menedżerowie będą oczekiwać, że zrobią to w połowę czasu i dodaj kolejny projekt, który powinien zostać wykonany w tym samym przedziale czasowym, nie pozwalając na przedłużenie prognozy. Słyszałem nawet o „pomnożeniu przez dwa i zwiększeniu jednostki (1 godzina => 2 dni, 1 dzień => 2 tygodnie, 1 tydzień => 2 miesiące, 1 miesiąc => 2 kwartały, 1 kwartał => 2 lata, .. .) i po prawdziwym doświadczeniu zawodowym nie jest tak zabawne, jak zawsze myślałem

właśnie to wydrukowałem i przykleiłem do ściany
jakie jest pytanie

22

Tak, jest to w miarę normalne - większość szkół, nawet prestiżowych, świetnie wykonuje nauczanie informatyki i straszne nauczanie tworzenia oprogramowania. Powoli poprawia się, ale przed nami jeszcze długa droga.

W każdym razie wygląda na to, że robisz większość właściwych rzeczy:

  • Program poza pracą
  • Czytaj książki na temat tworzenia oprogramowania (Code Complete, Design Patterns, Mythical Man-Month itp.).
  • Ucz się nowych technologii - szkoła powinna cię uczyć, jak się uczyć języków, a nie samych języków. Poznaj nowe frameworki, IDE, api, biblioteki, narzędzia do budowania itp.
  • Chodź na stronach takich jak SO i tutaj. Regularne interakcje z doświadczonymi ludźmi to jeden z niewielu półkrótów do mądrości.

1
Szczerze mówiąc, Mityczny Miesiąc Człowieka jest nieco przereklamowany, prawda? (Ale naprawdę lubię książki typu „* in a Nutshell”).
Camilo Martin

2
@Camilo nie zgadzam się. Miesiąc Mitycznego Człowieka dotyczy inżynierii oprogramowania, podczas gdy w skrócie książki dotyczą wyłącznie jednej technologii. W końcu będziesz potrzebować zrozumienia problemów związanych z oprogramowaniem społecznościowym podczas tworzenia oprogramowania. MMM to jeden z tych tekstów, który obejmuje ten temat.
Brian Wigginton,

21

Naprawdę świetne pytanie. Jestem pewien, że wiele osób przechodzi dokładnie to, co opisałeś na wszystkich ścieżkach życia i rynku pracy.

Po pierwsze - koniec martwienia się o rzeczy, które są poza twoją kontrolą. Nie wolno ci stresować, a nawet myśleć o szkole, o tym, czego się nauczyłeś, a czego nie, lub o tym, jak dobrze zrobiłeś w nauce.

Po drugie - specjalizacja. Zawsze będzie zapotrzebowanie na ludzi, którzy są naprawdę dobrzy w tym, co robią, nawet jeśli to, co robią, jest niejasne. Musisz wybrać swój ulubiony język programowania i zdecydować się całkowicie go opanować i „uczynić go swoim”. Masz już wiele świetnych porad, jak poprawić umiejętności programowania, ale pod koniec dnia nic nie jest w stanie znaleźć autorytatywna książka na ten temat i zamykanie się w swoim pokoju na kilka dni, podczas gdy ty nic nie robisz, tylko czytasz każdą stronę i zapisujesz każdy przykład podany przez książkę.

Po trzecie - zareklamuj się. W tej historii informatyki krok ten nigdy nie był łatwiejszy niż obecnie. Odpowiedzi, które udzielasz i pytania, które zadajesz na SO, są Twoim CV. Podejmij wyzwanie, aby stać się wiodącym autorytetem w SO dla tego języka, który postanowiłeś opanować. Weź na siebie odpowiedzialność za wszelkie pytania, które przychodzą przez ten serwer z tagiem, nawet jeśli oznacza to wiele godzin rozległych badań i wymyślanie późnych odpowiedzi. Przeszukaj archiwa i przeczytaj każde pytanie zadane w SO na Twój temat. Napraw błędne informacje, podaj własne odpowiedzi i ich odmiany oraz połącz kilka istniejących odpowiedzi w jedną lepszą. Powódź SO z niekończącym się strumieniem twoich komentarzy, odpowiedzi i edycji powinna być twoją racją bytu (plus fajnie, bo dostajesz punkty reputacji).

Po czwarte - pracuj nad swoim wizerunkiem publicznym. Pewność siebie jest niezbędna do znalezienia najlepszej pracy. Firmy chcą ludzi, którzy są świetnymi współpracownikami, współpracownikami i komunikatorami. Jeśli uważasz, że to może być problem, powiedz znajomym, że potrzebujesz ich, aby wzmocnić twoje ego i obsypać cię niekończącymi się komplementami, a następnie przejdź do lokalnej biblioteki i wybierz jedno z nich .


2
+1 za podkreślenie znaczenia umiejętności współpracy / komunikacji. Większość absolwentów ich nie ma.
Denis Otkidach

1
Nie zgadzam się ze specjalizacją, każda technologia pewnego dnia umrze, więc jeśli zbytnio się wyspecjalizujesz, skończysz bez pracy ... ok, niektóre technologie (=> COBOL) umierają bardzo powoli, dając ci wystarczająco dużo czasu na specjalizację w nowej technologii ale wciąż jest ryzykowne.

1
Specjalizacja ma swoje miejsce, ale nie jestem pewien, czy zaraz po studiach jest właściwy czas. Argumentowałbym również za podażą i popytem - częścią sztuczki w specjalizacji jest znalezienie niszy, która wymaga wypełnienia, a nie tej, która jest już pełna. (i na froncie COBOL - kilka lat temu, moja koleżanka z samolotu wyglądała, jakby była w połowie dwudziestki lub pod koniec lat dwudziestych, ale miała do czynienia z projektem przeniesienia starszego systemu ... i jak zrozumiałem nadal trzymali się COBOL-a, po prostu musieli przejść na nowy sprzęt - więc potencjalnie istnieje nowa generacja programistów COBOL-a)

21

Okej, więc zobaczyłem wiadomości hakerów i pomyślałem: „ŚWIĘTY KREM, TO JA !!”

W grudniu zeszłego roku ukończyłem studia z zakresu CS i czułem, że jakoś udało mi się zdać zajęcia i zdobyć stopień naukowy, nie zdobywając go. Czułem, że wszyscy moi koledzy z klasy mają niesamowite umiejętności kodowania, a wszystko, co mogłem zrobić, to tworzyć podstawowe programy Java. Nauka kodowania i bycie dobrym programistą zajmuje dużo czasu. Jest tak wiele rzeczy do nauczenia, a moja rada to wziąć to trochę na raz. Będziesz uczyć się na bieżąco. Jak wszyscy inni mają smutek, najlepszym sposobem na naukę jest robienie tego szczególnie przy kodowaniu. Nie wspominając, że tak wiele jest w budowaniu aplikacji, o których nawet nie zawracają sobie głowy w szkole. Nie czuj się źle, po prostu wiedz, że jest wiele do nauczenia się i zdaj sobie sprawę, że nauczenie się tego zajmie trochę czasu.

Myślę, że zdecydowanie powinieneś spojrzeć na miasto, w którym dorastałeś. Istnieje mnóstwo firm zatrudniających stopnie CS, i nie wszystkie wymagają lub oczekują, że będziesz świetnym programistą zaraz po szkole. Przeprowadziłem wiele wywiadów, w których nie zadawano mi żadnych pytań dotyczących kodowania (było też wiele pytań, które wymagały ode mnie rozwiązywania algorytmów i kodowania). Aplikuj w firmach, które bardziej troszczą się o twoją umiejętność uczenia się niż to, co już wiesz (z mojego doświadczenia większe firmy dbają o to bardziej, ponieważ nie wpłynie to na nich tak bardzo, jeśli nie będziesz w stanie od razu wyodrębnić kodu).

Nie wiem, czy kodowanie jest czymś, co chcesz robić i realizować, ale jest też wiele zadań, które nie mają charakteru technicznego i wymagają wiedzy technicznej. Możesz zajrzeć do tych opcji.

Nie skupiałbym się na nauce jednego z języków takich jak C # lub Java i skupiałbym się na zasadach programowania. Powinieneś być w stanie przenieść dobre umiejętności kodowania i zastosować je w dowolnym języku (jest to ważne dla długowieczności w twojej karierze .. Java nie będzie gorąca na zawsze). Z drugiej strony znajomość „gorących umiejętności” może pomóc w znalezieniu pracy. Umiejętności przeprowadzania wywiadów są NAPRAWDĘ ważne. Weź udział w każdym wywiadzie, nawet jeśli to tylko ćwiczenie.

W każdym razie nie sądzę, że duże firmy, takie jak IBM, są poza twoim zasięgiem. Czułem się tak samo jak ty kilka miesięcy temu i teraz pracuję w IBM. Mój GPA też nie był taki świetny. Nadal mam problemy z programowaniem, ale wiem, że z czasem będę lepszy. Po prostu bądź pewny swojej umiejętności uczenia się!


1
Powiedziałbym, że duże firmy, takie jak IBM, są bardziej dostępne niż wiele innych miejsc - mają tam wystarczająco dużo ludzi, aby mogli wyszkolić swoją pulę talentów, w przeciwieństwie do mniejszych miejsc, w których można oczekiwać, że uderzą o ziemię. I zawsze są staże - może już trochę za późno ukończyć studia, ale wiele agencji rządowych przyjeżdża na staż letni ... abyś mógł dostać ten „NASA” lub podobny w swoim CV.

20

Wow, co za dużo odpowiedzi przed tym.

Co powiesz na zupełnie inną odpowiedź ...

Zmieńmy twój problem pod względem bycia człowiekiem.

„Ukończyłem klasę poczęcia i zaraz się urodzę. Moja matka koronuje się, a jutro rano mam zostać dostarczona. Ale kiedy patrzę na sportowców takich jak Usain Bolt , myślę,„ jak mogę to kiedykolwiek prowadzić szybki?".

Ale oto jesteś, jesteś pełnoprawnym człowiekiem, przeszedłeś szkołę, możesz chodzić, rozmawiać, a jeśli ukończyłeś kurs komputerowy, jesteś całkiem inteligentny do uruchomienia. Nie ma się czego wstydzić.

Teraz Usain Bolt się urodził, a potem nagle zaczął szaleńczo wkraczać na tor, czy też było to dużo życia w życiu, szukania tego, co go interesowało, a następnie niewiarygodnej ilości aplikacji, a potem nagle „ Bam! ” on tam był.

Bardziej prawdopodobne jest to drugie. Nie trać więc czasu na to, że nie wiesz, co powinieneś robić. Ustalenie, co jest dla Ciebie odpowiednie, wymaga czasu. To nie dla ciebie , co myślą rodzice, a nie to, co myślą twoi rówieśnicy. Co jest dla ciebie odpowiednie . Co rozpala twój ogień . Co sprawia, że ​​myślisz * tak, to jest fajne ", nawet jeśli wszyscy myślą, że to spodnie.

Często zdarza się, aby rozpocząć (i / lub) odejść ze studiów, nie mając pojęcia, co chcesz zrobić.

Dla mnie byłem dobry w szkole na poziomie O (kwalifikacje w Wielkiej Brytanii), ale nie mogłem się przejmować poziomem A (wymaganym, aby dostać się na uniwersytet, aby uzyskać stopień). Poszedłem więc do mniejszego miejsca, żeby zrobić dyplom (w rezultacie nie taki, który wolałbym). Ale postawiłem to (wciąż nie mając pojęcia, czego chciałem jako kariery) i nauczyłem się dużo o elektronice i rzeczach, których większość programistów nigdy się nie nauczy. W tym czasie byłem niezależnym pisarzem gier komputerowych.

Wynik końcowy? Po zdobyciu dyplomu (z wyróżnieniem) wszedłem do pracy z rozmową kwalifikacyjną za wyższą pensję niż osoby pracujące na prostej elektronice i nie zmieniłem włosów ani nie założyłem garnituru. Co? Cóż, w wieku 23 lat to coś ma znaczenie (patrząc wstecz, w wieku 44 lat, śmieję się z tego, ale to dla ciebie otępienie młodości).

Ta firma upadła, a potem zacząłem mówić poważniej. Ale prawdopodobnie nie minęło jeszcze kilka lat, zanim nagle (przypadkowo) znalazłem to, co naprawdę mnie zainteresowało. Okazało się, że są narzędziami niskiego poziomu. Powinno być oczywiste - wszystkie gry komputerowe, które napisałem, zostały napisane w asemblerze, zawsze podobały mi się rzeczy niskiego poziomu, o których nikt inny nie mógł się przekonać. Ale postrzeganie tego jako przyszłości wymaga większej dojrzałości i nic dziwnego, że tak naprawdę nie objawiło się to dopiero w połowie lat dwudziestych.

Często jestem pod wrażeniem (i zdumiewa mnie), że młodzi ludzie, często jeszcze jako nastolatki, zdają się wiedzieć, co chcą robić. Ale prawdziwe pytanie brzmi, czy nadal robią to w wieku 27 lat? A może zmienili kurs, ponieważ ich wczesne pomysły nie były dla nich odpowiednie?

Jeśli chodzi o to, jak zrobić coś tak imponującego jak TO (cokolwiek to jest, Google, SO)? Robisz to w kawałkach, tak jak robisz oprogramowanie i wszystko inne w życiu. Zaczynasz od podstaw, zdobywaj doświadczenie. Jeśli jesteś wystarczająco dobry, kontynuujesz i zdobywasz więcej doświadczenia itp. Lub porzucasz go, ponieważ zdajesz sobie sprawę, że nie jesteś wystarczająco dobry lub że jest tak nudny jak diabli (dlatego nie robię komunikacji, chociaż zawsze jest była kopalnia złota. Dla mnie jest nudna!).

Z całą pewnością patrz na swoich rówieśników, patrz na starszych, badaj ich wybory i zainteresowania. Ale sprawdź też swoje. Często to, co na pierwszy rzut oka wydaje się szalone / szaleństwo, jest w rzeczywistości prawdziwą okazją. Uprawiając które można znaleźć ciekawe (a nie tylko płacenie rachunków) jest tak dużo bardziej satysfakcjonujące.

Tak, wiem, że jako 23-latek skupiasz się na Audi TT i chłodnym mieszkaniu, a tym samym kusisz się pieniędzmi, a nie rozsądnymi wyborami zawodowymi, ale poważnie, w pewnym momencie zdasz sobie sprawę, że ten fajny samochód wcale nie jest popsuty być - ta dziewczyna powinna cię lubić za to, kim jesteś, a nie za to, czym jeździsz.

Poważnie, pomyśl o tym. Nie tak fajne rozwiązanie może być właściwą odpowiedzią.


-1: Czy możesz to trochę zaostrzyć i skupić się bardziej na pytaniu, a mniej na sobie?
Jim G.

2
Nie chodzi o „mnie”, chodzi o to, jak się stąd dostałem, nie wiedząc początkowo, gdzie jest „tutaj”. Korzystam z własnego doświadczenia jako przykładu, ponieważ znam moje doświadczenie lepiej niż doświadczenie kogoś innego. Jeśli czytasz to jak o mnie, czytasz to z niewłaściwej perspektywy. Często, gdy „zaciskasz” rzeczy tak, jak to ułożysz, nie zapewniasz tła dla wyrażanego punktu widzenia i pozostawiasz czytelnika zdezorientowanym. Mógłbym napisać: „Nie miałem pojęcia, co chciałem robić, kiedy ukończyłem szkołę, ale teraz mam bla bla bla”. Nie zainspiruje to nikogo do kontynuacji - nie ma „prawdziwego powodu, by wierzyć” (TM).

Dobra odpowiedź, Stephen. Tylko z innego POV niż inne odpowiedzi tutaj.

+1, chciałbym dodać 1000 głosów, aby uczynić to jako najlepszą odpowiedź. Dotknął mnie!

18

Oprócz świetnych porad udzielonych przez innych, dodałbym udział w wydarzeniach dla programistów w Twojej okolicy. Szukaj spotkań, grup użytkowników, obozów barowych, obozów programistycznych itp. Pomoże to w nawiązywaniu kontaktów z innymi programistami, zdobyciu nowych stanowisk pracy, nadążaniu za nowymi technologiami i zapewnieniu realistycznego spojrzenia na poziom umiejętności innych programistów.


Chcę zagrać w to. Zrób to. Niedawno skończyłem szkołę techniczną, pracując nad dokumentacją medyczną w szpitalu. Zacząłem chodzić na lokalne spotkania .NET. Zajęło to trochę czasu, ale w końcu uzyskałem pozycję w firmie programistycznej zajmującej się obsługą serwerów i aplikacji. Chociaż nie jest to mój ostateczny cel w życiu, nie pozwala mi skanować plików medycznych.

17

Postępuj zgodnie z zasadą 10 000 godzin.

Aby stać się mistrzem czegoś, musisz ćwiczyć przez co najmniej 10 000 godzin. Spędź więc 10 000 godzin na programowaniu, a staniesz się jego mistrzem. Jeśli nie spędziłeś 10 000 godzin na programowaniu i nie czujesz się mistrzem rzemiosła, nie zniechęcaj się, po prostu poświęć więcej czasu na kodowanie.

Zwróć też uwagę, że prawdopodobnie zajmie ci to około 3 i pół roku, jeśli programujesz przez 8 godzin dziennie. Jeśli programujesz tylko w godzinach pracy, prawdopodobnie zajmie to około 4 lat. Jeśli nie spędziłeś tyle czasu podczas programowania 3/4 roku, prawdopodobnie nie poczujesz się jak mistrz.


1
i musisz się upewnić, że nie robisz tej samej godziny w kółko! Naciskaj, aby się uczyć.
Froome,

+1 za regułę 10k. Po raz pierwszy o tym słyszałem, ale brzmi świetnie marketingowo i jest bardzo realny.

14

Tylko kilka myśli, jeśli mogę.

Wendy mówi, że można ukończyć studia z dyplomem CS, ale nie ma pojęcia o praktyce programowania. Czy to nie jest niezwykle kłopotliwe, a nawet przerażające? Jest to tak niepokojące, jak oszustwo, które zatopiło angielskie wydziały w latach 70.: literatura nie jest zbiorem pomysłów, które można zrozumieć i zintegrować, ale raczej zbiorem „tekstów”, które uczeń musi streścić i „zdekonstruować” ( http: / /www.answers.com/topic/deconstruction ). Na szczęście ta cuchnąca fala odpływa, być może dlatego, że instruktorzy, którzy zgładzili ją w zarośniętym falowaniu, odchodzą teraz na emeryturę.

Wiele lat temu - kilkadziesiąt lat temu - mój pierwszy kurs CS nauczył mnie języka asemblera (przed wynalezieniem języka C) przy użyciu rzeczywistych problemów, takich jak sortowanie, mieszanie i wyszukiwanie (i tak, rekurencja). Mój drugi kurs uczył projektowania i realizacji kompilatora działającego na żywo. Byłem studentem MIT w niepełnym wymiarze godzin i te dwa kursy były wszystkim, czego potrzebowałem, aby zacząć zarabiać jako programista; i stać się nieco produktywnym dwa lub trzy miesiące później.

Więc dziś rano, słysząc płacz Wendy, myślę, że z pewnością MIT ze wszystkich miejsc nie mógł rozcieńczyć swojej oferty i oszukiwać swoich uczniów (w kontekście praktyki programistycznej) całkiem bezużytecznym gównem. Ale kiedy patrzę na program nauczania MIT EE / CS, widzę, że tak właśnie się stało:

http://student.mit.edu/catalog/m6a.html

Szczególnie zauważam, że dział używa Pythona jako / języka nauczania! Mam na myśli naprawdę! Wygląda na to, że dyplom CS na MIT oznacza zakwalifikowanie studenta do zostania nauczycielem CS na MIT. Mów o rekurencji!

Potem natknąłem się na ten wkład w Coding Horror ( http://www.codinghorror.com/blog/2006/07/separating-programming-sheep-from-non-programming-goats.html ) i pomyślałem, że bardzo do rzeczy tej rozmowy:

„Jestem spóźniony w tej dyskusji [o przewidywaniu sukcesu u kandydatów na programistów], ale z mojego doświadczenia jako późno kwitnącego 30-letniego studenta CS, odkryłem, że zajęcia z programowania są bezużyteczne i mniej gorzej nauczane jako: Nie uczyłem. Byłem tylko w college'u społecznościowym, a następnie na Uniwersytecie Illinois w Chicago, ale zajęcia z programowania były następujące:

„1. Zorientowane obiektowo, co spowodowało, że studenci nie rozumieli metod proceduralnych lub nie mieli ich wcale, oraz

„2. Zajęcia na odchwaszczanie. Zajęcia składały się głównie z opisów różnych rodzajów problemów i matematyki, a nie ayntax i struktury, dla których kazano ludziom po prostu czytać książkę.

„Kod był ledwie bezpośrednio rozpoznawany aż do rdzenia struktur danych, a następnie nadal zależał od tego, który instruktor masz, niektóre z nich były bardzo lekkie, a niektóre ładnie ciężkie. Można powiedzieć, że dla nauczycieli była to wielka pokusa w tym momencie, ponieważ gdyby skoncentrowali się na kodzie, musieliby również skoncentrować się na nauczaniu studentów, którzy byli na kursie informatyki przez dwa lata, jak programować.

„Ponieważ kodowanie jest hobby dla wielu młodych ludzi, uważam, że instytucje edukacyjne polegały na tym, aby ustalić oczekiwane krzywe uczenia się, pozostawiając ludziom, którzy nie mieli żadnego doświadczenia w programowaniu, kiedy weszli do szkoły, nie mieli innego wyboru, jak tylko oszukiwać jak szaleni, wydawać wszystko swojego wolnego czasu na naukę kodu lub zmianę kierunku. I to niekoniecznie jest deficyt myślenia abstrakcyjnego w moim doświadczeniu, ponieważ każdy, kogo znam, kto zrezygnował z CS, skończył w inżynierii elektrycznej, co nie jest niczym na abstrakcyjnym froncie. Wciąż nie umieją programować, robiąc matematykę, z której nie potrafię robić głów ani ogonów. Najbardziej absurdalne wspomnienia:

„1. Java jako wymagany język programowania. Nie zamierzam tutaj rozwalać Javy, ale czy nie byłoby fajnie, gdyby studenci musieli uczyć się własnego wyrzucania elementów bezużytecznych? I czy wskaźniki nie byłyby fajną rzeczą do nauki, nawet jeśli nigdy nie zdecydowaliśmy się na programowanie z nimi w języku?

"2. Biorąc podstawową klasę teorii systemów operacyjnych, po tym, jak zostałeś zalany Javą, i dowiedziałeś się, że był w C (oczywiście) bez nawet jednej klasy C na kampusie?

„Oczywiście mam trzydzieści lat, a także jedną z osób, które zawsze programowały, więc nie miałem problemów, ale widziałem wielu ludzi, których znałem, byli lepsi od abstrakcji niż ja (z rachunku różniczkowego, DiffEQ i fizyki wcześniej ) i ich całkowitą udrękę, próbując ukończyć program, który został przeciwko nim skumulowany ”.

Tylko kilka punktów danych, ale, jak powiedzieli inni, nawiedzający.

- Pete


Jestem zmęczony tym zmęczonym punktem widzenia.
Andres Jaan Tack

Python jest jednym z najlepszych istniejących języków nauczania
Casebash

@Icplben, Pete lub Jamaal z codinghorror.com?
Zaki

14

Po pierwsze, trzymaj się!

Po drugie, oto kilka rzeczy, które mi pomogły:

  1. Kontynuuj poszukiwanie pracy poza regionem zainteresowania. Zdecydowanie w porządku, aby ponownie zlokalizować. Świetna okazja, aby wyjść i zobaczyć nowe miejsce!
  2. Ponieważ doświadczenie jest niskie, myślę, że ankieterzy chcą być kimś, kto będzie podekscytowany i energiczny w pracy i rozwiązywaniu problemów. Dlatego upewniłem się, że jestem zainteresowany kodowaniem dla firmy. Który byłem;)
  3. Zadaj pytanie ankieterowi. Zbadaj firmę i przygotuj trochę materiału podczas wywiadu. Jakich wzorów projektowych używasz? Dlaczego technologia X zamiast Y? Wydaje mi się, że to Cię zaokrągla podczas rozmowy i daje szansę na przerwę.
  4. Kod do zabawy w domu! To nie musi być udane, ale po prostu napisz kod, który może wykorzystywać technikę, o której czytałeś, lub technologię taką jak baza danych.

Po trzecie, byłem na podobnej łodzi jak ty, kiedy ukończyłem szkołę, więc zatrzymaj się tam i szukaj dalej. Twoja pierwsza praca jest tam.


14

Bardzo niewielu ludzi ukończył żadnej dyscypliny, będąc ekspertem na coś mają jedynie badane. Informatyka nie jest pod tym względem szczególna. Nic nie przebije doświadczenia empirycznego, a otrzymasz to tylko dzięki opracowaniu pełnoprawnego oprogramowania dla prawdziwych klientów, z wszystkimi wymaganiami, ograniczeniami czasowymi, zmianami i pracą zespołową.


1
Niestety to prawda. Licencjat jest bezużyteczny, z wyjątkiem odznaki, którą udało ci się przejść. To powiedziawszy, program nauki ścisłej jest okropny na poziomie licencjackim. Program CM wymaga 5 matematyki, ale łączy formalny język, automaty i obliczalność w jednym kursie, i to jest do wyboru.
MIA

4
Zgadzam się w 100%. Dlaczego miałbyś być ekspertem w czymś, do czego właśnie się zakwalifikowałeś ?
Alex Feinman,

13

Znalazłem tę niegodziwą stronę pewnego dnia http://99designs.com/ W ramach projektu witryny lub innego projektu prawdopodobnie można znaleźć projekty związane z oprogramowaniem.

Byłby to świetny sposób na zdobycie umiejętności kodowania, zdobycie nowych umiejętności, poznanie nowych ludzi, którzy mogą być potencjalnymi pracodawcami, a nawet zarobić trochę pieniędzy.

Przekonałem się, że pracodawcy mają wielką wartość pokazując, że nawet jeśli nie miałeś pracy, nie siedziałeś na dupie. Pokaż, że dostałeś się tam i wykonałeś kilka projektów, najlepiej takich, które możesz pochwalić się podczas rozmowy kwalifikacyjnej.


Dzielę dzień między 1) wysyłanie CV 2) recenzowanie książek, ale nie pracowałem nad żadnymi projektami. Nawiasem mówiąc, to bardzo interesująca strona. Wygląda na bardziej skierowanego do artystów i projektantów niż twórców oprogramowania, ale będę musiał zbadać dalej.

Nie martwiłbym się tak bardzo o książki. Jak wspomniano w innym miejscu, jedynym pewnym sposobem na naukę jest robienie. Nie zniechęcaj się tym, że znalezienie pracy zajmuje trochę czasu. To niefortunne, ale czasem znalezienie odpowiedniego zajmuje wiele miesięcy. Próbuj dalej :) Zgadzam się z tobą, strona jest bardziej ukierunkowana na sztukę / projektowanie, chociaż jeśli interesują Cię strony internetowe, niektóre z nich są. Zaletą jest to, że możesz sam wykonać projekt bez pomysłu i możesz otrzymać zapłatę, w przeciwnym razie możesz zajrzeć na sourceforge.net, aby zobaczyć inne pomysły na projekt

13

Nie martw się Rzym nie został zbudowany w jeden dzień.

For each P in PeopleYouKnow
Try
  ask/call P for a Job apply for job;
Catch Denial As Exception
  don be worry;
  //you'll get a job later
End Try

Finally
 If you haven't found a job yet
  For each programmingJobAd in internet

 Try
    apply for job;
    Follow up;
  Catch Denial As Exception
   don be worry;
  //you'll get a job later
 End Try
end
//Keep trying.
//find a bug from this code.

EDYTOWAĆ: #! diff A B

3c3
<   ask/call P for a Job apply for job;
---
>   ask/call P for a Job job; if job is available apply for job;
9a10
>  //(sic)
14c15
<     apply for job;
---
>     apply for programmingJobAd;
20c21
< end
---
> End

12

Po pierwsze, nie martw się, że nie możesz kodować google. Google było tworzone przez wiele lat przez wielu bardzo doświadczonych programistów. To jak ukończenie sztuki wizualnej i zastanawianie się, jak zrobić Ostatnią Wieczerzę.

Podczas poszukiwania pracy nie przejmuj się wymaganiami. Zadzwoń do nich i powiedz, że nie masz lat, ale nadal chcesz się zgłosić. Jeśli naprawdę chcą tego doświadczenia, zapytaj, czy dostępnych jest więcej młodszych stanowisk - być może będą w stanie stworzyć dla ciebie nową pozycję. Większość miejsc pracy jest tworzona dla konkretnej osoby. Pamiętaj, aby skontaktować się z kierownikiem projektu, a nie z działem HR. HR zazwyczaj nie tworzy nowych miejsc pracy, często po prostu sprawdza kandydatów na istniejące miejsca pracy. Google jest twoim przyjacielem w tym przypadku;)

Nie próbuj kodować aplikacji internetowej (np. Google lub przepełnienie stosu), chyba że chcesz zainwestować około 6 miesięcy. To ogromna krzywa uczenia się. Musisz nauczyć się zarządzać VCS, obsługiwać serwer WWW, kodować HTML JS i CSS, system baz danych i język aplikacji sieci web. To jest brutalne. Większość tych technologii jest nieprzenoszalna, chyba że chcesz pracować w sieci.

Jeśli chcesz tworzyć aplikacje internetowe, możesz pomyśleć o zainstalowaniu prostej aplikacji internetowej (takiej jak ta aplikacja IP do wyszukiwania kraju w oparciu o django - http://www.coulix.net/blog/2006/aug/17/ip- country-flags-django-comments / ). Możesz rozejrzeć się za kodem rabatowym Dreamhost o wartości 90 USD (abyś mógł pracować na prawdziwym serwerze internetowym) i spróbować go skonfigurować. Nie przejmuj się zbytnio o bezpieczeństwo i wydajność (ale zrobić ssh) - to tylko projekt uczenia się.

Jeśli chcesz robić rzeczy na pulpicie, możesz rzucić okiem na pygame.


Myślałem, że pierwsza wersja google powstała w krótkim czasie? Jak latem czy coś w tym stylu
Earlz

Apache działający pod Linuksem na twoim pulpicie to „prawdziwy serwer WWW”, nie musisz wydawać pieniędzy. Jak myślisz, co prowadzą firmy hostingowe?
TMN

@TMN, przez serwer WWW, miałem na myśli stos sprzętu i oprogramowania produkcyjnego. Wiem, że DH używa Apache i MySQL, ale programowanie na serwerze produkcyjnym ma zalety (wszystko jest skonfigurowane, w tym podchwytliwe rzeczy, takie jak poczta i robią rejestrację domeny dla Ciebie) oraz wady (jak brak rootowania i musisz uzyskać używane do zdalnego programowania). Korzystanie z serwera produkcyjnego pozwala zanurzyć się w pracy w sieci.

11

Możesz przeczytać wszystko o programowaniu, ale nie nauczysz się, jak naprawdę programować, dopóki nie dobrze ... zacznij programować!

Poleciłbym ci rozpocząć osobisty projekt. Co chcesz stworzyć? gra? Blog? To nie ma znaczenia Po prostu zrób coś!

Następnie, po zrobieniu prawdziwego kodowania przez chwilę (kilka tygodni lub miesięcy), polecam spróbować przyczynić się do projektów open source. Osobisty projekt pomaga dowiedzieć się, jak programować, gdy cel nie jest jeszcze dla ciebie ustalony (wiedza o tym, jak właściwie zaprojektować coś, nie jest często nauczana w szkole). Wkład w istniejące projekty uczy pracy w zespole i przestrzegania standardów kodu.

Nie marnowałbym czasu na czytanie wielu innych rzeczy. Powiedziałbym, że co najwyżej powinieneś czytać przez około 20% czasu, a kod pisać pozostałe 80%. (oczywiście, z czasem, mam na myśli twój czas przeznaczony na programowanie powiązanych rzeczy)


9

Cóż, oto MOJE dwa centy ... w połączeniu z cytatami z kilku innych źródeł.

Zaskakująco duża część kandydatów, nawet tych z tytułami magisterskimi i doktoratami w dziedzinie informatyki, zawodzi podczas wywiadów, gdy są proszeni o wykonanie podstawowych zadań programistycznych.

- Dan Kegel przez Jeff Atwood

http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html

Jest to problem, o którym wiele widziałem, nawet do tego stopnia, że ​​ludzie z wieloletnim „doświadczeniem” na swoim CV nie są w stanie wykonywać prostych zadań. Osobiście uważam, że instytucje edukacyjne są w dużej mierze za to odpowiedzialne, od wykładowców, którzy nie znają przedmiotu lub nie mogą go uczyć, do doradców, którzy powinni kierować studentami, którzy chcą dostać się do konkretnej kwoty bez uzasadnione zainteresowanie samą dziedziną.

Z brzmienia twojego pytania, wychodzisz ze szkoły, czując się, jakbyś po prostu wykręcił się z kilku lat swojego życia, żeby dostać kawałek papieru. W ten sposób wiele agencji zatrudniających postrzega programistów stopień naukowy. Chcą ludzi, którzy udowodnili, że potrafią programować, a nie tylko kogoś, kto ma kawałek papieru. Ale fakt, że zadajesz to pytanie, pokazuje mi chęć nauki programowania.

Jedna z najlepszych rzeczy, które możesz zrobić, aby się uczyć, została już kilkakrotnie wskazana, a mianowicie programowanie. Niestety, chociaż absolutnie zwiększy to twoją wiedzę i zrozumienie technologii, nie jest bardzo prawdopodobne, że pomoże ci znaleźć pracę, chyba że jest to coś, co można umieścić w swoim CV.

Sugeruję, aby zacząć od zbudowania kilku aplikacji w określonym celu, dowiedzieć się, co możesz zrobić i co będzie wymagało od ciebie pójścia naprzód, a następnie udaj się do miejsc, w których możesz podjąć pracę na własny rachunek. Nie oczekuj, że dostaniesz ogromną sumę za pracę niezależną, którą odbierzesz w Internecie, chcesz dodać ją do swojego CV, a nie do portfela. Gdy zdobędziesz 3-5 elementów, które możesz wskazać i powiedzieć „Zbudowałem to” lub „Zaprojektowałem dla nich tę funkcjonalność”, następnie wypisz wszystkie te rzeczy i znajdź biuro pośrednictwa pracy (WSZĘDZIE… , headhunterzy) i współpracują z kilkoma osobami, aby usprawnić twoje CV, dzięki czemu podkreśla twoje wykształcenie i zaradność w znalezieniu pracy, a także minimalizuje aspekt braku doświadczenia.

Najważniejszą rzeczą do zapamiętania, kiedy rozmawiasz z potencjalnymi pracodawcami (przez cały czas widzę, że ludzie robią bałagan) i czymś, na co KAŻDY W KAŻDEJ DZIEDZINIE powinien zwrócić uwagę, jest to, że podczas gdy absolutnie nie chcesz sprzedawać się krótko lub zminimalizować to, co MOŻESZ zrobić, nie OVERSELL siebie i spraw, aby wierzyli, że możesz robić rzeczy, o których nie masz pojęcia, jak to zrobić. Pracodawcy zawsze mają talent, by prosić cię o zrobienie rzeczy, których nie wiesz, i Twoim zadaniem w tym momencie jest rozszyfrowanie, ale jeśli powiesz im, że już możesz, nieuchronnie zjesz swoje słowa później .

Powodzenia!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.