Ok, od jakiegoś czasu uczę znajomego, jak programować. Jest bardzo szybkim uczniem i na razie jest całkiem dobry w programowaniu. Ma jednak jeden „problem”, który ciągle próbuję rozwiązać.
Wskakuje i zaczyna programować na wysokim poziomie, nie ucząc się podstaw (stworzył pełnowartościową aplikację internetową, ale wciąż nie zna stronicowania ani zarządzania sesjami).
Ale to nie jest problem. Wciąż przeskakuje do nowej technologii (Node.js, MongoDB, EC2 itp.). Próbowałem mu powiedzieć, że powinien nauczyć się kilku podstawowych informacji na temat wybranego przez siebie RDMS (MySQL), ponieważ używa go codziennie, zanim zainwestuje sporo czasu w naukę podstaw MongoDB (i prawdopodobnie przejdzie do czegoś nowego).
Czy to ja tu jestem w błędzie, czy powinien starać się skupiać na jednej rzeczy na raz i być w tym naprawdę dobry?
źródło
Odpowiedzi:
Osobiście uważam, że dobrym pomysłem może być wypróbowanie różnych technologii i języków podczas nauki programowania. Skupienie się na jednej technologii ma oczywistą zaletę, dzięki której jesteś w niej bardzo dobry, ale oczywistą wadą jest znajomość tylko jednej technologii.
Ale myślę, że ważniejszym subtelniejszym minusem jest to, że języki i ramy generalnie mają ideologię. Jest wielu programistów (być może większość programistów), którzy stosują tylko jedną ideologię we wszystkim, co programują. Często dzieje się tak dlatego, że naprawdę dobrze nauczyli się jednego frameworku w jednym języku, a teraz nie widzą niczego bez tych okularów.
Zwłaszcza dla kogoś, kto dopiero uczy się programować, nie sądzę, że to problem, aby spróbować tego, co tam jest, i poczekać, aż skupię się na czymś później. W końcu trudno będzie napisać coś znaczącego, nie znając dobrze technologii.
źródło
Po obu stronach tej kwestii istnieje dobre uzasadnienie. Znajomość „ wystarczającej ” liczby różnych technologii jest z pewnością cenna. Wiedząc „ trochę ” o wielu różnych technologiach? Nie tak bardzo.
Głęboka znajomość określonych technologii może być z pewnością cenna - JEŚLI istnieje stałe zapotrzebowanie na nie. Wiedząc „ wszystko, co trzeba wiedzieć ” na temat konkretnej technologii? ... najprawdopodobniej przesada.
Wszystko jest w równowadze. Jeśli skończy budować wspaniałe aplikacje za pomocą nosql, dlaczego miałby znać różnicę między silnikiem InnoDB a silnikiem MyISAM?
źródło
Częściowo się zgadzam. Musi znać podstawowe zasady - ale nie musi po prostu siadać na jednej rzeczy i być w tym naprawdę dobry. Nikt tego nie robi.
Usiąść z jedną rzeczą i stać się naprawdę dobrym
Obecnie pracuję z C # i Microsoft XNA, aby stworzyć grę. Uczę się dużo na temat XNA w trakcie pracy i chociaż jestem już dość kompetentny w C #, moja wiedza stopniowo się poszerza (dziś dowiedziałem się o ograniczeniach parametrów typu ).
Jednak nie muszę być „naprawdę dobry” na XNA lub C #. Gdybym miał teraz zakończyć swój projekt i przejść dalej i nigdy więcej nie używać żadnego z nich, byłbym całkowicie zadowolony, a moja nauka byłaby kontynuowana gdzie indziej.
Zasady są jednak ważne
Przynajmniej rozumiem podstawowe zasady. Kiedy tworzę rzeczy w C # i XNA, rozumiem, co robię - a jeśli nie, to dowiaduję się o tym.
Gdybym napisał paginację, zrozumiałbym, jak działa paginacja. Jeśli twój przyjaciel stworzył podział na strony i nie ma pojęcia, jak to działa, jest to problem. Jeśli nie stworzył paginacji, nie ma powodu, dla którego musiałby wiedzieć.
Problem w tym, że: czy on wie, co @ $ #! robi, czy jest programistą, który nie ma pojęcia, jak programować?
źródło
Zgaduję, że próbuje innych języków, ponieważ ma coś, co chce zbudować. Zawsze możesz wrócić do języka lub struktury i dowiedzieć się więcej.
Pomiędzy uczeniem się teorii / budowaniem podstaw a próbą utrzymania motywacji istnieje cienka granica.
Przynajmniej nie utknął w jednym języku. Czasami bierzesz dobro ze złem.
źródło
Uważam, że jego podejście jest raczej zaletą niż zobowiązaniem. Jego zdolność do prowadzenia badań jest powyżej średniej. Jego krzywa uczenia się jest również płytka. Wykorzystaj te cechy, jeśli chcesz, żeby się czegoś nauczył.
Jego dociekliwy umysł jest zawsze w ruchu, dlaczego nie dać mu wskazówek. Zacznij od wyjaśnienia mu, dlaczego paginacja jest ważna i niezbędna. Pozwól mu spojrzeć na strony z paginacją i strony bez nich.
Co powiesz na konstruktywną krytykę tego, co robi. „Wow, zrobiłeś coś wspaniałego, ale czy nie byłoby lepiej, gdybyś zrobił to w ten sposób, kładąc nacisk na optymalizację i najlepsze praktyki.
Myślę, że dokonanie porównania dobrej i złej praktyki może naprawdę pobudzić jego umysł.
Nie ograniczaj go, w końcu znajdzie coś, co chciałby i przez jakiś czas się z tym godzi. Gdybym był tobą, zapewniam mu wiele materiałów do nauki na temat rzeczy, które jest jego pasją.
Myślę, że on robi podejście od góry do dołu, podczas gdy ty z drugiej strony chcesz, aby zrobił podejście od dołu do góry
źródło
Czemu to jest złe?
Przeciwnie, myślę, że to bardzo dobrze! Pokazuje ciekawość i chęć do nauki. Co więcej, chce znaleźć odpowiednie narzędzie do właściwej pracy! Lepiej niż trzymać się nieodpowiedniej technologii pierwszego wyboru. ;)
W rzeczywistości robię to podobnie, jako doświadczony programista. I polecam to. Ilekroć mam nowy projekt, moje zachowanie jest następujące:
Myślę, że to ma sens.
źródło
Osobiście, gdyby ktoś musiał skupić się tylko na jednej technologii, powiedziałbym, że powinna to być C # / Java, używana wraz z SQL.
Wierzę, że dzięki temu możesz dostosować się do dowolnej innej technologii.
Ale trzymanie się jednej technologii może być ograniczające, jeśli facet chce wejść do środowiska korporacyjnego.
Idealnie, jedna platforma obiektowa, jedna platforma mobilna, jedna platforma internetowa, a następnie bardzo dobra znajomość SQL (lub dowolnego innego środowiska db).
Najpierw podstawy, w przeciwnym razie utknie później!
źródło
Nie jest źle, jeśli jest on początkującym w programowaniu.
Zobaczy, jak działają niektóre rzeczy. Ale jeśli nie rozumie, co robi, lepiej w ogóle tego nie robić.
Miałem ten problem ze sobą, chcę wiedzieć wszystko Java, C, C ++, C #, Phyton, ASP.NET ... itd., Ale zdałem sobie sprawę, że nie mogę tego wszystkiego wiedzieć, więc skupiłem się na kilku rzeczach i to dużo lepszy.
Więc co powinien zrobić (doradzić mu):
Nie zgodziłbym się z @arnaud, jeśli zawsze odkrywasz i uczysz się nowych rzeczy, gdy nowy projekt jest przed tobą (cóż, nie do końca). Przeszukiwanie i uczenie się nowych rzeczy zajmuje zbyt wiele czasu, a niektóre projekty mają limit czasowy. Ale z drugiej strony, jeśli chcesz nauczyć się kilku prostych nowych rzeczy, jest w porządku: D.
źródło
Zgadzam się z tobą, że czasami łatwo jest uzyskać powierzchowną wiedzę na temat konkretnego frameworku, technologii lub języka, ale aby naprawdę zrozumieć, najlepiej jest zaangażować się w rozwój prawdziwego świata aż do jego ukończenia i utrzymać go - stać się kimś, kogo inni przyjść po poradę. Lepiej zostać waletem wszystkich zawodów, mistrzem jednego, a nie waletem wszystkich zawodów, mistrzem żadnego . Powiedziawszy to, nie zniechęciłbym go do nauki nowych rzeczy, ponieważ oczywiście ma dobry poziom entuzjazmu.
źródło