Мы читаем большое количество статей, с рекомендациями по повышению продуктивности. Правда, ирония в том, что на них уходит столько времени, сколько можно было посвятить этой самой продуктивности. Тем не менее, такие статьи напоминают о вопросах, с которыми обращаются к специалистам по определённому ПО или программированию вообще.
Опираясь на свой опыт и опыт коллег, я выделил семь первых шагов к разработке качественного ПО, подкрепив их ссылками на полезные источники.
1. Развивайте логику
Чаще всего люди в самом начале спрашивают:
— С какого языка начать, чтобы преуспеть?
— Это секрет, но… Не в языке дело…
Важнее всего развить логическое мышление. Узнал я об этом на собственном печальном опыте, когда провалил с треском свой первый тест по C/C++ ещё в университете. Тогда я осознал, что был излишне сконцентрирован на формате и структуре языка, не уделяя достаточно внимания стоящей за всем этим логике.
Конечно же, можно уверенно сказать, что некоторые языки освоить легче, чем другие. Выберите тот, с которым чувствуете себя наиболее комфортно. Если вы спросите меня, то я постигал логику программирования через MS Excel. Да, именно старый добрый Microsoft Excel. И уже после я начал работать в Python.
Новичкам следует начать с базовых логических команд в электронной таблице: and (и), or (или), if (если). Затем можете приступать к написанию небольшого макроса в VBA (Visual Basic для приложений), чтобы освоить работу с циклами. А вот пара полезных ресурсов:
Плюс этого подхода в том, что большинство из нас так или иначе сталкивались с Excel и знакомы с ним. Этот опыт позволяет гораздо легче видеть, понимать и чувствовать логику всего процесса ввода-обработки-вывода. С этого момента начинается следующий этап.
2. Код как система
Система, согласно своему базовому определению, состоит из ввода, обработки и вывода. Можно разбить весь код на мельчайшие объекты, и на этом уровне всё будет работать по тому же принципу. Старайтесь воспринимать каждую строку кода как систему, т.е. от каждой команды до каждой функции/модуля и далее до всей программы целиком.
Кроме того, системы могут быть незамкнутыми или иметь циклы. В этом смысле можно отнести простые манипуляции с переменной к незамкнутым системам, а случаи, когда ввод зависит от вывода, — к циклическим (условные циклы for, while). Это определённо поможет сформировать в сознании ясную модель работы простого кода и понять, как изменять ввод для получения желаемого вывода.
Данный этап будет по-прежнему неплохо проработать в Excel и VBA: можно писать прямо в ячейки для ввода и вывода, применяя в качестве обработки макросы. Это очень наглядно! И вот ещё пара хороших практических ресурсов:
3. Код как физический объект
Величайшая умственная преграда, вынуждающая людей бросать изучение программирования на ранних стадиях — невозможности представить код как нечто физическое.
Конечно же, код не является физическим в прямом смысле, но представление его таковым действительно помогает. Дайте человеку LEGO — и он очень быстро освоит конструктор, построив весьма впечатляющие, креативные вещи. Тот же принцип работает в программировании. Представляйте каждую функцию как часть конструктора, которую можно перемещать, сопоставляя с другими частями кода, чтобы сконструировать элементы ещё больше. Возможна аналогия со сборкой автомобилей, где каждый элемент представляет собой часть единого авто. Причём детали должны быть сопоставлены в особом, замысловатом порядке, чтобы с конвейера вышла новая, сногсшибательная Audi RS7.
Поколение из 90-х и ранее, а также, возможно, многие современные разработчики учились всему этому на своих ошибках. Но в настоящем ошибаться самому не обязательно. Ниже приведены ресурсы, помогающие чётче представлять код как составляющие целого:
Некоторые упражнения, предлагаемые этими ресурсами, предназначены даже подросткам, они по силам абсолютным новичкам. У вас может возникнуть вполне логичный вопрос: “Почему этот шаг не первый?”. И правда, почему? А потому, что начинающие программисты могли бы сразу удовлетвориться таким уровнем и завершить обучение, так и не перейдя от визуального кода к профессиональной разработке. Но решать вам.
4. Изучайте настоящий язык программирования
Предположим, что до этого момента вы дошли, освоив первые два шага. Если нет, лучше исправиться. И поскорее! Только тогда вы сможете уже уверенно приступить к этапу ещё интереснее.
Помните утверждение, что написание кода полностью вращается вокруг логики и абсолютно не зависит от самого языка? Что ж, по большому счёту так оно и есть.
Но определённо можно сказать, что некоторые языки предлагают кривую обучения круче, чем другие. Она зависит и от того, что именно вы хотите делать:
- Разрабатывать приложения? Тогда неплохим выбором может стать Java.
- Создавать встраиваемые системы? C# вам в помощь.
Я начал с Python, потому что меня больше остального интересовала интеллектуальная обработка данных, для которой этот язык предлагает множество библиотек. Кроме того, Python — простой для начинающих язык общего назначения. Причина — легко преодолимая кривая обучения. Будучи новичком, здесь вам не придётся проходить через тёмный обряд жёсткой скобочной символики и писать множество заклинаний вроде void
и main
ради определения элемента.
Кроме того, сегодня это один из наиболее используемых и популярных языков. Посмотрите анимацию изменения популярности языков программирования с 1965 по 2019 год: https://www.youtube.com/watch?v=Og847HVwRSI.
Таким образом, если вы решили изучать Python, будьте уверены, что не столкнётесь с недостатком ресурсов. Лучше всего начать с базовых обучающих пособий. Затем переходите к онлайн курсам и проектам. Ниже приведены ссылки именно в такой последовательности, с возрастанием сложности:
Это самый трудоёмкий и затратный по времени этап. По сути, вы изучаете новый язык: процесс должен быть постоянным и не предполагает определённого завершения. Прохождение следующих двух шагов полностью зависит от того, как вы справитесь на этом этапе. Здесь очень важно держаться и сохранять упорство. Единственный способ оказаться по ту сторону этого шага — пройти через него.
5. Практика, практика, практика!
Недостаточно просто сделать ударение на важности практики. Это касается любой сферы, но в случае с программированием практика особенно актуальна. Написание и анализ не только собственного, но и кода других разработчиков даст обширное представление о том, как может быть структурирована программа. Просматривайте открытые репозитории, изучайте логику, стоящую за тем, что видите, и параллельно обсуждайте свои наблюдения с коллегами или друзьями. Но эффективнее всего отработка на практике и парное программирование с другом/коллегой. Оно не только очень полезно, но и не позволит утратить мотивацию. А вот и ссылка в помощь:
6. Великий код подобен творению искусства
Бывают ли у вас мурашки от прослушивания поистине прекрасного музыкального произведения? А может быть ваше внимание способны захватить удивительные, неординарные картины?
Выдающийся код — отличное сочетание логики и воображения, рождающее мурашки по телу разработчиков, читающих его. Можно лишь восхищаться тем, как грамотное сочетание простой логики кристаллизуется в поразительно сложные структуры кода, глядя на которые просто забываешь, что смотришь всего лишь в чёрный экран, декорированный белым, красным и зелёным текстом. Настоящие программисты рассматривают красивые программы с глубоким трепетом, как будто перед ними искусное творение Леонардо да Винчи. Ниже ссылки на ресурсы, способные помочь в освоении структуризации кода:
7. Получайте удовольствие!
Последний, но чуть ли не важнейший шаг. Существует, как вы знаете, стереотип, что все программисты — скучные зануды. И в этом есть своя доля правды, но большинство разработчиков программируют в удовольствие и с радостью. Копните поглубже — вы найдёте сотни пасхальных яиц, спрятанных практически во всём софте. К примеру, введите в консоли Python import this
— и…
Дзен Python Тима Питерса
Прекрасное лучше безобразного.
Явное лучше неявного.
Простое лучше сложного.
Сложное лучше усложнённого.
Разреженное лучше плотного.
Читаемость значима.
Особые случаи не такие уж особые, чтобы нарушать правила.
Но практичность важнее безупречности.
Ошибки не должны замалчиваться никогда.
Кроме их явного замалчивания.
В неопределённости отбрось искушение угадать.
Должен быть один — и, желательно, только один — очевидный способ сделать что-то.
Хотя поначалу он может быть не очевиден. Если вы не голландец.
Сейчас лучше, чем никогда.
Хотя никогда часто лучше, чем *прямо* сейчас.
Если реализацию сложно объяснить, она плоха.
Если реализацию объяснить просто, она, возможно, хороша.
Пространства имён достойны аплодисментов — будем писать их больше!
Дзен Python — буквально философское руководство к программированию.
Удовольствие от обучения — важнейшая часть становления виртуоза в любом деле. Упомянув дзен и философию, нельзя не вспомнить Конфуция:
Займись любимым делом, и ты не будешь работать ни одного дня в своей жизни.
Не жалея времени на саморазвитие, каждый может совершить прорыв! В чём угодно: как Моцарт, вы можете написать великую симфонию. Или, как Гвидо ван Россум, вы можете создать выдающийся язык программирования.
Читайте также:
- 5 недооценённых приложений в помощь программисту
- 2 черты отличных программистов
- Наглядное руководство по каждому типу тестов
Читайте нас в Telegram, VK и Яндекс.Дзен
Перевод статьи Krupesh Raikar: 7 Steps to Become the Mozart of Coding Before the Lock-down Ends