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

Для программиста самое главное не знание языка, фреймворка, и т.д. а именно мышление и обучаемость всему новому.
В итоге, чтобы достигать большего в карьере программиста нужно не так трать время на изучения всех особенностей ЯП — а нужно тренеровать мышление и понимать как организовать все, как оно будет работать — и тут используется мышление.
А синтаксис можно изучить любого языка и потом использовать.
Кроме решения задач, как прикладных, так и логических какие еще способы Вы знаете и используете чтобы развивать именно мышление программиста?

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Почни із розбору алгоритмів: edx.prometheus.org.ua/...15_Spring/about

Потім основи програмування: edx.prometheus.org.ua/...1/2015_T1/about

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

Ну, і вже, як згадали у попередніх коментарях, правило 10000 годин свідомої практики: www.vitaliypodoba.com/...how-to-be-best

чтобы достигать большего в карьере программиста нужно
10000 часов

Не скажу это слово вслух, иначе срач на 1024+ коментов гарантирован.

чтобы достигать большего в карьере программиста
нужно что-то из 1. быстрее решать 2. все более сложные задачи, чем программист мог вчера. если одновременно оба пункта удается — то это уже талант. Таланты на форумах такие вопросы не задают :)

итак, что нужно чтобы быстрее решать те же задачи?
знание инструментария: ЯП и его окружения, подходов к дизайну, best practices, тулзов и фреймворков — превращающиеся в навык, в автоматизм.

что нужно чтобы за такое же количество рабочих часов решать более сложные задачи?
умение рационально мыслить, знание и понимание причин сложившихся подходов к дизайну и best practices, знание методик проектирования, навыки моделирования превращающиеся в — развитую интуицию.

итого — для достижения бОльшего, нужно достичь меньшее. то есть приобрести опыт.

В итоге, чтобы достигать большего в карьере программиста нужно не так трать время на изучения всех особенностей ЯП — а нужно тренеровать мышление и понимать как организовать все, как оно будет работать
но похоже вы уже достигли бОльшего, раз пришли к выводу что нужно, а что нет?

на основании чего вы пришли к выводу
нужно не так тратить время на ..., а нужно тренировать мышление?

именно мышление программиста?
мышление именно программиста развивает — программирование.
как мышление именно шахматиста — игра в шахматы.
а мышление именно математика — занятие математикой.
и т.д.

Если верить специалистам, то мозг такая штука которая оптимизируется под то чем ты больше всего его напрягаешь. Будешь решать интегралы — будешь хорошо решать интегралы. Будешь стрелять — научишься хорошо стрелять.
Так что читай, пиши, тестируй код, проектируй решения, моделируй их.

p.s. hint — если будешь думать еще и над software design и архитектурой то научишься еще и этим заниматься и через пару лет будешь затыкать синьоров-помидоров.

Для программиста самое главное не знание языка, фреймворка, и т.д. а именно мышление и обучаемость всему новому.
Зато для HR’а самое главное знание языка (английского) и фреймворка
чтобы достигать большего в карьере программиста нужно не так трать время на изучения всех особенностей ЯП — а нужно тренеровать мышление и понимать как организовать все, как оно будет работать
Алгоритмы и структуры данных — это взаимопроникающие понятия. От выбора стуктуры сильно зависит реализация алгоритма.
какие еще способы Вы знаете и используете чтобы развивать именно мышление программиста?

Это самое мышление можно разделить на 2 типа: Анализ и композиция.
Хотите развивать аналитические скиллы — вперед дебажить чужой код, решать олимпиадные задачки и тому подобное.

Хотите развить композиционное мышление — делайте велосипеды.

Все правильно, нужно учиться решать задачи при помощи ограниченных средств, например, языка программирования. Есть замечательная игра Colobot, где предоставляется простой язык для управления роботом, и необходимо при помощи него писать простые алгоритмы для прохождения уровней. При помощи нее можно научиться писать простейшие алгоритмы для решения наглядных задач. Ну и это будет весело. А дальше, просто выбрать область работы (игры, сайты, etc.) и читать книги, решать задачи, читать чужой код.

По моему мнению, процесс обучения таков:
1. Выбираем любой простенький и популярный, в интересующей области, язык программирования (python, javascript, php, etc), для того, чтобы было легче искать информацию. Т.к. большинство задач на них решены кем-то, и в сети можно найти подсказку.

2. Решаем простейшие задачки. Желательно, чтобы они были полезны по работе или просто в жизни. (Пример: скрипт, который парсит с сайтов недвижимости новые предложения по аренде квартир в интересующем вас районе и отсылает вам на почту адреса и телефоны риелторов). Важно просто научиться решать поставленные задачи и достигать целей в обозримый срок.

3. Рано или поздно, задачки станут сложнее и будут приводить к тому, что код будет слишком сложен и станет трудно в нем разобраться через несколько дней. С этого момента начинается обучение тому, как этот код организовать так, чтобы было проще в нем разбираться. Здесь, пожалуй, уже понадобится помощь людей, просмотр подкастов, чтение соответствующих книг, чтение чужого кода.

4. Дальше, нужно пару лет поработать и поднабраться опыта. И, возможно, освоить другой язык программирования, расширить кругозор. На этом этапе уже будет понятно что читать и куда смотреть.

Самое важное — решать реальные и посильные своему уровню задачи. Потому что если ставить себе невозможные цели, умрет мотивация. А постоянный, хоть и маленький, прогресс, результат, даст веру и желание продолжать многолетнюю радость программирования :-)

Единственным требованием сейчас стать хорошим программистом является знание английского, а не фреймворков/сред и т.д. Все остальное нарабатывается трудом — кодить и еще раз кодить, не только что нужно на работе, но и для себя — даже если из пет проджекта ничего не выйдет — вы споткнетесь о массу вещей, которые на работе могут быть не затронуты.
Умение проектировать у программиста в большинстве случаев(99%) появляется после прочтения пары книг, просмотра множества проектов, и многократного использования паттернов(кто-то считает это злом, но на начальных стадиях при помощи их рассмотрено много практических примеров).
И всем в обязательном порядке прочитать «Code Complete».

fucking-great-advice.ru/advice/54
ИМХО это самое главное — научиться строить алгоритм решения задачи до того, как начал писать код. Алгоритмирование должно войти в привычку. И наверное это должно касаться и обычных повседневных задач

Я б розділив підняте автором питання на 2 категорії: алгоритми і архітектура. По алгоритмах суттєво допомагає математичний підхід і навики «інтуїції», тобто такого собі прозріння, аналогічного до рішення теорем. По архітектурі важливий навик бачення картини в цілому, можна сказати, масштабна уява (як, наприклад, у конструктора чи художника). В цих двох випадках важливі саме навики — плід багаторазово успішно вирішених задач. Тому відповідь на питання «як розвивати мислення програміста» — програмити і рев’ювити приклади крутих дядьків-програмістів. Якщо ціль — алгоритми, варто шукати цікаві задачі (наприклад з олімпіад по програмуванню). Якщо — архітектура, то дивитися опен-сорсні проекти, аналізувати їхні архітектурні рішення, пробувати перепилювати.

Чтобы развивать именно мышление программиста, нужно решать сложные задачи программиста.
Меня больше волнует вопрос как развивать воображение.

Просто читай литературу по интересующей тебя теме. Темы будут цепляться. Ну, и читай дальше и глубже. Здесь очень часто утверждается что надо только писать и писать.. Скорее всего это правильно. Могу сказать лично за себя еще с университетской скамьи. Мне достаточно прочитать теорию и я уже знаю как ее применить. Может вопрос еще в личных особенностях. Вот тут часто говорят за алгоритмы и архитектуры.. А ведь это не догма. Я в своих разработках поменял архитектуру и уже не могу сказать что то, что у меня работает вообще алгоритмы. Сводится к алгоритмам, и шаги есть, но во всю идет распараллеливание и это не совсем алгоритмы при выполнении. Развивай воображение.. Да..

Спасибо, но, наверное, Вы меня не поняли.
С алгоритмами у меня все OK.

Вы правы, программисту нужно правильно мыслить, а то получится «автоматизированный бардак»

Ха! Проблема в определении слова «Правильно»

правильно = адекватно поставленной задаче, что в свою очередь = стратегии развития приложения, бюджета проекта, сроков, стоимости работ, заинтересованности в клиенте

как-то так :)

Было одно не понятное слово. Теперь много

Вы на собеседовании расскажите про мышление и обучаемость, кода не сможете ответить на предыдущие вопросы про язык и фреймворк.

В принципе, конечно самое главное по началу-решать практические задачи. Вот когда уже задачи с горем пополам решаются-можно и мышление развивать, в сторону решать задачи правильно и красиво. Тут бы уже можно занятся алгоритмами/паттернами и прочими философскими вопросами.
От чтения книг без практики толку, как от изучения философии-понтов много, а толку мало.

Тут многие рекомендуют чуть меньше читать и чуть больше писать код — в принципе это и развивает мышление программиста, главное сталкиваться с проблемами и решать их. Также смотрите примеры кода от крутых дядек, пытайтесь разобраться почему так, а не иначе. Со временем, при таком режиме, мышление само придет.
зы. Также существует ряд книг по алгоритмам, лекций и курсов(coursera рекоменд).

меньше читать и чуть больше писать код
В книгах и статьях можно почерпнуть очень многое. Но особенность поведения языка/фреймворка, найденная в книге/статье выпадет из головы быстрее, чем если она была обнаружена на практике.

Підписатись на коментарі