Jakie są Twoje sugestie dotyczące uczenia się, jak myśleć? [Zamknięte]


22

Po pierwsze, nie jest to ogólne pytanie „uczyń mnie lepszym programistą”, nawet jeśli wynik zadania tego pytania może wydawać się podobny. Na programmers.SE czytałem i widziałem, jak się zamykają tutaj , tutaj , tutaj , tutaj i tutaj .

Wszyscy wiemy, że istnieje wiele ogólnych sugestii na temat doskonalenia umiejętności programowania (np. Czytanie SO, czytanie zalecanych książek, obserwowanie blogów, angażowanie się w projekty typu open source itp.). To nie to, co ja jestem po.

Potwierdzam również aktywne czytelnictwo na tej stronie i mam nadzieję, że zadziała na moją korzyść, udzielając świetnych odpowiedzi. Z lektury korespondencji tutaj wynika, że ​​istnieje ogromna liczba doświadczonych osób, które pracują lub pracowały w dziedzinach związanych z programowaniem. I większość z was może przekazać myśli w wymowny, zwięzły sposób.

Niedawno zauważyłem różnicę między kimś, kto potrafi programować, a programistą, który potrafi naprawdę myśleć . Nie wierzę, że aby zostać świetnym programistą, po prostu poddajemy się życiu przypominającemu gąbkę (tj. Wchłaniamy wszystko, co związane z naszą dziedziną, czytając, słuchając, oglądając itp.). Powiedziałbym nawet, że po prostu znając każdą koncepcję programowania, która pozwala ci rozwiązać problem X szybciej niż wszyscy wokół ciebie, jeśli nie możesz myśleć , ogromnie się ograniczasz - jesteś tylko szybkim robotem.

Lubię wierzyć, że jest jeszcze inne oblicze bycia świetnym programistą, niezwiązane z tym, ile wiesz o programowaniu, ale to, jak dobrze możesz przeplatać nowe koncepcje i stosować je w swoim zawodzie programistycznym lub hobby. Nie widziałem, żeby ktokolwiek zagłębiał się w ten aspekt ludzkiego umysłu i programowania, ani nie zajmował się nim. (Tak, możliwe też, że nie spojrzałem wystarczająco mocno - przepraszam, jeśli tak jest).

Więc dla każdego, kto spędził czas zastanawiając się nad tym, o czym wspomniałem powyżej - a może wszyscy są tutaj, ponieważ jestem trochę w tyle w moim rozwoju osobistym / zawodowym - jakie są twoje sugestie dotyczące uczenia się, jak myśleć? Oprócz zwykłego czytania, co jeszcze zrobiłeś, aby być lepszym niż inni ludzie w Twojej / naszej dziedzinie?


Powinieneś myśleć tak jak ja, bo jestem świetny.
ChaosPandion,

Zażywaj twarde narkotyki, jak Steve Job.
Job

Programowanie funkcjonalne uczy myślenia. Wszystko inne uczy programowania;)
Dario

Odpowiedzi:


13

Moje sugestie dotyczące nauki myślenia:

  • Ucz się nowych języków . Zarówno język naturalny, jak i język programowania. Zawsze ucz się nowego języka. Myślenie odbywa się mniej w języku. Każdy język ma inny „pogląd” na myślenie. Więcej języków, które znasz, więcej „narzędzi mentalnych”, pojęć, punktów widzenia i abstrakcji są dostępne.

„Język kształtuje nasz sposób myślenia i określa, o czym możemy myśleć”. - Benjamin Lee Whorf

I co ważniejsze, język określa co możemy nie myśleć.

  • Czytaj żarliwie . Czytaj szeroko. Nie tylko o programowaniu, ale także o historii, socjologii, biologii, sztuce itp. Poszerz swoje perspektywy. Uzyskaj świeży wgląd. Nie jesteś tylko tym, co jesz - jesteś także tym, co czytasz. Nowe pomysły polegają bardziej na łączeniu dwóch (pozornie) różnych pomysłów niż na boski błysk kreatywności znikąd.

„Szansa sprzyja przygotowanemu umysłowi”. - Louis Pasteur

  • Pokora . Musisz dużo wiedzieć, aby zrozumieć, jak mało wiesz. Pokora pomaga zachować otwarty umysł na nowe sposoby myślenia.
  • Zapytaj dlaczego? Nie zadowalaj się tym, jak.
  • Ucz się matematyki . Naprawdę potężne narzędzie, rodzaj języka do pracy z logiką i abstrakcjami. Studiowanie matematyki wzmacnia mózg. Mentalny odpowiednik „chodzenia na siłownię”.

Nie jestem pewien co do języków naturalnych. Uczenie się ich ma wartość, ale dla myślenia? W kontekście programowania? Wartość słów dla myślenia jest czasem zawyżona - możemy mieć pomysły, których nie możemy łatwo wyrazić słowami, dlatego nie jesteśmy całkowicie zależni od słów w tworzeniu pomysłów. Ponadto najodpowiedniejsze słownictwo (żargon z matematyki i innych dziedzin technicznych) jest w dużej mierze dzielone między językami.
Steve314,

6

Z mojego doświadczenia sprowadza się to do dwóch rzeczy:

  1. Pasja, jeśli interesujesz się rzemiosłem, nauczysz się, dostosujesz i szybciej będziesz myśleć nieszablonowo niż wielu programistów, którzy pracują w tej samej dziedzinie. (Niektóre z nich nie mają komputerów w domu).
  2. Niektóre osoby rodzą się ze zdolnością do rozwiązywania problemów technicznych. Niektóre osoby naturalnie mają zdolność wyodrębnienia elastycznego rozwiązania.

Poza tym wszyscy różnią się pod względem sposobu myślenia o programowaniu lub uczenia się nowych umiejętności programowania. Sugeruję, abyś ciągle próbował nowych rzeczy i zachowywał to, co dla ciebie dobre.


Dobre punkty, szczególnie drugi punkt.
Orbling

5

Jakie są Twoje sugestie dotyczące uczenia się, jak myśleć?

Ćwiczyć. Ćwiczyć. Ćwiczyć.

Poważnie, aktywność umysłowa (tj. Myślenie) jest jak aktywność fizyczna. Im więcej to robisz, tym lepiej sobie z tym radzisz. (W rzeczywistości aktywność fizyczna obejmuje również rodzaj aktywności umysłowej. Najlepsi sportowcy nie tylko mają mięśnie we właściwym miejscu ...)

Jak więc (skutecznie) ćwiczysz myślenie?

(Tutaj generalizuję na podstawie czegoś innego ...)

Myślę, że zidentyfikujesz problemy myślenia, które uważasz za trudne (ale nie niemożliwe), i spróbujesz je rozwiązać (przemyśl je) i bardziej im podobne.


W pewien sposób popieram to. Za każdym razem, gdy robię coś powtarzalnego, co nie wymaga myślenia, myślę o czymś innym. Robię to również przy robieniu powtarzalnych rzeczy, o których powinienem pomyśleć, takich jak prowadzenie samochodu, ale jakoś mam wrażenie, że lepiej jeżdżę, gdy nie myślę o tym.
Earlz

1
@Ellz - Nie rozumiem, o co ci chodzi. Jeśli robisz coś powtarzalnego, nie musisz o tym myśleć. Mówię o ćwiczeniu rozwiązywania problemów wymagających myślenia.
Stephen C

doświadczenie przebija wszystko (rodzaj ogólnego stwierdzenia, wiem), ale uczysz się z czasem, to znaczy, jak często napotykasz problem, który zajęło ci wieczność do rozwiązania, tylko po to, aby na niego natknąć się ponownie i zająć się nim w ciągu kilku minut. Również w ten sposób podchodzisz do problemu, nie skupiaj się na utknięciu, zawsze skupiaj się na tym, czego jeszcze nie próbowałem, od najprostszego do najbardziej złożonego
farinspace

Celowa praktyka. Musisz nauczyć się czegoś z każdej iteracji.

4

Mogą Cię zainteresować następujące dwie rzeczy:

Przepływ

Mihály Csíkszentmihályi , węgierski profesor psychologii, przedstawił pojęcie przepływu .

Przepływ to mentalny stan działania, w którym osoba biorąca udział w czynności jest całkowicie zanurzona w poczuciu energicznego skupienia, pełnego zaangażowania i sukcesu w procesie działania.

Mam szczęście, że mogę codziennie wchodzić w nurt, stosując starą technikę, której uczę się po zastosowaniu GTD, która jest kolejną akcją .

Mogę powiedzieć, że to naprawdę robi różnicę. Kiedy jestem w ruchu, produkuję wyższą jakość i szybciej niż kiedy nie jestem w tym stanie. Jestem całkowicie skoncentrowany na tym, co robię, dlatego myślę bardziej efektywnie.

Uważność

Zadałem pytanie dotyczące medytacji jakiś czas temu, ponieważ martwiłem się tym, że medytacja może zmniejszyć moje zdolności programistyczne (i kreatywne).

Właśnie rozpocząłem trening metody Jona Kabata-Zinna , więc jest za wcześnie, aby dzielić się z Tobą rozległymi doświadczeniami, ale z nielicznych, których do tej pory się uczę, mogę powiedzieć, że jest to prawdopodobnie coś, co będziesz chciał zrobić.


+1 Chociaż nienawidzę, że istnieje książka i cała „teoria” na temat tego, co stanowi rozsądne podejście do problemu, GTD z pewnością ma nogi.
Orbling

1
@Orbling: och całkowicie się z tym zgadzam. Ale tak jak w większości książek jest bzdura i wartość. Co to jest bzdura i wartość zależy od tego, kto czyta książkę. Problem z GTD polega na tym, że jest tak potężny, że może cię zmiażdżyć, jeśli nie poświęcisz czasu na zmniejszenie wkładu zamiast skupienia się na zarządzaniu nim, niezależnie od jego wielkości. To był mój błąd;)

Problem w moim życiu polega na tym, że jest tak wiele wkładu i tyle do zrobienia, że ​​nie miałbym czasu na wdrożenie takiej procedury. Chociaż z pewnością widzę w tym wartość.
Orbling

1
@Orbling: Myślę, że to jest klucz. Filtrowanie danych wejściowych to najwyższa technika wydajności, na dodatek do Covey lub GTD. To wymaga bycia bardzo silnym psychicznie.

Uważam, że potrzebuje dodatkowych ludzi do wykonania zadań, które odfiltrujesz, lol.
Orbling

2

Zawsze wierzyłem, że dobrzy inżynierowie rodzą się, a nie są stworzeni.

Potrzebujesz do tego zestawu umysłu, logicznego, analitycznego, dedukcyjnego umysłu, w połączeniu z wytrwałością i dociekliwością potrzebną do uzyskania przeglądu i strukturalnego spojrzenia na problem w wydajny sposób i szybkiego przejścia od punktu A do punktu B, kierując umysł przez rozwiązanie.

Istnieje wiele badań sugerujących, że umiejętność ta jest znacznie wzmocniona przez dobre wczesne zetknięcie się z takimi rzeczami, a muzyka też pomaga. Po pewnym czasie twoje mapy mentalne są dość mocno podłączone. Nie pod względem tego , co myślisz, ale jak myślisz.

Czy możesz nauczyć się myśleć jako dorosły? Cóż, z pewnością można nauczyć się technik rozwiązywania problemów, ale wtedy trzeba postępować zgodnie z algorytmami, można, jak to się wymawia, stać się bardzo „szybkim robotem”. Intuicyjne zrozumienie jest prawdopodobnie wrodzone.

Nie jest to w żadnym wypadku ograniczone do naszego zawodu, wiele zestawów umiejętności jest zdominowanych przez umiejętności wrodzone, a nie nabytą odpowiedź. Ludzie mogą tego nie chcieć, ale najprawdopodobniej tak jest.


2

Znajdź forum online na temat swojej pasji. Coś, co ma jakąś społeczność. Najlepiej nie programować - fora programowania są zazwyczaj bardziej zorientowane na rozwiązania niż na dyskusje. Zająć stanowisko. Bronić tego. Użyj argumentów. Możesz także blogować, ale lepiej mieć przeciwnika. Chodzi o to, aby mieć sensowną i pisemną komunikację o czymś z kimś. Gdzie wymieniasz nieco większe fragmenty tekstu.

Nauczysz się przekazywać swoje pomysły i argumentować je. Ponieważ będziesz musiał bronić swoich poglądów, musisz poprzeć je faktami. Będziesz musiał coś wymyślić, wyartykułować swoją pozycję i wesprzeć ją; może nawet to zmieni.

Następnie skorzystaj z tej umiejętności analizy problemu i zsyntetyzuj opinię i zastosuj ją do czegokolwiek. Nawet programowanie.


Powinienem powiedzieć, że to jeden ze sposobów ćwiczenia myślenia. To nie jedyny.
Domchi

2

Jedną rzeczą, o której myślę, jest to, że należy postrzegać rzeczy jako systemy, a wszystkie systemy są ze sobą powiązane. Każdy we wszechświecie. Ludzkość, planety, galaktyka, rośliny, światło słoneczne, fotosynteza, owady, skały, oceany, wszystkie systemy oddziałujące. Podobnie, z czasem cykle: narodziny, wzrost, rozkład, śmierć robaków, ludzi, cywilizacji, pasm górskich, układów gwiezdnych. Niekończąca się walka o energię. Wszystkie systemy

To jest Studium życia i natury w wielkim znaczeniu Studium. Zobacz wszystkie powiązane rzeczy, zobacz wszystkie interakcje. Skoncentruj się na tym, gdy oglądasz zachód słońca i wyczuwasz głębokość sił grawitacji, które wirują nas wokół Słońca, przyciągają nas na powierzchnię planety i słabnące światło słoneczne, które zaczerwienia się przed wejściem do siatkówki z prędkością 300 000 000 metrów na sekundę i robieniem zdjęć w mózgu naczelnych.

Kiedy zaczynasz myśleć o tym, o tym, jak wszystko jest powiązane, o tym, jak cena złota i niewolniczej siły roboczej i burz w całym Pacyfiku i kompleksach przemysłowych w Japonii są powiązane, a ty nie spiesz się, naprawdę nie spiesz się pomyślcie o tym wszystkim, wtedy wasze myślące „mięśnie” naprawdę będą się wyginać i rosnąć.

Teraz wiele z nich będzie poniżej progu ekspresji, ale nie pozwól, aby cię to powstrzymało. Twój mózg jest potężniejszy niż najpotężniejszy komputer. Popchnij. Nie sądzę, że można go podkręcić.

Przypomina mi się czarno-białe zdjęcie, na którym Albert Einstein wylegiwał się na leżaku na plaży i patrzył na ocean. Podpis brzmiał: „Tu siedzi Albert Einstein. Z jego mózgiem”.

Kolejnym wyzwaniem jest umiejętność komunikowania złożoności i współzależności wszystkich rzeczy w prosty sposób. To da ci coś do zrobienia, dopóki nie będziesz bardzo stary.


2

Jednym z podejść jest celowa praktyka .

Proste powtarzanie nie prowadzi do nabywania umiejętności - musisz być introspektywny, oceniać swoje wyniki, znajdować sposoby na lepsze działania.

Ilustracja: Mój bliski krewny rywalizuje w strzelaniu z pistoletu. Podczas treningu koncentruje się na sprawdzaniu każdego strzału, koncentrując się na prawidłowych krokach. Przeciwnie, intuicyjnie, mało uwagi skupia się na kiepskich ujęciach, ponieważ powtórzenie (próba) błędu to wzmacnia.

Po prostu wystrzelenie 100 strzałów w dół nic nie da. Umyślna praktyka strzelania 20 strzałami wzmocni dobre nawyki i doprowadzi do lepszej wydajności.

To samo dotyczy programowania - zastanów się, co robisz. Nie rób tego co miesiąc, co tydzień lub codziennie - rób to chwila po chwili, działanie po działaniu.

  • Dlaczego ta wada wystąpiła w moim kodzie?
  • Jak mogłem uniknąć tworzenia tej wady?
  • Jak mogłem szybciej znaleźć rozwiązanie?
  • Które moje założenie było błędne?
  • Czy poprosiłem o pomoc wystarczająco szybko? za szybko?
  • Czy wcześniej popełniłem ten błąd?
  • Czy ta wada jest izolowana czy stanowi część wzoru?
  • Czy istnieje podstawowa wada projektowa?
  • Jeśli tak, czy mogę coś z tym zrobić?

I tak dalej ...


świetny punkt, znowu wszystko to pochodzi z czasem / doświadczeniem
farinspace

1
@farinspace, tylko jeśli poświęcisz czas na ocenę i naukę po każdej iteracji.

1

Idź szturchać coś, co kochasz, aż znajdziesz przewagę.

Głęboki oddech,

Krok nad...

...

... Powiedz innym, co znalazłeś.


1

Więc chcesz pomyśleć

Wiele przeważnie świetnych sugestii z innych plakatów na temat tego, jak myśleć lub nauczyć się myśleć: przepływ, uważność, matematyka, pasja, praktyka ... więc nie pójdę tam, pokryty gruntem.

Ale nie wiadomo dlaczego. Jaki jest cel

Osobiście zrozumiałem, że zanim pomyślisz, musisz wiedzieć, dlaczego.
Najlepszą rzeczą do zrobienia jest słuchanie i patrzenie. (Traktuję oba jako całość, nie można ich rozdzielić)

Jedyny sposób na lepsze programowanie, niezależnie od tego, czy chodzi o gromadzenie wymagań, przekształcanie tych wymagań w szczegółowe specyfikacje systemowe, dopasowanie ich do dokumentów projektowych, wdrożenie kodu, debugowanie na całe życie, niezależnie od tego, czy pominiesz któryś z tych etapów, czy wszystkie, czy masz pięć minut na znalezienie rozwiązania, czy 20 lat, musisz słuchać i patrzeć.

Słuchaj tego, czego chce użytkownik, słuchaj tego, co użytkownik powiedział, że się wydarzyło, słuchaj, jak osoba wsparcia mówi ci, że widział. Słuchać. Słuchaj, nawet jeśli to nie ma sensu. Słuchaj, nawet jeśli jesteś przekonany, że się mylą. Słuchaj, a nie oceniaj.

Szukaj wskazówek, nie szukając, ale otwierając oczy. Spójrz na rzeczywistość. Nie możesz zacząć szukać odpowiedzi, zanim spojrzysz na miejsce zbrodni. Nie możesz znaleźć rozwiązania, dopóki nie udowodnisz wady.

Jeden przykład z mojego doświadczenia(w sprawie rozwiązywania błędów, ale można go naprawdę dostosować do wszystkiego). Z oczywistych względów (prawnych i innych) ukryję przed tym soczyste szczegóły. W systemie krytycznym dla bezpieczeństwa operator zgłosił poważną wadę. Niektóre geograficzne urządzenie śledzące faktycznie utraciło śledzenie, gdy „nie powinno”, z potencjalnym wpływem na życie (to „powinno” było prawdziwym błędem i wstrzymało nasze badania na zbyt długo). Na szczęście, chociaż zostało to znalezione tygodnie później prawie przypadkowo, ponieważ w odległym miejscu działał inny system, w przypadku którego inny operator przybył, aby udowodnić, że śledzenie nie zostało utracone w tym systemie. To zmusiło nas do ponownego myślenia. Nasz główny dostawca oprogramowania nie uwierzył nam ani sekundy, więc musieliśmy wyjść i udowodnić sprawę. Jedynym sposobem było przeszczepienie: budowanie symulacji w celu odtworzenia dokładnej sytuacji operacyjnej. Musieliśmy sfilmować dowód, aby dostawca nam uwierzył. Ostatecznie symulacja dostarczyła informacji przekraczających nasze nadzieje i doprowadziła nas do zrozumienia całego problemu. Potem nie trzeba było długo czekać.

Jedynym sposobem, w jaki doszliśmy do końca, było logiczne połączenie jednego zdalnego systemu z innym wykonującym podobną robotę, ale niezupełnie taką samą. To jest szukanie wskazówek (patrz). Było to możliwe tylko poprzez zaufanie do jednorazowego raportu i nie odrzucenie go jako przypadkowej usterki w systemie (Listen), a następnie ponowne usłyszenie drugiego raportu, który był sprzeczny z pierwszym (Listen).

Więc jeśli masz odpowiednie wskazówki (po wysłuchaniu i spojrzeniu), zdefiniujesz obszar problemu, zrozumiałeś pierwotną przyczynę lub kluczowe zasady, możesz najpierw pomyśleć o rozwiązaniach w celu dalszego zrozumienia (próba i błąd, symulacje, demonstracja, dowód koncepcji, makiety, wersje alfa, beta) i ostatecznie oferują solidne rozwiązanie (które czasami można ulepszyć po operacji w prawdziwym życiu).

Aby móc słuchać i patrzeć, trzeba mieć otwarty umysł, zaufanie i absolutne poświęcenie dla swoich celów. Jest to paliwo, o którym musisz pomyśleć, lub bardziej do tego stopnia, aby twoje myślenie koncentrowało się na właściwym celu (często problemem nie jest niezdolność do myślenia, ale brak dobrze zdefiniowanego celu, na którym można ćwiczyć umysł).


+1 za odpowiedź, badanie domeny problemowej i słuchanie użytkowników jest niezbędne. Chociaż -1 dla komentarza „tak, dobrze”, więc bez zmian.
Orbling

@Orbling: Ok, masz rację, to było trochę za burtą. Komentarz usunięty. Nie sądzę, by wrodzony talent miał rację, ale nie trzeba o tym wspominać.
asoundmove

Cóż, gdybyś miał -1 moją odpowiedź, oznaczałbym twoją tak samo, ale to zapobiegło temu, teraz naprawione. Dobrze jest powiedzieć, że jest źle, jeśli nie zgadzasz się z tym, co powiedziałem.
Orbling

@Orbling, nie, nie mam ochoty głosować -1 za nikogo, wolę po prostu przejść dalej ... Tylko ekstremalne scenariusze uzasadniają -1, po prostu nie zgadzam się.
asoundmove

Zgadzam się z tobą na innych stronach, ponieważ są one w zasadzie dobre / złe. Programmers.SE różni się od reszty, ponieważ jest subiektywny, więc głosowanie jest w zasadzie zgodą, nieporozumieniem. Czy uważasz, że jest to pomocne czy nieprzydatne. Głosuję negatywnie tylko wtedy, gdy zdecydowanie się z kimś nie zgadzam. W chwili pisania tego tekstu 2,6% moich głosów jest negatywnych. W końcu należy zakwestionować opinie.
Orbling

1

Myślę, że musisz wprowadzić rozróżnienie między różnymi rodzajami myślenia.

Kreatywne myślenie - jak wymyślić nowe pomysły, innowacyjne rozwiązania i nieoczekiwane rezultaty. Stoi za tym cała nauka, poszukaj Edwarda de Bono, technik kreatywnych itp. Niewielu programistów zagląda w tę dziedzinę.

Myślenie analityczne - mam na myśli proces naukowy. Spójrz na dane wejściowe, wyniki, zmierz to, co ważne, wyciągnij logiczne wnioski. Większość programistów zna technikę naukową, ale tak naprawdę nigdy jej nie używa. Zrób tak!

Krytyczne myślenie - myślę, że to bardziej filozofia. Odsuń się i spójrz na szerszy obraz, przejrzyj swoje założenia, czy naprawdę robisz to, co według ciebie brzmi, jakimi wartościami jesteś? Studiuj filozofię, istnieje mnóstwo świetnych autorów i pomysłów.


0

Matematyka uczy myślenia. Aplikacja wymaga kreatywności i doświadczenia.

Nie wierzę, że aby zostać świetnym programistą, po prostu poddajemy się życiu przypominającemu gąbkę

Dobry wgląd. Z grubsza powiedziane, wymagania dotyczące „wielkości” zależą od twojej osobistej definicji „wielkości” ... i zmieniły się z czasem. Dziś sukces projektu polega na tym, że można szybko poskładać koncepcje i nie zagłębiać się w najdrobniejsze szczegóły. Osobisty sukces można zdefiniować jako opanowanie C # jak Jon Skeet.

Czytaj programistę w pracy . Znacznie bardziej doświadczeni koderzy niż szczegółowo to omawiam.


0

Pracuj nad zastosowaniem pomysłów i koncepcji z pozornie niezwiązanych ze sobą obszarów. Dla mnie błyskotliwość iPoda nie była inżynierią stojącą za stworzeniem świetnego odtwarzacza MP3, ale pomogła rozwiązać ogromny problem branży muzycznej z piracką muzyką i modelem sprzedaży płyt CD / Albumu. Jobs prawdopodobnie wykorzystał więcej tego, czego nauczył się w Pixar, w kontaktach z przemysłem filmowym. Wiedział, na czym polega prawdziwy problem.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.