Основные навыки каждого программиста

Sep 5, 2024

Что должен знать каждый программист

Определение программиста

  • Программист — это человек, владеющий инструментами и компетенцией.
  • Практика вранья в резюме: люди могут называться программистами, не написав ни строчки кода.
  • Программистом считается тот, чьи программы используются кем-то кроме него.

Основные навыки программиста

Базовая информатика

  • Понимание измерения информации.
  • Знание двоичной и шестнадцатеричной систем.
  • Знание комбинаторики и теории сложности вычислений.
  • Для геймдева: знание векторной алгебры.

Язык программирования

  • Необходимость изучения первого языка программирования (Java, C++, Python).
  • Ноукод решения не обеспечивают гибкость.
  • Рекомендуется знать несколько языков программирования.

Работа с сетью

  • Понимание работы интернета и деплой проектов на удаленные серверы.
  • Рекомендация провайдеров IT-инфраструктуры (например, Selectel) для деплоя.

Знание ПК

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

Работа в терминале

  • Необходимость уметь работать в терминале, так как это основной способ взаимодействия с компьютером.
  • Базовые команды перемещения по директориям и редактирования файлов.

Изучение различных парадигм

  • Освоение второго языка программирования, отличного от первого.
  • Понимание функциональной и объектно-ориентированной парадигм.
  • Знание нейминга и стиля кода.

Написание тестов

  • Обязательно писать тесты ко всем программам для проверки работоспособности функционала.

Чтение чужого кода

  • Программисты тратят 80% времени на чтение кода, а не на его написание.
  • Важно уметь читать и понимать чужой код.

Алгоритмы и структуры данных

  • Знание основных алгоритмов и структур данных (куча, стэк, очередь).
  • Понимание операций вставки в массивы и их временной сложности.

Основы компьютер-сайенс

  • Изучение основ компьютер-сайенс для более глубокого понимания.
  • Освоение функционального языка программирования.

Дополнительные навыки

  • Умение гуглить проблемы и находить решения.
  • Владение слепой печатью на клавиатуре.
  • Знание системы контроля версий (Git).
  • Умение пользоваться редакторами кода (VS Code, Vim, JetBrains).

Заключение

  • Необходимо постоянное самообразование и углубление знаний в программировании.