Як я можу переконатися, що я насправді навчаюсь програмуванню, а не просто вивчу деталі мови? [зачинено]


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: Навчитися їздити на велосипеді не потрібно було мені 10 000 годин. Або плавати, з цього приводу.
Роберт Харві

7
@PaulR Приказка про те, що на оволодіння вмінням потрібно 10 годин годин , а не просто "навчитися"
Тобіас Кіенцлер

Відповіді:


96

Не турбуйтеся про те, щоб зустріти якесь глузливе поняття "вміння", яке так часто звучить у таких висловлюваннях, як:

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

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

Це доводиться просто: витрачайте один тиждень (або дійсно будь-який час, більший за пару днів), намагаючись вивчити основи Хаскелла , Пролога чи Агда . Незабаром після того, як ви почнете чути, як у вашій голові грає стара пісня " Sesame Street " "Одна з цих речей не така, як інші ...".

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

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

Крім того, я б сказав, що більшість випадків, коли люди стверджують, що мають або можуть навчитися таким складним речам, як мови програмування, так швидко, як тиждень, вони страждають від ефекту Даннінга Крюгера , Вікіпедія (акцент мій):

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

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

Дослідники (Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973)) показали, що потрібно десять років, щоб розвивати досвід у будь-якій із найрізноманітніших областей, включаючи гру в шахи, музику композиція, операція з телеграфом, живопис, гра на фортепіано, плавання, теніс, дослідження в нейропсихології та топології. Ключовим моментом є дорадча практика: не просто робити це знову і знову, але ставити перед собою завдання, яке виходить за рамки ваших теперішніх можливостей, намагаючись його, аналізувати свою ефективність під час і після цього, і виправляти будь-які помилки. Потім повторіть. І повторіть ще раз.


Безумовно, існує набір загальних принципів, завдяки яким всі мови будуть легко вивчатися!

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

Через десять років ви зможете загалом програмувати. Це означає, що ви можете написати дещо пристойний код якоюсь мовою чи стилем мов. Тож через 10 років ви готові розпочати вирішення цих незліченних наскрізних концепцій протягом усього свого життя, окрім того, як бути Едсгером У. Дійкстра , Дональдом Кнутом чи Джоном Д. Кармаком , ви не збираєтеся дістатись до всіх їх.


11
Енх. Існує різниця між "знанням" мови та достатньою кваліфікацією, щоб виявити та виправити незначну помилку в одній. Хороший програміст може зробити останнє досить швидко, навіть архаїчними мовами.
Теластин

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

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

4
Я б сказав, що це не стільки ефект Даннінга – Крюгера, скільки просто припущення, що "мова програмування" = "мова програмування в стилі c". Знаючи пристойну кількість c ++, пристойну кількість C #, а також деякий запас perl і python, я сподіваюся, що за тиждень я зможу досить вільно володіти Java, PHP тощо. Не обов’язково експерт, але принаймні досить вільно. Я зробив забрати JavaScript протягом декількох днів. В цей момент мова йде, головним чином, про вивчення відмінностей між ними. Примітка: найпопулярніша мова в реальному світі є схожою на c. Це не обов'язково стосується, скажімо, Prolog.
neminem

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

51

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

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

ВАТ?

Досвідчені програмісти поліглотів думають у абстрактному синтаксичному дереві (AST) власну ментальну модель мови. Хтось не думає, "мені тут потрібна петля для циклу", а скоріше "мені потрібно щось перетворити на цикл" і перекладає це на відповідний, або поки, або ітератор чи рекурсію для цієї мови.

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

Можна побачити деякі підказки цього AST в парі Eyetracking відео Код Розуміння з відстеженням Eye і Eye-Tracking Code Experiment (Novice) , де рух вушка begineer і досвідченим програмістом спостерігається. Можна побачити досвідченого програміста "скласти" код у свою ментальну модель і "запустити" його в голову, тоді як новачок повинен переглядати кодове слово за ключовим словом.

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

Після того, як у вас є можливість використовувати AST в голові, вивчення іншої мови в подібній школі думки (перехід на Befunge - це трохи стрибок від Java, але не настільки з Forth ) стає набагато простіше - це просто "просто" переклад AST на нову мову, що набагато простіше 3-го, 4-го та 5-го (тощо) часу, коли це робиться.


Є класична стаття, справжні програмісти не використовують Pascal . Частина цього читає:

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

Є також біти, для яких ви не можете просто використовувати розумовий AST - вам також потрібно думати мовою. Це потребує небагато часу (я все ще звинувачую в написанні коду Perl на Python, і мій перший код Lisp було переглянуто, кажучи: "Це дуже гарна програма C".).

Для цього я мушу зазначити статтю, опубліковану ACM, « Як не писати Fortran будь-якою мовою» . Третій абзац статті (який не є провідними котируваннями) безпосередньо стосується питання, що знаходиться під рукою:

Є характеристики хорошого кодування, які виходять за рамки всіх мов програмування загального призначення. Ви можете реалізувати хороший дизайн та прозорий стиль майже в будь-якому коді, якщо застосувати його до себе. Тільки тому, що мова програмування дозволяє писати поганий код, не означає, що ви повинні це робити. І мова програмування, розроблена для просування гарного стилю та дизайну, все ще може використовуватися для написання жахливого коду, якщо кодер достатньо креативний. Ви можете потонути у ванні з дюймом води у ній, і ви можете легко написати абсолютно нечитабельну та нездійснену програму мовою без гото чи номерів рядків, за винятком обробки та загальних типів та збирання сміття. Якщо ви пишете Fortran або Java, C ++ або Smalltalk, ви можете (і повинні) вибрати, щоб написати хороший код замість поганого.

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

Я бачив код Java, написаний людиною, яка не перестала писати код C. Був один об’єкт з основним методом. У цьому об’єкті були безліч статичних методів, викликаних mainі приватними внутрішніми класами, які мали публічні поля (і, таким чином, були схожі на підказки). Це був код C, написаний на Java. Все, що було зроблено, - це переклад синтаксису однієї мови на іншу.

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

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

(Мої вибачення ChaosPandion за те, що сильно запозичили ідею, яку він представив .)


3
Не потрібно вибачатися. Я думаю, ви написали вражаючу відповідь.
ChaosPandion

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

3
Це дуже гарна відповідь. Бажаю, щоб я міг висловити двічі.
Уейн Вернер

2
Насправді саме тому ви не повинні спочатку вчитися OO, оскільки це формує ваш мозок одним із найгірших уявлених AST.
Морг.

1
@JimmyHoffa - Ви можете мати рацію. Я завжди спочатку вчив користуватися однією мовою, а пізніше повільно вводити більше. Але я все-таки думаю, що варто вивчити, оскільки я завжди можу вдарити гальма і змусити їх зосередитись на одній мові. (SML здається досить хорошим вибором насправді.)
ChaosPandion

12

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

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

І так, ви відкриєте для себе такі мови, як Haskell, які навчать вас чомусь новому, як тільки ви отримаєте чітке обгрунтування основ.

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


2
Це насправді не так? Деякі мови програмування кодують все як чисті функції (включаючи рішення + петлі). Інших можна моделювати за допомогою натискання та вискакування предметів із наборів тощо тощо
jozefg

1
Що не відповідає дійсності? Ви повинні навчитися повзати, перш ніж ви зможете ходити чи бігати.
Роберт Харві

1
Ну я повинен уточнити, я мав на увазі останній абзац, я згоден з рештою відповіді
jozefg

1
Останній абзац я замінив на той, що краще перегукується з моїми настроями.
Роберт Харві

5

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

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

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

Я програмую вже 30 років (OMFG!) І досі використовую php.netдля пошуку команд у PHP, оскільки це не моя перша мова.

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

У пов'язаних новинах я дізнався Рубі минулого тижня. Хоча я не "експерт", я можу вирішити вам проблему, про яку я міг би написати в Perl, скажімо, а потім витратити вік, перекладаючи її на Рубі, в той час як я дізнаюся її ще трохи.


Ваш коментар - перший, який я прочитав про моделі та візерунки! Я на 100% з вашим коментарем, одне - це знайти мову і почати робити програму. Ще один - продумати проблему і знайти відповідні інструменти для її вирішення, тоді ви починаєте шукати мову та починаєте програмувати.

3

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

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

Тож, можливо, ти можеш дуже добре відтворити кілька пісень, але не можеш швидко відхилятися чи підбирати нові пісні. Це, мабуть, еквівалент програміста .NET, який продовжує робити те саме додаток CRUD знову і знову, спробуйте щось нове, додайте в якісь виклики веб-служб чи розширений інтерфейс або напишіть його зовсім новою мовою. Коли ви стикаєтеся з задиркою, вивчайте, чому все відбувається так, як вони роблять, задайте питання на Stack Exchange і т.д. Зрештою, ви побачите всі закономірності, які постійно з'являються, і знаєте деякі основні теорії та вивчення нової мови не буде здаються майже непростими.


1

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

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

Це не означає, що ви повинні програмувати у Fortan під час використання Lisp або додавати значення стовпця в таблиці в db за допомогою курсору. Просто мова - це деталь реалізації. Той, який може змінити необхідні процеси, але не потребувати ідентифікації та створення процесів - врешті-решт є реальна реалізація у світі, із введенням / виведенням та бажаними результатами.


1

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

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

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

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

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

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


1
"НЕ слухайте інших програмістів" - так, звичайно. "- Як би ви дізналися, чи написали читабельний та легкодоступний код? - Ваш одноліток повідомляє вам, переглянувши код. Обгрунтування: Ви не можете визначити це самостійно, оскільки ви знаєте більше як автор, ніж сам код каже. Комп'ютер не можу сказати тобі з тих самих причин, що не може сказати, чи є картина мистецтвом чи ні. Отже, вам потрібна інша людина, здатна підтримувати програмне забезпечення, - щоб подивитися на те, що ви написали, і висловити свою думку ... " ( джерело цитати )
гнат

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

моє голосування вказує на оцінку якості публікації , а не на те, чи я згоден чи не згоден (wrt угода, я вважаю, що у вас тут є пункт). Я цитував іншу думку не тому, що вона протилежна, а тому, що вона має ґрунтовне пояснення (див. "RATIONALE"). Якщо ви можете придумати подібне ґрунтовне пояснення, щоб підтвердити свою думку, подумайте про редагування публікації, щоб додати її
gnat

що завгодно. зміст> форма. зберігайте форму, я зберігатиму вміст.
Морг.

0

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

Тоді є більш практичний підхід до програмування. Основним моментом, який люди, які чуми зазвичай позначають як «не хороших програмістів», є те, що вони знають лише одну мову. І навіть якщо вони знають інших, вони програмують в них так само, як вони роблять із рідною мовою. Це цикл, який потрібно перервати, якщо вони дійсно хочуть навчитися програмувати. Відповідь за замовчуванням на це полягає в тому, щоб вивчити принаймні одну мову з кожної парадигми програмування. Тож вивчіть мову OOP, функціональну мову, мову сценаріїв ... і т. Д. І під навчанням я не маю на увазі вивчення синтаксису . Ви вивчаєте мову, фактично використовуючи її для створення чогось.

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


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

@JimmyHoffa - Хороші бали!
Вимкнення системи

1
"Як базові інструкції процесора з'єднані між собою (...)" здається страшною ідеєю для початківців (ОП не заявив, що він такий, але давайте вважати заради аргументу. Це навчило б "мікрооптимізації", не насправді навчаючи, як щоб оптимізувати (3-5-ступінчасту архітектуру можна вважати трохи застарілою ...). Не зрозумійте мене неправильно - захоплююча CA - але для правильної оцінки потрібні такі слова, як "поза порядком" та "багатоскалярність", і, мабуть, прийде після базового досвіду програмування
Мацей П'єхотка

0

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

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

Подумайте лише про купу відомих майстрів-фехтувальників, несподівано відклавши свої мечі та вирушивши в бій із списами після 7 днів тренувань. Що б сталося? Вони були б розправлені.

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

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

Ось кілька речей, які ви можете зробити, вивчаючи мову.

  • Прочитайте про мову. якщо це звучить цікаво, спробуйте самі додатки з привітним світом.
  • Прочитайте деякі підручники, трюки, блоги.
  • Створіть у ньому прості додатки просто для розваги.
  • Тестуйте різні функції.
  • Якщо вам дуже подобається, придбайте кілька книг та / або відеоуроків.
  • Шукайте хороші бібліотеки.
  • Шукайте відповіді, запитуйте лише якщо ви не можете знайти відповіді.
  • Допоможіть іншим, хто запитує відповіді (де краще, ніж тут?)
  • Зробіть щось корисне. Зробити додаток для калькулятора може бути хорошою вправою, але якщо ви зробите додаток із списку ДО-ДО та фактично використовуєте його на ПК / телефоні, відчуття в 100 разів задовільні.

Досвідчуйте нові мови, вивчайте нові бібліотеки, вивчайте нові трюки у вільний час. Перш ніж ви це дізнаєтесь, ви здивуєте себе власною майстерністю.


0

У моєму випадку я дізнаюся, як насправді програмувати за допомогою наступного:

  1. Вчіться у майстрів. Слухайте програмування подкастів, читайте професійні блоги у вибраній вами темі програмування, читайте / дивіться чудові підручники, зроблені гуруми, які розкидані по всьому Інтернету та нарешті, читаючи епічні книги, як «Прагматичний програміст» . У цій книзі багато дорогоцінних дорогоцінних каменів, які були накопичені протягом усієї кар'єри авторів. Один вірний спосіб, як навчитися насправді кодувати, - це знати, як це роблять інші успішні програмісти.
  2. Досвід роботи. Читати про це і знати - це одне, насправді втілити його в життя і примусити його працювати - це інше. Немає кращого викладача, ніж досвід, тому надіньте шапку кодування та починайте роботу.
  3. Запитайте когось, хто знає. Так само, як ви зараз робите, не бійтеся запитати про кращі практики чи кращі способи вчинити справи зі старшими у вашій команді, або якщо ви не щасливі, щоб не мати доступу до зазначених старших чи наставників чи гуру, то є ще решта stackexchange та Інтернет, щоб запитати.

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


0

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

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

Далі спробуйте вирішити власні проблеми. Спробуйте знайти різні рішення та порівняйте їх. Швидкість та використання пам’яті - це найчастіше використовувані фактори. Обговоріть свої рішення з іншими програмістами.

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

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

Багато практики та роботи з кодом також у командах допоможуть вам підвищити свої вміння поетапно.

Я сподіваюся, що моя думка відповідає на ваше питання хоча б частково.

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