Jak mogę uzyskać więcej doświadczenia w programowaniu [zamknięte]

9

Będę studentem informatyki na trzecim roku i przeczytałem Head Java, Head First C, a obecnie czytam C ++, który jest językiem, który lubię najbardziej, ponieważ ma dobry styl nauczania dla osób z doświadczeniem. Planuję albo nauczyć się tworzyć oprogramowanie za pomocą QT, nauczyć się celu C (dla iPhone'a) lub przeczytać Effective C ++.

Jak mogę zdobyć doświadczenie jako programista? Czy mam umiejętności dołączenia do projektu open source, czy muszę nauczyć się php, mySQL lub innego języka? Uwielbiam programowanie i informatykę w ogóle, chociaż niektóre zajęcia mogą być bardzo trudne (teoretyczna informatyka). Planuję też zostać guru w c ++, ale to nie nastąpi wkrótce.

Anthony
źródło
1
Czy napisałeś jakieś programy, z których korzystają inni? Jeśli nie, napisz taką, której potrzebuje ukochany członek rodziny i spraw, aby była dla niego przydatna (może to potrwać kilka iteracji). Ostatnia część dotyczy prawdziwej lekcji.
Jak dostać się do Carnegie Hall?
jfrankcarr
1
Przez chwilę będę brzmiał jak dupek, ale ... doświadczenie - Aktywny udział w wydarzeniach lub działaniach, prowadzący do gromadzenia wiedzy lub umiejętności. Zacznij więc aktywnie uczestniczyć w programowaniu.
Steven Evers,
1
BTW, jaka jest różnica między StackOverflow a programistami? Czy wzorzec zamykających pytań ma na celu uczynienie Programistów kolejnym przepływem StackOverflow? Jaki jest zatem sens - po prostu połącz oba. Kiedyś mogliśmy zadawać ezoteryczne pytania programistom, których nie mogliśmy uzyskać w StackOverflow.
שינתיא אבישגנת

Odpowiedzi:

11

ABC - ZAWSZE BYĆ KODOWANIEM. To naprawdę takie proste. Jednym z moich ulubionych sposobów poznania języka jest napisanie interpretera zabawek dla podzbioru języka w samym języku, a jeśli to nie jest twoja sprawa, to może ray tracer lub coś innego, co jest na tyle duże, że nie jest trywialne ale nie tak duże, że nie da się tego dokończyć za około miesiąc. Chodzi o to, aby popracować nad czymś, co zmusi cię do spojrzenia na standardową bibliotekę i funkcje pozyskiwania danych oferowane przez język. Czasami projekt kończy się sukcesem, czasem nie, ale na końcu wiem wystarczająco dużo o języku, aby wiedzieć, jakie są jego mocne i słabe strony oraz czy chcę dalej uczyć się więcej. Jeśli okaże się, że podoba mi się ten język, to za każdym razem, gdy czytam interesujący artykuł lub post na blogu, staram się rozpocząć projekt, w którym realizuję niektóre pomysły przedstawione w artykule lub na blogu. W ten sposób zawsze ćwiczę i uczę się nowych pomysłów, dzięki czemu staje się to cnotliwym cyklem.

Niektóre projekty, które w przeszłości działały dla mnie naprawdę dobrze: interpreter dla podzbioru jakiegoś języka, ray tracer, generator parsera PEG, parser nagłówka HTTP, prosty klient / serwer echa, twitter bot do automatycznego wysyłania tweetów z kolejki, produkt amazon skrobak do wyszukiwania ofert.

davidk01
źródło
+1 Wspomniałeś o kilku naprawdę interesujących projektach, dzięki.
Anthony
8

Jak dobrze wyjaśniono w części Naucz się programowania w ciągu dziesięciu lat , należy wykonać następujące kroki:

  • Zainteresuj się programowaniem i zrób coś, bo jest fajnie. Upewnij się, że jest wystarczająco zabawny, abyś mógł poświęcić dziesięć lat / 10 000 godzin.

  • Program . Najlepszym sposobem uczenia się jest uczenie się przez działanie. Mówiąc bardziej technicznie, „maksymalny poziom wydajności dla osób w danej domenie nie jest osiągany automatycznie w zależności od rozszerzonego doświadczenia, ale poziom wydajności może zostać podniesiony nawet przez wysoce doświadczone osoby w wyniku celowych wysiłków na rzecz poprawy . ” (s. 366) i „najskuteczniejsze uczenie się wymaga dobrze określonego zadania o odpowiednim poziomie trudności dla konkretnej osoby, informacji zwrotnej oraz możliwości powtórzenia i korekty błędów”. (s. 20–21) Książka Cognition in Practice: Mind, Mathematics and Culture in Everyday Life jest interesującym odniesieniem do tego punktu widzenia.

  • Rozmawiaj z innymi programistami; czytaj inne programy . Jest to ważniejsze niż jakakolwiek książka lub kurs szkoleniowy.

  • Jeśli chcesz, poświęć cztery lata na studia (lub więcej na studiach). Zapewni to dostęp do niektórych zadań wymagających poświadczeń i pozwoli na głębsze zrozumienie dziedziny, ale jeśli nie lubisz szkoły, możesz (z pewnym poświęceniem) uzyskać podobne doświadczenie samodzielnie lub w pracy . W każdym razie sama nauka książek nie wystarczy. „Edukacja informatyczna nie może uczynić nikogo ekspertem-programistą bardziej niż studiowanie pędzli, a pigment może uczynić kogoś ekspertem-malarzem”, mówi Eric Raymond, autor The New Hacker's Dictionary. Jeden z najlepszych programistów, których kiedykolwiek zatrudniłem, miał jedynie wykształcenie średnie; wyprodukował wiele świetnych programów, ma własną grupę wiadomości i zrobił wystarczająco dużo opcji na akcje, aby kupić własny klub nocny.

  • Pracuj nad projektami z innymi programistami . Być najlepszym programistą w niektórych projektach; być najgorszym na niektórych innych. Kiedy jesteś najlepszy, możesz przetestować swoje umiejętności kierowania projektem i inspirować innych swoją wizją. Kiedy jesteś najgorszy, dowiadujesz się, co robią mistrzowie, i dowiadujesz się, czego nie lubią robić (bo każą ci to robić za nich).

  • Pracuj nad projektami po innych programistach . Zrozum program napisany przez kogoś innego. Zobacz, co trzeba zrozumieć i naprawić, gdy nie ma oryginalnych programistów. Pomyśl o tym, jak zaprojektować swoje programy, aby były łatwiejsze dla tych, którzy będą je utrzymywać po tobie.

  • Naucz się co najmniej pół tuzina języków programowania. Dołącz jeden język, który obsługuje abstrakcje klas (jak Java lub C ++), jeden, który obsługuje abstrakcję funkcjonalną (jak Lisp lub ML), jeden, który obsługuje abstrakcję składniową (jak Lisp), jeden, który obsługuje deklaratywne specyfikacje (jak szablony Prolog lub C ++), jeden który obsługuje coroutines (jak Icon lub Scheme) i taki, który obsługuje paralelizm (jak Sisal).

  • Pamiętaj, że w „informatyce” występuje „komputer”. Dowiedz się, ile czasu zajmuje komputerowi wykonanie instrukcji, pobranie słowa z pamięci (z pominięciem pamięci podręcznej i bez niej), odczytanie kolejnych słów z dysku i poszukiwanie nowej lokalizacji na dysku. (Odpowiedzi tutaj.)

  • Zaangażuj się w wysiłki na rzecz standaryzacji języka. Może to być komitet ANSI C ++ lub może decydować, czy Twój lokalny styl kodowania będzie miał 2 lub 4 poziomy wcięcia przestrzeni. Tak czy inaczej, dowiadujesz się, co lubią inni ludzie w języku, jak głęboko się tak czują, a może nawet trochę o tym, dlaczego tak się czują.

  • Miej dobry rozsądek, aby jak najszybciej zakończyć wysiłki związane z normalizacją języka.

BЈовић
źródło
3

Proponuję wytrenować się, skutecznie pisząc programy funkcjonalne. Weź większy projekt, gdy uznasz, że masz podstawy. Poznaj ramy qt do tworzenia oprogramowania i ćwicz dalej. Najlepszym sposobem na naukę programowania jest pisanie kodu.

Powiedziałbym, że czytanie również odgrywa ważną rolę, możesz poszukać zespołu programistów, którzy prowadzą projekt open source (poszukaj jednego na github lub innych podobnych stronach), ponieważ mogą zaoferować ci cenne doświadczenie w rozwoju zespołu.

Bugster
źródło
2

Czasami miejsca takie jak sourceforge na początku są nieco zniechęcające. Naprawdę fajnym sposobem na znalezienie czegoś do zrobienia, jest przeszukanie programów do śledzenia problemów projektów i znalezienie błędu / problemu, który podoba Ci się dźwiękiem naprawy.

W niektórych małych projektach github staje się to znacznie bardziej dostępne. Skutecznie masz cel i cel, próbując przeszukać kod, zamiast brnąć w nim na ślepo.

lwm
źródło
1

Próbki w książkach lub zadania na uniwersytecie są dobrym punktem wyjścia do zrozumienia, jak działa programowanie i pokazują możliwości przyszłych projektów.

Pracuj nad prawdziwymi projektami

Ale bez prawdziwego doświadczenia projektowego często zapominacie o rzeczach, których się nauczyliście.

Problemy to okazja, aby pokazać, co potrafisz

Dodatkowo widzisz w prawdziwym projekcie, jak skomplikowane mogą być wymagania, i doświadczasz trudnych problemów. Problemy te są okazjami, aby pokazać, co możesz. Możesz zobaczyć swoje słabe strony, które powinieneś poprawić.

Kayser
źródło
-1

czy muszę się uczyć php, mySQL lub innego języka?

Tak proszę pana, proszę wziąć pod uwagę języki światowej sieci. HTML5, CSS3 i JavaScript.

Oto dlaczego:

  1. Szybko się uczą i są coraz bogatsi we wdrażanie.

  2. Nie tylko piszą już w Internecie, ale także OS, serwer i bazę danych.

  3. Co najważniejsze *

    Są one teraz używane do ponownego zdefiniowania Computer Science 101 - przez twórcę jQuery, Johna Resiga.

Nie strzelaj do posłańca, po prostu sprawdź ten link do szkolnej akademii khan .

c / c ++ / c # wzorce projektowe są tam przenoszone do JS.

Mam nadzieję, że to pomaga.

Jack Stone
źródło
+1 - Tak źle, że zostało to odrzucone. Informacje są prawidłowe. Link jest wiarygodny. Źródłem jest jQuery Genius John Resig - rozpoczęcie kursu programowania 101 z JavaScript, i będzie działać. Sprawdź Khan Academy. Pozytywnie oceniaj potencjał rozwoju edukacji; przynajmniej. Dzięki.
Jack Stone,