Краткое содержание предыдущей серии: digital мы будем называть разработку цифровых облачных продуктов с помощью гибкого (agile) подхода (либо товаров и услуг, включающих такие продукты). Переходить в эту сферу имеет смысл, потому что там нормально платят и есть, куда расти.
В этой части мы разберём, какие общие навыки требуются, исходя из моего личного опыта собеседований. В частности, рассмотрим:
- Английский язык
- Программирование
- Системное мышление
- Понимание бизнеса
Ещё раз отмечу, что здесь именно навыки для всех профессий в digital, не только для программистов, но и для дизайнеров и менеджеров продукта и любых других профессий. Даже HR в digital компании это всё потребуется. По поводу каждого навыка есть, насколько мне известно, масса заблуждений, поэтому, извините за занудство, разберём:
- Что это за навык
- Как его приобрести
- В чём может быть затык
- Как преодолевать затыки
Эти общие навыки в значительной степени формируют культуру digital компаний, которая (в идеальном случае в вакууме) противоположна культуре "у меня есть специальные люди для этого, ща дадим им команду, они сделают". Культура digital компаний часто похожа на культуру стартапов или вырастает из них, то есть такой организации, где все занимаются всем. И если ты это умеешь, просто берёшь и делаешь; чувства иерархии и кастовости здесь намного меньше, чем в других отраслях. Но мы отвлеклись, погнали по навыкам.
Английский язык
Тут зависит от того, в какой компании / стране вы хотите работать:
- Для российской компании достаточно уметь читать английскую техническую литературу
- Для зарубежной компании нужно уметь разговаривать и писать
Для чтения нужно... читать и переводить. Читать отдельно не нужно, в разделе про программирование будет что почитать на английском, таким образом прокачиваются сразу два навыка. А вот насчёт переводить полезно использовать не Google Translate, а Multitran: в нём больше значений, и освоение пойдёт существенно быстрее. И нужно знать, что ничего другого здесь нет: нужно просто много читать и много переводить. Я это делаю непрерывно со второго класса школы, а сейчас мне 39, и я свободно говорю и пишу на английском при этом. Некоторые вещи (и это хорошая новость) больше всего зависят от регулярного труда.
С умением разговаривать и писать вроде бы понятно, можно заниматься по разным методикам, можно заниматься с носителем языка, можно ездить в англоязычную страну с полным погружением, но мне известен случай, когда этого оказалось недостаточно, и я долгие годы наблюдаю затык. Как мне кажется, для разговорного и письменного английского мозг должен переключиться, он должен начать думать на английском. Поскольку английский намного проще русского, проявляться это будет в том, что английские слова и выражения будут всплывать в памяти первыми, но это лечится.
Лично я не испытывал на себе такую проблему, но было что-то похожее в Универе. У нас был предмет "Переходная экономика", помню зелёный учебник А. В. Бузгалина. Проблема была в том, что я не успевал прочитать нужную главу, хотя у меня не было военной кафедры, то есть был +1 свободный день. Тогда я пошёл на курсы быстрого чтения, где обучают разным приёмам, но в итоге ты упираешься в то, что ты проговариваешь про себя слова. Мозг уже готов читать быстрее, и ему не нужно для понимания, чтобы ты проговаривал про себя слова; это просто привычка. И в этот момент мне помог аутотренинг. Это вроде гипноза, но с самим собой, поэтому вроде как безопасно, если не перегибать с установками, не взваливать на себя слишком много за раз. Всё, больше я не проговариваю про себя слова. Честно не знаю, помог ли кому-нибудь аутотренинг начать думать на английском, но я бы двигался именно в этом направлении. Естественно, набрав минимальную словарную базу и грамматику.
Ещё кстати есть вариант, что те же зажимы, которые мешают думать, говорить и писать на английском, снимаются курсами актёрского мастерства. Актёры могут быстро выучить роль на любом языке, даже если это искусственный язык или бессмыслица. Не знаю, но надо пробовать нестандартные ходы, если дело не двигается; так точно быть не должно. Либо, как ещё идея, менять преподавателей до тех пор, пока не найдётся такой, который умеет работать именно с этой проблемой, и с ним будет видимое улучшение. Очень интересно, напишите пожалуйста в комментариях, какие у вас были затыки с иностранными языками и как вы их преодолевали. А мы переходим к программированию для не-программистов.
Программирование
Программисты, естественно, могут не читать, но вот лично меня поражает, насколько люди не понимают, что это и в каких областях применяется. Цель же у нас какая: чтобы компьютер что-то делал за нас. Он может что-то делать за аналитика или за дизайнера, но для этого не обязательно писать программу, есть много разных средств:
- Можно использовать формулы в Excel
- Можно записать последовательность действий в том же Excel, а потом подредактировать код скрипта
- В *nix системах можно использовать bash, просто чтобы выполнить последовательность команд или вызвать их много раз (например, в цикле)
- Можно использовать Makefile, например, чтобы формировать файлы в системе вёрстки LaTeX
- Для обработки изображений можно использовать bash + ImageMagick
- Для обработки текстовых файлов можно использовать bash + awk, sed
- Для статистической обработки данных можно использовать R
Казалось бы, причём здесь python? Да вообще не при чём, если в реальных условиях нужно сделать что-то из перечисленного выше. Если же готового инструмента нет, или нельзя слепить из кусков и склеить скриптом, тогда да, нужно программирование. Либо это тестовое задание, либо вы профессиональный программист, и вам важна производительность. Но этот раздел, повторюсь, не для программистов.
Дальше, до перехода в программирование, у любого языка есть библиотеки и фреймворки, которые позволяют решать задачи в какой-то конкретной области:
- Создавать сайты
- Писать программы с полями для ввода пользователями
- Выполнять математические действия
- Моделировать физические процессы и так далее
То есть писать движок блога на python и не использовать web-фреймворк – это прям ну очень странно. Для разных языков программирования есть разный набор библиотек, python сейчас используется примерно везде, и в этом его плюс. Но почему с него рекомендуют начинать, на самом деле, потому что у него очень ясный и понятный синтаксис, и на нём можно быстро и доступно объяснить базовые вещи, которые должны (в текущей реальности в digital компании) понимать не-программисты:
- управляющие структуры: if, for и т.п.
- функции и передачу параметров
- стандартный ввод / вывод и работу с файлами
- наконец, объектно-ориентированный подход
На этом я остановлюсь с python, но про программирование спрашивают ещё одну вещь, SQL. Это язык запросов к базам данным, но изучать его нужно не для того, чтобы обязательно писать эти запросы. Изучают его для того, чтобы понимать, как данные (обычно) хранятся в компьютерах, в частности:
- в чём разница между транзакциями и справочниками
- что такое ключ в таблице и как его использовать
- как таблицы связаны между собой
- что такое нормализация базы данных
Честно, я не знаю, что ещё помимо перечисленного и базовых запросов (выбор, удаление, добавление) нужно знать не-программисту об SQL. Как видите, про программирование всё оказалось не так сложно. С приобретением тоже проблем нет, есть масса книг в свободном доступе, также есть интерактивные руководства и курсы. Computer Science является, наверное, стандартным курсом, и хорошо бы его пройти, например, на Codeacademy, где есть интерактивный тренажёр. Но в целом это не обязательно, хотя практика нужна. Самый большой затык здесь в том, что люди, далёкие от техники, считают программирование чем-то вроде оккультизма, поэтому шарахаются от него. Никаких других причин затыков лично я не видел, во многих странах программирование преподают детям в начальной школе для развития логики. Есть, правда, персонажи, у которых 2+2 сегодня равно 4, а завтра 5, но это клинические случаи, и тут тоже понятно, к каким специалистам обращаться.
Кстати, материалов в свободном доступе на английском намного больше, вот тут-то английский и пригодится, но и не только здесь.
Переходим к системному мышлению, с описанием которого лично у меня был затык длиной в неделю.
Системное мышление
Проблема с системным мышлением в том, что люди под этим подразумевают одно, а те, кто действительно умеет системно мыслить, применяют совершенно определённый перечень инструментов из достаточно обширного списка. Итак, что от вас хотят на собеседованиях:
- Найти корневую причину проблемы (помните Анализ?)
- Предложить решение (помните Дизайн?)
Это взгляд с точки зрения бизнеса, которому нужно решение и нужно объяснить, как вы к нему пришли. А вот что находится "под капотом" у системного анализа:
- Анализ, то есть умение видеть систему (в чём-либо), разбивать её на части
- Синтез, то есть умение делать выводы, которые не являются простой суммой результатов анализа
- Критическое мышление, то есть уметь отделять факты от оценок, а также проверять и то, и другое
- SWOT-анализ, инструмент стратегического анализа и планирования, кстати есть шаблон
- PEST-анализ, инструмент анализа внешней среды, кстати есть шаблон
- Теория ограничений Голдратта, это моё любимое, сразу книжка: Уильям Детмер, Теория ограничений Голдратта
- Процессный подход
- Операционная модель
- Модель уровней зрелости, это второе любимое
- Поиск корневых причин проблем – диаграмма Исикавы
- Определение приоритетов на матрице Эйзенхауэра – без этого вообще сложно жить и работать
- Брейнсторминг
- ТРИЗ
- JTBD
- 6 Сигма
- Бережливое производство
- Управление цепями поставок (supply chain management)
- Цепочка создания ценности (value chain)
- Референтные модели по областям: SCOR (SCM), ITIL/ITSM (IT) и так далее
Как вы понимаете, это не полный список. Вы спросите: Костя, как же так, почему ты под видом общих навыков впихиваешь нам навыки супер-консультантов типа МакКинзи? Да, ребята, ещё 5-10 лет это было так, но ставки растут, поэтому сегодня, если вы не знаете и не используете хотя бы для себя (а ещё лучше – для работы) ничего из этого, то ничего хорошего вас не ждёт. Чем больше вы знаете, тем больше у вас конкурентных преимуществ. Раньше можно было изобретать велосипеды прямо на собеседовании, и это работало; сегодня вам могут сказать, что в соответствии с таким-то подходом это просто лютая дичь.
Как получить, вроде тоже понятно: есть книжки и материалы в Интернете, можно читать. Здесь проблемка в том, что некоторые материалы в принципе не существуют на русском. Поэтому, в большей степени, от желания узнать что-то новое зависит уровень вашего системного мышления.
А затыки здесь возникают не с пониманием, а с тем, что материалов и подходов слишком много. В один ТРИЗ можно нырнуть и не вынырнуть, так мы и теряем людей. Нужно понять, где у вас пробелы, что для вас будет наиболее ценно, выстроить приоритеты в изучении.
Понимание бизнеса
Правда в том, что материалы из предыдущей части, например, та же операционная модель, пересекаются с пониманием бизнеса. Стандартный подход – это понимание бизнеса через цифры, основы бухучёта никто не отменял. Но если меня спросят почитать что-то действительно вдохновляющее и настоящее про бизнес, то, конечно, это "Атлант расправил плечи" Айн Рэнд. Если всё же хотите почитать научного, то нужно искать в следующих областях:
- макроэкономика
- микроэкономика
- расчёт бизнес-кейсов
- институциональная экономика для расширения кругозора и понимания таких вопросов, как, например, "общественные блага"
Единственный нюанс здесь состоит в том, что нужно именно читать книжки известных учёных, а не смотреть в YouTube ролики про то, как "богатые становятся ещё богаче". Пограничное, то есть популяризация науки живым языком, есть, например, в статьях экономиста Пола Кругмана, но они редко встречаются на русском. Ещё один повод заняться английским, с которого всё началось, и которым я закончу эту часть.
Комментарии