Вы тоже можете стать героем программирования: не бойтесь пробовать

Вы тоже можете стать героем программирования: не бойтесь пробовать

2 марта 2022 г.

Программирование — один из самых востребованных навыков в современном мире. В будущем она будет играть еще большую роль, поскольку цифровизация идет полным ходом.


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


== Так почему бы и вам не поступить так же? ==


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


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


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


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


Почему


Итак, вот мои 3 главные причины, почему вам стоит научиться программировать прямо сейчас!


Растяжка ума


Билл Гейтс однажды сказал: «Обучение написанию программ расширяет ваш кругозор и помогает вам лучше думать, формирует способ мышления о вещах, который, я думаю, полезен во всех областях».


Программирование — это навык, который учит вас новому способу мышления и решения проблем. Это улучшает ваши навыки решения проблем и улучшает логическое мышление.


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


Логическое мышление и решение проблем являются ключевыми навыками почти в каждой области и необходимы для многих видов работ.


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


Просто дайте волю воображению. И последнее, но не менее важное: возможность понимать мемы на r/ProgrammerHumor, конечно.


Цифровая трансформация


Как можно не удивляться современным технологиям?


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


Цифровая трансформация стремительно меняет мир. Почти каждый день вы слышите в новостях такие модные словечки, как «облачные вычисления», «искусственный интеллект», «блокчейн» или «большие данные».


На улицах есть автономные транспортные средства, некоторые из которых ездят лучше, чем мы, люди. Врачи диагностируют такие болезни, как рак, с помощью [машинного обучения] (https://www.dkfz.de/en/datascience/machine-learning.html).


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


Все ваши привычки отслеживаются такими компаниями, как Meta (Facebook) и Alphabet (Google), будь то на смартфонах, носимых устройствах, голосовых помощниках или любом другом техническом устройстве. Вы находитесь в сети почти каждый час бодрствования, вводя личные данные в алгоритмы крупных технологических компаний, чтобы они могли создать вашу цифровую версию. Неудивительно, что их власть превосходит власть большинства государств. Это нелепо.


В современном мире [данные — это новая нефть] (https://www.wired.com/insights/2014/07/data-new-oil-digital-economy/), благодаря растущему числу пользователей Интернета, менее дорогое хранилище и увеличивающаяся мощность процессора, как написано в [законе Мура] (https://en.wikipedia.org/wiki/Moore%27s_law).


Цифровая трансформация неизбежна, и сбор данных уже является данностью.


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


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


Рынок труда


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


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


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


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


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


Как


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


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


Все они имеют свои плюсы и минусы. Следующий способ я бы порекомендовал новичку. Вот так.


Что такое программирование?


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


Концепция программирования во многом одинакова для большинства существующих языков, независимо от того, изучаете ли вы Python, C, Kotlin, Java или JavaScript: вы пишете набор инструкций (код), которые последовательно считываются и выполняются вашей машиной.


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


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


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


Давайте пример. Следующий алгоритм, написанный на JavaScript, вычисляет сумму всех чисел от 1 до 10, что равно 55, а затем выводит ее.


```javascript


пусть сумма = 0


для (пусть я = 1; я <= 10; я = я + 1) {


сумма = сумма + я


console.log(сумма)


Согласно блок-схеме выглядит следующим образом:


Диаграмма


Как видите, программу можно разбить на более мелкие части, которые сможет понять даже непрограммист. Всего нужно выполнить пять инструкций sum=0, i=1, sum=sum+i, i=i+1 и print sum, а также одно условие для проверки i<= 10.


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


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


Вы можете взять диаграмму и реализовать ее последовательность команд на Python, C или любом другом языке. Это ключевая идея, которая объединяет все языки. Сосредоточьтесь на том, чтобы привыкнуть к такому рабочему процессу.


Теперь, когда у вас есть представление о том, что такое программирование, пришло время познакомить вас с Карелом. Он учит вас программировать, следуя вашим командам.


Робот Карел


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


Вам лучше придерживаться Karel The Robot. Karel — это образовательный язык программирования, разработанный американским профессором [Ричардом Э. Паттисом] (https://en.wikipedia.org/wiki/Richard_E._Pattis), который обучает вас основным понятиям императивного программирования.


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


Используя Karel, вам не нужно сначала изучать сложный синтаксис. Его набор команд управляем и очень прост для понимания даже для новичка, но функциональность по-прежнему аналогична функциям других языков. Чтобы процитировать [Эрика Робертса] (https://cs.stanford.edu/people/eroberts/karel-the-robot-learns-java.pdf) [стр. 1]:


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


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


Карел


Решение может выглядеть следующим образом:


аннулировать обезвреживание двух бомб ()


обезвредить бомбу();


Поверните направо();


обезвредить бомбу();


повернись();


аннулировать обезвреживание бомбы ()


двигаться вперед во время очистки();


выбратьбипер();


повернись();


двигаться вперед во время очистки();


недействительными moveForwardWhileClear () {


в то время как (frontIsClear()) {


двигаться вперед();


Робот движется вперед до тех пор, пока его передняя часть свободна («moveForwardWhileClear»). Он поднимает звуковой сигнал (pickBeeper), поворачивается на 180° (turnAround) и возвращается назад (moveForwardWhileClear). Это инструкции, перечисленные внутри функции defuseBomb.


После этого робот поворачивается на 90° вправо («turnRight») и снова делает то же самое («defuseBomb»). Довольно круто.


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


Существует несколько версий робота Карела. Я бы порекомендовал проверить один из пользователей GitHub [fredoverflow] (https://github.com/fredoverflow/karel), который написан на Java.


Это включает в себя несколько упражнений, которые пользователь должен решить, например, приведенное выше (defuseTwoBombs).


Кроме того, взгляните на веб-версию, разработанную доцентом Стэнфордского университета [Крисом Пичем] (https://stanford.edu/\~cpiech/karel/ide.html), в которой, к сожалению, есть некоторые ошибки.


Выберите язык


Теперь пришло время изучить «настоящий» язык программирования.


В Интернете есть десятки статей о том, с чего начать: Python, JavaScript или язык xyz.


Не тратьте так много своего драгоценного времени при принятии решения.


Выберите один и придерживайтесь его. В конце концов, не так важно, какой из них вы выберете. Самый быстрый, с которого вы можете начать, — это JavaScript. Просто нажмите F12 в браузере, чтобы открыть DevTools, и начните вводить в нем «Hello World».


Требуется только одно нажатие клавиши. Есть также отличные [онлайн-редакторы] (https://geekflare.com/online-code-editors/), которыми вы можете воспользоваться, хотя я бы рекомендовал использовать локальную установку на вашем компьютере.


Изучите основы


Начните с основ и повторяйте их каждый день: типы данных, переменные, арифметика, условия if, циклы, функции и так далее.


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


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


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


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


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


Самое главное: выработайте ежедневную привычку. Пишите каждый день, даже если это короткий промежуток времени, например 10 или 15 минут. Повторение — ключ к успеху.


Изучите алгоритмы и структуры данных


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


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


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


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


Кроме того, получите доступ к наиболее распространенным структурам данных: массивам, спискам, очередям, стекам, картам, хеш-таблицам, деревьям. Попробуйте использовать некоторые из них при работе над разными задачами. Могу поспорить, что вы не будете использовать больше двух или трех из них в своем будущем рабочем дне. Особенно деревья довольно необычны.


На этом этапе вы также можете взглянуть на некоторые концепции, такие как ООП или функциональное программирование, в зависимости от вашего языка.


Вернуться к истокам


Вернитесь к корням. Программируйте без использования тяжеловесной IDE, такой как IntelliJ или Visual Studio. Избавьтесь от таких инструментов, как Linters и Prettiers, которые выделяют запахи вашего кода и автоматически форматируют ваш код.


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


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


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


Прежде всего, вам не нужен MacBook + 1000 € с причудливыми наклейками, кроме того, вы хотите соответствовать клише. Если вы хотите научиться программировать, создавая следующий Crysis, он вам тоже может понадобиться.


Обучайте других


На мой взгляд, обмен знаниями — это одна из лучших вещей, которые вы можете с ними сделать. Шварценеггер уже сказал: «Помогайте другим и давайте что-то взамен».


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


Сообщество программистов огромно, воспользуйтесь этим и участвуйте в беседах. Вы можете участвовать в обсуждениях на таких платформах, как DEV или Stackoverflow, присоединяться к нескольким подписчикам на Reddit или посещать местные встречи в вашем регионе. Во времена Интернета возможности безграничны.


Изучите инструменты


Как только вы освоите основы и некоторые продвинутые концепции, приступайте к изучению таких инструментов, как: GIT, линтеры, IDEA, Maven/Gradle/Webpack.


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


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


Получить стажировку


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


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


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


Попасть на стажировку может быть сложно, я знаю. Возможно, вам придется пройти через несколько центров оценки, пройти собеседования/задачи по кодированию и так далее. Не расстраивайтесь, если вы провалите свои первые. Интервью по кодированию не работают.


Последние слова


Вот и все. Звучит сложно? Да, так и есть.


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


Дайте мне знать, помогла вам эта статья или нет.


Совместно опубликовано [здесь] (https://larswaechter.dev/blog/why-and-how-to-learn-programming/)



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE