Командная работа

Каждого второго почеши — скажет, что умеет работать в команде. Субъективно кажется, что действительно умеет едва ли каждый пятый. Что это на практике за фигня такая, командная работа?

IM-доступность. Индустрия IT насыщена странными, а то и вовсе свихнувшимися людьми. Хоть справочник заболеваний пиши. Одно из заболеваний — боязнь IM и около того: ICQ, Jabber, Skype, Telegram, etc. Ну или не боязнь, но нелюбовь, пусть так.
Так вот, в жопу эту нелюбовь. Я должен мочь в любой момент задать вопрос, дать ответ, кинуть в человека ссылкой на тикет, поделиться куском кода. И должен быть уверен, что в разумный промежуток времени мой сигнал дойдёт до мозга адресата.
Я не должен в 2016 году размышлять о том, какой голубиной почтой отправлять Петеньке нужное. Не пользуешься IM? Выкидывай смартфон, продай ноутбук, забейся в пещеру в недрах Малахитовой горы, там хозяйке о своей тонкой натуре рассказывай.

Прозрачность. Возможно, в каком-нибудь колхозном НИИ реально числиться на довольствии, при этом будучи очень загадочным человеком — кто этот чувак и чем он занят? В нормальной команде минимум двое должны понимать, какую задачу ты сейчас делаешь, какую делал и какую будешь делать — руководитель и “напарник” (у фронта бекендер, у бекендера фронтендер и т.п.).
Человечество придумало до фига инструментов прозрачности. Открытый рот с вылетающими из него словами — доступный большинству минимум. Трекеры с их тикетами. Встречи. Какие-нибудь упоротые еженедельные отчётности. Наконец, трогательная записочка “Я сделяль”.
Нужно это не для галочки. Нужно это для того, чтобы десятки задач команды как-то друг с другом стыковались. Чтобы можно было хотя бы примерно прикинуть “Петя во вторник сделает ручку API, значит, Вася в среду с утра может фигачить форму на фронте”. Когда Петя и Вася тихо сидят под вениками, даже такое планирование идёт на хутор бабочек ловить.

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

Терпим и терпелив. Разработка — она не для шибко нежных натур. В любой момент может переформулироваться задача, заболеть коллега, смениться дизайн, измениться вектор сервиса в целом, взорваться сервер (и все авралят), да что угодно. От эмоций в случае крайне несвоевременных или невероятно затянувшихся событий мало что может спасти (мне, впрочем, адаптол помогал), но на повседневном уровне следует относиться ко всему с пониманием и конструктивно.
Я к этому абзацу, кстати, шёл очень много лет. Разработка сводит вас с очень разными людьми — от профессионалов высокого класса до случайных в индустрии персонажей. Почти никогда трата нервов на эмоции или на “давай я тебе в рожу дам, скотина тупая, как же ты меня достал” не превращалось в нечто полезное. Умные люди тупят по объективным причинам. Глупых людей ничто не вылечит — однажды их просто уволят, ну или вы уйдёте и забудете прошлое.
Потому толковый командный игрок скрипит зубами, но должен терпеливо сносить “человеческий фактор” — улыбаться, кивать, переписывать код, перерисовывать схемы, фигачить ночами и в сотый раз руками поднимать упавший сервер. Иначе будет хуже в первую очередь для дела.

Иерархия. У нас, людей, общество иерархично. Оно и по психологии так получается, да и по некоторой оптимальности действий — у каждого солдата своя манёвра. Даже в небольшой группе из двух человек будет один “master” и один “slave”, пусть даже им будет казаться, что всё одинаково, всё равно, всё решается голосованием.
Командный игрок должен, как минимум, уметь подчиняться. Да, руководитель может хотеть странного. Да, он может хотеть вообще ошибочного. Да, даже после N увещеваний он хочет вот именно ЭТО. Конструктивность — сделать для него ЭТО.
К этому тоже шёл много лет. Очень много споров, снова очень много эмоций и желаний стукнуть коллегу монитором, чтобы тот прозрел. Но… подумайте рационально: в чём состоит ваша задача? Вам платят за то, чтобы вы спорили с руководителем о том, куда запятую ставить? Вам самому это интересно? От этой запятой зависит жизнь маленького мальчика из Зимбабве? Время всё поставит на свои места. Если решение было косячное, одна из волн рефакторинга (или волн смены команды) его сметёт. Если решение всем пофиг и будет жить веками в пыльном углу, так пусть живёт. Если оно правильное, а вы не дурак, со временем вы его оцените по достоинству.
Короче, иерархия — это когда у вас есть некоторая зона ответственности и область принятия решений. Командный игрок умеет тусоваться в рамках своей зоны, не портя окружающим нервы лишний раз.

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

Книги: Learn Swift 2 on the Mac, 2e

Learn Swift 2 on the Mac
Waqar Malik.
Learn Swift 2 on the Mac. 2nd Edition.
Apress, 2015.
За очень редким исключением стараюсь придерживаться правила, по которому описываю в этом блоге только книги, прочтённые от корки до корки. Вот сейчас исключение.
После трети книги (~70-я страница) сломался.
Автор взял guide от Apple и пересказал его. Обычно стараются пересказывать с целью оживления: а вот тут побежал весёлый регистр, ахаха! Здесь же чувак умудрился документацию убить. Плохой язык. Плохие примеры. Перепутана последовательность изложения. Объяснений вообще толком нет.
Ради достойного уникального содержания (если с вами впервые за историю человечества общается марсианин, пофиг на опечатки) можно было бы потерпеть. Но блин, это просто бездарный пересказ документации.
Книгу не читать, не теряйте время. Жалею, что два вечера насиловал себя.

Книги: Introducing Go

Introducing Go
Caleb Doxsey.
Introducing Go.
O’Reilly, 2016.
Небольшая книга для начинающих. Кратко осмотрены все ключевые конструкции языка, да и всё. Как кажется, целевая аудитория выбрана неудачно.
Во-первых, совсем начинающие не справятся потому, что нет описания основных для программирования понятий и практик в отрыве от языка. Иначе говоря, немножко текста о работе с памятью в Go есть, но про саму память ничего нет.
Во-вторых, не очень начинающие книгу будут листать, а не читать, т.к. заметно много места потрачено на “смотрите, а вот так мы заполним массив без цикла, но с циклом удобнее, конечно же”.
В-третьих, совсем не начинающим книга подойдёт лишь как беглое знакомство с базовым синтаксисом в метро. Пока кажется, что документация с сайта языка бодро заменит.
Главное, чего я в тексте не нашёл — зачем вообще писать на Go? Не к тому, плохой язык или нет. К тому, что не описана причина. Не дана мотивация. Не приведены production cases, в которых Go отжигал бы круче C++ или Java. Всё это за кадром.
В общем, наверняка есть книги лучше этой. А эту на пару долгих поездок в метро, не более.

Книги: Отъявленный программист

Отъявленный программист
Игорь Савчук.
Отъявленный программист. Лайфхакинг из первых рук.
Питер, 2015.
Бестолковая книга с глупым названием. Попалась под руку, когда искал лёгкое IT-чтение на русском языке, ну и был наказан.
Около 3/5 содержания — интервью с семью разработчиками, среди которых Столлман (ваще упоротый мужик), Касперски (годное интервью), Чернов (упоротый в квадрате, интервью в топку), аноним из Китая (любопытно), Франкель (ни о чём), Кищенко (ой, я так люблю путешествовать, так люблю), Дэвис (упоротый духовными скрепами, интервью ни о чём).
Потом 80 страниц о собеседованиях в Google и о миграции. Тоже ни о чём.
Потом 35 страниц пустых баек про IT. Да ещё и с характерным авторским замечанием:

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

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