Эти уроки мотивировали меня жить с программированием всегда!

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

В 2008 году я начал писать коды на языке Visual Basic 6.0 через интегрированную среду разработки VB 6.0 в операционной системе Windows XP. В настоящее время большинство программистов-новичков начинают программировать на определенном языке программирования, печатая какой-либо текст на терминале. Но моей первой программой hello world было автоматически сгенерированное окно с графическим интерфейсом, которое содержало текст hello world в метке. После создания нескольких приложений с графическим интерфейсом я напечатал hello world на терминале с помощью Java. Позже я изучил JavaScript с помощью традиционной веб-разработки на основе HTML и экспериментировал с Python 2. Я также создавал программное обеспечение с помощью Borland Delphi.

Моя карьера в разработке промышленного программного обеспечения началась с PHP. Я освоил C и C++ во время учебы в университете. Позже я изучил C# и TypeScript в нескольких крупномасштабных корпоративных проектах. Моя нынешняя карьера в разработке программного обеспечения побудила меня хорошо освоить командные языки, такие как Bash, а также Golang, Dart и футуристические языки, подобные Kotlin.

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

1. Технологии изменятся, а теории — нет

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

Задумайтесь на мгновение — какой стратегии придерживаются разработчики, если им нужно создать библиотеку для нескольких интерфейсных фреймворков? Обычно они пишут пакет ядра, не зависящий от библиотек, и создают облегченные оболочки для каждой внешней библиотеки (например, см. модульный дизайн TanStack Query). Точно так же мы можем положить наш набор технических навыков на фундамент, основанный на теоретических аспектах информатики. Затем у нас будет незначительный ущерб всякий раз, когда мы переходим на новый стек технологий.

2. Идеальный код — это личное воображение

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

Нет, написание идеального кода — это личное воображение. Если вы покажете исходный код коллеге и скажете, что он идеален, он может указать на некоторые проблемы, которых вы не заметили. Кроме того, неизбежные зависимости часто могут сделать ваш код несовершенным из-за несоответствия стилей кода (например, использование библиотеки на основе ООП в процедурном проекте).

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

3. Ваша кодовая база устаревает быстрее, чем вы думаете!

Функция функционального компонента React.js сделала каждый проект React.js на основе классов устаревшим. Улучшения Vue 3, удобные для разработчиков, побудили пользователей Vue 2 перенести свои приложения на Vue 3. Python 3 заменил Python 2 полезными функциями. Разработчики C++ часто сталкиваются с трудностями при выборе лучшего синтаксиса из-за чрезмерных возможностей новых версий. Даже официальные встроенные API-интерфейсы, такие как API-интерфейсы браузера и мобильных устройств, устаревают и вводят новые замены.

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

4. Лучшего языка программирования не существует

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

Есть несколько языков, которые мы можем считать в целом хорошими языками. Например, C (и C++) — это хороший язык с более высокой производительностью, встроенной поддержкой низкоуровневого программирования (большинство операционных систем предлагают C API) и минимальным синтаксисом. Поэтому большинство разработчиков используют его для системного программирования. C не лучший, потому что он не подходит для каждого сценария разработки (например, для написания сценария DevOps). То же самое для всех других языков.

Таким образом, мы можем составить личный список любимых языков программирования, которые мы можем использовать в разных случаях, и осваивать их, а не пытаться найти лучший. В Моем списке есть C/C++, JavaScript, Python, Bash и Go.

5. ООП не всегда ваш друг

Почти все разработчики начинают изучать программирование с реализации простых программ с использованием парадигмы процедурного программирования. Вспомните программы, которые вы написали для вычисления площади круга, создания последовательности Фибоначчи, вычисления n-го факториала и преобразования градусов Цельсия в градусы Фаренгейта. Мы не использовали ООП ни для одной из этих программ. Итак, почему мы должны были изучить ООП?

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

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

6. Программирование вызывает стресс, если это не ваше хобби

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

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

7. GNU/Linux — отличный выбор для всех программистов

Я был пользователем Windows в течение десяти лет. Мой путь программирования начался с компьютера с процессором Intel Pentium III под управлением Windows XP. Затем я перешел на Windows 7 и 10. В 2020 году я принял правильное решение, перейдя на GNU/Linux (Ubuntu). Операционные системы GNU/Linux работают лучше, чем современные системы Windows на недорогих машинах, благодаря старому Unix-подобному, хорошо структурированному системному ядру. GNU/Linux стал результатом движения за свободу программного обеспечения и мотивирует каждого программиста создавать программное обеспечение с открытым исходным кодом для сообщества.

Большинство систем GNU/Linux обычно придерживаются POSIX и отделяют пользовательский интерфейс (среда рабочего стола) от ядра операционной системы. Они поставляются со встроенными менеджерами пакетов и минимальными инструментами CLI и мотивируют разработчиков оставаться в среде командной строки. Несмотря на то, что GNU/Linux не пользуется популярностью среди обычных пользователей компьютеров, это действительно лучшая среда для убежденных программистов, уважающих движение за свободу программного обеспечения.

8. Обучение, экспериментирование и обмен знаниями — ключевые действия, которые оттачивают ваши навыки.

Каждый разработчик обычно начинает свой путь разработки программного обеспечения в качестве стажера или разработчика-стажера. Затем они постепенно совершенствуются и достигают разных карьерных вех. Они продвигаются по карьерной лестнице, осваивая навыки, связанные с их программным продуктом или услугой. Такой подход хорош для повышения вашей карьеры в конкретной компании. Но, к сожалению, это помещает вас в песочницу и скрывает другие аспекты программирования. Что делать, если вам нужно изменить вашу текущую компанию? Что делать, если вам нужно присоединиться к стартапу, использующему современные технологии? Что делать, если вам приходится работать с древней кодовой базой C, написанной несколько десятилетий назад?

Я никогда не работал с GraphQL, но изучал его. Я не работал с чисто функциональным проектом, а экспериментировал с Haskell. Дизайн компилятора не входит в мои повседневные разработки, но я экспериментировал с ANTLR и изучал теоретический дизайн компилятора. Если бы мне пришлось работать над новым проектом, я уверен, что смогу сделать это продуктивно, поскольку знаю основы большинства вещей. Несмотря на то, что я хорошо знаю Bash и использую его каждый день, я все еще экспериментирую с Bash и нахожу что-то новое. Затем каждый день я изучаю что-то новое и у меня есть новый контент, которым я могу поделиться с другими разработчиками.

Обучение, экспериментирование и обмен информацией помогают нам стать лучшими программистами.

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



Спасибо за прочтение.

Повышение уровня кодирования

Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:

  • 👏 Хлопайте за историю и подписывайтесь на автора 👉
  • 📰 Смотрите больше контента в публикации Level Up Coding
  • 💰 Бесплатный курс собеседования по программированию ⇒ Просмотреть курс
  • 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"

🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу