Что нужно для разработчика?

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

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

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

1. Слепая печать

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

«Вы печатаете вслепую?»

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

  • «Что?»
  • «Извините, я не понимаю.»
  • «Что вы понимаете под слепой печатью?»
  • «Э-э-эм… нет»

И я должен заметить, что я полностью понимаю, почему люди так реагируют. Потому что нигде молодые программисты и разработчики не учатся и не тренируются эффективно использовать инструменты, которыми они будут пользоваться в их будущей работе. Серьёзно, этот вопрос звучит так же, как если бы я спросил архитектора, использует ли он калькулятор в работе. Но только его ответ был бы чем-то вроде: «Конечно.»

Так в чём же на самом деле причина того, что большинство разработчиков, которых я встречал, не могут печатать вслепую, либо иногда даже не понимают, о чём я говорю? Честно говоря, у меня нет прямого ответа на этот вопрос, но это кажется странным, что работая по 6 и более часов в день за компьютером и используя клавиатуру для выполнения работы, они считают, что не обязаны использовать её быстро и эффективно.

Знай свои инструменты… Что ж, если взглянуть на различные учебные программы в высших учебных заведениях, можно узнать немного больше о причинах. Слепая печать не входит в программу обучения, а поэтому игнорируется. У любого разработчика, который не умеет печатать вслепую, возникнут трудности при использовании, например, das keyboard Ultimate:

das keyboard Ultimate – это клавиатура с пустыми клавишами, неоценимый опыт слепой печати

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

2. Хард и софт последнего поколения

Очевидно, что это даже не должно обсуждаться, но реальность такова, что очень часто машины у разработчиков далеко не самые крутые. Этому есть различные причины и сотни отговорок со стороны работодателей, но, честно говоря, хотя бы каждые два-три года необходимо обновлять рабочее оборудование. Это опять же то, что я обычно советую компаниям: более быстрая машина, меньше затрат времени и больше эффективность разработчиков и тестировщиков. Когда я начинаю работать с новыми командами, я люблю хорошо понимать их мнения об их работе, и как вы, возможно, уже догадались… Компьютер, который они используют, обычно упоминается в этих разговорах. Либо потому, что я спрашиваю о нём, либо они сами говорят мне, что недовольны своим ПК. Обычно у них более мощные машины дома либо для игр, либо для работы над личными проектами. Представьте себе разочарование, которое они испытывают, приходя на работу и садясь за жутко тормозную машину. Боль ожидания загрузки IDE ни с чем не сравнима. Некоторые из них даже включают компьютер, дожидаются экрана входа в систему, а затем идут налить себе чашечку кофе, пока все приложения, которые они ставят на автозагрузку, загрузятся до состояния, при котором их можно использовать.

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

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

Да, пока я не забыл об этом написать: возьмите себе второй экран!

Работа с несколькими экранами увеличивает производительность разработчиков

Вне зависимости от размера экрана, ну, ладно хотя бы 19″ должно хватать, поставьте дополнительный экран на ваш рабочий стол. Если вы работаете на ноутбуке, используйте VGA или HDMI порт. В худшем случае вы можете использовать более старую машину и установить на обе машины Synergy.

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

Далее давайте поговорим о софте. Опять же, держитесь на уровне и работайте с самыми свежими версиями ПО, которые есть на рынке. Это позволяет не только показать вашу увлечённость работой, но и иметь доступ к последним разработкам в плане производительности. Недавно я работал консультантом в местной компании на острове Маврикий, и, честно говоря, я был шокирован, увидев несколько установленных Visual Studio 2005 на машинах с Windows 7. Более того, у тимлидов были Visual Studio 2008 либо 2010 на их машинах. Принимая во внимание, что последняя версия Visual Studio была на завершающем этапе разработки перед выходом на рынок, я уговорил их запланировать глобальное обновление их оборудования.

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

Стоимость лицензии

Конечно, лицензии на ПО стоят денег, и, к сожалению, это не очевидно для некоторых людей, что необходимо закладывать затраты на лицензии в ваш годовой бюджет. Поэтому, если денег не заложено, нет и обновлений. Интересно, что, когда я говорю об этом с моими клиентами, они понятия не имеют о некоторых скидочных программах, предлагаемых производителями ПО. Например, если вы Зарегистрированный Партнёр Microsoft, вы можете заказать некоторые индивидуальные варианты ПО от MSDN по доступной цене.

Я всегда работаю на последней доступной версии Microsoft Visual Studio, Microsoft SQL Server и Xamarin Studio. И, если позволяет время, даже на бета-версиях…

Особенности проектов

Проект оптимизирован под версию X операционной системы и должен работать с версией Y этого продукта. Всё-таки ПО изменяется, поэтому меняться должна и ваша среда разработки. Были несколько случаев, когда новая операционная система была провальной, но в основном, используйте последнюю доступную. Просто чтобы оценить улучшения: исправления ошибок и новые инструменты, которые предлагают эти продукты. И будьте готовы, если клиент вдруг спросит вас: «Будет ли ваше/наше ПО работать в новой операционной системе?» Всегда приятно отвечать примерно так: «Да, будет (с небольшими изменениями). Мы уже протестировали его несколько недель/месяцев назад на бета-версии», — чем пожать плечами и ответить что-то вроде: «Мы не знаем.»

Поддержка выпущенных приложений

О, да, проклятье старого кода и демоны прошлого. Ну, в этом случае сделайте себе большое-большое одолжение и виртуализируйте вашу среду разработки. Это очень просто: возьмите либо Microsoft Hyper-V, либо Oracle VirtualBox, либо VMware Workstation или Player и переместите весь старый код туда. Я напишу о виртуализации подробнее далее в этой статье.

3. Хорошее кресло

Помните, что я писал о слепой печати? Как разработчик ПО, вы скорее всего сидите от шести до восьми часов каждый день за вашим рабочим местом. Хорошо, есть всякие «неприятные» перерывы на туалет, еду или на совещание, но в конце концов, вы большую часть времени сидите за столом. Либо вы пишете код, либо тестируете его, либо разбираете текущие задачи. Я считаю абсолютно необходимым иметь эргономичное кресло, которое хорошо подходит под ваше тело. Не экономьте на вашем здоровье! В случае, если вы наёмный работник и у вас неудобное кресло или стол, поговорите с вашим менеджером или боссом и обсудите возможные решения. Это будет в их интересах иметь уверенного в себе работника, который с радостью приходит на работу, вместо того, чтобы у него были постоянные ноющие боли в плече или спине после упорной работы.

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

  • Регулировка по высоте
  • Настраиваемая спинка
  • Поддержка поясницы
  • Настраиваемые подлокотники
  • Хорошая обивка

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

Комфорт = удовлетворение = мотивация = результаты

Вот так это просто!

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

4. Виртуализация и изолированные среды для проектов

Это может быть не применимо во всех случаях, но несмотря на это, я думаю, стоит упомянуть и обсудить это здесь. Честно говоря, я использую виртуализацию софта уже больше 10 лет. Если я правильно помню, у меня тогда были ранние версии VMware Workstation и это было чисто ради эксперимента иметь несколько копий Windows на одном компьютере. Но было абсолютно волшебно иметь возможность работать на Windows 2000 и тестировать ПО на Windows 98 или Windows NT 4.0 без необходимости иметь ещё одну физическую машину. На самом деле ПО для виртуальной машины – это одна из первых программ, которые я устанавливаю на новую машину.

Более того, как только вы начинаете работать над несколькими проектами для разных клиентов, виртуализация всегда позволяет иметь чистую среду разработки. Вы помните старые времена DLL ада? Да? Ну, а я нет! ;-)

Когда я брался за новый проект, я либо просил ответственного менеджера предоставить мне виртуальную машину, либо, если это было невозможно, создавал мастер-образ, который я размещал на файловом сервере компании для всех моих коллег. Цель виртуальной среды в том, чтобы избегать непредсказуемого поведения ваших условий разработки. Более того, я могу разработать и создать виртуальный образ, в точности совпадающий с целевыми машинами клиентов. Позже я уже использовал VMware Converter, чтобы преобразовать один из компьютеров клиента в виртуальную машину. Таким образом я мог разрабатывать, выполнять и тестировать ПО в более «реальных» условиях.

А по сравнению с моими коллегами у меня не было никаких проблем в установке патчей, обновлений и новых версий ПО, которые использовались в процессе разработки определённого проекта. Если это случалось и не приводило к улучшению результатов, возврат к предыдущему образу – и вуаля! – я снова в строю без каких-либо серьёзных задержек. Также это позволяет любому разработчику устанавливать и тестировать новые версии своих IDE или дополнительных пакетов ПО. В то время главной проблемой были несовместимости различных элементов ActiveX или версий Microsoft Office.

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

Виртуализируйте вашу рабочую среду, чтобы облегчить себе жизнь

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

Не забывайте, что это также показывает ваш опыт и знания вашим клиентам. Если программа работает на вашей машине, это вовсе не значит, что она будет работать на любой машине. Поэтому будьте готовы тестировать ПО так тщательно, как только сможете. У меня недавно была ситуация, что у одного из клиентов был веб-сайт разработанный и реализованный другим веб-разработчиком. Конечно, всё отображалось и работало, как надо, до тех пор, пока я не начал свои обычные кросс-платформенные и кросс-браузерные тесты, чтобы проверить мои изменения в коде. Вы не можете себе представить отличия в отображении сайта в различных браузерах на Mac OS X, Linux, Android или устройстве на iOS. «К сожалению», это буквально открыло глаза клиенту и потребовало дополнительной работы от веб-дизайнера по доделке сайта.

5. Эргономичный стол и рабочая среда

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

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

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

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

Следующий параграф может относиться только к жаркому климату, такому как на острове Маврикий, но всё-таки… Комфортная температура!

Я не могу вспомнить, сколько раз я входил в морозилку вместо офиса разработчиков ПО. Это просто безумие, как в некоторых компаниях устанавливают температуру кондиционера. Главное правило – температура внутри офиса в летнюю погоду не должна отличаться от наружной больше, чем на 5 градусов. Всё, что выходит за рамки, нездорово и ведёт к простуде. Вы можете представить себе работников, сидящих за компьютерами в рубашках с длинным рукавом или даже в свитерах в то время, как все остальные на улице изнывают от жары? Нет? Тогда вам стоит приехать на Маврикий… Но вот что нужно для разработчика на самом деле, так это…

6. Политика чистого стола

Ещё одна горячая тема, которой стоит уделить некоторое внимание – это всякие «ненужные вещи» на вашем рабочем столе.

Золотое правило №1: Никакой еды на или около рабочего места!

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

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

Держите ваш рабочий стол как можно более чистым, чтобы избежать всего, что может отвлекать

Теперь я чувствую себя более комфортно: меньше отвлекающих факторов!

Золотое правило №2: Делите ваши ежедневные задания на части!

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

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

Золотое правило №3: Уберите ваш мобильник!

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

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

7. Доступ к литературе и обучению

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

  • Когда в последний раз вы прочитали книгу по определённой технологии?
  • Вы знаете, сколько вы читаете книг по программированию в год?
  • Вы вообще прочитали хоть какую-нибудь книгу после выпуска из университета?

И это тоже одни из моих стандартных вопросов, когда я прихожу в новую команду разработчиков ПО. Что касается меня, я читаю примерно 5-6 технических книг в год. Иногда содержание книги даже не нужно мне для текущих проектов, но заголовок привлекает моё внимание и поэтому я читаю книгу. Интересно, что было несколько случаев, когда книга на отвлечённую тему давала мне преимущество в будущей работе.

В наше время есть бесконечные возможности получить доступ к высококачественному материалу, особенно в сфере разработки ПО. Если вы разработчик под Windows, то можете посетить MSDN и TechNet. Последнее достижение Microsoft называется Microsoft Learning. Они предоставляют онлайн материалы и видео уроки по отдельным темам бесплатно! Записанный материал описывает самые современные разработки, и вы можете скачать его для ознакомления позднее. Более того, я очень рекомендую вам подписаться на одну из платформ электронного обучения, таких как Pluralsight, Lynda, TekPub и т.п. И не забудьте проверять онлайн руководства по инструментам и библиотекам, например, Telerik TV – великолепный ресурс, если вы пользуетесь их продуктами.

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

Подготовьтесь для получения сертификата

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

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

Также рекомендую прочитать статью Программисты, не будьте злыми.

Спасибо за перевод этой статьи телеграм-каналу .NET разработчик.