[Перевод] 21 извлеченный урок за 21 год программирования
Доброго времени суток, друзья!
7 апреля 2020 года. Сегодня для меня очень важный день. Сегодня исполняется ровно 21 год с того момента, как я начал писать код (делать это профессионально, зарабатывать этим себе на хлеб).
Кажется, что это было только вчера… сегодня я — человек среднего возраста с 21-летним опытом программирования, который прошел через множество перепитий вероломного мира разработки программного обеспечения.
Совершать ошибки — неотъемлемая часть процесса обучения. Часто это выступает критерием успеха. Стремление избегать повторения ошибок должно находиться на первом месте в списке приоритетов разработчика.
Разумеется, личный опыт — лучший способ научиться чему-то, но опыт других людей — более легкий, быстрый и умный способ, позволяющий избежать серьезных неприятностей. В конце концов, жизнь коротка: невозможно совершить все возможные ошибки.
Карьера разработчика — увлекательное путешествие по освоению удивительного искусства. На этом пути вас ждет множество вызовов, в одних случаях вы будете правы, в других — будете ошибаться. Эта статья посвящена урокам, которые я извлек за довольно продолжительный период. Надеюсь, она пойдет вам на пользу.
1. Не откладывать на черный день
Траектория вашей карьеры в начале пути во многом будет зависеть от того, как вы будете тратить заработанные деньги. Вас будет одолевать соблазн купить новую машину, обновить гардероб или сходить в дорогой ресторан.
Пускать пыль в глаза время от времени не возбраняется, однако, в первую очередь, расходуйте средства на саморазвитие (обучение). Это не только отличные инвестиции, которые оборачиваются хорошим профитом, но также то, что останется с вами навсегда.
2. Считать себя незаменимым
Прилив сил после осознания себя как незаменимого специалиста в своей области вызывает привыкание и негативно влияет на профессиональный рост и личностное развитие.
Запомните, если хотите достичь более высоких результатов, нельзя останавливаться на достигнутом (нельзя довольствоваться тем, что имеешь, знаешь, умеешь). В конце концов, найдите и воспитайте себе преемника, который заменит вас на ответственном посту.
3. Сжигать мосты
Даже если вы — превосходный, неутомимый, полный сил и энергии программист, вам не следует сжигать мосты и разрывать связи. Разработка ПО — маленький мир. По мостам, которые вы хотели бы сжечь, рано или поздно придется перейти. Так что лучше этого не делать.
Будьте скромными, корректными и соблюдайте хорошие манеры даже с теми, кто вам не нравится.
4. Не делиться знаниями
По моему опыту, хорошо разбираться в технологиях, которые используешь в работе, самый надежный способ завоевать уважение коллег. Однако хорошо разбираться в технологиях и не делиться своими знаниями с окружающими — верный путь в никуда.
Знания — это половина успеха, делиться ими — вторая половина. Хороший программист общается с начинающими разработчиками и показывает, как решать задачи. Он не только говорит им, как разобраться с проблемой, но также объясняет, почему она решается именно таким способом.
5. Игнорирование «мягких» навыков
Программисты иногда забывают, что разработка ПО — это командный спорт, где проект является общей задачей группы людей, работающих бок о бок, поддерживающих друг друга и стремящихся к одной цели.
Поэтому если программист является надменным (высокомерным), не увлечен работой или не умеет продуктивно общаться, это будет негативно сказываться не только на его работе, но и на проекте в целом. Так что обладание так называемыми «мягкими» навыками является обязательным условием.
6. Зацикливание на стеке технологий
Разработка ПО никогда не перестанет эволюционировать. Поэтому человек, считающий себя профессионалом в этой сфере, также должен постоянно развиваться для того, чтобы оставаться востребованным.
Помните, ключ к успеху не в скорости освоения нового материала, а в получении концептуальных знаний, позволяющих решать старые проблемы новыми средствами. Хороший программист не только пишет код, но также все время чему-то учится, чтобы решать поставленные задачи наиболее эффективными способами.
7. Срезать углы
Не существует «быстрого и грязного кода». Грязный код — это плохой код. Пауза. Никогда не срезайте углов и не довольствуйтесь малым (второсортными вещами).
Являетесь ли вы хорошим программистом, определяется в периоды кризиса. Если в эти периоды ваше поведение меняется, значит, вы не хороший программист. Прим. пер.: полагаю, речь идет о добросовестном отношении к работе, о высоких требованиях к коду, который вы пишете. Если эти требования в сложных ситуациях снижаются, а отношение к работе становится халатным, вы не хороший программист.
8. Не документировать код
Неважно, насколько хорошим является ваше ПО. Если документация к нему будет плохой, люди не будут его использовать.
Дедлайны, загруженность, ничто не избавляет от необходимости документирования кода. ПО без документации — это мертвое ПО. Помните это!
9. Избегать политики
Все мы слышали такую фразу: «Меня не интересует политика. Я всего лишь хочу внедрить технологию». Но так не бывает.
Технология предполагает изменения, а изменения влекут за собой разделение людей на победителей и проигравших. Здесь начинается политика. Вы должны управлять ей, использовать ее и выйти из борьбы победителем. Другого пути нет.
10. Уделять слишком много времени проектированию (дизайну)
Хороший проект перед началом работы — это отлично. Но придание этому слишком большого значение может привести к фрустрации.
Не ищите идеального дизайна. В мире программирования его не существует. Ищите удовлетворительный дизайн, нечто, что вы можете использовать в самом начале. Хороший дизайн — это проект или схема. Он должен иметь возможность развиваться и расти, прежде чем превратится в камень.
11. Недооценка важности осмысленности кода
Согласно Роберту Мартину, «написание чистого кода требует грамотного использования множества приемов, приобретаемых через болезненное постижение концепции «чистоты кода». Совокупность этих приемов называется осмысленностью кода».
Осмысленный подход к написанию кода не помогает различать хороший и плохой код, но способствует выработке стратегии для превращения плохого кода в хороший.
12. Использовать первое попавшееся решение
Использовать первое решение, пришедшее на ум или подвернувшееся под руку, является весьма заманчивым и легким способом решения задачи. Однако хорошее решение, обычно, является результатом выбора между всеми возможными или, по крайней мере, несколькими способами.
Запомните, ваша работа как программиста заключается в поиске не любого, но лучшего решения задачи.
13. Незнание того, чего не следует делать
Лучшие программисты точно знают, чего не следует делать.
Они знают, что переписывание библиотеки с нуля лишь для того, чтобы сделать ее более читаемой, или переключение на новый фреймворк только из-за того, что он новый, не всегда является правильным решением. Код должен быть настолько хорошим, чтобы его можно было понять за несколько минут или даже секунд.
Ключом к успеху является не склонность к риску, но участие в правильных битвах.
14. Отказываться признавать невежество
Даже если вы технический гений, вы не можете знать всех технологий. Это просто невозможно.
С другой стороны, самый «зеленый» разработчик может предложить более стабильное и эффективное решение, чем вы. Хорошие программисты не навязывают своих решений команде. Они культивируют демократию, где побеждает лучшее решение.
15. Прогибаться под давлением
Код как еда. Он может быть быстрым, хорошим или дешевым. Выберите любые два. Плохой программист пытается заставить команду делать все эти вещи одновременно. Он руководствуется сроками и обязательствами, принятыми на себя кем-то другим, «прекрасно понимающим, что они не выполнимы».
Хороший программист не теряет чувства реальности и доводит актуальную информацию до заинтересованных лиц как можно быстрее.
16. Не выстраивать доверительных связей
Программисты могут существовать как одинокие волки, но лучшие программисты — это мастера коммуникации.
И самым легким способом завоевать доверие и построить отношения является помощь другим командам в сложных ситуациях. Этот способ позволяет обращаться за помощью в любой момент, не дожидаясь подходящего времени. Помощь в инициативе или завершении проекта не только делает вас экспертом, но также повышает ваш авторитет внутри организации.
17. Не видеть картины целиком
Как программист, большую часть времени вы будете работать над частью кода или решать какую-то проблему в существующем коде. Вы выполняете поставленную задачу, в этом нет ничего плохого. Однако если вы хотите получить свой кусок пирога, необходимо потратить время на выяснение того, какой проект находится в разработке.
Лучшим способом это сделать является поиск наставника, который поможет улучшить ваши навыки и, как следствие, быстрее дорасти до следующего уровня.
18. Изобретать колесо
Хорошие программисты не изобретают колесо. Они постоянно переиспользуют свой код и ищут готовый функционал. Это не только экономит время, но и порождает своего рода дух товарищества между разработчиками, которые делятся своим кодом с другими.
Для большинства проблем, с которыми вы пытаетесь справиться, существуют готовые решения. Поэтому, когда вы пытаетесь выполнить задачу, проверьте, не выполнял ли ее кто-нибудь другой. В данном случае вы не срезаете углы, вы срезаете усилия.
19. Недостаточное знание правил ведения бизнеса
Мы, программисты, иногда недооценивает сложность правил ведения бизнеса. Без знания этих правил невозможно разработать эффективного решения.
Запомните, перед тем, как акцентировать внимание на технической составляющей, необходимо понять деловое мышление и создать продукт, описываемый в терминах, понятных заказчику, и предназначенный для эффективного решения стоящих перед ним задач.
20. Не общаться с командой
Несмотря на то, что не существует набора правил по общению, впрочем, как и обязанности общаться, немного личного аспекта в работе не повредит.
Знание достоинств и недостатков других программистов, их способностей и ограничений, их интересов и увлечений, позволяет наилучшим образом планировать совместную разработку.
21. Не следить за здоровьем
Здоровье — это основа всего в вашей жизни, включая карьеру. От здоровья зависит ваша креативность, энергичность и силы выдерживать взлеты и падения.
Следить за здоровьем — это не разовая акция. Это предполагает определенный режим труда и отдыха, правильное питание, регулярные упражнения (физическую нагрузку) и отказ от вредных привычек.
Вместо заключения
Любая карьера имеет взлеты и падения. Важно то, как вы к этому относитесь. Вы можете впадать в депрессию в случае неудачи или же вы можете относиться к этому позитивно и учиться на ошибках.
Как верно заметил Карлтон Фиск: «Значение имеет не то, чего вы достигли. Значение имеет то, что вы преодолели. Вот что определяет вашу карьеру».
Благодарю за внимание.