Oto trochę informacji o mnie, zanim zacznę od pytania.
Jestem studentem informatyki, Java jest moim głównym językiem programowania.
Podstawowym problemem na moim uniwersytecie są standardy nauczania. Nikt nie przejmuje się nauczaniem studentów kodowania wiedzy, a nie tylko wiedzą teoretyczną.
W rezultacie większość moich kolegów z college'u w ogóle nie rozumie programowania.
Nawet ja nie byłem w stanie wyjść z tradycyjnego środowiska programistycznego, które do pewnego stopnia ogranicza moje kodowanie.
Jakie są możliwe sposoby, dzięki którym mogę rozwijać i rozszerzać swoje umiejętności programowania / kodowania.
Czy możesz również zasugerować źródła tego samego?
Edytowano : Źródła sugerujące rozwój umiejętności kodowania.
Odpowiedzi:
Programowanie jest jedną z dziedzin, w których liczy się doświadczenie. Dlatego, aby stać się lepszym koderem, powinieneś kodować więcej. Jednak pisanie nie jest jedyną rzeczą, którą powinieneś zrobić. Powinieneś także przeczytać kod innych programistów i nauczyć się z niego, czym jest dobry kod. Zobacz SO pytania na ten temat .
Przydadzą Ci się także książki poświęcone kodowaniu. takie jak „Kod zakończony”. Zawierają opis tego, czym jest dobry kod, co w połączeniu z twoją podstawową wiedzą może uczynić cię dobrym programistą.
źródło
must-read
liście. :) Dzięki!(push 'code-complete must-read)
Mój ulubiony cytat pochodzi z Konfucjusza:
Cała wiedza, którą zdobyłem, pochodziła z zastosowania jednej strategii:
Chcesz nauczyć się języka C #? Zdobądź pracę jako programista C #.
Chcesz nauczyć się włoskiego? Idź tam ze słownikiem po angielsku / włosku i porozmawiaj po włosku
Chcesz nauczyć się kodowania? Kod!
źródło
Kodowanie to świetna rada, ale bez kogoś, kto udzieli ci informacji zwrotnej, po prostu powtórzysz swoje błędy. Znajdź pracę, pracuj nad projektem open source, znajdź mentora i poproś go, aby spojrzał na Twój kod.
źródło
Oto prezentacja Dan North i QCon na temat przejścia od nowicjusza do eksperta programisty o nazwie Sharpening the Tools . Poniżej znajdują się kluczowe sugestie z prezentacji:
źródło
Spróbuj napisać od podstaw kompilator dla jakiegoś prostego języka. Po drodze znacznie poprawisz swoje umiejętności (dzięki dodatkowym fajnym technikom teoretycznym z formalnej teorii języka). Próbowałem napisać prostą wersję programu Excel i jest to również bardzo miłe ćwiczenie.
Jak inni powiedzieli, jedynym sposobem na poprawę swoich umiejętności kodowania jest faktyczne wykonanie tego. Zabrudz swoją rękę przy niektórych dużych projektach. Ale w przypadku dużego programu jeszcze ważniejsze jest opanowanie technik projektowania oprogramowania, w przeciwnym razie rozmiar programu wydaje się niemożliwy do zarządzania.
Jest jeden fajny cytat z Nate Kirby:
Zatem przełączanie między tymi dwoma poziomami abstrakcji jest umiejętnością, którą należy opanować.
Również szybkość, o ile wierszy kodu możesz pisać na godzinę, nie jest tym, do czego powinieneś dążyć. Podoba mi się cytat Davida Parnasa :
źródło
Zaimplementowałem pulę zakładów lub grę Baccarat w prawie każdym języku, którego się nauczyłem.
Ten rodzaj oprogramowania obejmuje
Blackjack i poker dla wielu graczy również by działały.
Jednym zastrzeżeniem jest to, że w mojej codziennej pracy pracuję nad systemami finansowymi i istnieje ogromne nakładanie się rzeczy do rozważenia przy pisaniu gry losowej dla wielu graczy i systemu handlowego.
źródło
źródło
Pomyśl o tym w ten sposób ... Tiger Woods nie stał się „najlepszym” golfistą, oglądając golfa lub czytając o nim. Osiągnął to w ten sam sposób, jak każdy inny sportowiec, studiując, ćwicząc, znajdując miejsce, w którym może poprawić swoją grę i coś z tym zrobić.
Kodowanie jest takie samo. Najlepszym sposobem, aby być w tym lepszym, jest przestudiowanie tego, co robią inni, zrozumienie DLACZEGO robią to w ten sposób, a następnie zrobienie tego dla siebie.
źródło
Jak w każdej innej działalności człowieka, najlepszym sposobem na ulepszenie jest ćwiczenie wiedzy, ale do tego potrzebne są ćwiczenia. Dave Thomas , jeden z autorów książki The Pragmatic Programmer, przedstawił koncepcję Code Katas , podobną do koncepcji kata w sztukach walki.
Możesz tam zajrzeć: http://codekata.pragprog.com/
źródło
Wskocz do wody, początkowo może być zimno i będziesz miał ochotę się wydostać, ale wkrótce twoje ciało przyzwyczai się i ogrzeje ponownie, a gdy poczujesz się dobrze w wodzie, możesz potem popływać Głęboki koniec.
Właśnie skończyłem studia kilka miesięcy temu, gdzie studiowałem Javę. Tak jak ty, nie miałem pojęcia, jak poprawnie kodować. Około miesiąc temu chciałem zbudować aplikację internetową w PHP. Nie wiedziałam, co robię, ale po prostu poszłam. Na początku było to zastraszające i przytłaczające, ale kiedy ćwiczysz, staje się naturalne. Aplikacja napisałem nawet wiele razy, za każdym razem upraszczając ją jeszcze bardziej. Teraz pracuję nad aplikacją od zera, ale tym razem zastanawiam się, jak to zrobić zorientowany na obiekcje i używając PEAR i jego modułu szybkiego formularza, co jest kolejną przeszkodą, którą muszę pokonać, ale mimo to zdeterminowany i podekscytowany.
Więc ćwicz. Wskocz do wody! Powodzenia :)
źródło
Proponuję nauczyć się całej składni twojego ulubionego języka. Dowiedz się, jak korzystać z funkcji wirtualnych, dziedziczenia, lambda, jeśli istnieją. itd. Jedną rzeczą, którą zrobiłem, było wzięcie dużej przerażającej biblioteki (zrobiłem to z boostem i STL dla C ++) i sprawdziłem, czy każda linia i każde słowo kluczowe ma sens.
Lub alternatywnie możesz przeczytać odwołanie do składni języka, jeśli istnieje taki, który obejmuje najbardziej aktualną wersję. Przykładem jest tutaj odwołanie do C # (nie wersja u góry. Popełniłem błąd, patrząc na popularniejszą starszą wersję, która nie miała składni, której szukałem)
źródło
Ogólny konsensus brzmi: „pisz więcej kodu”, z czym się zgadzam, ale dodam do tej rady, że powinieneś pisać wiele różnych rodzajów kodu. Java jest w porządku, jeśli chodzi o języki, ale zdecydowanie powinieneś pisać kod zarówno w górę, jak i w dół spektrum mocy. Oprócz Javy sugeruję wykonanie kilku małych projektów w języku niższego poziomu (C jest do tego dobry), języku skryptowym (wolę perla, ale python jest również dobrym wyborem), języku funkcjonalnym ( lisp jest tutaj ogólną rekomendacją, ale OCaml i Haskell to również dobre wybory) i przynajmniej zadowalają się czytaniem języka asemblera.
Wybierz też różnorodność typów programów, które wdrażasz. Spójrz na implementację przynajmniej graficznego interfejsu użytkownika, bogatej aplikacji internetowej, klienta i serwera sieciowego, sterownika, narzędzia do mungowania danych, ray tracera i symulacji fizyki.
Wszystkie projekty powinny mieć stosunkowo niewielki zakres, celem nie jest posiadanie interesującego programu, ale zdobycie szerokiego wachlarza doświadczeń w różnych domenach, w których możesz się natknąć, aby nauczyć się różnych rodzajów myślenia potrzebnych dla każdego z nich, i dowiedzieć się, gdzie są twoje zainteresowania.
Gdy to zrobisz, będziesz mieć dobry pomysł na program, który najbardziej Cię interesuje, i możesz znaleźć lub rozpocząć projekt open source, aby uzyskać doświadczenie w pracy z dużymi bazami kodu, zajmującymi się długo- projekty terminowe i współpraca z innymi programistami.
źródło
Otrzymujesz kilka podobnych odpowiedzi, a moje też będą takie same. Napisz kod. Istnieją dwa dobre sposoby, aby to zrobić.
Każda z tych opcji zapewni Ci bezpośrednie doświadczenie w programowaniu, a także zaangażowanie w społeczności programistyczne, gdy będziesz się uczyć i będziesz musiał zadawać pytania, aby uzyskać z niego więcej. Popełnisz wiele błędów. To dobrze - jeśli przestaniesz popełniać błędy, przestałeś się uczyć i musisz znaleźć nowy sposób na rzucenie sobie wyzwania.
źródło
Moje sugestie
źródło
Recenzje użytkowników naprawdę pomagają poprawić jakość twojego kodu. Jeśli nie masz prawdziwego mentora, możesz opublikować swój kod [po zredukowaniu go do niezbędnego minimum] na StackOverflow lub RefactorMyCode lub listach mailingowych, a ludzie pomogą ci poprawić jakość twojego kodu.
źródło
"Ćwiczyć!" To jest banał.
Powinieneś przejrzeć to, czego nauczyłeś się na lekcjach matematyki, i stworzyć programy, które zajmą się problemami. Ponadto zaimplementuj program windy, automat (obliczający zmiany monet), aby wyostrzyć swoje umiejętności logiczne. Pomyśl o wszystkim w życiu codziennym i wdrażaj je.
źródło
Tak, ćwiczenie jest niezwykle ważne, aby rozwijać umiejętności programowania i zachować ich ostrość. Jednak sama praktyka zabierze cię tylko do tej pory. Musisz także uczyć się od ludzi, którzy wiedzą więcej niż ty. Są techniki, o których nigdy nie słyszałeś, praktyki, których korzyści nie są od razu oczywiste, i sztuczki, których nigdy nie wymyślisz sam.
Istnieje wiele sposobów uczenia się nowych technik, zgrabnych sztuczek i przydatnych praktyk. Czytać książki. Porozmawiaj ze współpracownikami. Zadawać pytania. Przejrzyj kod innych osób i poproś ich o sprawdzenie Twojego. Czytaj blogi i artykuły na temat programowania, w tym na tej stronie. Krótko mówiąc, nie pracuj w próżni.
Aha, a jeśli nie jesteś pewien, co oznacza NP-zupełny, lub jeśli notacja big-O Cię przeraża, prawdopodobnie powinieneś wziąć trochę teorii obliczeń i klas algorytmów.
źródło
Powiedziałbym, że powinieneś przeczytać o wzorcach projektowych, takich jak Builder, Factory, Composite, a ostatecznie Observer, Mediator i Flyweight. Wzorce projektowe nie są ostatecznym rozwiązaniem dla rozwiązań kodujących, ale pokazują, jak wdrożyć teoretyczne koncepcje programowania obiektowego.
źródło
Mogę tylko zasugerować to, co dla mnie zadziałało. Marzyłem, aby nauczyć się języka programowania i stworzyć z nim silnik szachowy. Zostawiłem czas na książki, artykuły i małe próbki. Postanowiłem więc sprawdzić prawdziwe projekty, które mają lepszą dokumentację dla programistów. Wybrałem jeden i zacząłem czytać projekt z dnia na dzień. Nie myśl, że mijające dni tracą czas na czytanie. To znacznie lepsze niż spędzanie czasu na czytaniu artykułów i książek. Bardzo napotkasz wiele rzeczy, które nie są jasne na pierwszy rzut oka, ale z dnia na dzień to się zmieni, jeśli będziesz cierpliwie próbował badać. Nie spodziewaj się, że zrozumiesz wszystko w ciągu tygodnia. Musisz zachować niski poziom samooceny, gdy nie rozumiesz niektórych rzeczy. Po prostu spróbuj odkryć, jak ta * niesamowita rzecz działa i sprawia przyjemność.
Wybierz istniejący projekt, który ci się podoba. Zacznij czytać kody, debuguj je i staraj się zrozumieć, jak to działa na co dzień. Skorzystaj również z projektu dla siebie. Następnie zacznij dodawać wybrane funkcje. Spróbuj nawet napisać tę samą lub podobną aplikację.
źródło