Почему не нужно идти в айти — демотиватор

Kate

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

d72e4f0c833f3a116707da058d836130.jpg

Введение​

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

Не будем сильно углубляться. Я лишь хотел сказать, что этот процесс породил ошибочное представление о сложности разработки. Понятие "программирование" обозначает уже совсем не ту профессию, как некогда. Многие новички не совсем понимают, с чем им придется столкнуться.

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

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

Идея​

Подводя черту под вышесказанным, хочу донести очень простую мысль: нельзя быть разработчиком на языке <X>.

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

Отсюда вытекает простой вывод - нужна какая-то база, позволяющая такое вот "плавание".

База​

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

  1. Язык компьютера (железок) - ассемблер
  2. Язык операционной системы - С
  3. Язык работы с операционной системой - Bash/PowerShell
  4. Язык прикладных программ для платформы - Python/Swift/Java/C++/C#/Ruby/..
  5. Язык браузера - JavaScript
  6. Язык баз данных - SQL
  7. Язык функциональный - Haskell/Lisp/Elixir
  8. Язык документации и литературы - английский
Знание каких-либо нескольких пунктов из приведенных позволит писать программы и, может быть, даже устроиться на работу. Но стать полноценным специалистом можно только обладая всеми навыками. Именно такой стек откроет ворота дальнейшему росту и вширь, и вглубь.

Детальное рассмотрение​

Пробежимся по каждому пункту, чтобы понять, зачем он нужен

  • Язык железок - ассемблер

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

    Актуальный язык низкого уровня, однако находится посередине между машинно-ориентированными языками и языками, понятными пользователю.
    Его изучение даст понимание основ подкапотной работы ОС, системного ПО, большого количества библиотек. Язык даст возможность ощутить "близость к машине". Не так, конечно, близко, как ассемблер, но все же.
    Так что этого динозавра, безусловно, нужно изучить.
  • Язык работы с операционной системой - Bash/PowerShell

    Специализированные языки, позволяющие "общаться" с операционкой, как с обычной программой. Находить файлы, устанавливать/удалять программы. Словом, решать повседневные задачи при работе на компьютере. Знание команд и умение работать в командной строке - необходимый навык для любого разработчика. Работа с тем же Git выполняется через консоль.
  • Язык прикладных программ для платформы - Python.. и компания

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

    Браузеры сегодня уже можно называть операционными системами. По аналогии с Си, JavaScript является языком работы с браузером. Определенно требует изучения, так как использование браузера становится неотъемлемой частью повседевной жизни.
  • Язык баз данных - SQL

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

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

    Каждый инструмент хорош для определённого набора задач в определённой ситуации.

    Забить саморез молотком можно, но это будет не так эффективно. Для этого применяется ФП, понимание которого позволит использовать наиболее эффективный способ в зависимости от задачи - нет ограничения объектами и классами. Такой подход упрощает работу с кодовой базой и тестирование. Та же библиотека Redux, обычно работающая вместе с React, использует функциональный подход, так как основная концепция Redux — использование чистых функций без побочных эффектов.
  • Язык документации и литературы - английский

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

Резюме​

Подводя итоги, хочу сказать одно - никто не заставляет изучать все из того, что я перечислил. Можно освоить HTML, CSS, JS и называть себя сайтоклепателем веб-программистом. Но стать настоящим специалистом без всего остального будет проблематично. Для дальнейшего роста будет необходима такая база.

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

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


 
Сверху