Які ваші пропозиції щодо того, як навчитися думати? [зачинено]


22

По-перше, це не загальне питання "зробіть мене кращим програмістом", хоча результат запитання може здатися подібним до нього. На програмістах.SE я читав і бачив, як вони закриваються тут , тут , тут , тут і тут .

Ми всі знаємо, що існує безліч загальних пропозицій щодо відточення своїх навичок програмування (наприклад, читання ТА, читання рекомендованих книг, перегляд блогів, залучення до проектів з відкритим кодом тощо). Це не те, що я після цього.

Я також визнаю активну читацьку аудиторію на цьому веб-сайті і сподіваюся, що це працює на мою користь, даючи чудові відповіді. З читання листування тут, як видається, існує велика кількість досвідчених людей, які працюють або працюють у галузях, пов'язаних з програмуванням. І більшість із вас може передати думки красномовно, стисло.

Нещодавно я помітив відмінність того, хто здатний програмувати, і програміста, який може по- справжньому думати . Я відмовляюся вірити, що для того, щоб стати прекрасним програмістом, ми просто піддаємося життєвій поведінці, що нагадує губку (тобто засвоюємо все, що стосується нашої сфери, читаючи, слухаючи, дивлячись тощо). Я навіть зауважу, що просто знаючи кожну концепцію програмування, яка дозволяє вирішити проблему X швидше, ніж усі навколо вас, якщо ви не можете думати , ви надзвичайно обмежуєте себе - ви просто швидкий робот.

Мені подобається вважати, що є чудовим обличчям бути великим програмістом, який не пов'язаний з тим, наскільки ви знаєте про програмування, але це те, наскільки добре ви можете переплести нові концепції та застосувати їх до своєї професії програмування чи хобі. Я не бачив, щоб хтось заглиблювався в цю сторону людського розуму і програмування і не звертався до них. (Так, можливо також, що я теж не виглядав досить важко - вибачте, якщо це так.)

Тож для тих, хто витратив будь-який час на роздуми над тим, що я згадав вище, - а може, це все тут, бо я трохи відстаю в особистому / професійному розвитку - які ваші пропозиції щодо того, як навчитися думати? Окрім звичного читання, що ще ви зробили, щоб бути кращими за інших людей у ​​вашій / нашій галузі?


Ти повинен думати, як я, бо я чудовий.
ChaosPandion

Зробіть такі важкі наркотики, як Стів Джов.
Робота

Функціональне програмування вчить мислити. Все інше вчить програмуванню;)
Даріо

Відповіді:


13

Мої пропозиції щодо того, як навчитися думати:

  • Вивчайте нові мови . Як природні, так і мови програмування. Завжди нову мову вивчити на руці. Мислення робиться в більш мовній мірі. Кожна мова має різний "погляд" на мислення. Більше мов, які ви знаєте, більше "розумових інструментів", концепцій, точок зору та абстракцій доступні вам.

"Мова формує те, як ми думаємо, і визначає, про що ми можемо думати". - Бенджамін Лі Уорф

І ще важливіше мова визначає те, про що ми не можемо думати.

  • Читайте голосно . Читайте широко. Не тільки про програмування, але історію, соціологію, біологію, мистецтво тощо. Розширити свої перспективи. Отримайте свіжі відомості. Ви не тільки те, що їсте - ви також те, що читаєте. Нові ідеї - це більше про поєднання двох (здавалося б) різних ідей, ніж про божественний спалах творчості з нізвідки.

"Шанс сприяє підготовленому розуму." - Луї Пастер

  • Покірність . Ви повинні багато знати, щоб зрозуміти, як мало ви знаєте. Покірність допомагає тримати розум відкритим для нових способів мислення.
  • Запитайте, чому? Не задовольняйтеся тим, як.
  • Вивчіть математику . Справді потужний інструмент, своєрідна мова для роботи з логікою та абстракціями. Вивчення математики зміцнює ваш мозок. Психічний еквівалент "ходіння в спортзал".

Я не так впевнений у природних мовах. Навчання їх має цінність, але для мислення? У контексті програмування? Значення слів для мислення іноді завищене - у нас можуть бути ідеї, які ми не можемо легко висловити словами, тому ми не повністю залежні від слів для формування ідей. Крім того, найбільш релевантна лексика (жаргон для математики та інших технічних сфер) сильно поділяється між мовами.
Steve314

6

З мого досвіду це зводиться до двох речей:

  1. Пристрасть, якщо вас цікавить ремесло, ви навчитесь, адаптуєтесь і будете швидше мислити поза межами коробки, ніж багато програмістів, які працюють у цій галузі так само, як і робота. (Деякі з яких не мають вдома комп’ютерів.)
  2. Деякі люди просто народжуються зі здатністю вирішувати технічні проблеми. Деякі люди, природно, мають можливість абстрактного гнучкого рішення.

Крім цього, всі досить різні в тому, як вони думають про програмування або вивчають нові навички програмування. Я пропоную вам продовжувати пробувати нові речі і зберігати те, що працює для вас.


Хороші бали, особливо другий.
Увімкнення

5

Які ваші пропозиції щодо того, як навчитися думати?

Практика. Практика. Практика.

Серйозно, розумова діяльність (тобто мислення) - це як фізичне навантаження. Чим більше ви це робите, тим краще ви робите це. (Насправді фізична активність теж передбачає певну розумову діяльність. Топ-спортсмени не просто мають м'язи в потрібному місці ...)

То як би ви (ефективно) практикували мислення?

(Тут я узагальнюю щось із іншого ...)

Я думаю, ви б визначили проблеми з мисленням, які вам здаються важкими (але не неможливими), і спробуєте їх вирішити (продумати їх) і більше подібні до них.


Я начебто це підтримую. Щоразу, коли я роблю щось, що повторюється, що не вимагає думки, я думаю про щось інше. Я також схильний робити це, коли роблю повторювані речі, про які я повинен думати, наприклад, за кермом, але я якось відчуваю, що їзжу краще, коли не думаю про це.
Граф

1
@Earlz - я не розумію вашої точки зору. Якщо ви робите щось, що повторюється, вам не потрібно думати про це. Я говорю про практику розв’язання проблем, які потребують мислення.
Стівен С

досвід козиряє все (якесь загальне твердження, я знаю), але ви вчитеся з часом, я маю на увазі, як часто ви стикалися з проблемою, і вам довелося назавжди вирішити, лише знову запустити її і подбати про неї за лічені хвилини. Крім того, так, як ви підходите до проблеми, не зосередьтесь на тому, що ви застрягли, завжди зосередьтесь на тому, чого я ще не пробував, від найпростішого до найскладнішого
farinspace

Умисна практика. Вам потрібно навчитися чомусь із кожної ітерації.

4

Вас можуть зацікавити наступні дві речі:

Потік

Міхалі Ксіксентміхалі , угорський професор психології, представив концепцію потоку .

Потік - це психічний стан операції, при якому людина в діяльності повністю занурюється у відчуття зарядженого фокусу, повного залучення та успіху в процесі діяльності.

Мені пощастило, що я можу щодня входити в потік за допомогою старої методики, яку я вивчаю з мого застосування GTD, що є наступною дією .

Я можу вам сказати, що це дійсно має значення. Коли я перебуваю в потоці, я виробляю більш високу якість і швидше, ніж коли я не перебуваю в такому стані. Я повністю зосереджений на тому, що роблю, і тому думаю ефективніше.

Обережність

Я задав питання про медитацію деякий час тому, тому що мене турбував факт, що медитація може знизити мої програмні (та творчі) здібності.

Я щойно розпочав навчання з методом Джона Кабат-Цинна , тому мені зарано ділитися з вами великим досвідом, але з небагатьох, яких я вивчаю поки що, я можу вам сказати, що це, напевно, ви хочете зробити.


+1 Хоча я ненавиджу, що є книга і ціла "теорія" про те, що означає здоровий глузд підходу до проблеми, GTD, безумовно, має ноги.
Включення

1
@Orbling: О, я повністю з цим згоден. Але, як і в більшості книг, є лайно і цінність. Що таке лайно і цінність, залежить від того, хто читає книгу. Проблема GTD полягає в тому, що він настільки потужний, що може розчавити вас, якщо ви не знайдете часу, щоб зменшити свій внесок, а не зосередитися на управлінні ним незалежно від його розміру. Це була моя помилка;)

Проблема, яка виникає в моєму житті, полягає в тому, що є так багато вкладів і стільки зробити, що я не встиг би здійснити жодну подібну процедуру. Хоча я, безумовно, бачу цінність у цьому.
Увімкнення

1
@Orbling: Я думаю, що це ключ. Фільтрування ваших даних є найвищою технікою продуктивності поверх Covey або GTD. Це вимагає бути дуже сильним подумки.

Я вважаю, що для виконання завдань, які ви фільтруєте, потрібні додаткові люди, хаха.
Орлінг

2

Я завжди вірив, що хороші інженери народжуються, а не створюються.

Вам потрібен набір розуму для цього, логічний, аналітичний, дедуктивний розум у поєднанні з наполегливістю та допитливістю, необхідними для ефективного огляду та структурного погляду на проблему та швидкого проходження від А до В, маршрутизації розуму через рішення.

Існує багато досліджень, які дозволяють припустити, що цей навик дуже сильно підвищений завдяки доброму ранньому впливу таких речей, музика теж допомагає. Після певного моменту ваші ментальні карти досить провідні. Не з точки зору того, що ти думаєш, а як ти думаєш.

Чи можете ви навчитися думати, як дорослий? Ну, звичайно, ви можете навчити техніці вирішення проблем, але тоді у вас є алгоритми, які слід виконувати, ви можете стати дуже швидким роботом, як красномовно висловлюєтесь. Інтуїтивне розуміння, ймовірно, вроджене.

Це аж ніяк не обмежується нашою професією, у багатьох наборах навичок переважає вроджена майстерність, а не набута відповідь. Люди можуть не хотіти, щоб це було правдою, але це, швидше за все, так.


2

Знайдіть онлайн-форум про те, про що ви захоплюєтесь. Щось, що має якусь спільність. Переважно не програмування - форуми програмування зазвичай більш орієнтовані на рішення, ніж орієнтовані на обговорення. Займіться. Захистіть це. Використовуйте аргументи. Ви також можете вести блог, але краще мати суперника. Сенс у тому, щоб мати значуще та письмове спілкування про щось із кимось. Де ви обмінюєтеся трохи більшими фрагментами тексту.

Ви навчитеся повідомляти свої ідеї та аргументувати їх. Оскільки вам доведеться відстоювати свої погляди, вам доведеться підтримувати їх фактами. Вам доведеться щось подумати, сформулювати свою позицію та підтримати її; можливо, навіть змінити.

Потім скористайтеся здатністю аналізувати питання та синтезувати думку та застосовувати її до будь-чого. Навіть програмування.


Я повинен сказати, що це один із способів практикувати мислення. Це не єдиний.
Домчі

2

Я думаю про те, що потрібно бачити речі як системи, і всі системи пов'язані між собою. Кожен у Всесвіті. Людство, планети, галактика, рослини, сонячне світло, фотосинтез, комахи, скелі, океани, всі взаємодіючі системи. Так само, у часі, цикли: народження, ріст, занепад, смерть клопів, людей, цивілізацій, гірських хребтів, зіркових систем. Нескінченна боротьба за енергію. Усі системи.

Це вивчення життя та природи у великому сенсі дослідження. Перегляньте всі пов’язані речі, перегляньте всі взаємодіючі речі. Концентруйтеся на цьому, спостерігаючи за заходом сонця і відчуваючи глибину сил тяжіння, які обертають нас навколо Сонця, тягніть нас до поверхні планети та потік сонячного світла, який червоніє перед тим, як потрапити у вашу сітківку на 300 000 000 метрів в секунду та робити знімки у вашому мозку приматів.

Коли ви починаєте думати про це, про те, як все пов’язано, як ціна на золото і рабську працю та бурі в Тихоокеанському та промислових комплексах Японії пов'язана між собою, і ви витрачаєте час, дійсно знайдіть час, щоб посидіти і подумайте про все це, тоді ваша мисляча «м’яз» дійсно згорнеться і зросте.

Зараз багато цього буде нижче порогу виразності, але не дозволяйте цьому зупинити вас. Ваш мозок потужніший за найпотужніший комп’ютер. Штовхати його. Я не думаю, що це можливо розігнати.

Мені пригадується чорно-біла картина, яка показала Альберта Ейнштейна, що лежав на газонному кріслі на пляжі, дивлячись на океан. У підписі сказано: "Тут сидить Альберт Ейнштейн. З його мозком".

Наступне завдання полягає в тому, щоб вміти простим чином доносити складність та взаємозалежність усіх речей. Це дасть вам щось робити, поки ви зовсім не старі.


2

Один із підходів - навмисна практика .

Просте повторення не призводить до набуття навичок - вам потрібно бути інтроспективним, оцінити свою ефективність, визначити способи покращення справи.

Ілюстрація: Мій близький родич змагається у спорті з стрільби з пістолета. Під час тренувань велика концентрація йде на перегляд кожного пострілу, орієнтуючись на кроки, які йдуть правильно. Якщо протидіяти інтуїтивно, не так багато уваги йде на погані кадри, тому що повторне (репетирування) помилка підсилює її.

Просто вистріл 100 пострілів вниз за межі даху нічого не приводить. Навмисна практика стрільби з 20 пострілів посилить хороші звички та призведе до кращої роботи.

Це ж стосується програмування - подумайте, чим займаєтесь. Не робіть цього щомісяця, щотижня чи щодня - робіть це по моменту, дія за дією.

  • Чому цей дефект виник у моєму коді?
  • Як я міг уникнути створення цього дефекту?
  • Як я міг швидше знайти рішення?
  • Яке припущення моє було неправильним?
  • Я просив допомоги досить швидко? занадто швидко?
  • Чи я раніше помилявся?
  • Цей дефект є ізольованим чи частиною шаблону?
  • Чи є базовий дефект конструкції?
  • Якщо так, чи можу я щось з цим зробити?

І так далі ...


чудовий момент, знову ж таки все це стосується часу та досвіду
farinspace

1
@farinspace, лише якщо ви витратите час на оцінку та навчання після кожної ітерації.

1

Ідіть тикати на щось, що любите, поки не знайдете перевагу.

Глибокий вдих,

Переступити...

...

... Розкажіть іншим, що ви знайшли.


1

Так ти хочеш думати

Дуже багато чудових пропозицій з інших плакатів про те, як думати чи як навчитися думати: потік, уважність, математика, пристрасть, практика ... тому я не піду туди, накритий ґрунтом.

Але нічого про те, чому. Яка мета?

Особисто я зрозумів, що перш ніж можна думати, потрібно знати, чому.
Найкраще, що потрібно зробити - це слухати і дивитись. (Я беру обоє як одиницю, ви не можете їх розділити)

Єдиний спосіб покращити програмування, будь то збирання вимог, перетворення цих вимог у детальні системні специфікації, відповідність цим документам проектування, реалізація коду, налагодження вашого дорогого життя, чи пропускаєте ви будь-який чи всі ці етапи, чи є у вас п’ять хвилин, щоб знайти рішення, або 20 років, вам потрібно послухати і подивитися.

Слухайте те, що хоче користувач, слухайте те, що користувач розповідає вам, що трапилося, слухайте, коли людина, яка підтримує, говорить вам, що бачила. Слухай. Слухайте, навіть якщо це не має сенсу. Слухай, навіть якщо ти переконаний, що вони так помиляються. Слухайте, а не судіть.

Шукайте підказки, не шукаючи, а відкриваючи очі. Подивіться на реальність. Ви не можете розпочати пошук відповідей, перш ніж ви подивилися на місце злочину. Ви не можете знайти рішення, доки не доведете недолік.

Один єдиний приклад з мого досвіду(щодо вирішення помилок, але її можна пристосувати до всього, що насправді). З очевидних причин (юридичних та інших) я буду тримати соковиті деталі від цього. У критичній системі безпеки оператор повідомив про серйозний недолік. Деякий географічний пристрій відстеження фактично втратив відстеження, коли його "не повинно бути", що може вплинути на життя (це "повинно" було справжньою помилкою і занадто довго зупинило наші дослідження). На щастя, хоча це було знайдено через кілька тижнів майже випадково, оскільки в віддаленому місці працювала інша система, для якої інший оператор прийшов довести, що відстеження не втрачено в цій системі. Це знову задумалось. Наш головний постачальник програмного забезпечення не повірив нам жодної секунди, тому нам довелося вийти і довести справу. Єдиний шлях був через трансплантат: побудова імітаційного моделювання для копіювання точної операційної ситуації. Нам довелося насправді поставити доказ, щоб постачальник повірив нам. Врешті-решт симуляція отримала інформацію поза нашими сподіваннями та призвела до розуміння всієї проблеми. Після цього не потрібно було довго виправляти.

Єдиний спосіб, який ми пройшли до кінця, - це логічно з'єднати одну віддалену систему з іншою, виконуючи подібну роботу, але не зовсім ту саму роботу. Ось шукають підказки (Дивіться). Це стало можливим лише довірившись звіту за один раз і не відхиливши його як випадковий збій у системі (Слухати), а потім знову почути другий звіт, який суперечив першому (Слухати).

Отже, коли ви мали правильні підказки (вислухавши та подивившись), визначивши проблемну область, зрозумівши першопричину чи ключові принципи, тоді ви можете продумати рішення для подальшого розуміння (спроба та помилка, моделювання, демонстрація, доказ концепції, макет, альфа, бета-версії) і, врешті-решт, пропонують надійне рішення (яке іноді можна вдосконалити після деякої операції в реальному житті).

Щоб вміти слухати та дивитись, потрібно бути відкритим, впевненим та абсолютною відданістю своїм цілям. Це паливо, про яке потрібно думати, або більше до того, щоб ваше мислення було зосереджене на правильній цілі (часто проблема полягає не в неможливості думати, а у відсутності чітко визначеної цілі для здійснення розуму).


+1 для вашої відповіді, вивчення вашої проблемної області та прослуховування користувачів є надзвичайно важливим. Хоча -1 для коментаря "так", тому ніяких змін.
Орлінг

@Orbling: Гаразд, ти маєш рацію, це було трохи за бортом. Коментар видалено Я не думаю, що вроджений талант є правильним, але про це не потрібно згадувати.
asoundmove

Добре, якби у вас замість цього була моя -1 відповідь, я б все-таки позначив вашу, але це заважало це в цьому, виправленому зараз. Добре згадати це як неправильне, якщо ви не згодні з тим, що я сказав.
Орлінг

@ Орлінг, ні, я не хочу голосувати -1 за когось, я б просто продовжував рухатися ... Лише екстремальні сценарії вимагають -1, просто не погоджуючись цього немає.
asoundmove

Я погоджуюся з вами на інших сайтах, оскільки вони є правильними / неправильними в основному. Programmers.SE відрізняється від решти тим, що є суб'єктивним, тому голосування - це в основному узгодження, незгода. Чи вважаєте ви, що це корисно чи не корисно. Я негативно голосую лише тоді, коли сильно не згоден з кимось. На момент написання 2,6% моїх голосів - це голоси. Думки зрештою слід оскаржувати.
Орблінг

1

Я думаю, вам потрібно зробити різницю між різними видами мислення.

Творче мислення - як придумати нові ідеї, інноваційні рішення та несподівані результати. За цим стоїть ціла наука, шукайте Едварда де Боно, методи творчості тощо. Не багато програмістів заглядають у цю сферу.

Аналітичне мислення - під цим я маю на увазі науковий процес. Подивіться на входи, виходи, виміряйте те, що важливо, прийдіть до логічних висновків. Більшість розробників знайомі з науковою технікою, але тоді її ніколи не використовують. Зробіть так!

Критичне мислення - я думаю, це більше філософія. Відстаньте і подивіться на більшу картину, перегляньте свої припущення, чи справді ви робите те, про що говорите, ваші цінності? Вивчайте філософію, там є купа чудових авторів та ідей.


0

Математика вчить мислити. Застосування вимагає творчості та досвіду.

Я відмовляюся вірити, що для того, щоб стати чудовим програмістом, ми просто піддаємося життєвій поведінці, що нагадує губку

Гарне розуміння. Грубо сказано, вимоги до "величі" залежать від вашого особистого визначення "величі" ... і з часом змінювалися. Сьогодні успіх проекту полягає в тому, щоб вміти складати поняття швидко і не заглиблюватися в усі тонкі запашні деталі. Особистий успіх можна визначити як оволодіння C #, як Джон Скіт.

Читайте кодери на роботі . Набагато більш досвідчені кодери, ніж я детально обговорюю це.


0

Робота над застосуванням ідей та концепцій із, здавалося б, неспоріднених областей. Для мене, блиск iPod не був інженером, що створював чудовий MP3-плеєр, а допомагав вирішити величезну проблему, яку мала в індустрії музичних розваг піратська музика та модель продажу музики CD / Album. Джобс, ймовірно, застосував більше того, що він дізнався на Pixar, стосуючись кіноіндустрії. Він знав, у чому справжня проблема.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.