[Перевод] 20 навыков программиста, которые можно выучить за 72 часа
Хоть заголовок исходного поста и немного кликбейтный, нам показалось, что в этом списке всё же можно найти ряд пунктов, которые на самом деле помогут новичку. Если вам есть, чем дополнить список — будет здорово, если сделаете это в комментариях.
Даже в программировании есть простые в изучении навыки, которые не ограничиваются регулярными выражениями, базами данных и системами управления версиями. Я расскажу о том, что можно изучить за 72 часа.
Парсер сайтов
Создайте программу для парсинга сайтов и отображения необходимой информации в удобном фрейме. Это позволит вам отслеживать новости, погоду и другие важные события. Программу легко реализовать и она сэкономит вам кучу времени.
Редактор Vim
Освойте Linux-редактор Vim, функциональность которого можно увеличить при помощи расширений и дополнений. Vim не совсем интуитивно понятен, поэтому требуется обучение. Он поддерживает два режима ввода (текст и команды), между которыми можно переключаться.
Многофункциональный калькулятор
Разработайте собственный калькулятор с простыми операциями, матрицами, векторами и всем остальным, что требуется кодеру; добавьте в него сингулярное разложение, метод наименьших квадратов и возможность вычисления обратной матрицы — получится незаменимый инструмент для людей, часто выполняющих сложные вычисления, но в то же время применимый и в повседневной жизни.
Освойте одну из распределённых баз данных
Если вы ещё не освоили SQL, начните с него. Базы данных используются везде, от веб-приложений до искусственного интеллекта. Кроме того, распределённые базы данных наподобие MySQL или PostgreSQL используются в продакшене. Также необходимо освоить теорему CAP и алгоритм MapReduce.
Освойте extends в Java (swing)
Навыки программирования с extends в Java упрощают работу с фреймами и панелями: класс Frame расширяет JFrame/JPanel. Благодаря такому подходу вам не нужно будет каждый раз писать новый JFrame.set*, Jframe.add*, достаточно просто использовать в коде set* или add*. Поначалу это улучшение не выглядит важным, однако при работе с огромным количеством элементов расширение классов в Java не помешает.
LaTeX, BibTex, pgfplots
TeX — это язык текстовой вёрстки для серьёзных людей. Навыки владения LaTeX позволят вам быстро создавать файлы PDF с математическими формулами, кодом и графикой.
Научитесь прохождению собеседований
Готовьтесь к собеседованиям, изучая информацию в Интернете и заполняя пробелы в знаниях наименее изученных вами языков в соответствии с запросами работодателей. Это позволит вам ознакомиться с общими требованиями на рынке ИТ-услуг и повысить свои навыки программиста.
Linux
Выучите основы работы с Linux. Это одна из самых популярных операционных систем для разработки, часто используемая для удалённых серверов. Кроме того, дистрибутив Kali Linux часто используется хакерами и специалистами в информационной безопасности.
Основы теории графов
Графы в современном мире используются повсюду, от дерева файловых систем до алгоритмов поисковой выдачи и графов друзей в социальных сетях.
Системы контроля версий (VCS)
Научитесь работать с одной из VCS (например, с системой контроля версий Git). Такой инструмент защищает от ошибок, потому что позволяет откатиться назад, если изменения в программе не привели к желаемому результату и вам нужно вернуться обратно на несколько этапов.
Реализуйте один из алгоритмов машинного обучения
За 72 часа можно освоить какие-нибудь алгоритмы машинного обучения и реализовать их с нуля: научиться считывать файл CSV, создать обучающие и тестовые датасеты, выполнять алгоритм с настраиваемыми параметрами и получать простые выводы из релевантной статистики.
Научитесь пользоваться необходимыми ресурсами
Создайте профиль на Stack Overflow и научитесь пользоваться подобными системами «вопрос-ответ». Кто-то из вас найдёт полезные советы и подсказки, кто-то получит бесплатную практику.
Изучите паттерны ООП/проектирования
Если вы знаете ООП, сразу же начинайте изучать паттерны проектирования. Они часто используются в производственном коде. Об их знании часто спрашивают на собеседованиях. Освоив их, вы станете более качественным специалистом.
Основы JavaScript
JavaScript — самый популярный язык программирования на GitHub. С появлением Node.js язык JavaScript начали использовать не только во фронтенде, но и при создании бэкенда и консольных утилит.
Сортировка
Изучите несколько практичных алгоритмов сортировки. Систематизация упрощает жизнь и существенно облегчает жизнь кодера.
Работайте в командной строке
Командная строка сильно ускоряет работу и является необходимым навыком для взаимодействия с удалённым сервером. Часто способность работы в терминале входит в список требований для различных вакансий.
Тестирование
Научитесь разрабатывать практические тесты для кода. Это минимизирует количество возможных ошибок.
Python
Разберитесь, как используется генератор списков в Python. Да, это «синтаксический сахар», без которого можно обойтись, однако генерация гораздо удобнее. Почитайте о встроенных функциях Python и разберитесь, что делает каждая из них, поэкспериментировав в консоли интерпретатора. Освойте модуль itertools.
AWK, sed и grep
Поработайте с AWK. Это превосходный язык в стиле C, используемый в скриптах Bash. Sed — это потоковый текстовый редактор (и язык программирования), применяющий заданные текстовые преобразования к последовательному потоку текстовых данных. Sed и grep сэкономят вам много времени на обработке текстовой информации сервером.
Регулярные выражения
Найдите и изучите основные регулярные выражения в языках, с которыми предпочитаете работать. Разумеется, никто не запрещает пользоваться шпаргалками, однако это недостойно хорошего специалиста.