Доброго времени суток, друзья!
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. Не следить за здоровьем
Здоровье — это основа всего в вашей жизни, включая карьеру. От здоровья зависит ваша креативность, энергичность и силы выдерживать взлеты и падения.
Следить за здоровьем — это не разовая акция. Это предполагает определенный режим труда и отдыха, правильное питание, регулярные упражнения (физическую нагрузку) и отказ от вредных привычек.
Вместо заключения
Любая карьера имеет взлеты и падения. Важно то, как вы к этому относитесь. Вы можете впадать в депрессию в случае неудачи или же вы можете относиться к этому позитивно и учиться на ошибках.
Как верно заметил Карлтон Фиск: «Значение имеет не то, чего вы достигли. Значение имеет то, что вы преодолели. Вот что определяет вашу карьеру».
Благодарю за внимание.
Akon32
Урок "не использовать двойное отрицание" явно пропущен.
drWhy
Ну да, конечно.
TimsTims
Все советы в стиле
if(!!true){}
А если серьезно, то в статье начинается:
> вот уроки которые я извлёк за 21+ лет:
> 1) не откладывать на черный день
Что-что? Как это не откладывать? Что за черт? Что там про пустить пыль в глаза? Значит все же не стоит откладывать, а все тратить? Ааа фух, начиная с 3го начинается что это советы что Не надо делать, а не уроки что надо делать… Прям как вредные советы Ожегова…
Кстати, 2й пункт довольно спорный. Если ты по факту незаменимый, то в чем проблема быть им? Конечно, тебе не нужно останавливаться и прокачиваться как в хард скиллах так и в софт, но быть незаменимым — ещё не ошибка.
funca
В какой то момент открываются новые пути или возможности, и если вы ответственный человек, то незаменимость на текущем месте начинает быть обузой.
По большому счету, незаменимых людей не бывает, за очень редким исключением (кто нам заменит Пушкина?). В большинстве же случаев это манипуляции тщеславием, ролевые игры на производстве. Не нужно к этому относится слишком серьезно, рассчитывая как на свой основной козырь. Все может поменяться в любой момент.
AnthonyMikh
Лермонтов
TimsTims
Поэтому работодателю выгоднее содержать одного незаменимого сотрудника, чем содержать целый отдел. А незаменимому сотруднику выгодно получать зарплату выше рынка, т.к. он работает, как будет работать целый отдел вместо него. Порочный круг, из него очень трудно выйти, «пока одна из сторон не подвинется».
funca
С точки зрения работодателя незаменимый сотрудник это риск. Учитывается вероятность риска, а также сравнивается стоимость отработки последствий, если риск сработал, с затратами на его уменьшение или устранение. Если риск принимается, значит последствия от потери незаменимого сотрудника не столь велики, чтобы тратить на это дополнительные ресурсы. Логично? Такому сотруднику нужно снять лапшу с ушей и задуматься, о реальной оценке собственной значимости.
Если зарплата выше рынка вынуждает сотрудника вкалывать как папа Карло на месте, где должно работать трое, так же есть повод переосмыслить ситуацию. Возможно он уникален, но одно только это качество не делает его незаменимым. С точки зрения работодателя — когда на место будут наняты трое, либо позиция утратит актуальность — это лишь вопрос времени.
Зарплата выше рынка в долгосрочной перспективе это довольно ненадежный способ удержания незаменимых людей. Я имею ввиду то, что одной лишь зарплатой зазвездившийся персонал вы не удержите. Потеряв связь с реальностью, они отправляются налево даже просто ради новых ощущений.
ardraeiss
Да и попросту фактор кирпича/автобуса/банального гриппа и отпуска.
Alexander_Tamirov
Да потому, что нужно было называть не «вот уроки», а «вот ошибки».
Akon32
ЧСХ, в оригинале это звучит как "21 bad mistakes".
Alexander_Tamirov
Я проморгал, что это перевод, бегло читал…
Именно по этой причине никогда документацию в переводе не читаю, только оригиналы (речь об английском языке).
Thomas_Hanniball
1) не откладывать на черный день.
Тут всё правильно. В начале своей карьеры необходимо много времени отдавать на самообразование, чтобы быстрее достичь успеха. В это время все деньги стоит тратить на книги, курсы, вебинары, сертификационные экзамены и т. д. Всё, что не принесёт успеха откладывается на потом, либо просто заливается деньгами. Например, я даже еду себе не готовил, а покупал готовую в отделе кулинарии, т.к. готовка — это минус 2 часа времени в день, а это время лучше потратить на самообразование.
Эта тактика себя полностью окупила, поэтому теперь я работаю в столице на должности ведущего системного инженера\тимлида в крупном операторе мобильной связи. Постоянное самообразование и тысячи часов обучения помогли мне стать востребованным специалистом, который даже в кризисы без проблем находит хорошую работу. Если бы я не вкладывал много денег в самообразование, то был бы сейчас каким-нибудь аникеем\админом на заводе.
В начале своей карьеры не смысла откладывать 50$, т.к. это всё равно не спасёт в плохих ситуациях, а больше откладывать просто не получится, т.к. зарплата не позволяет. Лучше потратить эти деньги на самообразование, так как при достижении потолка по должности и ЗП ты сможешь откладывать уже 500$ имея при этом более высокий уровень жизни и больше стабильности в жизни.
Thebear
Спорное утверждение,
я жалею, с с первых лет работы не имел привычки на чёрный день с пенсией откладывать. Ложное противопоставление с самообразованием
playerro
А можно рассказать подробности? Востребованный специалист в любой день найдет много денег
Thebear
Я востребованный специалист, у меня хорошая работа и зарплата, нет долгов, есть подушка на несколько лет, но "любой день" это иллюзия. Очень приятная для самомнения но опасная.
Тучные годы могут закончиться: кризис, ковидушка, болезнь, ложная оценка собственного уровня и так далее, а есть, лечиться, одеваться надо всегда.
Сейчас вижу кучу востребованных специалистов, которые не могут платить за дома и машины, по тому, что целые отрасли свернулись а их личные бюджеты были сверстаны на основе ожидания растущей зп и собственной востребованности.
playerro
Если они свернулись, значит не очень-то и востребованные?)
Thebear
Хорошо, с вами такого не случится.
funca
Востребуемость сильно зависит от ситуации. Можно в реальном времени наблюдать как закрывается множество востребованных раннее сервисов, просто потому что люди вынуждены держать дистанцию. С другой стороны стали резко востребованы те, про кого раньше вообще мало кто знал (производства медицинской спецодежды, например). Пройдет время и ситуация снова изменится. От уровня специалистов, работающих в каждой из областей, это не особо зависит.
retar
Хорошие повара даже в текущей ситуации востребованы на рынке.
Кризис влияет не на коэффициент востребованности специалиста на вакансию, а на коэффициент востребованности конкретного Васи.
Грубо говоря: схлопывается пачка фирм, которые занимаются разработкой вэбсервисов на дотнете, но у других фирм все равно остаются вакансии на уровне мидл и выше(интернов/ждунов в кризис берут редко). В итоге на рынке труда теперь есть огромный выбор. И специалист-Вася осознает, что вчера он был востребованным, а теперь спецов с его уровнем квалификации жопой жуй и еще пачка native-speaker'ов на дотнете. В итоге Вася из востребованного специалиста, коим он себя считал, превращается в среднестатистического соискателя работы. А условный Петя, который «я сишарпом не ругаюсь, я сишарпом разговариваю», к тому же магистр пмпу/мехмата с корочкой пиэйчди и имеет огромный опыт, остается реально востребованным спецом.
Тут скорее «не надо переоценивать свою востребованность».
Thomas_Hanniball
С первых рабочих лет Вы хотели бы откладывать деньги на пенсию? Деньги, которые вы начнёте откладывать с ранних лет, через 20-30 лет просто съест инфляция, т.е. от них ничего не останется.
Деньги всегда лучше вкладывать в те ресурсы (активы), которые в средне и долгосрочной перспективе помогут зарабатывать ещё больше денег. Образование и нормальная работы — это один из активов. Свой собственный бизнес — второй актив. Здоровая и счастливая семья — третий актив. Судя же можно и добавить недвижимость, которая тоже может быть полезным активом.
Деньги, которые просто отложены на пенсию, это пассив, который обесценивается с каждым экономическим кризисом.
Thebear
Откладывание не равно кошельку под подушкой. Но это пустопорожний спор. Кому-то везёт, кому-то нет. Да и границы комфорта, когда дело касается финансов тоже разные.
Опять таки, не надо противопоставлять накопления и саморазвитие.
У меня 3 диплома, самый свежий получил пару лет назад и мне с моей подушкой сейчас гораздо комфортнее, чем моим одноклассникам без неё.
AnthonyMikh
А почему это актив? Семья же наоборот, потребляет деньги.
ardraeiss
До эпохи пенсий выросшие дети, которые кормят доживших до неработоспособности родителей — классический мировой способ этот жизненный период жить.
Thomas_Hanniball
Когда ты заболел или стал нетрудоспособен, всегда будет кто-то, что поможет тебе в трудную минуту не умереть с голода + поддержит морально.
Lissov
Да и в не очень трудную минуту поддержит морально.
Кстати, семья это не только дети, но и супруга. И тут отбросим сексизм — это не обязательно расходы, а вполне может быть и сравнимые доходы :)
VolCh
Сюда же можно добавить любые финансовые активы, начиная с депозитов, заканчивая собственно пенсонными фондами.
Недвижимость же в общем случае пассив, если вы не заниметесь бизнесом по сдаче её в аренду.
funca
Возможно переводчик — юморист. Просто в оригинале чуть больше слов, а вместо «урок» используется «mistake». Например данный подзаголовок дословно выглядит так: «Mistake 1 — not saving your paychecks for a rainy day.»
(все остальные кстати выглядят аналогично). На самом деле автор сожалеет от том, что не додумался сразу о создании подушки финансовой безопасности на черный день.
TheAlien
Григорий Остер в шоке.
TimsTims
Точно, почему-то Ожегова написал)
KvanTTT
Только для добавления нового совета нужно еще проработать год.