Едва получив диплом, ещё пахнущий чернилами, вы приходите на работу и сразу же оказываетесь ошеломлены неписаными правилами и множеством утомительных повседневных дел. Такие истории встречаются повсеместно, и программистская работа не исключение.
Немногие студенты на 100% готовы к своей первой настоящей работе. Если вы не хотите быть одним из них, изучите следующие 10 базовых навыков, которые можно освоить самостоятельно, без практического руководства:
1. Система контроля версий (VCS)
VCS — пожалуй, самое большое упущение в курсах по информатике. На этих курсах помнят только о том, чтобы научить писать код, но часто забывают научить студентов управлять кодом. Каждый программист должен знать, как использовать Git и Subversion для эффективного создания репозиториев, редактирования и коммита кода, ветвления и слияния, а также понимать рабочие процессы проекта.
2. Учитесь писать
Как программист, вы не просто пишете код. Вы также пишете примечания к выпуску проекта, сообщения коммитов для системы контроля версий и отчёты об ошибках в системе. Здесь и во многих других местах требуется ясная и эффективная письменная коммуникация, однако этому навыку редко уделяют внимание в информатике.
3. Регулярные выражения
Регулярные выражения — это отдельный язык, и каждый современный программист должен свободно владеть ими. Каждый современный язык поддерживает регулярные выражения или имеет соответствующую стандартную библиотеку. Если в коде нужно проверить, содержит ли строка 5 символов, 1 дефис и 1 цифру, вы должны уметь сразу написать /^[A-Z]{5}-\d$/.
4. Использование библиотек
Уже 2014 год, поэтому никому не нужно использовать регулярные выражения, чтобы извлечь имя хоста из URL. В каждом современном языке программирования есть стандартная библиотека для выполнения типовых функций.
Программисты должны понимать, что код, который был разработан, протестирован и отлажен, обычно лучше кода, который вы переписываете сами. Что ещё важнее, код, который не нужно писать, реализуется гораздо быстрее.
5. SQL
Многие изучают SQL прямо на работе. Как базы данных могут быть факультативом? Неужели есть кто-то, кто не пользуется базами данных?
Эпоха хранения данных в плоских файлах закончилась. Все данные помещаются в базу данных и извлекаются из неё, а SQL — это язык для хранения и извлечения данных. Это декларативный язык, а не процедурный, поэтому решение задач с его помощью требует нового образа мышления. Каждый программист должен понимать основы нормализации баз данных и уметь выполнять SELECT (с INNER и OUTER JOIN), INSERT, UPDATE и DELETE.
6. Умение пользоваться IDE, редакторами и инструментами CLI
Столяр, который умеет пользоваться только пилой, никогда не станет мастером, поэтому удивительно, что выпускники по информатике знают только Notepad или pico. Инструменты программирования помогают работать с кодом и другими данными, облегчая жизнь программиста. Поэтому каждый программист должен уметь пользоваться командной строкой, shell-скриптами, find, grep и sed.
7. Отладка
Каждый программист должен уметь отлаживать программы с помощью интерактивного отладчика или расставляя операторы вывода по всему коду. Умение находить проблемы путём пошагового уточнения чрезвычайно важно.
8. Защитное программирование
Ошибки всегда неизбежны, даже для программистов-звёзд. То, что всё выходит из-под контроля, — это норма в мире, поэтому ошибки не удивляют. Защитное программирование как раз и заключается в понимании этого факта. Если бы всё никогда не шло не так, мы бы не проверяли, успешно ли открываются файлы, не проверяли бы, являются ли идентификаторы клиентов допустимыми числами, и не тестировали бы, правильно ли выполняется код.
Программисты должны знать, что предупреждения компилятора — это полезные инструменты, которые делают нашу жизнь удобнее, а не раздражающие помехи, которых следует избегать. Каждый программист должен знать, почему каждая программа на PHP должна начинаться так:
set_error_reporting(E_ALL)
Каждая программа на Perl должна включать эти инструкции:
use strict; use warnings;
9. Работа в команде
Немногие программистские работы позволяют вам работать в одиночку. Если вы часто так делаете, ваш интеллект пострадает, а производительность ослабнет. Ваш код должен взаимодействовать или смешиваться с чужим. Каким бы талантливым ни был программист, если он не умеет сотрудничать с другими, он негативно повлияет на проект и быстро станет обузой для организации.
10. Использование существующего кода
В школе каждое задание — новый проект. Но в реальном мире всё не так. Для новичка в работе первая полученная задача часто заключается в исправлении ошибки. Затем вы добавляете небольшую функцию в существующую систему на основе существующей кодовой базы. Проектирование нового кода — это дело месяцев спустя, если вам повезёт.
[Эта статья была составлена по материалам: blog.newrelic.com]