Education

7 апреля 2020 года — знаменательная дата для меня, ведь ровно 21 год назад в этот день началась моя карьера программиста.

Уф! Всё было будто вчера, а сегодня уже не юный специалист с 21-летним стажем изливает вам душу. Я с успехом прошёл по синусоиде превратностей мира ПО. Да, в моей жизни сейчас настал, без преувеличения, поворотный момент.

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

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

Карьера в разработке ПО — ваш старт на пути к мастерству в вашем деле. Как и в любой другой сфере, здесь будет полно вызовов и возможностей принять как правильные, так и абсолютно неверные решения. Эта статья — размышление об ошибках, совершённых мной за годы работы, и руководство по тому, как их избежать.

Ошибка 1 — не копить на чёрный день

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

Хотя в периодических легкомысленных тратах нет ничего плохого, вместо этого вам лучше расходовать деньги на образование. Знания — это не только самая выгодная, но и не теряющая ценности инвестиция.

Ошибка 2 — становиться незаменимым

Вместе с незаменимостью приходит власть, и она затягивает. Однако, идя таким путём, вы препятствуете своему профессиональному росту.

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

Ошибка 3 — сжигать мосты

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

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

Ошибка 4 — не делиться знаниями

По моему опыту, самый верный способ заслужить уважение коллег — хорошо разбираться в технологиях. А хорошо в них разбираться и не делиться знаниями — кратчайший путь к неудаче.

Знания — это половина успеха, а распространение знаний — вторая его половина. Хорошие программисты общаются с младшими коллегами и показывают им, как решить ту или иную задачу. Более того, они не просто подсказывают способ решения, но и объясняют, почему надо использовать именно его.

Ошибка 5 — игнорировать коммуникативные навыки

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

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

Ошибка 6 — ограничиваться одной технологией

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

Помните: необязательно детально осваивать появляющиеся технологии, достаточно усвоить их ключевые принципы, чтобы находить новые решения. Хорошие программисты не просто пишут код — они постоянно изучают подходы, которые помогают смотреть на задачу по-новому и находить самое удачное решение из всех возможных.

Ошибка 7 — халтурить

Нет никакого “быстрого грязного кода”. Грязный код — плохой код, и точка. Никогда не допускайте халтуры и второсортности.

По-настоящему оценить себя как программиста вы сможете в ситуации кризиса. Если ваше поведение меняется в напряжённой обстановке, вы не можете называться хорошим специалистом.

Ошибка 8 — не документировать код

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

Поджимают сроки, навалилась работа, нашлись ещё какие-то причины не документировать код? Любая программа без документации мертва и похоронена. Вот и всё!

Ошибка 9 — избегать политики

Все мы слышали, как айтишники говорят: “Не надо ввязывать меня в политику. Я всего лишь хочу внедрять технологии в жизнь”. Но это так не работает.

Где технологии, там изменения, а где изменения, там и люди, которые считают себя победителями или неудачниками. Тут-то и начинается политика. Чтобы стать победителем, вам придётся выкручиваться и хитрить. Другого пути нет.

Ошибка 10 — слишком увлекаться дизайном перед написанием кода

Да, сделать качественный дизайн до его воплощения в коде — это хорошо, но если уделять этому слишком много времени, возникнет аналитический паралич.

Не пытайтесь найти идеальный дизайн: в мире программирования его не существует. Ищите просто приемлемое решение, что-то такое, с чего сможете начать. Хороший дизайн — это карта: она должна меняться, а не застывать в камне.

Ошибка 11 — недооценивать важность “чувства кода”

Как говорил Роберт Мартин: “Написание чистого кода требует рационально использовать бесчисленное множество мелких приёмов, пропуская их через тяжким трудом обретённое чувство “чистоты”. Эти приёмы часто называют чувством кода”.

Это чувство помогает не только отличить хороший код от плохого, но и выработать стратегию по превращению плохого кода в хороший.

Ошибка 12 — хвататься за первое решение

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

Запомните: вы как программист должны не просто решить задачу, а решить её наиболее простым и оптимальным способом.

Ошибка 13 — не знать, когда не нужно что-то делать

Лучшие программисты точно знают, когда что-то делать не надо.

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

Суть не в том, чтобы уходить от рисков, а в том, чтобы принимать только правильные вызовы.

Ошибка 14 — не признаваться в своём неведении

Будь вы даже компьютерный гений, вы всё равно не знаете о своей технологии всего. Это в принципе невозможно.

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

Ошибка 15 — прогибаться под давлением

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

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

Ошибка 16 — не выстраивать связи и доверие

Да, некоторые программисты — одинокие волки, однако лучшие из их — исключительно коммуникабельные люди.

Простейший способ наладить связи и заслужить доверие — помочь другой команде в сложной ситуации. Так вы сделаете им “любезность” и сможете смело попросить её вернуть в нужное вам время. Вызваться помочь кому-то с проектом или как следует постараться, чтобы кто-то довёл дело до конца — всё это прибавляет вам не только опыта, но и влияния в компании.

Ошибка 17 — не видеть полной картины

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

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

Ошибка 18 — вновь и вновь изобретать колесо

Хорошие программисты никогда заново не изобретают колесо — где возможно, они используют существующий функционал повторно или развивают его. Это не только экономит время, но и развивает дух товарищества между разработчиками, которые делятся кодом.

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

Ошибка 19 — плохо знать правила бизнеса

Мы, программисты, частенько недооцениваем сложность правил в бизнесе. А ведь если мы не имеем о них чёткого представления, то и не сможем внедрить эффективное решение.

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

Ошибка 20 — не общаться с командой

Поскольку единых правил общения не существует (по правде говоря, в лимбе разработки ПО людей считают ресурсом), мы неизбежно затрагиваем в работе и личное — таковы Homo Sapiens.

Вы станете лучше планировать разработку, если будете знать сильные и слабые стороны и интересы коллег.

Ошибка 21 — не ставить здоровье в приоритет

Здоровье — это фундамент, на котором строится вся ваша жизнь и карьера в том числе. Оно даёт творческую активность, энергию и выдержку, чтобы пережить все радости и горести, которые ждут вас в пути.

Забота о здоровье — задача не на один раз. Надо сделать это образом жизни: правильно питаться, регулярно заниматься спортом, избавляться от вредных привычек.

Заключение

Любая карьера состоит из взлётов и падений и напрямую зависит от того, как вы с ними справляетесь. От неудач вы либо опускаете руки, либо воспринимаете ситуацию позитивно и учитесь.

Карлтон Фиск правильно сказал:

“Карьеру определяет не то, чего ты достиг, а то, что ты преодолел”

Читайте также:


Перевод статьи Ravi Shankar Rajan: 21 Bad Mistakes in My 21-Year Programming Career

Предыдущая статьяЧистый код на JavaScript: вертикальное форматирование
Следующая статьяR - язык для статистической обработки данных. Часть 1/3