Почему я люблю языки с сильной системой типов, проверяемой статическим анализом кода — хорошо написанная программа является своей собственной спецификацией и позволяет выражать через язык программирования законы существования предметной области.
Когда-то давно я писал на ActionScript. Там была система типов, но вот десериализация JSON'ов по-умолчанию была в какой-то общий Object, к полям которого нужно было обращаться ["по_строковому_имени"]. В один момент мне потребовалось написать что-то на C#, который я совсем не знал, я стал гуглить, как десериализовать JSON, и с удивлением обнаружил кучу советов заранее объявить класс со всеми нужными полями и десериализовать в него.
"Какой ужас!", — подумал я тогда, — "Это же дико неудобно! А если я не знаю полей JSON? А если их много? Отвратительный язык!"
Теперь то я прекрасно понимаю, что JSON это контракт, и что правильная десериализация только такая и должна быть, и что в хорошем API в одном поле никогда не бывает данных принципиально разных типов, и так далее.
Нет, если вы набиваете вечерами пет-проект или сидите бессонную ночь на хакатоне, нет ничего плохого в том, чтобы взять простой язык с динамическими типами вроде JavaScript или Python, не требующий описывать данные. Но вот в энтерпрайзе, особенно когда над одним проектом работает много людей (а бывает это очень часто) — хорошее использование системы типов убережёт разработчиков от огромного количества ошибок, будет бить их по рукам, когда они пытаются сделать что-то не то, и будет подсказывать, когда они не уверены в чём-то.
С помощью статической типизации можно на уровне кода обозначить правила, по которым ведёт себя предметная область вашей программы в реальном мире. Разработчику не только будет сложно их нарушить, но он ещё и станет узнавать какие-то вещи, которые мог не знать раньше.
Например, если мы делаем медицинскую CRM, и больница заводит новых пациентов только тогда, когда знает их группу крови, мы можем объявить тип "Пациент" (или, если точнее, "Карта пациента") и запретить создавать экземпляры этого типа, не передав в конструктор группу крови (которая, в свою очередь, тоже является типом, вероятнее всего ValueObject'ом). Если новый программист пришёл в проект, он, во-первых, не сможет записать в БД некорректную карту пациента. Понятно, мы не учитываем случаи, когда новый программист переделывает модели предметной области — это будет хорошо видно на кодревью. А, во-вторых, даже если ему никто не сказал, что пациенты должны быть с группой крови, он узнает это из кода. И уже будет понимать, что в тех процессах реальной жизни, которые он описывает кодом, карта пациента создаётся только при наличии группы крови. А, значит, нужно искать какой-то способ сначала эту группу крови получить, и только потом создавать карту. Программирование моделирует реальный процесс.
В настоящей работе даже на языках с типами, конечно, без должного контроля можно написать что угодно. Нужна управленческая воля, компетентность руководства, понимание опасности техдолга, в идеале отдельные должности для архитекторов, опытные лиды и старшие разработчики. Но когда всё это есть, можно отсекать много проблем ещё на старте и проще погружать новичков.
#dev
Рассказ о том, как я снова не стал СЕО американской компании
Эта компания всегда вызывала у меня огромное восхищение. Многолетнее лидерство в сочетании с высокой технологичностью.
Предложение пришло неожиданно: моя карьера в одном из банков, скажем так, клонилась к закату, и я с интересом поглядывал вокруг. И вдруг – такое!
У меня было несколько собеседований в Москве и два разговора по скайпу – с потенциальными заокеанскими боссами.
Я провёл невероятное количество времени в подготовке к этим встречам. Я читал статьи в зарубежной прессе, изучал презентации и обзоры, досконально прочесал несколько сайтов самой компании, просмотрел с десяток интервью с её топ-менеджерами. Я нашёл на российском рынке нескольких специалистов с опытом работы в этой, неизвестной мне, индустрии и с пристрастием с ними… позавтракал.
Я очень хотел оказаться на этой позиции. Но меня не взяли. Я вновь дошёл до топ-2, но мне предпочли топ-менеджера, который имеет большой опыт взаимодействия с государственными органами. Как я сейчас понимаю, это решение было правильным и единственно возможным для совета директоров.
Было ли мне обидно? Конечно. Но после этой истории моя карьера сделала несколько причудливых оборотов и «я счастлив тем, как сложилось всё, даже тем, что было не так», как поёт «Аквариум» в одной из чудесных ранних песен…
Есть ли в истории моих двух условных карьерных неудач мораль?
Мне не хотелось бы рядиться в одежды моралиста, но несколько выводов я для себя сделал.
1️⃣ Если оказался на Олимпийских играх, надо изо всех сил бежать. Участие – само по себе награда.
2️⃣ Если пошёл за грибами, не огорчайся, если найдёшь не грибы, а ягоды. Не получив работу, я обзавёлся друзьями и новым опытом.
3️⃣ Всё, что Бог ни делает, – к лучшему.
#CEO
@korovinteam
Рассказ о том, как я не стал СЕО американского банка
Первая неудачная попытка возглавить банк с участием нескольких американских фондов в капитале состоялась в самом начале 2000-х. Мне было двадцать девять лет без малого, когда я стал членом правления небольшого российского «Импэксбанка». После дефолта 1998 года международные рынки, на работе с которыми специализировалась моя команда, были закрыты и мы предпринимали гигантские усилия, чтобы открыть корреспондентский счёт за рубежом, получить кредитную линию на краткосрочные операции на финансовых рынках и договориться с международными рейтинговыми агентствами о получении кредитного рейтинга. Шаги были, безусловно, черепашьими, переговоры – нечастыми, у меня оставалось много свободного времени, и я… как-то заскучал.
Тогда-то и пришло это волшебное предложение.
В общей сложности, у меня состоялось пять встреч. Помню встречу в офисе на Тверской с одним из членов совета директоров банка: он закинул ноги на журнальный столик между нами, я разглядывал полустёртые подошвы его кожаных ботинок и отвечал невпопад. Помню встречу с американкой, представляющей интересы крупнейшего акционера. Мы зацепились языками, проговорили битых два часа и, несмотря на неудавшееся партнёрство на банковском проекте, крепко подружились. Впоследствии мы неоднократно встречались и в Москве, и в США во время моих командировок. Встреча с представителем другого фонда была тоже невероятно мотивирующей и тоже переросла в многолетнюю дружбу.
Последней была встреча с главным боссом, председателем совета директоров. Он поинтересовался, зачем я пошёл учиться в Литературный институт. Я ответил ему что-то вроде того, что мне всегда нравилось писать стихи и прозу (что было правдой) и что у меня появилось немного свободного времени (что тоже было правдой). Главный босс на это хмыкнул и увёл дискуссию в сторону.
В общем, меня не взяли. Я попал в топ-2, но уступил другому кандидату. На этих выборах я получил четыре белых шара и один чёрный – от главного босса. Он справедливо решил, что я не обладаю опытом первого лица и предпочёл мне более зрелого топ-менеджера. Честно говоря, на его месте я принял бы точно такое же решение.
Между тем, пока шли эти переговоры, жизнь в «Импэксбанке» забурлила. Иностранные контрагенты начали проявлять к нам благосклонность, открывать счета и «непокрытые» кредитные линии. У меня состоялся разговор с председателем правления, и он, видя, что я заскучал, передал мне в кураторство ещё несколько направлений, включая работу с малым и среднем бизнесом. Я недоучился на заочном отделении Литинститута и после двух с половиной лет учёбы подал документы на отчисление. Начался новый период моей карьеры – едва ли не самое интересное время, – которое закончилось в 2006 году, когда мы договорились о продаже банка Группе Райффайзен.
Через некоторое время на моём горизонте появилась ещё одна американская компания, но об этом – в следующий раз 😎
#CEO
@korovinteam
Доверять ли первому впечатлению при найме
Дело было на заре моей карьеры СЕО. Я недавно стал руководителем банка, и один из моих прямых подчиненных принёс мне резюме кандидата на ключевую роль в своём подразделении.
У меня есть правило: у всегда стараюсь знакомиться с кандидатами на самые важные позиции в организации и обязательно встречаюсь с прямыми подчинёнными членов моей команды. Я поступаю так по двум причинам: во-первых, мне важно понять, каких людей и почему рассматривают топ-менеджеры, а в-вторых, я стараюсь не упускать возможности поделиться с потенциальным новобранцем своим взглядом на стратегию компании и заодно ответить на вопросы.
Но в этом случае что-то пошло не так. На первой встрече кандидат мне решительно не понравился, и я поделился опасениями со своим коллегой. Он настаивал на том, что для нашего банка именно этот кандидат идеален. Тогда я вновь встретился с претендентом на высокую должность. На этот раз я был менее категоричен и не стал накладывать вето на предложение своего заместителя, который упорно стоял на своём. «Что ж, если ты так настаиваешь на этом специалисте, берём его под твою ответственность и через два-три месяца вернёмся к разговору», заявил я коллеге.
Результат превзошёл все ожидания: молодой человек быстро освоился в банке и за считанные недели навёл порядок во многих профильных вопросах.
А что я? Я признал, что допустил ошибку и доверился первому впечатлению.
С тех я провёл сотни собеседований и, вероятно, бывал не менее категоричен. Задним числом не проверишь, сколько подходящих сотрудников было среди тех, по которым я и другие члены моей команды вынесли отрицательный вердикт...
Но каждый раз, когда я встречаюсь с очередным кандидатом, я вспоминаю эту давнюю историю и стараюсь не доверять полностью первому впечатлению. Хотя бы для того, чтобы не проворонить звезду.
#CEO
@korovinteam
🙃 مجموعه PreCode فعالیت خود را به صورت گسترده شروع کرده و آماده دریافت پروژه های شما میباشد.
♻️ تحویل پروژه ها به صورت بهینه و امکاناتت دلخواه کاربر
🔻 برنامه نویس های مجرب و متعهد
🔻 پشتیبانی در برابر باگ های کد پروژه ( تحریم ها شامل نمیشوند )
🔻 هزینه به صرفه
💠 پروژه های اندروید، فرانت، بک اند،سئو،اپ ویندوز و ربات تلگرام،بله،سروش خود را به ما بسپارید.
😬 درخواست پروژه : @dev_null
⚒ گروه پرسش و پاسخ :
🆔https://t.me/+lDSoNUlTK1Y5ZDNk
🔥 | پیش کد : Pre Code خواستار امنیت در پروژه - #CEO
🔰 | @Pre_Code
🙃 مجموعه PreCode فعالیت خود را به صورت گسترده شروع کرده و آماده دریافت پروژه های شما میباشد.
♻️ تحویل پروژه ها به صورت بهینه و امکاناتت دلخواه کاربر
🔻 برنامه نویس های مجرب و متعهد
🔻 پشتیبانی در برابر باگ های کد پروژه ( تحریم ها شامل نمیشوند )
🔻 هزینه به صرفه
💠 پروژه های اندروید، فرانت، بک اند،سئو،اپ ویندوز و ربات تلگرام،بله،سروش خود را به ما بسپارید.
😬 درخواست پروژه : @dev_null
⚒ گروه پرسش و پاسخ :
🆔https://t.me/+lDSoNUlTK1Y5ZDNk
🔥 | پیش کد : Pre Code خواستار امنیت در پروژه - #CEO
🔰 | @Pre_Code
El lobby de los #CEO en la #UE: #PactoVerde, desregulación y expansión comercial
«Para mantener su prosperidad y estabilidad, la UE necesita reducir la carga regulatoria para las empresas, finalizar más acuerdos comerciales y convertir el Pacto Verde en una estrategia de crecimiento en la próxima legislatura»
https://www.euractiv.com/section/economy-jobs/opinion/the-eus-global-leadership-relies-on-strong-companies/
Новая команда: уволить или оставить?
Пришёл вопрос:
Меня недавно назначили СЕО. В моей команде есть несколько не вполне лояльных мне (да и организации в целом) топов. Боюсь их уволить, потому что они держат основную экспертизу. Как поступить?
Мой товарищ, вице-президент крупного промышленного холдинга, рассказал мне на прошлой неделе историю про одного такого генерального директора. После назначения на должность он сосредоточился на выполнении планового задания и лишь отмахивался от предложений поменять команду. Жалобы и сплетни коллег в своём коллективе он называл «мушиной вознёй» и «комариным писком».
Через несколько месяцев эта мушиная возня дошла до акционеров компании, по дороге приняв форму «справедливой критики, высокомерно отвергаемой новым гендиректором», и акционеры не утвердили контракт генеральному.
Команда – это первое, чем, а вернее, кем, должен заниматься вновь назначенный руководитель.
«Снести» прежнюю команду и поставить на все позиции «своих» людей – эффектный, но не самый правильный вариант. Ещё менее правильное решение – ничего не делать и плыть по течению.
Идеальный вариант, как обычно, посредине:
✔️выявить компетентных и готовых работать с новым руководством – таких оставить и, возможно, даже улучшить для них контрактные условия работы;
✔️выявить нелояльных – таких срочно заменить, даже если есть риск потери части компетенций: тем быстрее вы найдёте на эти позиции новых сотрудников;
✔️вывести на ключевые вакантные позиции бодрых и профессиональных новичков, и не так важно, откуда, – из вашей записной книжки или с помощью кадрового агентства
И ещё один момент. Карт-бланш на смену команды, который обычно даётся новому руководителю, действует недолго – не больше одного-двух месяцев. Если вы сразу не поменяете хотя бы часть команды, впоследствии вам будет гораздо тяжелее это сделать. Хотя бы уже потому, что вы сами начнёте допускать ошибки, которыми ваши нелояльные подчинённые не преминут воспользоваться.
И тогда готовиться к увольнению уже придётся вам.
#команда
#CEO
@korovinteam
🔔Экономическое обоснование (аудит) GR-функции
🙌Baikal Communications Groupобъявляет о запуске новой аналитической услуги по экономическому обоснованию (аудиту) GR-функции.
📌 Продукт предполагает количественную и качественную оценку эффективности взаимодействия с органами государственной власти для повышения прозрачности и результативности GR-деятельности, аргументированного обоснования решений и формирования эффективной стратегии профильного подразделения компании.
‼️Экономическое обоснование (аудит) GR-функции поможет определить, как текущие и перспективные активности компании в сфере взаимодействия с государством способствуют достижению стратегических целей, минимизации рисков, созданию долгосрочных конкурентных преимуществ.
⤵️Услуга будет полезна:
✔️ компаниям, у которых уже есть GR-подразделение и бизнесу, который только задумывается о его формировании;
✔️ собственникам бизнеса, акционерам, топ-менеджменту, руководителям GR-департаментов.
⤵️ В практическом смысле услуга позволит:
✅ рассчитать потенциальные экономические эффекты от создания GR-функции в компании;
✅ обосновать объем бюджета GR-подразделения;
✅ оценить эффективность работы GR-подразделения;
✅ оптимизировать работу GR-департамента.
🗓 Ознакомиться подробнее с форматами сотрудничества и проектами можно на сайте компании в разделе «Услуги». Для получения дополнительной информации или обсуждения возможностей сотрудничества направьте запрос на электронный адрес:[email protected].
#GRфункция#CEO#услуги