В каждой профессии есть свои уникальные плюсы. Если вы боксер, то всегда можете дать сдачи. Если вы ветеринар, то способны вылечить простудившуюся кицу. Если вы работаете в МВД, все хотят с вами дружить. Если вы юрист, вам не страшны конфликты с ГАИ и споры с официантами на предмет тухлого шашлыка. Если же вы программист (aka компьютерщик), то вы можете абсолютно всё — начиная от перепрошивки утюга и написания скриптика, и заканчивая ремонтом ноутбука и посадкой самолета в случае внезапной смерти пилотов. Только успевайте носить с собой набор отверток и пару толстых мануалов.
Разработчик — в первую очередь инженер, поэтому не стоит удивляться, что от нас ожидают решения проблем всея Руси: «тыжпрограммист». Хорошая новость заключается в том, что из профессии программиста можно для себя выжать не только интересное времяпровождение, тусовку толковых коллег и американские гривны, но и некоторые навыки, которые пригодятся в реальной жизни:
1. Ставить диагноз
Оперативное решение проблемы, как и эффективное лечение пациента, напрямую зависит от точности поставленного диагноза. Специфика разработки такова, что выносить подобные заключения необходимо по много раз в день. И лучше бы делать это максимально взвешенно и объективно, иначе от неверно выбранных лекарств пациенту станет только хуже.
Программисты занимаются высокоточной диагностикой даже чаще, чем представители некоторых других профессий, что позволяет эффективно использовать этот навык в быту. Нужно выяснить, в чем проблема? — позовите тыжкомпьютерщика, дайте вводные данные, ответьте на его «что» и «почему» и считайте, что проблема если и не найдена, то как минимум локализирована.
2. Контролировать эмоции
Только хладнокровный трейдер способен зарабатывать большие деньги на фондовых рынках. Разработчики хорошо знают, чего стоит решение, принятое на эмоциях: для технического специалиста это непозволительная роскошь.
Профессиональная сдержанность, перенесенная в жизнь, позволит подходить к решению бытовых вопросов с холодной головой и добиваться лучших результатов, не поддаваясь сиюминутным перепадам настроения.
3. Говорить по делу
Этот навык у программистов прокачан в оба конца — в сторону компьютера и в сторону человека. С одной стороны, работа программиста заключается в том, чтобы составлять понятные инструкции живым и неживым сущностям — человеку и машине. Это умение объяснять всё доступным логическим языком здорово помогает в жизни — как в общении, так и в переписке. С другой стороны, разработчик также должен уметь понимать язык людей и машин. Этот навык делает его хорошим слушателем и читателем, который стремится вникнуть в суть разговора и текста, отсекая при этом всё лишнее.
К навыкам коммуникации можно также отнести умение задавать вопросы. Вовремя спросив, «почему?» или «зачем?» можно сэкономить добрую дюжину человекочасов в любом деле.
4. Уметь спорить
Программисты разбалованы своим развитым логическим аппаратом, поэтому с удовольствием ввязываются во всевозможные споры.
В работе этот навык важен, когда нужно отстоять свою точку зрения и свой вариант решения задачи. Хороший программист умеет найти нужные аргументы не только в разговоре с коллегами, но и с начальством высокого ранга. Без боязни получить по голове за наглость. Если он не будет этого делать, то с большой долей вероятности ему придется выгребать невыявленные на начальном этапе нестыковки в разработке и просроченные дедлайны на выполнение таски.
И хотя «на гражданке» искусство спорить и помогает решать бытовые вопросы вроде препираний со швондерами и налоговиками, ученые до сих пор не изобрели способа переспорить собеседника, который в качестве аргумента использует «ой ну всё!».
5. Концентрироваться
Без умения собраться и внимательно всё обдумать разработчику будет сложно решить даже заурядную задачу. Чтобы как-то отгородиться от офисных раздражителей, в ход идут наушники с музыкой, суровый покерфейс, который как бы предупреждает потенциального хронофага: — «не подходи, убьет!», и даже шарящая по листку бумаги ручка, якобы рисующая важные блок-схемы.
Хорошая новость: навык отключаться от внешних раздражителей и концентрироваться на главной проблеме поможет не только на работе, но и в обычной жизни, чем бы вы ни занимались — хоть боксом, хоть футболом.
6. Сначала думать, потом делать
Думаю, многие из вас когда-нибудь в своей жизни пробовали cowboy coding, когда ты, аки клавиатурный ковбой, не расходуя много времени на размышления об архитектуре и возможных долгосрочных последствиях, клепаешь прототипчики по ходу пьесы, чтоб через N минут/часов узнать, что надо было делать по-другому.
Этот пункт можно связать с пунктом № 3 про хладнокровие, потому что именно оно позволяет не поддаваться эмоциям в желании поскорее что-нибудь запилить. Даже в ситуации срочной паники, горящих контрактов, лежащих серверов и вот-вот отключенного электричества, программист возьмет чашку чая со стола, посмотрит в окно, с умудрённой философской миной хлебнет глоток-второй, сядет, вздохнет, выдохнет и только тогда начнет что-то решать. В быту такой подход работает на ура.
Бета-версия решения любой проблемы: не дергаться, лечь поспать, а утром уж будет готов солюшн. Как-то так.
7. Говорить правду
Если не успеваешь сделать таску — говоришь об этом проджекту и теперь это его проблема. Если не знаешь, как что-то сделать, говоришь об этом товарищу — и вы вместе что-нибудь придумываете. Но чего не прощает разработка софта, как и строительство моста, — это недоговорок и полуправды. Рано или поздно все тайные косяки и недоработки становятся явными и мост упадет вслед за серверами. Поэтому своей команде и начальству лучше сообщать обо всем заранее. Да, быть настолько кристально-честным, как будто вам вкололи сыроватку правды и взяли на роль кота из Шрека. Например: «В следующем году планирую поехать в Намибию, где есть большой риск подхватить малярию и склеить ласты, так что на всякий пожарный планируйте восьмую итерацию без меня».
Стоит только этот навык говорить правду перенести из офиса в быт, как жизнь начинает играть всеми красками: не нужно никого обманывать (даже девушек), нет смысла никем прикидываться, нет нужды смеяться над несмешными шутками и всем нравиться. Жизнь становится в миллион раз проще.
В перечисленных пунктах нет «учебы», потому что, по моему мнению, навыки обучения мы получаем гораздо раньше, чем начинаем программировать — еще в школе. Да и программерский подход к обучению мне представляется несколько ситуативным и несистемным. Также, по причине отсутствия документальных свидетельств использования в реальной жизни, я не упоминал навык чтения документации (aka RTFM).
Может, ещё что добавить?