Как я могу убедиться, что я на самом деле учусь программировать, а не просто изучаю детали языка? [закрыто]


82

Я часто слышу, что настоящий программист может легко выучить любой язык в течение недели. Мне говорят, что языки - это всего лишь инструменты для достижения цели. Программирование - это высший навык, который нужно освоить и освоить.

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


25
Попробуйте выучить другой язык. Попробуйте решить проблемы, которые вы уже знаете, как решить на вашем родном языке на вашем новом языке. Это не будет легко в начале. Но вы будете знать, что учитесь, как только новое решение старых проблем становится заметно проще (примечание: это может занять некоторое время).
FrustratedWithFormsDesigner

42
Кроме того, люди, которые утверждают, что могут изучать язык за неделю, должны определить, что они имеют в виду, когда говорят «учиться». "What do you mean you're not an expert in LanguageX?!? I can learn a language in a Week!", 1 неделя спустя:"See, I've learnt the language, and here's a Hello World example I copied from Wikipedia to prove it!"
JohnL

9
Один вопрос нужно задать. Вы строите свою логику в синтаксисе или используете более быструю и эффективную ментальную модель? Я считаю, что начинающие программисты склонны думать, используя синтаксис.
ChaosPandion

10
@PaulR: мне не понадобилось 10000 часов, чтобы научиться ездить на велосипеде. Или плавать, если на то пошло.
Роберт Харви

7
@PaulR Поговорка о том, что для освоения навыка нужно 10 тысяч часов, а не просто «выучить» его
Тобиас Кинцлер,

Ответы:


96

Не беспокойтесь о том, чтобы встретить какую-то нелепую концепцию «навыка», которую обычно можно услышать в таких высказываниях, как:

  • Все языки программирования в основном одинаковы.
  • Как только вы хорошо освоите один язык, вы сможете быстро и легко выбрать любой другой язык.
  • Языки - это просто инструменты, есть некая всеобъемлющая мозговая магия, которая на самом деле делает программное обеспечение.

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

Это доказывается просто: потратьте одну неделю (или даже любое количество времени, превышающее пару дней), пытаясь изучить основы Haskell , Prolog или Agda . Вскоре после того, как вы услышите старую песню « Улица Сезам», вы услышите в своей голове «Одна из этих вещей не похожа на другие ...».

Оказывается, существует целый ряд языков программирования, методов и подходов, которые настолько чужды, чем то, что 95% из нас делают или когда-либо делали. Многие совершенно не знают, что любая из этих других концепций вообще существует, и это прекрасно, и эти концепции не являются необходимыми, чтобы быть занятым и даже эффективным программистом.

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

Кроме того, я бы сказал, что в большинстве случаев, когда люди утверждают, что у них есть или они могут выучить такие сложные вещи, как языки программирования, так быстро, как неделя, они страдают от небольшого эффекта Dunning Kruger , Wikipedia (выделено мной):

Эффект Даннинга-Крюгера - это когнитивный уклон, при котором неквалифицированные люди страдают от иллюзорного превосходства, ошибочно оценивая свои способности намного выше среднего. Этот уклон объясняется метакогнитивной неспособностью неквалифицированных людей признать свои ошибки.

Я хотел бы отослать людей к этому более опытному взгляду на концепцию обучения программированию Питера Норвига: научиться программировать за десять лет .

Исследователи (Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973)) показали, что требуется около десяти лет для развития опыта в любой из самых разнообразных областей, включая игру в шахматы, музыку сочинение, телеграф, рисование, игра на пианино, плавание, теннис, исследования в области нейропсихологии и топологии. Ключевым моментом является совещательная практика: не просто делать это снова и снова, но ставить перед собой задачу, которая выходит за рамки ваших текущих возможностей, пробовать ее, анализировать свою эффективность во время и после выполнения и исправлять любые ошибки. Тогда повторите. И повторите еще раз.


Несомненно, существует комплекс общих принципов, которые сделают все языки простыми в изучении!

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

Через десять лет вы сможете вообще программировать. Это означает, что вы можете написать несколько приличный код на каком-либо языке или стиле языков. Итак, через 10 лет вы готовы начать заниматься этими бесчисленными широкими сквозными концепциями на всю оставшуюся жизнь, и, если не считать Эдсгера В. Дейкстры , Дональда Кнута или Джона Д. Кармака , вы не доберетесь до всех из них.


11
Enh. Существует разница между «знанием» языка и достаточным уровнем знаний, чтобы обнаружить и исправить в нем небольшую ошибку. Хороший программист может сделать последнее довольно быстро, даже на архаичных языках.
Теластин

5
@ CharlesE.Grant Я думаю, вы переоцениваете то, что большинство учат в колледже, а также то, сколько времени требуется, чтобы стать даже полуобученным в языке, таком как Haskell или Prolog. Я бы сказал, что опытному опытному инженеру, не имеющему опыта функционального программирования, понадобится значительно больше недели, чтобы исправить свою первую ошибку в программе на Haskell.
Джимми Хоффа

11
Я бы все еще утверждал, что очень фундаментальный набор понятий довольно компактен. Как только вы поймете , что такое переписывание терминов , у вас появится инструмент для определения лямбда-исчисления, исчисления СК, машины Тьюринга, алгоритма Маркова и т. Д. Небольшое количество действительно фундаментальных идей может охватить большую часть компьютерной науки. Но, конечно, для того, чтобы видеть простые шаблоны в, казалось бы, сложных вещах, необходим опыт.
SK-logic

4
Я бы сказал, что это не столько эффект Даннинга-Крюгера, сколько просто предположение, что «язык программирования» = «язык программирования в стиле c». Зная приличное количество c ++, приличное количество C # и некоторые знания Perl и Python, я ожидаю, что через неделю я смогу достаточно свободно владеть Java, PHP и т. Д. Не обязательно эксперт, но, по крайней мере, довольно свободно. Я сделал забрать JavaScript в течение нескольких дней. На этом этапе речь идет в основном об изучении различий между ними. Примечание: самый популярный язык реального мира - c-like. То же самое не обязательно относится, скажем, к Прологу.
neminem

2
@WayneWerner Серьезно, разница между языками Haskell или Prolog и algol намного больше, чем синтаксис, вы просто увековечиваете миф. Пройдите мой тест выше: потратьте неделю на изучение Haskell и выясните, как это работает для вас. Честно говоря, это будет хорошо для вас, многому научиться из этого.
Джимми Хоффа

51

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

Ключ к этому вопросу - превзойти язык и думать не на том языке, на котором вы кодируете.

WAT?

Опытные программисты-полиглоты думают в абстрактном синтаксическом дереве (AST) своей ментальной модели языка. Кто-то не думает «мне нужен цикл for здесь», а скорее «мне нужно циклически перезаписать что-то» и переводит его в соответствующий, или while, или итератор, или рекурсию для этого языка.

Это похоже на то, что можно увидеть при изучении разговорного языка. Люди, которые говорят на многих языках, свободно думают значение , и оно выходит на данном языке.

Некоторый ключ к пониманию этого AST можно найти в паре видеороликов, посвященных отслеживанию движений глаз, с помощью Eye Tracking и Eye-Tracking Code Experiment (Новичок), где наблюдаются движения глаза начинающего и опытного программиста. Можно увидеть, как опытный программист «скомпилирует» код в свою ментальную модель и «запустит» его в своей голове, а новичку придется перебирать код по ключевому слову по ключевому слову.

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

Как только у человека появляется возможность использовать AST в голове, изучение другого языка в рамках аналогичной школы мысли (переход на Befunge - это небольшой переход от Java, но не так много от Forth ) становится намного проще - это «просто» перевод AST на новый язык, который будет намного легче в 3-й, 4-й и 5-й (и т. д.) раз, когда это будет сделано.


Существует классическая статья « Настоящие программисты не используют Паскаль» . Часть этого гласит:

... Настоящий Программист может писать программы на Фортране на любом языке

Есть также биты, для которых вы не можете просто использовать умственную АСТ - вам также нужно думать на языке. Это занимает немного времени (я все еще обвиняюсь в написании кода на Perl на Python, и мой первый код на Лиспе был рассмотрен с надписью «Это очень хорошая программа на Си»).

На это я должен указать на статью, опубликованную ACM, « Как не писать фортран на любом языке» . Третий абзац статьи (это не ведущие кавычки) непосредственно касается рассматриваемого вопроса:

Характеристики хорошего кодирования превосходят все языки программирования общего назначения. Вы можете реализовать хороший дизайн и прозрачный стиль практически в любом коде, если примените себя к нему. Тот факт, что язык программирования позволяет писать плохой код, не означает, что вы должны это делать. И язык программирования, который был разработан для продвижения хорошего стиля и дизайна, все еще может использоваться для написания ужасного кода, если кодер достаточно креативен. Вы можете утонуть в ванне с небольшим количеством воды, и вы можете легко написать совершенно нечитаемую и не поддерживаемую программу на языке без переходов или номеров строк, с обработкой исключений и универсальными типами и сборкой мусора. Пишете ли вы на Fortran или Java, C ++ или Smalltalk, вы можете (и должны) выбрать хороший код вместо плохого.

Это не просто иметь AST - необходимо иметь AST, который можно перевести на другие языки. Иметь Fortran AST в своей голове и писать код на Fortran на Java - не очень хорошая вещь. Нужно также быть достаточно знакомым с языком и его идиомами, чтобы иметь возможность думать на языке (несмотря на то, что я сказал на самом верху).

Я видел код Java, написанный кем-то, кто не прекратил писать код на Си. Был один объект с основным методом. В этом объекте была куча статических методов, вызываемых main, и частные внутренние классы, которые имели открытые поля (и, таким образом, выглядели очень похоже на Struts). Это был C-код, написанный на Java. Все, что было сделано, - это перевод синтаксиса одного языка на другой.

Чтобы преодолеть этот пункт, нужно продолжать писать код на нескольких языках, не думать на этих языках при разработке кода, а думать на них при переводе дизайна в код для правильной работы с языковыми идиомами.

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

(Приношу свои извинения ChaosPandion за то, что он заимствовал из идеи, которую он представил .)


3
Не надо извиняться. Я думаю, что вы написали впечатляющий ответ.
ChaosPandion

Я хотел отдать должное человеку, который заставил меня задуматься об этом, чтобы написать ответ.

3
Это очень хороший ответ. Хотелось бы, чтобы я проголосовал дважды.
Уэйн Вернер

2
На самом деле это именно то, почему вы не должны изучать ОО в первую очередь, так как это форматирует ваш мозг с одним из худших из возможных AST.
Морг.

1
@JimmyHoffa - Возможно, вы правы. Сначала я всегда преподавал на одном языке, а потом постепенно вводил новые. Тем не менее, я думаю, что это стоит изучить, поскольку я всегда могу нажать на тормоза и заставить их сосредоточиться на одном языке. (SML кажется довольно хорошим выбором на самом деле.)
ChaosPandion

12

Выберите язык и начните кодировать. Python - хороший выбор для начинающих, и в Интернете есть учебники , чтобы вы могли научиться делать это правильно.

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

И да, вы откроете для себя языки наподобие Haskell, которые научат вас чему-то новому, когда вы прочно освоите основы.

Некоторые программисты, вероятно, думают, что все языки одинаковы, потому что они не сталкивались с тем, что заставляет их думать по-разному. Все наиболее часто используемые языки являются производными от Algol (по сути, это процедурные языки), и большинство из них являются языками с фигурными скобками, похожими на C. Все они делают в основном те же вещи, хотя некоторые из них более сложны, чем другие.


2
Это правда не правда? Некоторые языки программирования кодируют все как чистые функции (включая решения + циклы). Другие могут быть смоделированы с помощью нажатия и выталкивания объектов из наборов и т. Д. И т. Д.
jozefg

1
Что не правда? Вы должны научиться ползать, прежде чем вы сможете ходить или бегать.
Роберт Харви

1
Ах, я должен указать, я имел в виду последний абзац, я согласен с остальным ответом
jozefg

1
Я заменил последний абзац на тот, который лучше отражает мои чувства.
Роберт Харви

5

Программирование - это решение проблем таким образом, что решение может быть выражено в такой ограниченной грамматике, что оно может быть реализовано с помощью языка программирования. Поэтому искусство программирования - это искусство решения проблем.

Некоторые языки предлагают другие парадигмы программирования, такие как объектная ориентация, управляемая событиями, многопоточная и основанная на MVC инфраструктура. Это всего лишь модели и шаблоны, которые не имеют ничего общего с реализацией.

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

Я программирую 30 лет (OMFG!) И до сих пор использую php.netдля поиска команд в PHP, потому что это не мой родной язык.

Я бы сказал, что знание языков обратно пропорционально тому, как часто вы смотрите руководство или стекопоток. Опыт в программировании - это то, насколько легко вы решаете проблемы способом, совместимым с языками программирования.

В связанных новостях я узнал Ruby на прошлой неделе. Хотя я не «эксперт», я могу решить для вас проблему, которую я мог бы написать, скажем, на Perl, а затем потратить целую вечность, переводя ее на Ruby, пока я изучаю ее еще немного.


Ваш комментарий - первый, который я прочитал о моделях и моделях! Я на 100% согласен с вашим комментарием, одно дело - получить язык и начать создавать программу. Другой способ - продумать проблему и найти соответствующие инструменты для ее решения, затем вы начинаете искать язык и начинаете программировать.

3

Я думаю, что, как и во всем, практика совершенствуется. Только не пытайтесь всегда делать одно и то же или всегда использовать один и тот же язык и продолжать изучать вещи в каждом проекте.

Я думаю, что вы можете легко провести параллель с чем-то вроде обучения игре на гитаре. Любой хороший музыкант может научиться играть новую песню за очень короткий промежуток времени, потому что он уже знает все аккорды и всю теорию, почему аккорды звучат так, как они есть. Как они получают это хорошо? Они просто сыграли так много песен, что все образцы просто слились воедино, и в то же время дополнили свои знания фактической документированной теорией, на которую подписываются и эти образцы.

Так что, может быть, вы можете сыграть несколько песен очень хорошо, но вы не можете быстро отклоняться или подбирать новые песни. Это, вероятно, эквивалент программиста .NET, который продолжает делать одно и то же приложение CRUD снова и снова, в какой-то момент пробовать что-то новое, добавлять вызовы некоторых веб-служб или расширенный пользовательский интерфейс или писать его на совершенно новом языке. Когда вы натолкнетесь на загадку, посмотрите, почему все происходит так, как они это делают, задайте вопросы по Stack Exchange и т. Д. В конце концов, вы увидите все шаблоны, которые постоянно возникают, и узнаете некоторые основные теории, и изучение нового языка не даст кажется почти таким же пугающим.


1

Я не собираюсь говорить о том, сколько времени занимает изучение языка или что это значит для изучения языка, вместо этого я собираюсь рассмотреть вашу актуальную проблему: как определить, научились ли вы программировать или изучили язык программирования ,

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

Это не означает, что вы должны программировать на Fortan при использовании Lisp или добавлять значения столбца в таблицу в БД с помощью курсора. Просто этот язык - деталь реализации. Тот, который может изменить то, какие процессы необходимы, но не необходимость идентифицировать и создавать процессы - в конце концов, есть реальная реализация, с вводом / выводом и желаемыми результатами.


1

Моя стратегия всегда была сосредоточена на чистых навыках, а не на конкретных навыках.

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

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

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

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

Вы хотите постоянно задавать вопросы и принимать их только тогда, когда решение является быстрым, элегантным и надежным.


1
«НЕ слушайте других программистов» - да, конечно. «- Как бы вы узнали, если вы написали читаемый и легко обслуживаемый код? - ваш коллега говорит вам после просмотра кода. Обоснование: вы не можете определить это сами, потому что вы знаете больше как автора, чем сам код говорит. Компьютер не может сказать вам, по тем же причинам, по которым он не может определить, является ли картина искусством или нет. Следовательно, вам нужен другой человек - способный поддерживать программное обеспечение - чтобы посмотреть, что вы написали, и высказать свое мнение ... " ( источник цитаты )
комнат

@gnat делай что хочешь. Я просто говорю вам, что, поскольку большинство программистов не могут писать код для дерьма, их отзывы потенциально вредны, и вы должны приносить мешки и мешки соли, чтобы справиться с этим. Также я считаю, что "редактируемые и читаемые дебилы" вовсе не являются признаком качества. Верьте в то, что вы хотите, но не ходите -1 только потому, что люди не согласны с вашим видением.
Морг.

мой голос указывает на оценку качества почты , а не на то, согласен я или не согласен (по поводу соглашения, я скорее думаю, что у вас есть точка зрения здесь). Я процитировал другое мнение не потому, что оно противоположно, а потому, что оно имеет четкое объяснение (см. «ОБОСНОВАНИЕ»). Если вы можете придумать такое же веское объяснение, чтобы подтвердить свое мнение, рассмотрите возможность редактирования поста, чтобы добавить его
коммент

без разницы. содержание> форма. сохраняйте форму, я сохраню содержание
Морг.

0

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

Тогда есть более практичный подход к программированию. Основной камень преткновения, который люди чумы обычно обозначают как «не очень хорошие программисты», заключается в том, что они действительно знают только один язык. И даже если они знают других, они программируют в них так же, как и на своем родном языке. Это цикл, который нужно разорвать, если они действительно хотят научиться программировать. Ответ по умолчанию - выучить хотя бы один язык из каждой парадигмы программирования. Поэтому изучайте язык ООП, функциональный язык, язык сценариев ... и т. Д. И под изучением я не имею в виду изучение синтаксиса . Вы изучаете язык, фактически используя его для создания чего-либо.

Лично, когда я хочу выучить новый язык, я использую загадки Project Euler . Я перехожу к головоломке, которую я уже решил на языке ООП (в качестве примера), и пытаюсь решить ее, используя функциональную, пытаясь следовать лучшим практикам нового языка. Когда вы решаете одну и ту же проблему, используя два принципиально разных подхода, вы не только видите, в чем настоящие различия, но и показывают общие области. Эти общие области, которые являются общими для всех языков, являются настоящим программированием , различия - это просто разные способы достижения этого.


4
Я бы не назвал изучение физического поведения компьютера «теоретическим подходом», а «теоретическим подходом» было бы изучение теории, чтение тезиса о церковном чтении и изучение изоморфизма Карри Ховарда, изучение лямбда-исчисления и Основы теории чисел, это теоретические основы. Не сказать, что ваш ответ правильный или неправильный, просто сказать, что я бы назвал это конкретным подходом, а не теоретическим, поскольку в нем отсутствует теория.
Джимми Хоффа

@JimmyHoffa - Хорошие очки!
Система

1
«Как базовые инструкции процессора связаны друг с другом (...)» для начинающих кажется ужасной идеей (OP не заявил, что он один, но давайте предположим, ради аргумента. Он научит «микрооптимизации», не научив как оптимизировать (3-5-ступенчатая архитектура может считаться немного устаревшей ...). Не поймите меня неправильно - CA увлекательно - но для «правильной» оценки потребуются такие слова, как «out-of-order» и «multiscalar», и, вероятно, придет после некоторого базового опыта программирования
Мацей Пехотка

0

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

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

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

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

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

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

  • Читайте о языке. если это звучит интересно, попробуйте приложение (-и) hello world самостоятельно.
  • Прочитайте некоторые учебники, трюки, блоги.
  • Сделать простые приложения в нем просто для удовольствия.
  • Проверьте различные функции.
  • Если вам действительно это нравится, купите несколько книг и / или видеоуроков.
  • Ищите хорошие библиотеки.
  • Ищите ответы, спрашивайте, только если вы не можете найти ответы.
  • Помогайте другим просить ответы (где лучше, чем здесь?)
  • Сделайте что-нибудь полезное. Создание приложения для калькулятора может быть хорошим упражнением, но если вы создаете приложение TO-DO и действительно используете его на своем ПК / телефоне, чувство в 100 раз удовлетворительное.

Знакомьтесь с новыми языками, изучайте новые библиотеки, изучайте новые трюки в свободное время. Прежде чем вы это узнаете, вы удивите себя своим собственным умением.


0

В моем случае я учусь программировать с помощью следующего:

  1. Учитесь у мастеров. Слушайте подкасты по программированию, читайте профессиональные блоги по выбранной вами теме, читайте / смотрите замечательные учебники, сделанные гуру, которые разбросаны по всему Интернету, и, наконец, читайте эпические книги, такие как The Pragmatic Programmer . В этой книге много жемчужин программирования, которые были накоплены на протяжении всей карьеры авторов. Один верный способ узнать, как на самом деле кодировать, это узнать, как это делают другие успешные программисты.
  2. Опыт делом. Чтение об этом и знание - это одно, а практическое применение и заставить его работать - это другое. Нет лучшего учителя, чем опыт, поэтому наденьте шапку кодирования и начните.
  3. Спросите кого-нибудь, кто знает. Так же, как вы делаете сейчас, не бойтесь спрашивать о лучших методах или лучших способах сделать что-то от старших в вашей команде, или если вы достаточно неудачливы, чтобы не иметь доступа к упомянутым старшим, наставникам или гуру, тогда есть еще остальная часть stackexchange и интернет, чтобы спросить.

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


0

Я думаю, если вы можете мыслить аналитически, у вас есть хорошее начало.

Изучайте любой язык, который вы хотите, и работайте самостоятельно, используя ряд примеров, например, как представлено в почти любой книге, которая учит программированию.

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

Прочитайте код других программистов и постарайтесь понять, почему они так решили проблему.

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

Много практики и работы с кодом, также в командах, поможет вам постепенно повышать свои навыки.

Надеюсь, мое мнение ответит на ваш вопрос хотя бы частично.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.