Czy jest w porządku, jeśli nie mogę rozwiązać problemu siedząc przed komputerem? [Zamknięte]


12

Jestem programistą hobbystycznym i początkującym. Przez większość czasu nie mogę rozwiązać problemu, siedząc przed komputerem. Na przykład próbowałem dowiedzieć się, czy jedna liczba jest potęgą innej. Nie mogłem znaleźć rozwiązania, dopóki nie złapałem długopisu i papieru, a potem nie przeanalizowałem problemu. W mniej więcej 3 minuty rozwiązałem go i napisałem skrypt w Pythonie.

Czasami mogę rozwiązać problem, siedząc przed komputerem, ale z pewnymi problemami. Czy to w porządku?


6
Dla mnie nie jest to wcale taki zły problem, a tak naprawdę wiele osób za dużo wpatruje się w komputer, ostatecznie nie zdając sobie sprawy, że problem ten występuje w mniejszym stopniu. Dużo profesjonalnego programowania będzie wymagało bardzo rutynowych zmian zamiast skomplikowanych logicznych formuł zwykle podawanych jako zadania domowe, i nie stanowi to większego problemu, jeśli przynajmniej możesz to zrobić.
Katana314

2
Myślę, że możesz po prostu przeredagować swoje pytanie, aby miało to większy sens w programowaniu.
Snoop,

8
To jest całkowicie subiektywne. Każdy uczy się i działa inaczej. Rób, co Ci odpowiada.

7
Przed komputerem może być najgorsze miejsce do rozwiązania problemu, ponieważ masz ochotę zacząć pisać, kiedy powinieneś myśleć. Często lepiej jest uciec od maszyny, ponieważ zmusza do myślenia, że nie należy działać . Większość moich najtrudniejszych problemów rozwiązano rano idąc do biura.
Gort the Robot

2
Jest też pytanie, jak trudny jest ten problem. W miarę zdobywania doświadczenia niektóre trudne obecnie problemy staną się łatwe. Ale to tylko oznacza, że ​​możesz rozwiązać jeszcze trudniejsze. Dla siebie rozwiązuję wiele moich naprawdę trudnych podczas pieszych wędrówek lub narciarstwa biegowego.
jamesqf

Odpowiedzi:


34

Mam tendencję do rozwiązywania moich najtrudniejszych problemów:

  • Przed tablicą (czasem nawet niczego nie rysując - samo zastanowienie się, jak wizualizować problem, może czasem doprowadzić do rozwiązania)
  • Objaśniając je kolegom
  • Wyglądać przez okno
  • Podczas spaceru
  • Pod prysznicem
  • W toalecie

Odejście od monitora jest często bardzo pomocne w skoncentrowaniu się na samym problemie, a nie tylko na napisaniu implementacji.

Rozwiązywanie problemów dzieje się w twojej głowie. Wpisanie kodu programu to sposób, w jaki objaśniasz swoje rozwiązanie komputerowi.


1
Dziękuję Ci! Masz rację, im bardziej jestem z dala od komputera, tym bardziej mogę skupić się na problemie.
Mahmood Muhammad Nageeb,

2
Pamiętam, że czytałem książkę (nie pamiętam, która niestety) sugerowała trzymanie gumowej kaczki przy biurku, a kiedy jesteś zakłopotany, opisz głośno problem gumowej kaczce.
Gort the Robot

7
@StevenBurnap Nazywa się to debugowaniem gumowej kaczki i prawdopodobnie czytałeś o tym w The Pragmatic Programmer autorstwa Addison Wesley.
Philipp

2
„Wpisanie kodu programu to sposób, w jaki wyjaśniasz swoje rozwiązanie komputerowi”. - Alan Perlis powiedział: „Programy powinny być pisane dla ludzi do czytania, a tylko przypadkowo dla maszyn do wykonania”. Wolałbym spojrzeć w ten sposób: wpisanie kodu jest właśnie tym, jak wyjaśnisz swoje rozwiązanie swoim kolegom . Fakt, że po jednoznacznym opisaniu rozwiązania w taki sposób, że każdy człowiek (w tym ty, za 6 miesięcy) może go zrozumieć, staje się również wykonalny przez maszynę, jest tylko efektem ubocznym jego rygorystycznego opisu tyle, że nie ma dwuznaczności. …
Jörg W Mittag

4
Re: gumowe kaczuszki. Jest też podobna historia z misiem. Tutorzy w MIT siedzieli misie przed swoimi biurami. Możesz pukać tylko po wyjaśnieniu niedźwiedzia problemu. Połowa uczniów nigdy nie zapukała do drzwi, po wyjaśnieniu problemu niedźwiedziowi. Formułowanie dobrze napisanego, dobrze zbadanego, dobrze sformatowanego, szczegółowego, wysokiej jakości pytania na StackExchange może mieć ten sam efekt , co jest (jednym z powodów), dlaczego jesteśmy tak analityczni, aby to zrobić!
Jörg W Mittag

7

Myślę, że to dobre pytanie. Z tego, jak to interpretuję, myślę, że pytasz: „Czy to w porządku, że okresowo muszę odsuwać się od komputera”?

Nie sądzę, że mija taki dzień, w którym nie muszę wstawać i pytać innych, co myślą, lub wyciągać skrawek papieru i zapisywać równanie, aby rozwiązać problem. Ponadto, gdy bardziej zagłębisz się w programowanie, możesz nawet nie zacząć pisać kodu, dopóki wcześniej nie utworzysz diagramu / architektury.

Kiedy byłem na studiach, brałem udział w kursie dotyczącym struktur danych i miałem problem z zaprojektowaniem algorytmu sortowania. Kiedy poprosiłem mojego profesora o pomoc, wiedział, że wcześniej nie myślałem o tym problemie. Pierwszą rzeczą, którą mi powiedział, było to, że nie byłem jeszcze gotowy do pisania kodu. Wyciągnął więc kawałek papieru i narysował kilka kwadratów, a następnie włożył liczby z tablicy. Następnie narysował kilka zdjęć, na których przesuwa kwadraty, i pokazał mi wizualnie, jak działa algorytm sortowania.

Niektóre rzeczy, które możesz zrobić, aby oczyścić umysł i rozwiązać problem:

  • Zrób sobie przerwę
  • Porozmawiaj z kolegą
  • Tablica problem / koncepcja
  • Przespać się z tym!

Nie zdziw się, jeśli obudzisz się w środku nocy z rozwiązaniem.


1

Myślę, że z pewnością pomoże to stać się wydajnym profesjonalnym programistą / programistą, jeśli możesz. Jednak myślenie o problemie podczas tłumaczenia rozwiązania na logikę programu IMHO wymaga szkolenia, więc nie widzę problemu, jeśli serializujesz te zadania - po prostu musisz być w stanie pomyślnie wykonać oba te zadania. Myśląc o rozwiązanie od początku do końca przed rozpoczęciem kodu na pewno ma swoje zalety, ale trzeba być nieco pacjent znaków dla tego produktu.

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.