Postanowiłem nauczyć się programowania. Czytam SO od kilku dni i myślę, że zacznę od C ++, ponieważ czytam kilka artykułów. Zdaję sobie sprawę z pętli, tablic, logiki programu i obiektów i potrzebuję kogoś, kto by mnie przejrzał i pomógł mi z małymi pytaniami, które otrzymuję przy pierwszych projektach.
Oto pytanie - gdzie znajdę takiego faceta? Nie mam żadnych przyjaciół, którzy by programowali.
EDYCJA: 2 lata później wciąż szukam mentora. Nie kodowałem aktywnie dopiero od 3 miesięcy. Pracuję nad programowaniem Objective-C i iOS oraz programowaniem gier za pomocą Cocos2d. Jeśli chcesz zostać moim mentorem, napisz lub skomentuj.
Odpowiedzi:
Dołączenie do projektu typu open source jest z pewnością jednym ze sposobów na rozpoczęcie pracy. Jednak od lat używam oprogramowania typu open source i szczerze mówiąc, jakość prawie wszystkich takich projektów jest zazwyczaj w toalecie. Jeśli nauczysz się całkowicie swoich umiejętności programowania i projektowania, prawdopodobnie wybierzesz bardzo słabe i dobre, bez możliwości odróżnienia ich.
Czego chcesz nauczyć się programowania ? Odpowiedź na to pytanie określi, czego należy szukać i gdzie. Oto kilka typowych odpowiedzi i moja profesjonalna opinia na temat tego, jak je realizować (pamiętaj, że to tylko opinia, choć IMHO, dokładna):
Wystarczy powiedzieć, że wiesz, jak to zrobić.
Zatem tak naprawdę nie potrzebujesz mentora, a C ++ jest kiepskim miejscem do rozpoczęcia. Uwielbiam C ++, to mój pierwszy wybór do programowania ogólnego, ale zamiast tego gram w innym języku. Sugerowałbym Python; ma znacznie łagodniejszą krzywą uczenia się niż C ++, i w przeciwieństwie do niektórych języków (nie wymieniono żadnych nazw, nie nosiłem dziś mojej bielizny z azbestu), nadal nauczysz się kilku przydatnych umiejętności, na wypadek, gdybyś chciał później się do niej dostać. Wiele pojęć można przetłumaczyć bezpośrednio na C ++, jeśli zdecydujesz się kontynuować tę trasę.
Wystarczy wypróbować i sprawdzić, czy ci się spodoba.
Projekt open source może być do tego wystarczający. Wybierz program, który Ci się podoba, ale z którym masz problemy lub podrażnienia, i zaoferuj swoją pomoc każdemu, kto go uruchamia. Większość projektów typu open source jest otwarta na wkład, dlatego generalnie są one przede wszystkim typu open source.
Jednak w takim przypadku nie wypróbuj C ++ jako pierwszego języka programowania. Opanowanie podstaw nie jest trudne, ale C ++ jest na tyle niskim poziomie, że możesz uzyskać poważne i bardzo trudne do znalezienia błędy w swoich programach. Jeśli nie wiesz, że lubisz programować, jesteś uparty jak przysłowiowy wół lub nie znalazłeś mentora, który może skierować cię w dobrym kierunku, co zabije wszelkie zainteresowanie, jakie możesz mieć w tej dziedzinie. Zobacz powyższą odpowiedź na temat Pythona, lepiej się do tego nadaje.
Ponieważ masz pomysł na konkretny program, który chcesz napisać.
(Nie sądzę, że OP należy do tej kategorii, umieszczam go dla późniejszych czytelników.)
Czy masz pojęcie o czasie potrzebnym do opanowania projektowania i wdrażania programu? Podpowiedź jest mierzona w latach. Być może będziesz w stanie wymyślić pół przyzwoity projekt po zaledwie kilku miesiącach studiów, jeśli jesteś zarówno mądry, jak i wyjątkowo szczęśliwy, ale każdy z małym doświadczeniem, który musi nad nim popracować (w tym ty, później), będzie żałuję, że nigdy się nie urodziłeś - mówię z doświadczenia. :-) Jeśli ten pomysł nie jest tak bardzo tajny, że nikt inny nie może się o nim dowiedzieć, dopóki nie zostanie zrealizowany, nie przejmuj się. Zatrudnij doświadczonego programistę, który zrobi to za Ciebie, lub jeśli nie możesz sobie na to pozwolić, ale nadal chcesz wystarczająco mocno programu, zaoferuj partnerstwo z jednym - zajmujesz się stroną biznesową i pozwalasz mu zająć się częścią programistyczną. Większość dobrych programistów wolałaby programować, więc taka oferta może być dla nich tego warta.
Ponieważ już wiesz, że fascynuje Cię programowanie i chcesz dowiedzieć się więcej.
Zatem jesteś na właściwej drodze. :-) Niezależnie od tego, czy jest to hobby, czy może coś, co później możesz zmienić w karierę, jeśli masz osobowość, która jest dla niego nieskończenie fascynująca, najlepszą rzeczą, jaką możesz zrobić, to zanurzyć się w nią. W takim przypadku C ++ jest tak dobrym językiem, jak każdy, a mentor na pewno pomoże (i nie tylko rozwija umiejętności; może stać się samotny bez przyjaciół, którzy podzielają twoją pasję).
źródło
Aby znaleźć mentora, nie szukaj mentora. Spróbuj poprawić się na konkretne sposoby. Jeśli wystarczająco ciężko pracujesz, aby się poprawić, oboje zauważysz, że masz kontakt z podobnie myślącymi ludźmi i odkryjesz, że masz coś wspólnego z tymi ludźmi.
Grupy użytkowników są prawdopodobnie miejscem znalezienia mentora, ale nikt nie chce pomóc komuś, kto tam jest, myśląc „Szukam mentora”. Ale jeśli zastanawiasz się: „Chciałbym, żeby ktoś pomógł mi nauczyć się pisać dobre testy jednostkowe JavaScript” lub „Chciałbym sparować się z kimś i przetestować kata w Clojure”, wcześniej czy później znajdziesz kogoś, kto podziela twoje zainteresowania i jest nieco dalej.
źródło
Ludzie, którzy tworzą naprawdę dobrych mentorów, zwykle mają kilkunastu juniorów, którzy w danym momencie narzekają na swój czas. Tak więc „znalezienie” odpowiedniego mentora to dopiero początek, musisz uczynić mentoring bardziej atrakcyjnym / satysfakcjonującym niż mentoring kogoś innego.
Pierwszym krokiem jest dołączenie do społeczności, w których prawdopodobnie spotkasz dobrych mentorów.
Krok drugi to zostać wartościowym podopiecznym. Niektóre rzeczy, których osobiście szukam u podopiecznego to:
Chęć bycia wartościowym dla projektu / społeczności, w której mu mentuję, poprzez:
źródło
Dołącz do projektu open source. Niekoniecznie musisz też dla nich programować. Większość projektów chętnie poprosiłaby kogoś o pomoc w dokumentacji. Możesz spojrzeć na kod i zadawać pytania. Kiedy poczujesz się komfortowo, możesz zacząć pisać dla nich kod.
źródło
Czego oczekujesz od mentora? Sugestie dotyczące projektu typu open source lub lokalnej grupy użytkowników mają na celu bardziej skupić się na tworzeniu sieci kontaktów i znalezieniu kogoś, kto jest kilka kroków dalej od tego, czym chcesz być, aby pomóc ci w pewnym zakresie. Pomyśl o tym jako o próbie uczenia się gotowania od Jamiego Olivera lub Gordona Ramsaya, może być całkiem zabawna i przydatna pod koniec dnia.
W zależności od twoich oczekiwań znalezienie mentora może być łatwe lub niezwykle trudne. Jeśli oczekujesz, że ktoś umie czytać w twoich myślach i da ci krok po kroku sekrety bycia niesamowitym za rok lub krócej, może to nie być realistyczne. Jednocześnie, jeśli chcesz znaleźć kogoś, kto może zrobić coś lepszego od ciebie, może to nie być takie trudne. Najpierw dowiedz się, jakie są twoje oczekiwania.
Po drugie, skoro już wiesz, czego chcesz, musisz to znaleźć. Może to być dość trudne, ponieważ nie jest tak, że wiele miejsc poświęconych jest prezentowaniu programistów wykorzystujących ich umiejętności, tak jak mamy sztukę w Kanadzie i Stanach Zjednoczonych, dlatego właśnie taką sugestię można sobie wyobrazić. MentorNetbyłby przykładem programu, który może zadziałać, chociaż go nie wypróbowałem, jakiś czas temu badałem go i nie sądziłem, że jest dla mnie i czego chciałem. Inną myślą tutaj jest to, jak dobrze twoi przyjaciele i rodzina wiedzą, czego tu chcesz? Mogą znać kogoś lub miejsce, które może ci pomóc, jeśli o to poprosisz. Chociaż nie jest to wyczerpująca odpowiedź, to, co pytasz, jest niejasne i dlatego mam nadzieję, że możesz dodać do tego więcej, a ja skontaktuję się, gdy podasz więcej szczegółów na temat tego, czego chcesz i jak chcesz tego w ten sposób nie jest Burger King, ale moglibyśmy spróbować tak to zrobić.
Eksperci od strony serwera C ++ mogą być raczej trudni do znalezienia. Czy są jakieś pobliskie szkoły policealne? Mogą mieć kogoś, kto ma te umiejętności, które mogą zmienić się w coś innego jako możliwy pomysł. Powodzenia w znalezieniu tego mentora.
źródło
Projekty open source świetnie nadają się do uzyskiwania informacji zwrotnych na temat dodanego kodu i potencjalnie nowych sposobów robienia rzeczy, ale jak się zorientowaliście, prawdopodobnie nie będzie to równoznaczne z relacją mentora.
Sugerowałbym to, o czym już wspomniałeś, a mianowicie grupy użytkowników. Grupy użytkowników zwykle gromadzą się dość często, dzięki czemu możesz uzyskać rzeczywisty czas na kontakt z potencjalnymi mentorami. Ten czas twarzy może pozwolić na szybszy i łatwiejszy przepływ komunikacji. Czy zagwarantuje, że wszyscy są w tej samej domenie? Nie, ale musisz gdzieś zacząć. Jeśli znajdziesz kogoś, kto ma duże doświadczenie, może nadal być w stanie pomóc Ci w Twojej domenie, tylko na podstawie innych doświadczeń.
źródło
Możesz sprawdzić swoją lokalną grupę użytkowników Linuksa ( tutaj znajdziesz listę), zwykle większość uczestników to programiści - a przynajmniej hakerzy Perla. Dodatkowo, jeśli powiesz im, że jesteś tam, aby znaleźć mentora programowania, pokochają cię.
Post na liście craigslistów może być wart spróbowania, ale nie postawiłbym na to.
Ponadto, jeśli mieszkasz w Niemczech, jest kilka miejsc, które mogę szczególnie polecić.
źródło
Biorąc pod uwagę, że jesteś zarejestrowany na Stack Exchange, masz już do dyspozycji wielu nieformalnych mentorów. Możesz łatwo zadawać pytania lub sprawdzać kod przez wiele osób, które są zmotywowane do pomocy.
Bardziej lokalnie, jeśli chcesz mentoringu lub nauczania twarzą w twarz, świetne opcje obejmują:
źródło
myślę, że fora byłyby najlepszym sposobem na znalezienie osób z doświadczeniem w tej dziedzinie. Uważam, że powinieneś zacząć od tego.
Zapoznaj się z niektórymi stronami c ++ w google lub może naszym drogim przyjacielem, na którym jest mnóstwo ninja c ++ gotowego odpowiedzieć na twoje pytania!
źródło
Nauka programowania jest ambitna i (myślę, że wszyscy na tej stronie się zgodzą) szlachetną sprawę. Jednak trudno jest zacząć od zera i uczyć się, nawet z mentorem. Myślę, że przekonasz się, że najlepszym sposobem będzie wzięcie przynajmniej niektórych zajęć wprowadzających, aby dać ci bazę.
Mentor to świetny pomysł i nie byłoby mnie tu ponad 15 lat jako programista bez faceta, który zniosłby moje pytania w mojej pierwszej „prawdziwej” pracy, ale w rzeczywistości jedna osoba nie byłaby w stanie aby dać ci czas i wskazówki, których potrzebujesz, aby odnieść sukces jako programista. Prawdopodobnie sam będzie miał pełnoetatową pracę (lub obciążenie kursowe). Nie oznacza to, że nie powinieneś znaleźć mentora (lub mentorów), tylko że potrzebujesz czegoś innego.
Takie strony, samouczki online i książki, a wszystko inne to elementy układanki. Edukacja tworzy granice.
Nie ma to cię zniechęcać; wręcz przeciwnie, uważam, że ustalenie realistycznych oczekiwań da większą szansę na sukces.
źródło
Jeśli pracujesz w firmie, możesz poszukać tam mentora.
Jeśli chodzi o projekt open source, wątpię, czy znajdziesz mentora dla projektu, który tworzysz, ale możesz go znaleźć w projekcie, który stworzyli.
Nie zapominaj, że ich mentor także musi coś zyskać z tego układu. Cenny czas poświęcają na pomoc. Przygotuj się do wykonania dla nich pracy w zamian.
źródło
„Jak znaleźć programistę? To wszystko, czego chcę. Chcę po prostu zbudować potężną armię robotów, aby przejąć kontrolę nad światem. Jestem sprytny i napisałem sztuczną inteligencję. Mam pieniądze, wpływ, udogodnienia. Po prostu nie mogę sobie poradzić z tą odrażającą głupotą .NET lub JVM ... Hmm ... Jak ... Jak !? Cholera! "
Zwykle nie tłumaczyłbym tego, ale jesteśmy na Stackie. Niektórzy ludzie lubią to dosłownie. Znajdziesz jednego (mentora), będąc przydatnym. Możesz być przydatny, rozwiązując problemy, których dzieci z doświadczeniem (lub - być może - mózgi - lub (he) pieniądze) nie chcą rozwiązać.
Rozwiązuj te problemy konik polny.
Albo nie. To wiek informacji. DIY mój przyjacielu. Spójrz na społeczności takie jak Stack, aby powiedzieć ci, kiedy jesteś głupi lub mądry na temat czegoś związanego z kodem lub czegoś, czego nie rozumiemy tak łatwo, jak machinacji tego inwestora, który jest gotów cię przelecieć, a potem trochę.
I podziel się tym, co wiesz. Weź udział w kolektywu, gdy znajdziesz swój groove. To nie jest kowalstwo w XVIII wieku. Twoi rodzice nie musieli nikogo znać (choć na pewno wszyscy docenią to, że nie gromadzisz wiedzy rzemieślniczej i nie dzielisz się z gildią).
Po prostu zdecydujesz, że jesteś zainteresowany i idź. Dość cholernie mocny, kiedy się wnika. To zajmuje trochę czasu (wiem), ale zaufaj mi (chociaż tylko w tej jednej pozornie absurdalnej kwestii - zajęło mi ponad dziesięć lat, aby uświadomić sobie, że tak, jestem dziwnym programistą), wszystko to naprawdę ważne jest to, że masz podstawowy poziom talentów i że jesteś naprawdę zainteresowany. Jeśli nie, uprzejmie! @ # $ Zniżki i znajdź coś, co Cię interesuje.
Ponieważ w przeciwnym razie programowanie / skryptowanie / kodowanie jest okropnym wyborem. Ale nie chcę pozostawić tego w negatywnym, paskudnym punkcie. Jeśli jesteś zainteresowany, nie martw się o to, jak dobry jesteś. Zadawać pytania. Żądaj odpowiedzi. Radzę sobie z tak długo zwiniętymi workami z gazem / biczami, jak ja. Dostaniesz się tam, jeśli chcesz.
Czy lubisz puzzle? Czy lubisz rozwiązywać przypadkowe problemy? Czy lubisz filmy o gladiatorach? Jednoznacznie w pierwszych dwóch punktach, tak? Nie szukaj mentora. Naucz się jednego języka naprawdę dobrze, naucz się jednego lub dwóch innych, które nie są zbyt podobne do twojego pierwszego języka do poziomu umiejętności początkowych, czytaj książki i miej opinie. Ciesz się wyzwaniami i zmieniaj je od czasu do czasu, choćby po to, aby sprawdzić, czy nie popełniłeś błędu. Możesz być zaskoczony, jak często twoje instynkty wcale nie były takie złe. Poproś ludzi, aby wyszli i uderzyli cię w twarz za zadanie niewłaściwego pytania, a może się okazać, że wiesz lepiej niż większość osób, które podchodzą do tej okazji. Ale przede wszystkim jest to problem do rozwiązania. Rozwiązać.
źródło
Dla mentora przejdź do freenode (irc). Przysięgam, z tego miejsca można uzyskać większość stopnia CS, przydatne na każdym poziomie umiejętności. Tam wiele się nauczyłem. Nie powinno mieć znaczenia, czy dana osoba jest na tym kanale raz, czy 24/7, czas rzeczywisty i to się liczy.
I jak większość innych powiedziało, nie rób C ++. Zamiast tego zacznij od statycznie wpisanego języka zbierającego elementy bezużyteczne i nie przechodź do ręcznego zarządzania pamięcią, dopóki nie dowiesz się wystarczająco dużo, aby faktycznie pokonać moduł odśmiecający. Jeśli spróbujesz, możesz napisać cholernie szybki Haskell lub OCaml.
źródło