Развить мышление

программирование психология логика мышление саморазвитие

В данный момент начал самостоятельно изучать Python, до этого был колледж и изучение Pascal и Delphi. И вот буквально вчера пришел к выводу что знать синтаксис языка это конечно хорошо, но если ты не умеешь правильно думать, то ничего особо хорошего из тебя не получится(да-да-да открыл Америку, знаю :)). При отсутствии "программистского" мышления даже с отличным знанием языка решая тривиальную задачу можно наваять полную херню, с кучей костылей и логических фэйлов.

В результате чего пришел к выводу что нужно развивать это самое "программистское" мышление - то есть логическое и алгоритмическое мышление(поправьте если ошибаюсь). ну и собственно прошу совета - господа айтишники, что посоветуете? какие книги, материалы, сервисы, ресурсы? еще что-то..

P.S> думаю не мне одному эта тема будет полезна

P.P.S. прошу прощения за сумбур, жутко не выспался

Примечание:
>Лучше сначала не сразу писать код а сначала подумать и продумать что и как вы будите реализовывать.

Перед всеми нами частенько встают логические задачи которые нам нужны решить, для программистов это является еще и основной частью работы. И частенько бывают задачи найти решение которых не так-то просто и старые способы решения не подходят. Что мы делаем тогда - начинаем перебирать варианты: 1-й, 2-й, 3-й... 100-й... 1000-й.. и решение в конце-концов находим, но не всегда оптимальное(те самые костыли и фэйлы о которых я упоминал выше) + затрачиваем много времени на нахождение этого решения. И вот именно для того чтобы оптимизировать процесс "нахождения решения" я и хочу развить системное мышление.

>Тупо берись сразу за сложный проект и продирайся сквозь дебри
Тут впору аналогия - не умеешь водить - фигня, садись за руль, выезжай на центральный проспект города - как-нибудь да научишься - там и знаки попутно попробуешь выучить и разметку на дороге и пр - да, конечно, это тоже вариант. Скорее всего с этого проспекта ты выедешь, но еще больше вероятность того что успеешь несколько раз попасть в аварии, да и правила хер выучишь.
Поэтому считаю что лучше ходить в автошколу в которой дадут теоретические знания, умения, поделятся опытом + потихоньку кататься в сельской местности, оттачивая навыки. Чтобы потом, в день экзамена, спокойно проехаться по тому самому центральному проспекту, лихо ориентируясь по знакам и разметке.

P.S> что-то меня совсем понесло :D

Примечание:
на данный момент составил такой список:

<ul>
<li>- Кодить, кодить и еще раз кодить. Желательно решать нетривиальные задачи, под это определение вполне подходят олимпиадные задачи. Взять такие можно <a href='http://acm.timus.ru/'>здесь</a> и <a href='http://acmp.ru/'>здесь</a>, а еще <a href='http://www.topcoder.com/tc'>тут</a> и вот <a href='http://codeforces.ru/'>тут</a> </li>
<li>- Читать, изучать чужой код. взять его можно например здесь - ... (тут жду вашей помощи)
</li>
<li>- Изучать тонкости выбранного вами языка(языков), теорию программирования в целом, как-то: парадигмы, направления, модели разработки и прочее
</li>
<li>- Изучать теорию, к примеру советуют книгу <i>"Искусство системного мышления. Необходимые знания о системах и творческом подходе"</i> <i>О Коннор'а.</i> </li>
</ul>
Так же самостоятельно набрел на такое понятие как <i>"Теория решения изобретательских задач"</i> - пока не знаю стоящая система или нет, но буду разбираться - если окажется стоящей - то добавлю в третий пункт. Прочитать о том что это можно <a href='http://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B5%D1%82%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D1%85_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87'>здесь</a> и <a href='http://www.trizland.ru/'>здесь</a>.

Примечание:
ну почему, ну почему здесь не поддерживаются html теги :(
Ответы:
Тупо берись сразу за сложный проект и продирайся сквозь дебри. И будь готов к куче трудностей. Если не сдашься и доделаешь, то на выходе станешь спецом.
Мне кажется это все  с опытом приходит. Лучше сначала не сразу писать код а сначала подумать и продумать что и как вы будите реализовывать.
Главное - больше практики. Сила профессиональных программистов в так называемых "паттернах" - готовых кусках кода, который программист пишет практически не задумываясь. Они приходят с опытом. Программист, имеющий в голове большой набор паттернов, может решать практически любые задачи очень быстро.
Теперь о том, как развить системное мышление. Нужно разбивать большую задачу на более мелкие части. Мелкие бить на ещё более мелкие и так далее до тех пор, пока каждая частичка не будет представляться в голове законченным ясным алгоритмом. Например, если есть задача "покушать", то можно действовать так:
Разбиваем задачу "покушать" на подзадачи "поесть пельменей", "попить чаю". Далее понимаем, что эти задачи можно также разбить.
"сварить пельмени", "съесть пельмени", "вскипятить чай", "выпить чай". И так далее . Каждый кусок уже можно представить в виде алгоритма
1. Пойти в магаз
2. Купить 0,5 пельменей
3. Поставить воду
4. Ждать до закипания
5. Положить пельмени
.... ну и так далее
В конечном итоге вы получите пошаговый алгоритм и это как раз и будет та самая программа.
Хоть я и не программист, но понимаю о чем разговор. Да, такое мышление нужно вырабатывать постоянной практикой, чем больше решаешь различные задачи, тем проще и быстрее решить новые, более сложные. Врачебное мышление то же самое. Практическая деятельность должна подкрепялтся постоянной теоретической подготовкой. Короче - работай и читай, читай и работай.
Попробуйте почитать эти книжки:
как уже говорилось решай логические задачи, их везде очень много.
Да хоть на сайте посмотри


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.