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

8-things-new-programmer-know

1. Хорошие коммуникативные навыки.

Управление разработкой — это командная деятельность, даже если иногда команда состоит только из вас одного. Поскольку так много вещей в каждый момент требуют взаимопонимания, общение становится самой большой проблемой. 90% управления разработкой — это общение. Например, нам нужно объяснить, что такое баг, как эффективно его диагностировать и как полностью донести свои сложные идеи до других. Общение — важнейший фактор успеха проекта. Неэффективное общение ведёт лишь к огромной трате времени и усилий.

2. Основы информатики.

Чтобы стать отличным программистом, необходима основа в области компьютерных наук. Но, честно говоря, компьютерные науки и компьютерная инженерия — это действительно две разные вещи. Однако, чтобы стать отличным инженером, вам нужна любознательность, чтобы исследовать тенденции развития компьютеров и то, как работают компьютеры, включая глубокое понимание потенциальных подводных камней в новых тенденциях и некоторых альтернативных решений. Это даёт вам ресурс для общения с другими инженерами. Алгоритмы, кроме как на собеседованиях, не очень полезны в других ситуациях. Я имею в виду, что в большинстве случаев достаточно иметь библиотеки классов. Но это не значит, что можно полностью игнорировать структуры данных и алгоритмы. Более того, рассуждение о коде и оптимизация всё ещё важны, особенно при масштабировании.

3. Научитесь читать код.

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

4. Изучите UNIX и Linux.

Эти две системы почти везде, так что их определённо стоит изучить. Они позволяют нам быстро управлять компьютерами через командную строку. При необходимости вы также можете устанавливать пакеты Linux и настраивать серверы. Также можно быстро редактировать с помощью vi (да, vi. Я сам пользователь Emacs). Ещё один важный момент: утилиты UNIX могут значительно экономить время. Кроме того, нам нужно знать, как использовать sed, grep, find, конвейеры и писать код с помощью базового bash/zsh.

5. Разберитесь с текстовыми редакторами.

Инженеры-программисты — мастера манипулирования текстом. Даже Emacs и vi, которые сейчас считаются антиквариатом, всё ещё остаются редакторами, которым инженерам нужно научиться пользоваться. Вам стоит освоить хотя бы один из этих двух, потому что у них разные философии, и понимание одного из них не только позволит вам писать код быстрее, но и не привяжет вас к какому-либо конкретному окружению. Не просто используйте редактор; заставьте его подчиняться вам, автоматизируйте его, настройте под свои собственные сочетания клавиш и пишите скрипты, решающие проблемы.

6. Настрой на автоматизацию.

Поскольку копирование/вставка — это форма автоматизации, мы определённо можем написать скрипты, чтобы делать это. Если писать скрипты просто так, программирование станет интереснее. Возможно, вы сможете выполнить день утомительной работы всего за 30 минут. Автоматизация может оптимизировать процессы, а также позволяет нам узнать много нового.

7. Понимайте систему контроля версий.

Я люблю использовать git для всего. К сожалению, когда я учился в школе, я понятия не имел о такой замечательной идее; как неловко. Контроль версий позволяет нам смело экспериментировать с кодом, потому что если что-то не работает, вы можете просто восстановить его до исходного состояния или отменить ввод. Это так просто!

8. Работайте над небольшим собственным проектом.

Это очень хорошая тренировка, хотя иногда вы можете чувствовать себя истощённым и хотеть всё бросить. Поскольку наши продукты абстрактны, в отличие от строительства моста, где можно увидеть осязаемый готовый результат, мы можем только продолжать писать код, что крайне скучно. Разве вам не хочется сосредоточиться на проекте, который вам нравится, относиться к нему как к своему ребёнку, сделать всё возможное и в процессе получить новые знания и научиться использовать инструменты — возможность, которой у вас никогда не было бы на работе? Ответ, конечно, ДА.

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

Ссылка на перевод: http://www.codeceo.com/article/8-things-new-programmer-know.html