@SevaSava

Как постичь искусство программирования?

Здравствуйте, коллеги!

Сразу оговорюсь, подобный вопрос я искал на сайте и нашёл для себя полезную информацию. Но хочу обсудить этот вопрос более предметно.

Я сейчас работаю в IT. Начинал с помощника сисадмина, ныне работаю в хелпдеске. Желаю перейти в разработку на Java (backend). Сейчас обучаюсь. Чувствую, что тяжело что-то представлять. Тяжело в голове строить какие-то абстракции, модели и т.п. У меня плохо развито абстрактное мышление. Логическое мышление тоже не самого высокого уровня.

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

Вопрос 1. как развить абстрактно-логическое мышление? Ряд моих близких говорят, что такое мышление - врождённая особенность и если его нет, то это не развить. Я в корне не согласен и моё мнение противоположное.

Вопрос 2. Как изучить методику программирования? Это ключевой момент. Многие твердят, что нужно учить не язык программирование, а учиться программировать. Но как? Язык - это инструмент, хорошо. Как же овладеть самим искусством программирования? Что нужно делать? Какие книги почитать? Я пробовал начать с "Грокаем алгоритмы" и с книги Никлауса Вирта по алгоритмам, но мало что понял. Читаю и, как говорится, "Смотрю в книгу, а вижу фигу"...

В прошлом окончил ВУЗ по IT-специальности, потом пошёл в армию, потом жизнь потаскала по различным местам, затем я попал в хелпдеск. Сейчас хочу всё-таки заняться программированием. Ещё в студенческие годы баловался в Delphi и вёрстке, это было чертовски интересно.

Благодарю за ответы и советы.
  • Вопрос задан
  • 920 просмотров
Решения вопроса 2
vabka
@vabka
Токсичный шарпист

Ещё в студенческие годы баловался в Delphi и вёрстке, это было чертовски интересно.

И зачем тогда себя мучать и пытаться залезть туда, куда вас вообще не тянет?


Я пробовал начать с "Грокаем алгоритмы" и с книги Никлауса Вирта по алгоритмам, но мало что понял. Читаю и, как говорится, "Смотрю в книгу, а вижу фигу"...

То что "грокаем алгоритмы" - это мусор, мы даже обсуждать не будем.
Ещё видел в одном из ответов на похожие вопросы - нет никакого смысла пытаться изучать алгоритмы до того, как ты изучил какой-то язык.

Это всё равно что пытаться изучать алгебру не зная арифметику и не зная, как выглядят цифры.

Я с этим тезисом согласен.
Ибо действительно ничего не сможешь понять.


начал пытаться решать задачи на логику. Но такие задачи требуют смекалки и способность догадаться (что логично) до какого-то решения, оперируя данными.

Никакой смекалки и догадок в задачах на логику нет. На то это и задачи на логику.


искусством программирования

Скорее придирка, но программирование и программная инженерия очень далеки от искусства.
Называть программирование искусством - всё равно что назвать искусством покраску стен.


В прошлом окончил ВУЗ по IT-специальности

Оффтоп, но это показательный пример несостоятельности текущей системы образования.


как развить абстрактно-логическое мышление?

Школьная математика.


Как изучить методику программирования?

Решай хоть какие-нибудь задачи при помощи какого-нибудь языка программирования.
Не торопись лезть на leetcode. Попробуй что-нибудь простое и чисто бытовое решить.
Ответ написан
Alexander_tt0
@Alexander_tt0
Интеграл в уме
Хочешь развить свой мозг? Тогда делай следующие управления:
1. Осознано собирай кубик рубика, представляя куда уходит каждая клеточка.
2. Занимайся математикой хотя бы немного. Решай Демидовича 5 минут в день.
3. Интегрируй в уме. Чем больше ты берёшь интегралов в уме, тем лучше.
64d9b88f125a8274231566.jpeg
Ну а вообще программирование - построение каких-то алгоритмов с обычного языка на компьютерный. Ты должен разбивать свои действия на части, описывая их в коде. Чтобы запомнить язык читай книги и добавляй побольше практики. Например, могу посоветовать сайт CodeWars с кучей задач для разного уровня на разных ЯП. А так, самое главное понять дано ли это тебе.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@Wan-Derer
Зобанели на Хабре, волки́ ;((
Если ты работаешь в поддержке значит всё у тебя нормально с абстрактным мышлением. Тебе прилетает кое-как сформулированная проблема, ты её декомпозируешь до стандартных абстракций и решаешь. Абстрактное мышление это умение размышлять о предмете, не видя его и не держа в руках. У всех современных людей оно плюс-минус развито. Есть люди, которые говорят что механика это просто, а электрика - сложно потому что "электричества не видно". Типа, движок Лады перебрать легко, а проводку в квартире - сложно. Но вот для меня движок это пипец как сложно: что там за что цепляется, да всё в динамике, да впрыск, да зажигание... да ну нафиг :)
Что касается "логического мышления", то у меня с ним тоже крайне плохо. Те задачи, которые дети 5-10 лет щёлкают как орешки, я не могу решить - я просто не понимаю сути задачи. Или что-то там про круглые люки. Я забил, не моё. Просто работаю программистом :)
Как учиться? Кому как удобно, тот так и учится. У кого память хорошая - тот по книгам. У меня плохая, поэтому я учился на практических задачах. Чуть-чуть теории и задачи, много-много задач с автоматической проверкой. Так организм "пропитывается" проблематикой и какие-то вещи, которые по книгам понять не мог, стали некоей "естественной средой", перестали возникать вопросы "почему так" - просто так и всё.
В ИТ много задач, работы хватит всем. Я, к примеру, никогда не изобрету новый алгоритм или фреймворк - не хватит ни ума, ни знаний, ни способностей эти знания получить. Меня не примут в Яндекс - им нужны алгоритмисты-олимпиадники. Ну Ок, значит я просто буду решать т.н. "бизнес-задачи", т.е. понимать что нужно заказчику, пытаться представить как это должно выглядеть для него, переводить задание в абстакции моего ЯП и решать теми высокоуровневыми инструментами, которые для меня разработали умницы-олимпиадники. Буду ремесленником-халтурщиком, чо :)
Ответ написан
@srogonoset4
Никак не развить логически-аналитическое мышление. Его можно раскрыть, но не развить. Программирование - это обычный набор алгоритмов, надо просто уметь их связывать. Любая книга об общем программировании и ты, по большей части, программист. Чтобы понимать, надо вчитываться и, главное, сразу отрабатывать на практике, чтобы понимать принципы не "абстрактно", а в прикладной форме - на экране монитора.
Ответ написан
Комментировать
georgi1984
@georgi1984
Нравится JavaScript
Нужно решать практические задачи на codewars начиная с легких
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы