Czy programiści potrzebują dobrej pamięci? [Zamknięte]
16
Wydaje się, że trzeba pamiętać wszystkie rodzaje składni, aby móc programować. Jeśli nie ma się dobrej pamięci do zapamiętywania nazw, trudniej będzie nauczyć się programować?
Istniała nazwa dobrej pamięci dla imion, ale zapomniałem, co to jest.
Mike Two
3
Jeśli składnia stanowi problem, wybierz język o minimalnej składni. Lisp / Clojure?
Chiron
1
Obecnie nie spędzam całego dnia na programowaniu, ale spędzam trochę czasu na codzienne programowanie. I programuję w wielu językach, które nie są do siebie podobne. Od czasu do czasu programuję w C, Java, Javascript, Lisp, VBA, PL / SQL, Ruby, Python, Perl, Smalltalk, a nawet trochę Prologu. Po prostu szukam składni.
Mike Sherrill „Cat Recall”
4
Jeśli tak, to udawałem to od około 13 lat.
ElGringoGrande
1
Uniwersytety z pewnością uczą tego, jak potrzebujesz dobrej pamięci, co jest całkowicie głupie. Mój jest szczególnie znany z tego, że wymaga, aby egzaminy końcowe CS były warte co najmniej 50% (zawsze zamknięta książka), a semestry zwykle co najmniej 30-40%.
Rei Miyasaka,
Odpowiedzi:
34
Jeśli używasz go codziennie, składnia języka nie jest tak trudna, jak myślisz. W końcu staje się bardzo łatwe. Zapamiętywanie wszystkich różnych funkcji bibliotecznych może być znacznie trudniejsze i nie sądzę, że większość ludzi pamięta więcej niż te najczęściej używane, ale jest to w porządku, jeśli masz dostęp do Internetu, książki lub czegoś innego, co „ pamięta „wszystkie inne szczegóły dla Ciebie.
+1. To naprawdę staje się drugą naturą. Spoglądam wstecz na kod i nawet nie pamiętam, żeby stosować się do reguł formatowania, których przestrzegam ...
Reid
1
Kieszonkowe przewodniki O'Reilly pomagają mi śledzić różne rzeczy. Bardzo przydatne.
Inżynier świata
17
Wydaje się, że trzeba pamiętać wszystkie rodzaje składni, aby móc
programować mówienie językiem naturalnym.
Jeśli ktoś nie ma dobrą pamięć do pamiętania nazwy
słowa, to będzie trudniej nauczyć się programu
mówić?
Nie może być prawdą, że ludzie mają „naturalne” urządzenie z językami, prawda?
Nie może być prawdą, że mamy sprzęt neuronowy niskiego poziomu tylko do nauki języków, prawda?
Programowanie wykorzystuje sztuczne języki, które są zgodne z wieloma zasadami języków naturalnych.
Języki naturalne mają nieco większą elastyczność niż języki programowania.
gramatyka wciąż ścisła. zasady są bardzo, które Ale
Jeśli umiesz mówić, możesz nauczyć się programować bez zapamiętywania niczego więcej niż tego, co zapamiętałeś, kiedy nauczyłeś się mówić.
Jeśli mówisz o pamięci krótkoterminowej, to tak . programista musi być w stanie żonglować wieloma bitami informacji jednocześnie podczas programowania / rozwiązywania problemów.
Nie:
Jeśli mówisz o pamięci długoterminowej, to nie do końca . Istnieje wiele instrukcji i odniesień + narzędzi, które mogą znacznie pomóc w przywołaniu informacji. Z pewnością zapamiętanie tych długoterminowych informacji sprawi, że będziesz szybszym programistą (ogólnie), ale nie jest to warunkiem koniecznym.
+1 Do sporządzenia pomocnego porównania przydatności pamięci krótko- i długoterminowej w odniesieniu do pytania. Czekałem, aż ktoś to zrobi.
KChaloux,
8
Dobra pamięć jest absolutnie niezbędna, ale nie z oczywistych powodów.
Zapamiętywanie szczegółów na temat określonych algorytmów, bibliotek, nazw zmiennych itp. Jest bardzo przydatne, ale nie jest bardzo ważne. Masz Google, DuckDuckGo, strony podręcznika, dokumentację specyficzną dla języka i inteligentne edytory, które pomogą Ci we wszystkich powyższych. Pomaga, jeśli nie musisz polegać na tych kulach, ale poradzisz sobie, jeśli będziesz ich potrzebował od czasu do czasu.
Istotna jest pamięć, która polega na zachowaniu szczegółów tego, nad czym pracujesz, w aktywnej pamięci krótkotrwałej. Możliwość wizualizacji projektu, przepływu danych, algorytmów, struktur danych oraz ich wzajemnego oddziaływania w celu zrobienia tego, co robi twój produkt, oddziela programistę OK od wielkiego programisty. Kiedy aktywnie to robisz, masz wrażenie, że z powodzeniem żonglujesz ogromną liczbą piłek podczas jazdy na monocyklu.
Jest to często określane jako przebywanie w strefie . Przerwy, głupie pytania, szefowie potrzebujący raportów TPS wszyscy wstrząsają tą strefą.
Im lepsza jest twoja pamięć, tym łatwiej jest dostać się do strefy, tym łatwiej jest tam pozostać i łatwiej jest wrócić do niej po przerwie.
Jeśli masz problemy z tego rodzaju pamięcią, sugeruję nauczenie się technik medytacji i sztuczek pamięci, ponieważ im łatwiejsza staje się twoja pamięć, tym większy sukces odniesiesz jako programista.
Powiedziałbym, że wymagania dotyczące pamięci są zmniejszone, jeśli lepiej zmodularyzujesz program i nadasz odpowiednie nazwy. Jeśli masz dwustronicową metodę z 20 zmiennymi, musisz pamiętać o wiele więcej niż jeśli masz metodę 5-liniową z wywołaniami innych dobrze nazwanych metod wykonywania zadań podrzędnych. Również za każdym razem, gdy chcesz zmodyfikować coś tak złożonego, musisz przejść do „strefy”, aby to zrobić. Natomiast jeśli jest to prostsze, możesz po prostu dokonać zmiany. Powiedziałbym, że „strefa” jest zobowiązaniem.
Cervo,
1
@Cervo - Tak, kiedy kodujesz poszczególne moduły i małe jednostki kodu, to co opisuję powyżej nie jest tak naprawdę konieczne. Ale kiedy debugujesz cały system i próbujesz znaleźć ładny, schludny i czysty moduł, w którym znajduje się problem, pomagasz zachować jak najwięcej stanu.
niepythonic
Dlaczego na świecie miał to tylko jeden głos? Nie możesz poprawnie zaprojektować kodu, nie pamiętając, jak pasuje do otaczających go elementów. Wiele współczesnych programów polega na zmniejszaniu ilości szczegółów, ale to po prostu zmniejsza ilość, którą musisz pamiętać, a nie fakt, że musisz pamiętać o tym, aby wykonać swoją pracę.
Loren Pechtel
5
Idę pod prąd i powiedzieć tak . Dobra pamięć to niesamowity zasób programisty. Moja pamięć zawsze uważałem za zobowiązanie programistyczne, więc wybrałem kilka sztuczek, aby zrekompensować mój handicap:
Powinieneś być w stanie zapamiętać, jak ta zmienna (której wcześniej używałeś 3 wiersze) Jeśli nie możesz nauczyć się korzystać z Intellisense (lub jakiejkolwiek formy autouzupełniania jest w edytorze lub IDE).
Powinieneś być w stanie szybko zapamiętać, co robiłeś podczas ostatniej pracy nad tym projektem. To mogło być kilka dni temu, mogło być tuż przed lunchem. Jeśli nie możesz, naucz się zapisywać różne rzeczy . Trzymaj ze sobą notatnik i pisz co robiłeś (aś), rzeczy do zrobienia (TODO) i rzeczy, o których musisz pamiętać o tym, jak dopasowuje się bieżący kod.
Debugowanie i kontrola jakości są trudne. Idealnie byłoby zachować bardzo szczegółowy notatnik na temat kroków, które podjąłeś, próbując odtworzyć błąd lub coś debugować. Wiem, że powinienem to zrobić, ale nadal mam z tym problem.
Guerrilla Guide to Interviewing (wersja 3.0) to powszechne odniesienie, w którym inteligentne notatki i robienie rzeczy są ważnymi punktami programowania. Smart obejmuje pewne umiejętności pamięci, ale niekoniecznie tyle, ile myślisz.
Intellisense może bardzo pomóc w składni, jeśli potrzebujesz pomocy po tej stronie. Wiedza o tym, jak się uczysz, abyś mógł szybko zastosować sens tego, czego się uczysz, w znaczący sposób, jest ważniejszy niż umiejętność odpowiadania na pytania z ciekawostek.
Uważam, że zapamiętywanie nazw jest raczej inną funkcją poznawczą niż zapamiętywanie procesów, które różni się od zapamiętywania słowników. Zdarzały się przypadki osób, które doznały urazów mózgu, które całkowicie pozbawiły zdolność zapamiętywania nazwisk, a poza tym były w stanie doskonale funkcjonować w inny sposób.
Powiedziałbym więc, że umiejętność zapamiętywania nazw niezwiązanych z nauką języków programowania.
Przydałoby się jednak pamiętać logiczne wzorce, zasady i słownictwo.
Jestem pewien, że masz rację. Wskaźnik typu Myers-Briggs mówi, że INTP (szczególnie przystosowani do zostania programistami) mają problemy z zapamiętywaniem nazwisk ludzi. Wiem to w moim przypadku. Pamiętam imiona twoich zwierzaków, tablicę rejestracyjną samochodu i miejsce, w którym umieściłem wydruk stosu, który mi dałeś w zeszłym roku, który miał dziwne znaki nowej linii jako 0x0D0A0D. Jednak twoje imię zapomnę o 10 minutach. (Kiedy byłem młodszy, zajęło mi trzy lata, aby zdobyć nazwiska wszystkich ludzi w mojej drużynie piłkarskiej.)
Mike Sherrill „Cat Recall”
2
Nie. Głębokość pamięci narzędzi (Intellisense, Google, kompilatory, generatory kodów) jest nieskończona w porównaniu do ludzkiej pamięci. Więc programista z dobrą pamięcią nie jest dużo lepszy niż ten z dziurą w głowie.
Programiści tak naprawdę potrzebują „maksymalnej prędkości skupiania”, gdy przełączają się między poziomami abstrakcji. Im szybciej możesz, tym lepiej jesteś programistą. Niektóre mają szybkość bicia serca, taką jak 500 ms, a wraz z nadejściem pierwszej fali krwi do mózgu jesteś skupiony. Niektóre mają zegar skupienia zaokrąglony do cyklu palenia, około 2 godzin. Niektórzy potrzebują porannego prysznica, więc około 24 godzin. itp. Różnica między dobrym a złym programistą została kiedyś zadeklarowana 1:80 razy temu, a różnica ta tylko się powiększa.
Nie, musisz tylko zrozumieć, jak działa Google, aby uzyskać to, czego chcesz
Mam okropną pamięć, ale moje umiejętności Googlowania są niesamowite ^ _ ^
Z całą powagą, o ile wiesz, gdzie znaleźć składnię, nie musisz jej pamiętać. Do tego właśnie służy intellisense, pliki pomocy, przewodniki, Internet itp.
Przede wszystkim nauka programowania jest trudna dla wszystkich. Dobra pamięć pomaga na pewno. Ale poświęcenie i zamiłowanie do uczenia się przez całe życie są cenniejsze. Uczenie się składni jest jak wszystko inne, powtarzanie.
W umiejętności programowania nie ma nic magicznego ani nadludzkiego. Po prostu poświęć na to około 10 000 godzin ... a będziesz mistrzem jak każda inna umiejętność. Oczywiście to 10 000 godzin treningu, a nie na ślepo i odrętwiająco powtarzające się błędy z przeszłości.
Napisałeś ten post po angielsku, z odpowiednią składnią. Oczywiście pamiętasz, jak używać języka. Musisz tylko nauczyć się nowego języka i używać go wystarczająco często, aby cały czas dobrze go rozumieć. W przeciwieństwie do języków zorientowanych na ludzi, języki programowania komputerowego zawsze dadzą Ci znać, gdy użyjesz niepoprawnej składni, więc w rzeczywistości jest to łatwiejsze. :-)
Zgadzam się, że istnieje wiele różnych rzeczy, które przeciętny programista może wiedzieć, aby wykonać swoje zadania, po prostu pomyśl o wszystkich słowach, składniach, technikach, które powinieneś zasadniczo kontrolować, aby zbudować prostą stronę internetową (w interfejsie: html, css, javascript (możesz liczyć również niektóre frameworki Js jako jquery), ajax, na zapleczu: Php lub ASP lub ASP.Net i nie zapomnij o bazach danych, mySql lub SqlServer lub Oracle lub MongoDB itp. Istnieje ogromna lista języków, paradygmatów, sintaksji, wzorów itp., Nie można zapamiętać ich wszystkich.
Uważa, że to, co czyni dobrego programistę, to ćwiczyć, ćwiczyć z algorytmami bardziej niż z językami, i dzięki temu w końcu zapamiętasz rzeczy, których najczęściej używasz, dla reszty zawsze jest google = P
Jeśli potrafisz żonglować dziesiątkami fragmentów informacji w swojej głowie, będziesz miał znacznie łatwiejszy czas na zrozumienie (i mam nadzieję, że przepisanie) tego okropnego fragmentu kodu, który jest krytyczny dla projektu, ale tak skomplikowany, że wszyscy inni się boją dotknąć tego.
Z drugiej strony ten okropny fragment kodu, który ma kluczowe znaczenie dla projektu, ale jest tak skomplikowany, że wszyscy boją się go dotknąć, został prawdopodobnie napisany przez kogoś z niesamowitą umiejętnością żonglowania dziesiątkami bitów informacji. Jeśli masz świetną pamięć, pracuj bardzo ciężko, aby docenić elegancję prostoty.
Nauka składni języka programowania nie wymaga dużej pamięci. Jak powiedzieli inni, składnia jest tak wzmocniona w twojej pamięci, że szybko staje się drugą naturą. Czy zapomniałeś kiedyś, po której stronie drogi jedziesz? Które symbole arytmetyczne oznaczają dodawanie i odejmowanie? Jeśli nie, opanujesz najczęstsze części składni wybranego języka bez większych problemów i będziesz mógł wyszukać mniej powszechne bity, gdy się pojawią.
Niektóre biblioteki mają setki lub tysiące funkcji, klas i / lub metod. Nauka obcemu wydaje się niemożliwym zadaniem, aby nauczyć się korzystać z całej tej funkcjonalności. Ale prawie zawsze w bibliotece jest jakaś podstawowa struktura. Zamiast próbować zapamiętać wszystkie te funkcje, inteligentny programista próbuje zrozumieć, w jaki sposób biblioteka jest zorganizowana i co może zrobić. Po wykonaniu tej czynności zwykle łatwo jest znaleźć potrzebną funkcję, gdy jej potrzebujesz.
Krótko mówiąc, pamięć jest znacznie mniej ważna niż zrozumienie.
To zależy. W Javie i .NET biblioteki standardowe są w pewnym stopniu hierarchiczne i dobrze udokumentowane. Dlatego jeśli wiesz, że masz do czynienia z siecią, przejdź do system.net w C #, a stamtąd możesz przejść do konkretnych potrzebnych obiektów / połączeń. Pod tym względem nie musisz więc zapamiętywać szczegółów.
W twoim własnym programie chodzi o to, jak organizujesz / nazywasz rzeczy. Jeśli używasz nazw takich jak $, b $, c $ ... lub g $ z Podstawowego starego, to powodzenia. jeśli nazywasz rzeczy tak, jak myślisz o nich, np. Imię, nazwisko jest o wiele łatwiejsze. Wiele języków ma standardy nazewnictwa, które również pomagają. Na przykład w Javie istnieje konwencja setX, getX do pobierania / ustawiania określonych atrybutów klasy, a także konwencje wielkich liter. Więc jeśli wiesz, że osoba ma imię, to prawdopodobnie nazywa się ona firstName, a getter / setter to prawdopodobnie getFirstName i setFirstName ..... Więc te konwencje bardzo pomagają ...
Także krótsze metody / funkcje pomagają ci jednocześnie zachować mniej głowy. A używanie prawidłowych nazw pomaga uniknąć konieczności szukania. Na przykład, jeśli nazywasz rzeczy tym, co robią, to podczas czytania jednej procedury, która wywołuje getMaximumValue, prawdopodobnie nie będziesz musiał czytać getMaximumValue, aby dowiedzieć się, co robi ... Ale ponieważ funkcje / metody stają się dłuższe i bardziej zagnieżdżone, to lepsza pamięć zdecydowanie pomaga.
Pominąłem inteligencję, o której wspominał JB King, ale dla C # to też bardzo pomaga. Zwykle używam edytorów dla Java, które go nie mają :( Reszta nadal obowiązuje, jeśli zastosujesz krótsze metody, trzymaj się konwencji nazewnictwa, wtedy intellisense działa jeszcze lepiej. Jeśli masz 50 zmiennych w metodzie, intellisense może nadal odejść jesteś trochę przytłoczony
Cervo
Cervo Jestem przede wszystkim programistą C #, ale ostatnio robię coraz więcej w Javie. Wypróbuj IntelliJ Idea. Ich najnowsza wersja ma całkiem niezłą inteligencję. Nie Visual Studio dobre, ale blisko.
Adrian
0
Pamięć nie jest aż tak ważna. Jeśli w ogóle się o to martwisz, regularnie zapominam rano portfel lub klucze w moim domu. Przywołuję każdego pod niewłaściwym nazwiskiem przynajmniej raz (łącznie z moją rodziną i dziewczyną). Po prostu cały czas zapominam robić rzeczy w domu.
Pod koniec dnia zasady programowania nadal będą ci przypominać „nigdy nie zapomnisz, jak jeździć na rowerze”. Szczegółowe informacje i szczegóły dotyczące implementacji nie są tak ważne. Zawsze możesz je Google.
Wydajność zależy od możliwości żonglowania wieloma drobnymi szczegółami w pamięci krótkotrwałej naraz.
Tak więc pamięć krótkotrwała jest bardzo ważna dla programisty, któremu powierzono zadanie krytyczne.
Ale nie sądzę, żeby pamięć długoterminowa miała tak duże znaczenie.
Po szybkim przeczytaniu nie widziałem, żeby ktokolwiek mówił o pamięci w ogólnym sensie programowania, a nie jako pojedyncze zadanie pisania programu.
Pamięć jest przydatna do dwóch rzeczy:
Zapamiętywanie podstawowej semantyki / bibliotek:
Można to łatwo zastąpić powtórzeniami i Google. IOW, ilość pamięci, z którą się rodzisz, musi być absurdalnie niska, aby nie móc pokonać tego problemu.
Zapamiętywanie kontekstu w dużych programach:
Oto gdzie jest sztuczka. W miarę jak programy stają się większe (a ty stajesz się starszy), decyzje, które podejmujesz, całkowicie odnoszą się do twojej wiedzy o systemie i możliwości jego odzyskania w ciągu kilku milisekund, jeśli ma to być przydatne w dyskusjach projektowych, debugowaniu, reagowanie na sytuacje kryzysowe operacyjne itp. Gdy pojawi się potrzeba, żadna liczba wpisów w dokumentacji / wiki nie pomoże, a jedyny sposób, w jaki będziesz mógł korzystać z „czarodzieja” zespołu. Jest to jeden z powodów, dla których główni inżynierowie są tak bardzo cenieni / płaceni. Większość z nich może w tym momencie nie spędzać całego czasu na kodowaniu, spędzają więcej czasu na utrzymywaniu pełnego obrazu i stosowaniu go do wszelkich problemów / ulepszeń. Ci dobrzy utrzymują kontakt, wykonując masę CR i zmianę kodowania tu i tam / prototypowanie nowszych wersji.
IOW, możesz być rozsądnym programistą z samym numerem 1, ale jeśli kiedykolwiek będziesz następnym Linusem, lepiej mieć dużo pamięci, przynajmniej na tyle, aby objąć rozwiązany problem.
Z moich obserwacji mogę nawet powiedzieć, że pamięć robocza jest prawie wprost proporcjonalna do wartości osoby.
Małe zastrzeżenie na zakończenie: jeśli masz pamięć Eidetic, ale zero / niską moc intelektualną w stosowaniu tej logiki, nie będziesz dobry dla projektu niż kamera.
Jeśli masz trudności z zapamiętaniem nazwisk osób, które spotkasz, nadal możesz zostać świetnym programistą.
Cały czas zapominam ludzi. Jestem starszym programistą z prawie dekadą doświadczenia. W moim przypadku moja straszna pamięć słuchowa jest kompensowana przez świetną pamięć wzrokową.
Mimo to podstawowym warunkiem dobrego programisty jest umiejętność abstrakcji. Bez względu na to, ile i jak mało pamiętasz, jeśli nie rozumiesz pojęcia zmiennej i jak używać jej w programie, nie zostaniesz dobrym programistą.
Sugeruję, abyś spróbował jednego krótkiego kursu programowania lub ukończył samouczek języka Python, aby zobaczyć, jak ci się podoba.
To powinno dać ci dobry pomysł na to, czy programowanie to kariera, którą możesz być zainteresowany.
Obecnie uczę się JAVA i C #. Wszystkie testy są zamknięte, więc dla JAVA jest to w 100% z pamięci kodującej wszystkie aplikacje na egzaminach.
Co więcej, robi się coraz trudniej. Jestem teraz w punkcie, w którym muszę zacząć używać sztuczek pamięci, takich jak mnemoniki itp.
Powiedziałbym, że wysokie IQ, dobra wiedza ogólna, dobre słownictwo, polimatyzm, wyższa wiedza matematyczna, pisanie za pomocą dotyku i dobra pamięć to atuty programisty.
Znam bardzo sprytnych programistów, którzy nie potrafią pisać na maszynie ani wykonywać wyższych zadań matematycznych itp. Dzięki temu mogli być znacznie lepsi.
Prawdziwy świat nie jest zamkniętą książką. W prawie wszystkich przypadkach testy z zamkniętymi książkami wskazują na nauczyciela, który nie wie, jak wykonać dobre testy.
Odpowiedzi:
Jeśli używasz go codziennie, składnia języka nie jest tak trudna, jak myślisz. W końcu staje się bardzo łatwe. Zapamiętywanie wszystkich różnych funkcji bibliotecznych może być znacznie trudniejsze i nie sądzę, że większość ludzi pamięta więcej niż te najczęściej używane, ale jest to w porządku, jeśli masz dostęp do Internetu, książki lub czegoś innego, co „ pamięta „wszystkie inne szczegóły dla Ciebie.
źródło
Nie może być prawdą, że ludzie mają „naturalne” urządzenie z językami, prawda?
Nie może być prawdą, że mamy sprzęt neuronowy niskiego poziomu tylko do nauki języków, prawda?
Programowanie wykorzystuje sztuczne języki, które są zgodne z wieloma zasadami języków naturalnych.
Języki naturalne mają nieco większą elastyczność niż języki programowania.
gramatyka wciąż ścisła. zasady są bardzo, które Ale
Jeśli umiesz mówić, możesz nauczyć się programować bez zapamiętywania niczego więcej niż tego, co zapamiętałeś, kiedy nauczyłeś się mówić.
źródło
Tak:
Jeśli mówisz o pamięci krótkoterminowej, to tak . programista musi być w stanie żonglować wieloma bitami informacji jednocześnie podczas programowania / rozwiązywania problemów.
Nie:
Jeśli mówisz o pamięci długoterminowej, to nie do końca . Istnieje wiele instrukcji i odniesień + narzędzi, które mogą znacznie pomóc w przywołaniu informacji. Z pewnością zapamiętanie tych długoterminowych informacji sprawi, że będziesz szybszym programistą (ogólnie), ale nie jest to warunkiem koniecznym.
źródło
Dobra pamięć jest absolutnie niezbędna, ale nie z oczywistych powodów.
Zapamiętywanie szczegółów na temat określonych algorytmów, bibliotek, nazw zmiennych itp. Jest bardzo przydatne, ale nie jest bardzo ważne. Masz Google, DuckDuckGo, strony podręcznika, dokumentację specyficzną dla języka i inteligentne edytory, które pomogą Ci we wszystkich powyższych. Pomaga, jeśli nie musisz polegać na tych kulach, ale poradzisz sobie, jeśli będziesz ich potrzebował od czasu do czasu.
Istotna jest pamięć, która polega na zachowaniu szczegółów tego, nad czym pracujesz, w aktywnej pamięci krótkotrwałej. Możliwość wizualizacji projektu, przepływu danych, algorytmów, struktur danych oraz ich wzajemnego oddziaływania w celu zrobienia tego, co robi twój produkt, oddziela programistę OK od wielkiego programisty. Kiedy aktywnie to robisz, masz wrażenie, że z powodzeniem żonglujesz ogromną liczbą piłek podczas jazdy na monocyklu.
Jest to często określane jako przebywanie w strefie . Przerwy, głupie pytania, szefowie potrzebujący raportów TPS wszyscy wstrząsają tą strefą.
Im lepsza jest twoja pamięć, tym łatwiej jest dostać się do strefy, tym łatwiej jest tam pozostać i łatwiej jest wrócić do niej po przerwie.
Jeśli masz problemy z tego rodzaju pamięcią, sugeruję nauczenie się technik medytacji i sztuczek pamięci, ponieważ im łatwiejsza staje się twoja pamięć, tym większy sukces odniesiesz jako programista.
źródło
Idę pod prąd i powiedzieć tak . Dobra pamięć to niesamowity zasób programisty. Moja pamięć zawsze uważałem za zobowiązanie programistyczne, więc wybrałem kilka sztuczek, aby zrekompensować mój handicap:
Powinieneś być w stanie zapamiętać, jak ta zmienna (której wcześniej używałeś 3 wiersze) Jeśli nie możesz nauczyć się korzystać z Intellisense (lub jakiejkolwiek formy autouzupełniania jest w edytorze lub IDE).
Powinieneś być w stanie szybko zapamiętać, co robiłeś podczas ostatniej pracy nad tym projektem. To mogło być kilka dni temu, mogło być tuż przed lunchem. Jeśli nie możesz, naucz się zapisywać różne rzeczy . Trzymaj ze sobą notatnik i pisz co robiłeś (aś), rzeczy do zrobienia (TODO) i rzeczy, o których musisz pamiętać o tym, jak dopasowuje się bieżący kod.
Debugowanie i kontrola jakości są trudne. Idealnie byłoby zachować bardzo szczegółowy notatnik na temat kroków, które podjąłeś, próbując odtworzyć błąd lub coś debugować. Wiem, że powinienem to zrobić, ale nadal mam z tym problem.
Mam nadzieję że to pomoże!
źródło
Guerrilla Guide to Interviewing (wersja 3.0) to powszechne odniesienie, w którym inteligentne notatki i robienie rzeczy są ważnymi punktami programowania. Smart obejmuje pewne umiejętności pamięci, ale niekoniecznie tyle, ile myślisz.
Intellisense może bardzo pomóc w składni, jeśli potrzebujesz pomocy po tej stronie. Wiedza o tym, jak się uczysz, abyś mógł szybko zastosować sens tego, czego się uczysz, w znaczący sposób, jest ważniejszy niż umiejętność odpowiadania na pytania z ciekawostek.
źródło
Uważam, że zapamiętywanie nazw jest raczej inną funkcją poznawczą niż zapamiętywanie procesów, które różni się od zapamiętywania słowników. Zdarzały się przypadki osób, które doznały urazów mózgu, które całkowicie pozbawiły zdolność zapamiętywania nazwisk, a poza tym były w stanie doskonale funkcjonować w inny sposób.
Powiedziałbym więc, że umiejętność zapamiętywania nazw niezwiązanych z nauką języków programowania.
Przydałoby się jednak pamiętać logiczne wzorce, zasady i słownictwo.
źródło
Nie. Głębokość pamięci narzędzi (Intellisense, Google, kompilatory, generatory kodów) jest nieskończona w porównaniu do ludzkiej pamięci. Więc programista z dobrą pamięcią nie jest dużo lepszy niż ten z dziurą w głowie.
Programiści tak naprawdę potrzebują „maksymalnej prędkości skupiania”, gdy przełączają się między poziomami abstrakcji. Im szybciej możesz, tym lepiej jesteś programistą. Niektóre mają szybkość bicia serca, taką jak 500 ms, a wraz z nadejściem pierwszej fali krwi do mózgu jesteś skupiony. Niektóre mają zegar skupienia zaokrąglony do cyklu palenia, około 2 godzin. Niektórzy potrzebują porannego prysznica, więc około 24 godzin. itp. Różnica między dobrym a złym programistą została kiedyś zadeklarowana 1:80 razy temu, a różnica ta tylko się powiększa.
źródło
Nie, musisz tylko zrozumieć, jak działa Google, aby uzyskać to, czego chcesz
Mam okropną pamięć, ale moje umiejętności Googlowania są niesamowite ^ _ ^
Z całą powagą, o ile wiesz, gdzie znaleźć składnię, nie musisz jej pamiętać. Do tego właśnie służy intellisense, pliki pomocy, przewodniki, Internet itp.
źródło
Przede wszystkim nauka programowania jest trudna dla wszystkich. Dobra pamięć pomaga na pewno. Ale poświęcenie i zamiłowanie do uczenia się przez całe życie są cenniejsze. Uczenie się składni jest jak wszystko inne, powtarzanie.
W umiejętności programowania nie ma nic magicznego ani nadludzkiego. Po prostu poświęć na to około 10 000 godzin ... a będziesz mistrzem jak każda inna umiejętność. Oczywiście to 10 000 godzin treningu, a nie na ślepo i odrętwiająco powtarzające się błędy z przeszłości.
źródło
Napisałeś ten post po angielsku, z odpowiednią składnią. Oczywiście pamiętasz, jak używać języka. Musisz tylko nauczyć się nowego języka i używać go wystarczająco często, aby cały czas dobrze go rozumieć. W przeciwieństwie do języków zorientowanych na ludzi, języki programowania komputerowego zawsze dadzą Ci znać, gdy użyjesz niepoprawnej składni, więc w rzeczywistości jest to łatwiejsze. :-)
źródło
Zgadzam się, że istnieje wiele różnych rzeczy, które przeciętny programista może wiedzieć, aby wykonać swoje zadania, po prostu pomyśl o wszystkich słowach, składniach, technikach, które powinieneś zasadniczo kontrolować, aby zbudować prostą stronę internetową (w interfejsie: html, css, javascript (możesz liczyć również niektóre frameworki Js jako jquery), ajax, na zapleczu: Php lub ASP lub ASP.Net i nie zapomnij o bazach danych, mySql lub SqlServer lub Oracle lub MongoDB itp. Istnieje ogromna lista języków, paradygmatów, sintaksji, wzorów itp., Nie można zapamiętać ich wszystkich.
Uważa, że to, co czyni dobrego programistę, to ćwiczyć, ćwiczyć z algorytmami bardziej niż z językami, i dzięki temu w końcu zapamiętasz rzeczy, których najczęściej używasz, dla reszty zawsze jest google = P
źródło
Świetna pamięć może przeciąć obie strony.
Jeśli potrafisz żonglować dziesiątkami fragmentów informacji w swojej głowie, będziesz miał znacznie łatwiejszy czas na zrozumienie (i mam nadzieję, że przepisanie) tego okropnego fragmentu kodu, który jest krytyczny dla projektu, ale tak skomplikowany, że wszyscy inni się boją dotknąć tego.
Z drugiej strony ten okropny fragment kodu, który ma kluczowe znaczenie dla projektu, ale jest tak skomplikowany, że wszyscy boją się go dotknąć, został prawdopodobnie napisany przez kogoś z niesamowitą umiejętnością żonglowania dziesiątkami bitów informacji. Jeśli masz świetną pamięć, pracuj bardzo ciężko, aby docenić elegancję prostoty.
Nauka składni języka programowania nie wymaga dużej pamięci. Jak powiedzieli inni, składnia jest tak wzmocniona w twojej pamięci, że szybko staje się drugą naturą. Czy zapomniałeś kiedyś, po której stronie drogi jedziesz? Które symbole arytmetyczne oznaczają dodawanie i odejmowanie? Jeśli nie, opanujesz najczęstsze części składni wybranego języka bez większych problemów i będziesz mógł wyszukać mniej powszechne bity, gdy się pojawią.
Niektóre biblioteki mają setki lub tysiące funkcji, klas i / lub metod. Nauka obcemu wydaje się niemożliwym zadaniem, aby nauczyć się korzystać z całej tej funkcjonalności. Ale prawie zawsze w bibliotece jest jakaś podstawowa struktura. Zamiast próbować zapamiętać wszystkie te funkcje, inteligentny programista próbuje zrozumieć, w jaki sposób biblioteka jest zorganizowana i co może zrobić. Po wykonaniu tej czynności zwykle łatwo jest znaleźć potrzebną funkcję, gdy jej potrzebujesz.
Krótko mówiąc, pamięć jest znacznie mniej ważna niż zrozumienie.
źródło
To zależy. W Javie i .NET biblioteki standardowe są w pewnym stopniu hierarchiczne i dobrze udokumentowane. Dlatego jeśli wiesz, że masz do czynienia z siecią, przejdź do system.net w C #, a stamtąd możesz przejść do konkretnych potrzebnych obiektów / połączeń. Pod tym względem nie musisz więc zapamiętywać szczegółów.
W twoim własnym programie chodzi o to, jak organizujesz / nazywasz rzeczy. Jeśli używasz nazw takich jak $, b $, c $ ... lub g $ z Podstawowego starego, to powodzenia. jeśli nazywasz rzeczy tak, jak myślisz o nich, np. Imię, nazwisko jest o wiele łatwiejsze. Wiele języków ma standardy nazewnictwa, które również pomagają. Na przykład w Javie istnieje konwencja setX, getX do pobierania / ustawiania określonych atrybutów klasy, a także konwencje wielkich liter. Więc jeśli wiesz, że osoba ma imię, to prawdopodobnie nazywa się ona firstName, a getter / setter to prawdopodobnie getFirstName i setFirstName ..... Więc te konwencje bardzo pomagają ...
Także krótsze metody / funkcje pomagają ci jednocześnie zachować mniej głowy. A używanie prawidłowych nazw pomaga uniknąć konieczności szukania. Na przykład, jeśli nazywasz rzeczy tym, co robią, to podczas czytania jednej procedury, która wywołuje getMaximumValue, prawdopodobnie nie będziesz musiał czytać getMaximumValue, aby dowiedzieć się, co robi ... Ale ponieważ funkcje / metody stają się dłuższe i bardziej zagnieżdżone, to lepsza pamięć zdecydowanie pomaga.
źródło
Pamięć nie jest aż tak ważna. Jeśli w ogóle się o to martwisz, regularnie zapominam rano portfel lub klucze w moim domu. Przywołuję każdego pod niewłaściwym nazwiskiem przynajmniej raz (łącznie z moją rodziną i dziewczyną). Po prostu cały czas zapominam robić rzeczy w domu.
Pod koniec dnia zasady programowania nadal będą ci przypominać „nigdy nie zapomnisz, jak jeździć na rowerze”. Szczegółowe informacje i szczegóły dotyczące implementacji nie są tak ważne. Zawsze możesz je Google.
źródło
Od Joel On Software o produktywności programisty
Tak więc pamięć krótkotrwała jest bardzo ważna dla programisty, któremu powierzono zadanie krytyczne.
Ale nie sądzę, żeby pamięć długoterminowa miała tak duże znaczenie.
źródło
Po szybkim przeczytaniu nie widziałem, żeby ktokolwiek mówił o pamięci w ogólnym sensie programowania, a nie jako pojedyncze zadanie pisania programu.
Pamięć jest przydatna do dwóch rzeczy:
Zapamiętywanie podstawowej semantyki / bibliotek:
Można to łatwo zastąpić powtórzeniami i Google. IOW, ilość pamięci, z którą się rodzisz, musi być absurdalnie niska, aby nie móc pokonać tego problemu.
Zapamiętywanie kontekstu w dużych programach:
Oto gdzie jest sztuczka. W miarę jak programy stają się większe (a ty stajesz się starszy), decyzje, które podejmujesz, całkowicie odnoszą się do twojej wiedzy o systemie i możliwości jego odzyskania w ciągu kilku milisekund, jeśli ma to być przydatne w dyskusjach projektowych, debugowaniu, reagowanie na sytuacje kryzysowe operacyjne itp. Gdy pojawi się potrzeba, żadna liczba wpisów w dokumentacji / wiki nie pomoże, a jedyny sposób, w jaki będziesz mógł korzystać z „czarodzieja” zespołu. Jest to jeden z powodów, dla których główni inżynierowie są tak bardzo cenieni / płaceni. Większość z nich może w tym momencie nie spędzać całego czasu na kodowaniu, spędzają więcej czasu na utrzymywaniu pełnego obrazu i stosowaniu go do wszelkich problemów / ulepszeń. Ci dobrzy utrzymują kontakt, wykonując masę CR i zmianę kodowania tu i tam / prototypowanie nowszych wersji.
IOW, możesz być rozsądnym programistą z samym numerem 1, ale jeśli kiedykolwiek będziesz następnym Linusem, lepiej mieć dużo pamięci, przynajmniej na tyle, aby objąć rozwiązany problem.
Z moich obserwacji mogę nawet powiedzieć, że pamięć robocza jest prawie wprost proporcjonalna do wartości osoby.
Małe zastrzeżenie na zakończenie: jeśli masz pamięć Eidetic, ale zero / niską moc intelektualną w stosowaniu tej logiki, nie będziesz dobry dla projektu niż kamera.
źródło
Jeśli masz trudności z zapamiętaniem nazwisk osób, które spotkasz, nadal możesz zostać świetnym programistą.
Cały czas zapominam ludzi. Jestem starszym programistą z prawie dekadą doświadczenia. W moim przypadku moja straszna pamięć słuchowa jest kompensowana przez świetną pamięć wzrokową.
Mimo to podstawowym warunkiem dobrego programisty jest umiejętność abstrakcji. Bez względu na to, ile i jak mało pamiętasz, jeśli nie rozumiesz pojęcia zmiennej i jak używać jej w programie, nie zostaniesz dobrym programistą.
Sugeruję, abyś spróbował jednego krótkiego kursu programowania lub ukończył samouczek języka Python, aby zobaczyć, jak ci się podoba.
To powinno dać ci dobry pomysł na to, czy programowanie to kariera, którą możesz być zainteresowany.
źródło
Mówię stanowczo TAK!
Obecnie uczę się JAVA i C #. Wszystkie testy są zamknięte, więc dla JAVA jest to w 100% z pamięci kodującej wszystkie aplikacje na egzaminach.
Co więcej, robi się coraz trudniej. Jestem teraz w punkcie, w którym muszę zacząć używać sztuczek pamięci, takich jak mnemoniki itp.
Powiedziałbym, że wysokie IQ, dobra wiedza ogólna, dobre słownictwo, polimatyzm, wyższa wiedza matematyczna, pisanie za pomocą dotyku i dobra pamięć to atuty programisty.
Znam bardzo sprytnych programistów, którzy nie potrafią pisać na maszynie ani wykonywać wyższych zadań matematycznych itp. Dzięki temu mogli być znacznie lepsi.
źródło