Продолжая использовать наш сайт, вы даете согласие на обработку файлов cookie, которые обеспечивают правильную работу сайта. Благодаря им мы улучшаем сайт!
Принять и закрыть

Читать, слущать книги онлайн бесплатно!

Электронная Литература.

Бесплатная онлайн библиотека.

Читать: От джуна до сеньора. Как стать востребованным разработчиком - Владимир Швец на бесплатной онлайн библиотеке Э-Лит


Помоги проекту - поделись книгой:

Возможно, кто-то из вас не согласится со мной («Эй, а разве это не ты писал, как важно делать свою работу качественно?»). Поймите меня правильно. Есть огромная разница между тем, чтобы выполнять работу качественно, и тем, чтобы с сумасшедшим упорством доводить ее до несуществующего совершенства.

Вероятно, вас интересует, как отличить в себе здоровый подход к работе от фанатичной погони за недостижимым идеалом. Для этого потребуется определенный опыт и умение быть честным с самим собой. Общее правило можно сформулировать так: если вы раз за разом возвращаетесь к написанному решению, переделываете его без четкого понимания, что именно вы улучшили, – бдите. Если вы тратите огромное количество времени на выбор одного из вариантов, притом что ни один из них не имеет объективных преимуществ, – будьте настороже.

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

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

Тезисы

■ Желание выполнить работу качественно – прекрасная черта.

■ Перфекционизм – неспособность увидеть разницу между качественным и идеальным решением.

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

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

Задание

Постарайтесь честно ответить себе на вопрос: перфекционист ли вы? Замечаете ли вы за собой, что тратите слишком много времени на поиск идеального решения? Испытываете ли почти физическое напряжение, когда нужно выбрать один из очень похожих вариантов? Поступайте от обратного. Нашли работающее решение, которое вас устроило первым? Используйте его и заставьте себя не возвращаться к этому вопросу. Вам необходимо выбрать из нескольких вариантов, и ни один из них не имеет объективных преимуществ? Бросайте монетку, делайте выбор и уже не возвращайтесь к нему. Это может показаться контринтуитивным, но, поверьте, это лучшая помощь, которую вы можете себе оказать. Старайтесь бороться с привычкой погружаться в поиск идеала, разрушайте ее быстрыми и уверенными решениями. Это будет сложно, но с каждым разом вы будете делать выбор все увереннее и сможете наконец использовать весь потенциал перфекционизма без его минусов.

История из жизни

Это может показаться забавным, но от перфекционизма мне помогло избавиться то, что я слишком много работал. Сюр, казалось бы, но когда нужно вести несколько проектов, попадать в дедлайны и при этом прыгать на одной ножке, чтобы клиент радовался, на невротический перфекционизм попросту не остается времени. И мне пришлось довольствоваться принципами «да, это сделано достаточно хорошо», «этого хватит» и «мы сделаем это сейчас, у нас нет времени улучшать до бесконечности». В сутках всего 24 часа, и я предпочту сделать хорошо сегодня, вместо того чтобы дать волю перфекционизму и закончить через неделю.

Гордыня

Любой опытный разработчик в какой-то момент начинает чувствовать себя профессионалом. Уверенность растет с каждым успешным проектом, с каждым удачным выпуском продукта на рынок, с персональными достижениями в работе. Чувствовать себя уверенно и ощущать гордость за себя – прекрасно. Однако в этом есть ложка дегтя, которая может отравить всю вашу радость.

Речь идет о гордыне – чувстве, которое граничит со здоровой гордостью за себя и способностью принимать и уважать свой опыт и заслуги. Гордыня заставляет нас ставить себя выше других людей, считать, что только мы знаем, как сделать что-то лучше, как добиться того, чего другие (по нашему мнению) не смогут. Вы определенно можете быть бриллиантом своей компании и действительно разбираться во многих вопросах лучше коллег. Но само чувство иллюзорного превосходства над другими способно отравить не только вашу жизнь, но и жизнь людей вокруг вас.

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

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

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

Если вас не убедили мои гуманистические замечания (да что с вами не так?!) или вы не желаете ни с кем делить свою гордыню, то помните еще об одной опасности, которая ждет вас на вершине. Вы просто не сможете всегда быть правым. И в какой-то момент (возможно, это будет очень скоро, а возможно, через много лет) вы ошибетесь. Ошибетесь очень-очень сильно. И покатитесь по ступеням этой башни вниз. Подаст ли кто-нибудь вам руку, чтобы остановить падение, зависит только от ваших сегодняшних поступков. Оберегайте и уважайте свою гордость, но всегда помните, что понадобится всего лишь шаг, чтобы она превратилась в жгучий и разрушающий вашу жизнь и карьеру яд.

Тезисы

■ Гордость за себя – прекрасное чувство, гордыня – безусловное зло.

■ Гордыня возникает в нас незаметно.

■ Гордыня нанесет вам удар в спину в самый неподходящий момент.

Задание

Отмечайте, достаточно ли вы гордитесь своими достижениями. Способны ли остановиться после решения сложной задачи и сказать себе, что гордитесь собой и своей работой? Заведите себе привычку отмечать каждый важный этап своей работы, хвалить себя и ценить труд, в который вы вложили столько сил и знаний. Если в какой-то момент вы почувствуете, что начинаете превращаться в диктатора, что коллегам трудно обсуждать с вами рабочие вопросы, что вы чаще апеллируете к своему опыту и авторитету, чем к фактам и событиям, – остановитесь и признайтесь себе, что в вас созрела гордыня. Постарайтесь хотя бы просто принять этот факт (я гарантирую, ваша гордыня будет не в восторге). Начните общаться с людьми, прислушивайтесь к их идеям и подходам. Забудьте о том, что можете протолкнуть свое решение благодаря авторитету. Вспомните, почему вы вообще стали разработчиком, какие чувства переполняли вас тогда – интерес, любопытство, восторг от создания чего-то стоящего из ничего. Не лишайте себя этих прекрасных ощущений в угоду гордыне, которая остановит ваш профессиональный рост и оставит вас в одиночестве.

История из жизни

За каждый момент гордыни я всегда платил. Разрывом рабочих отношений, ошибками в программных продуктах, ударом по репутации, финансовыми потерями. Я бы и рад сказать, что быстро усваивал уроки, но нет. Признаться себе в том, что ты возгордился, нелегко, равно как и исправлять свои ошибки. Однако это единственный путь, который не усыпан граблями и разочарованием. Наше эго – это определенно не то, что надо взращивать за чужой счет.

Pet projects

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

Не стоит отчаиваться! Когда почувствуете, что вас начинает тянуть к чему-то новому, но бросать свою работу вы, естественно, не планируете, найдите себе pet project. Возможно, у вас давно зреет идея, которую хотелось бы реализовать. Может, вы поработали с каким-то open source проектом, пришли от него в восторг и хотите поучаствовать в его развитии. Или просто жаждете попробовать язык программирования, синтаксис которого приснился вам в эротическом сне (не могу сказать, случалось ли такое с кем-нибудь, но и обратного гарантировать не могу).

Pet projects, как и любая деятельность, не связанная с вашей основной работой, – это огромный новый опыт и расширение навыков. Особенностью таких проектов (будь то создание личного меганавороченного калькулятора расходов или участие в работе над open source продуктом) является то, что вы испытываете огромное желание заняться ими «прямо сейчас». Вы мотивированны, вам интересно, вы испытываете положительные эмоции от работы с такими проектами. Эти положительные эмоции крайне полезны и помогают воспринимать новые знания быстрее и качественнее.

Главная проблема, связанная с pet projects, – время. Ваше бедное свободное время. Если соблюдать баланс между трудом и отдыхом (А Я ОЧЕНЬ НАДЕЮСЬ НА ЭТО!), то у вас в распоряжении остается не так много свободного времени, которое можно посвятить чему-то очень похожему на вашу основную работу. Я совру, если скажу, что не проводил выходные и вечера после рабочего дня за новым языком программирования или проектом, который был мне очень интересен, поэтому не стану отговаривать и вас. В конце концов, то, как вы отдыхаете и от чего получаете удовольствие, – это только ваше дело, ничье больше.

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

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

Тезисы

■ От любого проекта можно устать.

■ Pet projects – простой способ поднять себе настроение и вернуть мотивацию.

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

■ Если у вас не хватает времени на свой pet project, не расстраивайтесь, просто включите его в свое расписание заранее.

Задание

Составьте список из 5 или 10 технологий, языков программирования или сфер IT, которые вам хотелось бы узнать получше. Держите этот список под рукой, обновляя его, если необходимо. Когда вы почувствуете, что устаете от рабочего проекта, достаньте список, подумайте, что бы вы могли сделать, используя эти технологии, какой проект могли бы написать, к примеру, за выходные. Выделите себе немного времени после работы, чтобы составить план будущего проекта. Если вас начало затягивать, если вы чувствуете мотивацию – пробуйте!

История из жизни

Я уже не перечислю всех мини-проектов, которыми занимался многие годы, но мне запомнился один, ставший для меня отдушиной в череде очень сложных проектов, когда мне казалось, что я полностью заржавел. Я настолько устал от стека технологий и языков программирования, которые мы использовали, что мне нужна была «свежая кровь» – область, в которой я мало разбирался, то, что стало бы для меня испытанием. Я решил написать эмулятор CHIP8 на языке Rust. Да, я был вымотан и очень устал, но даже полчаса работы над этим маленьким проектом в день давали мне невероятное чувство радости, которое я помню до сих пор.

Аврал! Свистать всех наверх!

Почти в любом IT-проекте чередуются стадии спокойной, размеренной разработки и авральной, бешеной работы. Чаще всего количество и продолжительность таких стадий напрямую зависят от качества управления проектом, и в большинстве случаев вы никак не сможете на это повлиять. Если вы работаете в игровой индустрии, то я даже не буду объяснять, что такое crunch time, вы очень скоро познакомитесь с этим сами.

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

Работая в экстренном режиме вместе с командой, вы сможете почувствовать необычайный прилив адреналина – ощущение, что работаете «на грани», чувство сплоченности в погоне за результатом. Это чувство напоминает охоту, где добыча – ускользающая цель. Такой целью может стать объявленная дата очередного релиза, запуск проекта для конкретного клиента или первый выход продукта на рынок. Иногда команде действительно надо сделать последний рывок, который даст жизнь проекту или откроет широкие возможности для его роста.

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

Другое свойство авральной работы – то, что, если практиковать ее часто, накапливается усталость, поначалу незаметная. В общей атмосфере близости дня икс вы не ощущаете проблемы, а тем временем усталость растет, ожидая момента, когда вы наконец сможете остаться наедине с собой. И тогда – хлоп! Она вас настигнет.

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

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

Тезисы

■ В реальном мире разработка программного продукта редко бывает размеренной и спокойной.

■ Выброс адреналина от авральной работы может быть очень приятным, но это иллюзия.

■ Подъем сил и радость от «охоты» сменяются горечью и разочарованием.

■ Авральная работа – первый шаг к выгоранию и депрессии.

Задание

Когда на проекте в очередной раз случится внезапная, экстренная необходимость поработать в выходные или сверхурочно, попробуйте оценить, насколько это критично. Если вас ждет важный релиз или продукт должен вот-вот выйти на рынок, все понятно, вопросов нет. Однако если вы видите, что авралы случаются каждую неделю, а менеджеры продолжают рассказывать сказки о том, как важно добавить эти 13 новых функций в продукт именно сейчас или ВСЕ, КОНЕЦ, ПРОЕКТУ КОНЕЦ, – подумайте, насколько с вами честны.

История из жизни

К сожалению, я именно тот человек, которого будят в 4 утра из-за того, что рабочие сервера перестали отвечать. Не потому, что я хорошо разбираюсь в DevOps или мне придется их немедленно реанимировать (для этого разбудят администраторов), но мне нужно присутствовать, потому что это мои проекты, моя ответственность, мои решения. Рад ли я таким побудкам? Конечно, нет, однако их частота напрямую зависит от того, хорошо ли я делаю свою работу каждый день.

Свободное время

Если, придя в IT-индустрию, вы думаете, что всегда сможете работать по жесткому графику, подумайте еще раз. Я не хочу сказать, что в любой компании и на любой должности вам придется задерживаться в офисе, а иногда работать по ночам, но не могу сказать и обратного. Иногда вы искренне захотите потратить свободное время на работу – возможно, на новый проект или новую идею, которую планируете реализовать.

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

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

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

На что тратить свое свободное время, решать только вам. Постарайтесь радовать себя, насколько это возможно. Труд разработчика сложен, он требует огромного количества энергии и концентрации. Поэтому совершенно очевидно, что вашему мозгу (как и телу) нужно время, когда его не используют как загнанную лошадь на бесконечном поле, которое надо перепахать.

Справедливым будет сказать, что совершенно нормально, если в свободное время вы решите изучить что-то связанное с разработкой программного обеспечения. Not great, not terrible, просто постарайтесь честно ответить себе на вопрос: доставляет ли вам удовольствие то, как вы проводите свободное время, или в вас так много адреналина от работы, что вы чувствуете, что просто ОБЯЗАНЫ заниматься саморазвитием в любую свободную минуту?

Тезисы

■ Фиксированный график – это замечательно, но часто несбыточно.

■ Вам критически необходимо время, свободное от работы.

■ Только вы знаете, на что тратить свободное время.

Задание

Попробуйте проанализировать, как вы проводите время вне работы. Занимаетесь ли вы тем, что позволяет разгрузить мозг? Даете ли вы себе возможность отвлечься от постоянного анализа, от поглощения новых знаний, от размышлений о том, какое решение выбрать или как написать особо сложный компонент? Если вы не можете перестать думать о работе, даже лежа в джакузи, тормозите. Пресекайте любые попытки мозга переключиться на рабочую частоту. Если дома в воскресный день вас посещает внезапная мысль о том, что выборку из базы данных нужно было переделать на использование курсоров, – пойдите и засуньте голову под прохладный душ. Используйте физические раздражители, чтобы переключить внимание. Отправьтесь на пробежку, сыграйте в дженгу, попробуйте научиться жонглировать.

История из жизни

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

Я работаю ради…

Денег! Шутка. Отчасти. Разумеется, мы устраиваемся на работу, чтобы применять свои знания на практике, развивать навыки, приобретать новый опыт и получать деньги. Но деньги никогда не станут единственным мотиватором для работы. Разработчики, которых интересует исключительно зарплата, не задерживаются в индустрии надолго.

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

Нужно быть честным с собой, и ответ, который вы найдете, – только ваш. Он может быть любым. Возможно, вам нравится решать сложные задачи и чувствовать себя победителем, а может, вы работаете ради людей, которым необходим ваш продукт. Со временем вы станете лучше понимать себя и свое место в IT. Вы уже будете знать, что вас восхищает и что расстраивает, из-за чего вы можете задержаться на работе и провести там все выходные.

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

Тезисы

■ Существует то, ради чего вы работаете на самом деле.

■ Ваши мотиваторы – только ваши и больше ничьи.

■ Уважайте то, что движет вами.

Задание

Попробуйте обращать внимание на то, что вас действительно радует в работе. Вы счастливы, когда пользователи пишут положительные отзывы? Вы радуетесь как ребенок, когда ваш новый алгоритм оказался на 12 % быстрее предыдущей версии? Вы в восторге, что у вас новая должность и 15 разработчиков в подчинении? Будьте честными с собой, это только ваша правда, ваш опыт.

История из жизни

Ответ на вопрос «ради чего?» для меня всегда был простым. Я ужасно любопытный. Мне всегда хотелось узнать, как вещь устроена изнутри. Наверное, я бы не смог найти себе лучшего ремесла, чем разработка, даже если бы постарался. Да, мне важно знать, насколько успешен будет мой продукт. Да, я хотел бы, чтобы он помогал пользователям. Но то, ради чего я вообще занимаюсь разработкой, – это эгоистичное (в самом хорошем смысле) желание постоянно удовлетворять свое любопытство и каждый день узнавать, «а как же это работает?».

Удаленная работа

Давайте я скажу это сразу: удаленная работа подходит не всем. Все мы слишком разные, чтобы нам подходили одни и те же вещи. Я не буду пытаться классифицировать людей (это всегда провальная затея), потому что они чересчур сложны для какой-либо классификации, основанной на чертах личности. Однако совершенно очевидно, что у каждого человека есть набор предпочтений. Кто-то хочет находиться в гуще событий и среди людей. А кому-то трудно поддерживать социальные взаимодействия в коллективе. Ни то ни другое не делает вас лучше или хуже как специалиста, но определяет уровень комфорта и радости от работы.

Если вы уже какое-то время занимаетесь разработкой, это значит, что вы работаете либо в офисе, либо удаленно. Если вы попробовали оба варианта работы – мои поздравления, обладая таким опытом, вы уже знаете, какой формат ближе именно вам.

Работа в офисе располагает к общению, даже если вы замкнутый человек. Обсуждения, обеды, шутки, мероприятия – все это вовлекает вас в жизнь компании и коллег. Это замечательно, но только если вы не чувствуете, что тратите на это больше энергии, чем хотели бы. Не переживайте, если то, что я описываю, не относится к вам лично. Поверьте мне: хотя бы один из ваших коллег сейчас мечтает о том, чтобы продолжить работать, устроившись дома на диване (и не только потому, что у него на коленях уляжется милый котик). Кто-то будет чувствовать мотивацию и азарт от работы плечом к плечу с коллегами. Кого-то угнетает необходимость приходить в офис каждый день и пытаться участвовать в социальной жизни компании.

Как показал 2020 год (я не буду здороваться с коронавирусом, обойдется), у нас не всегда есть возможность выбирать, в каких условиях работать. Огромное количество разработчиков перешло на удаленную работу. И я могу только представить, насколько болезненно некоторые восприняли этот переход. Люди очень социальны, мы ищем взаимодействия с другими, кто-то больше, кто-то меньше, но ищем. Люди, привыкшие работать рядом с коллегами, иметь возможность прерваться на дружеский разговор или отвлечься на шутку, оказались замкнуты в пространстве, где никого нет. При этом было необходимо продолжать работать так же продуктивно, как и раньше. Именно в этот период многие окончательно определили, что им подходит больше: работа в социальной среде или работа в уединении.

Да, современная удаленная работа предполагает постоянный контакт с коллегами. Это могут быть конференции, обсуждения или просто дружеский чат, но, я думаю, вы отчетливо понимаете разницу между тем, как я вижу вас в метре от себя и как – на мониторе.

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

Общение. Да, даже учитывая все, что я сказал выше, – общение, общение, еще раз общение. Рабочее общение. Вы должны четко понимать, что от вас требуется, и незамедлительно сообщать коллегам, когда в рабочем процессе что-то идет не так. Если чувствуете, что запутались, что начинаете отставать, – поговорите со старшими коллегами. Один короткий разговор может спасти вас от многих дней фрустрации и сорванных сроков.

График и переработки. Если вы перешли на удаленную работу недавно, то вам, вероятно, кажется, что рабочий день длится бесконечно. Время – очень коварный механизм, поэтому нужно внимательно следить за тем, чтобы ваш рабочий график совпадал с офисным. Вы начинаете работать в одно и то же время и заканчиваете через N часов. То, что вы работаете, сидя не в офисном кресле, а под домашним пледом, совсем не значит, что вы тратите на это меньше сил. Следите за тем, чтобы прерываться на обед и разминку. Работая дома, слишком легко потерять ощущение времени.

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

Тезисы

■ Удаленная работа подходит не всем.

■ Попробуйте работать в офисе и удаленно: у вас должно быть представление о том и другом формате.

■ Исходите из особенностей своей личности и характера.

Задание

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

История из жизни

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

Это надо поправить

«Это место нужно будет доработать». «У клиента изменились требования». «Похоже, нам это не понадобится, надо убрать».

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

Дело в том, что если вы действительно любите разработку (я очень надеюсь на это), то, создавая что-то новое (проект, код, функцию), вы не просто пишете на экране буковки в определенной последовательности. Вы вкладываете в код часть своей любви к этому ремеслу, часть себя. Насколько болезненным может быть момент, когда вас просят убить эту часть? Стереть, будто ее и не было, либо переписать так, что вас там уже не останется? Иногда это бывает ОЧЕНЬ болезненно.

Возможно, вы считаете себя монументом спокойствия и подобные просьбы для вас – как с гуся вода. Я не хочу вас расстраивать, но это дело времени. Однажды у вас появится любимый проект, лучший алгоритм или самый прекрасный код, который вы написали, и вас попросят его «поправить».

В самой просьбе исправить код нет ничего особенного. Наверняка вы и сами просили кого-то об этом или участвовали в open source проекте, где авторов каждый день просят что-то изменить. Однако все меняется, когда речь идет о ВАШЕМ коде. О том, в который вы вложили столько сил, времени, личного опыта, энергии.

И… вы должны с этим смириться. Да, вам придется что-то поправить в коде, отказаться от каких-то своих решений и переписать их. Не относитесь к этому как к сомнениям в вашем профессионализме. Не относитесь к этому как к личному оскорблению. Постарайтесь взглянуть на проблему со стороны. Если у вас качается стул, потому что одна ножка подломилась, что вы предпочтете: починить его или продолжать сидеть, рискуя упасть и облиться кофе? Если вам перестали нравиться обои, будете терпеть их день за днем или поменяете на такие, которые вас радуют?

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

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

Тезисы

■ Однажды вас обязательно попросят изменить то, что вы создавали с любовью.

■ Ваш код – это не вы сами; пока есть вы сами, вы напишете код еще лучше.

■ Если ваш код постоянно подвергается нападкам, найдите себе отдушину.

Задание

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

История из жизни

Мне было очень тяжело принимать исправления в своем коде, я долгое время воспринимал это именно как личную критику, раз за разом попадая в эту ловушку. Даже когда мне казалось, что я перешагнул через эту слабость, она снова давала о себе знать. Спасло меня то, что такое отношение никак мне не помогало. Мне все равно приходилось исправлять код, но каждый раз это стоило мне немалой нервотрепки. И я стал относиться к этому более прагматично, разделяя работу и связанный с ней стресс. Работа должна оставаться работой, а ваши эмоции – только вашими; эти пласты жизни определенно не стоит смешивать в очень горький коктейль.

Специалист широкого профиля

Разработка программного обеспечения многогранна. И чем больше развивается IT-индустрия, тем больше новых областей в ней появляется. Каждая область одновременно и похожа на другие, и представляет собой нечто совершенно особенное, со своими правилами, секретами и решениями. Разработка сетевого программного обеспечения чем-то похожа на создание игр, разработка драйверов – на программирование для встраиваемых систем. Однако чем дольше вы работаете в какой-нибудь специфичной области, тем больше отличий будете замечать.

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

Если вы пока не уверены в том, какое направление разработки вам нравится, потратьте некоторое время, поработав в разных областях. Участвуйте в open source проектах, выбирайте работу, которая может показать разные стороны индустрии. Возможно, вы сами удивитесь, поняв, к чему испытываете неподдельный, искренний интерес.

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

Все сказанное выше совершенно не означает, что вы должны выбрать один профиль и держаться за него руками и ногами. Нет ничего плохого в том, чтобы иметь представление о множестве сфер разработки. Более того, знания, полученные из разных направлений, делают вас куда опытнее, осведомленнее и профессиональнее. Однако справедливо и обратное. Знания, полученные в определенной предметной области, становятся очень ценными (и очень дорогими – да, я про денежки). Если вы выберете что-то действительно специфическое, то вполне можете оказаться одним из 10 человек на планете, у которых есть этот особый набор знаний и опыта.

Исходите из того, что вас восхищает. Руководствуйтесь тем, что вам интересно. Да, в какие-то моменты это будет непросто. Если вы захотите попробовать что-то новое, то придется искать другое место работы или проекты, к которым вы могли бы присоединиться. Первое время вас будет накрывать волнами новой информации, которую достаточно трудно воспринимать и запоминать. Но если вы действительно этого хотите, то обязательно добьетесь своего.

Тезисы

■ В IT всегда найдется направление разработки, которое будет вам интересно.

■ Не жалейте времени, попробуйте разные направления, узнайте, от чего получаете удовольствие.

■ Путь к новым направлениям всегда открыт, вы в любой момент можете попробовать что-то другое.

■ Следуйте за своими желаниями.

Задание

Выпишите 5 направлений разработки, которые вам интересны и не связаны с тем, чем вы сейчас занимаетесь. Расположите их в порядке убывания интереса. Посмотрите на полученный список и попробуйте описать шаги, которые приблизят вас к получению опыта по каждому из пунктов. Возможно, это будет участие в open source проекте, получение дополнительного образования или покупка онлайн-курса. Сделайте первые практические шаги к тому, чтобы попробовать себя в чем-то новом. Viam supervadet vadens[4].

История из жизни

Благодаря своему бездонному любопытству я успел покопаться в большинстве направлений IT, о чем никогда не жалел. На данный момент я занимаюсь архитектурой высоконагруженных, распределенных b2b-продуктов, но иногда спрашиваю себя: чем бы я занялся через 10 лет, если бы захотел сменить профиль? Ответа я еще не придумал. Возможно, захочу попробовать встраиваемые системы, микроконтроллеры и наконец научусь хорошо паять.

Новый проект

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

Прежде всего – без паники. То, что необходимо сделать, вы делали уже много раз. Вы будете писать код (ура!). Просто не вкладывайте в эти страшные слова («новый проект») больше смысла, чем они содержат. Относитесь к новому проекту как к новому коду – ответственно, вдумчиво, но без страха.

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

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

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

Не позволяйте себя торопить. Специфика коммерческой разработки очевидна – продукт нужен «вчера», однако не разрешайте манипулировать собой и не поступайтесь качеством работы. Ваша задача как профессионала – написать качественный продукт, не стоит пытаться играть по чужим правилам и срезать углы. Хороший продукт проработает много лет, слабый будет закрыт – вот так все просто.

О требованиях к продукту: собирайте их, группируйте, работайте с экспертами в предметной области проекта, изучайте ее самостоятельно. Вы должны быть максимально ознакомлены со спецификой той области, для которой пишете продукт. Составляйте списки вопросов, терроризируйте заказчиков или менеджеров – их должно тошнить от вашей въедливости. Люди не всегда хорошо структурируют свои знания: забывают о важном, придают вес незначительному и т. д. Ваша задача на первом этапе – выделить главные и проблемные направления будущего продукта, область его применения и основные функции.

Не пугайтесь, когда вы будете сталкиваться с требованиями, конфликтующими между собой или не поддающимися описанию кодом. Вы в любом случае столкнулись бы с ними, но позже, когда время для анализа было бы уже упущено. Сбор требований должен формировать для вас картину будущего продукта, указывать на его сильные и слабые стороны, потенциальные проблемы и конкурентные преимущества. Будьте заранее готовы к тому, что, когда работа над проектом будет уже в самом разгаре, часть требований окажется неактуальной. Это распространенный сценарий, он не должен деморализовать вас. Любой продукт – живой, он будет развиваться и видоизменяться. Ваша задача – определить его возможности и рамки, в которых он будет существовать.

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

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

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

Определите сроки работы с заказчиками или менеджерами, разбив весь объем на этапы (milestones), однако всегда помните о коварности установления строгих дат. Это крайне важно для новых проектов, где требования будут постоянно меняться и усложняться. Не пытайтесь никого впечатлить скоростью, на кону ваше время и хорошее самочувствие. Выделяйте для анализа и работы столько времени, сколько вам требуется. Я не привожу здесь подробного описания методологий разработки и способов планирования работы над проектом (их слишком много, а ваше время для меня ценно). Универсальный совет: уважайте свое время и не позволяйте дедлайнам сказываться на качестве работы.

Если вы чувствуете, что начали прокрастинировать, это абсолютно нормально и ожидаемо. Совет здесь будет только один: начинайте работать. Через силу, через усталость и нежелание, но начинайте работать по чуть-чуть, выполняя какие-то легкие, но необходимые задачи для нового проекта. Это может быть подготовка инфраструктуры приложения, организация загрузчиков или билд-системы. Черт, да вы можете потратить время на проработку формата вывода в лог, главное – начать делать хоть что-то, и вы обязательно втянетесь в работу в процессе.

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

Тезисы

■ Не паникуйте, получайте удовольствие от процесса.

■ Досконально изучите предметную область.

■ Узнайте максимум об аналогах и конкурентах.

■ Не позволяйте эйфории от выбора технологий затмить требования проекта.

■ Не позволяйте себе впадать в аналитический шок.

■ Устанавливайте свои сроки и учитывайте приоритеты.

Задание

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

История из жизни

«Экзамен для меня всегда праздник, профессор». И это действительно так. Новый проект для меня всегда праздник. Мне немного страшно, но ощущение предвкушения, чувство нового начала куда сильнее. Я знаю, что первое время будет очень сложно. Время принятия самых важных решений, время формирования архитектуры, которая должна пройти проверку годами. Для меня начать новый проект – это все равно что, как в детстве, стоять перед нераспакованным новогодним подарком, испытывая огромную радость и предвкушая что-то очень интересное…

И напоследок…

Вот мы и подошли к концу моей (хотя теперь уже нашей) книги. Мне немного грустно, что она закончилась, но радостно, что вы ее прочитали. В эту книгу я вложил очень много себя, своих историй, опыта и переживаний. Спасибо, что разделили ее со мной.

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

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

Я очень жду ваших собственных проектов и надеюсь, что моя книга поможет вам их реализовать!

Встретимся в IT!

Рекомендуем книги по теме


Масштабированный скрам: Как организовать гибкую разработку в крупной компании

Крэг Ларман, Бас Водде



Поделиться книгой:

На главную
Назад