Какими навыками необходимо овладеть, чтобы выжить в качестве программиста в ближайшие 5-10 лет? К примеру, станут ли знания в области искусственного интеллекта или высшая математика обязательными в какой-то момент? Своим мнением поделились пользователи сайта Quora.
Брайан Напп, Христианин, писатель, разработчик программного обеспечения, предприниматель, провокатор.
Единственный навык, который действительно будет востребован в ближайшие 5-10 лет, не имеет никакого отношения к техническим умениям.
Позвольте мне объяснить…
Как-то на вечеринке один парень спросил своего друга, выдающегося художника, чья картина была представлена на этой выставке: «Как тебе удалось создать такое произведение искусства?»
«Я рисую каждый день», - таков был ответ.
Ежедневное рисование – вот наилучший навык, который вам следует приобрести, будучи разработчиком программного обеспечения.
Естественно, я не имею в виду каждодневное занятие живописью. Скорее я веду речь о постоянной необходимости улучшать свои навыки и учиться чему-то новому каждый день.
Лучшие разработчики программного обеспечения, которых я встречал, постоянно пробуют новые технологии, языки разработки и идеи оформления, а также занимаются попутными разработками. Образно говоря, они, как и артист, рисуют каждый день.
Если у вас есть привычка оттачивать свое мастерство и становиться лучше каждый день, то эти небольшие усовершенствования, сложившись в систему знаний и опыта, со временем приведут к колоссальным успехам.
Учитывая тот факт, что область разработки программного обеспечения непрерывно изменяется и развивается, то ваше умение каждое десятилетие или около того учить новый язык или знакомиться с новой оболочкой\платформой позволит вам иметь больше возможностей для трудоустройства и работы.
Будет плохим советом сказать сейчас, что определенный язык программирования, навык, оболочка или платформа является ключом к успеху. Так, если вы сегодня начнете изучать веб-контент, а вскоре все перейдет в виртуальную реальность, то вы окажетесь не в лучшем положении, так как сделали ставку не на то число.
Я не ставлю на какую-то технологию или умение, которые помогут мне остаться на плаву. Я ставлю на систему.
Моя система – рисовать каждый день и улучшать свои навыки. Иногда я изучаю новый язык\оболочку\платформу. Иногда это что-то связанное с дизайном, менеджментом, лидерскими качествами, маркетингом и другими понятиями. Все это позволяет мне быть высоко трудоспособным и высокооплачиваемым в течение долгого времени.
Непрерывное самосовершенствование и изучение нового является реальным навыком, которым следует овладеть. Определенная технология или умение – всего лишь детали...
Педрам Кияни, работал инженером в компании Google и Facebook. Сейчас работает в Uber.
Если вам интересно, какие навыки в следующие 5-10 лет будут необходимы универсальному инженеру, то эти навыки будут очень похожи на те, которые были необходимы в последние 5-10 лет.
Универсальные навыки
- Четкое понимание основ информатики:
- Базы данных
- Сетевое оборудование
- Компиляторы
- Структуры данных
- Алгоритмы
- Дизайн операционных систем
- Способности к анализу
- Возможность разложить большие задачи на более мелкие
- Способность расставить приоритеты и составить последовательность задач, требующих выполнения
- Навык работы в команде (значимая работа выполняется в блоке команд)
Если вы хотите соответствовать требованиям, которые, как вы считаете, существуют в отрасли компьютерных технологий, тогда сфокусируйтесь на машинном обучении, разработке мобильных приложений или распределенных системах (IoT).
Касательно машинного обучения есть один нюанс. Для множества людей эта область видится крайне интересной и привлекательной (коей она и является), но в действительности большая доля практического применения машинного обучения основывается на серьезном проектировании системы, ориентированной на эффективное использование памяти, функции Ввод-Вывод (IO), а также на извлечение функций, которые отсутствуют на совершающей классификацию машине. Большинство основных учебных курсов сосредоточены на базовых классификаторах, но на самом деле магия заключается в том, насколько они применимы к реальным проблемам в мире.
Джон Миллер, 25 работы в таких компаниях, как Microsoft, CMU, Amazon, Google, Oracle, JPRC, ученая степень по компьютерным системам.
Я все еще жду, что в мире программирования произойдет революция. Я жду уже 30 лет и уверен, что она может произойти в любой момент, может произойти даже в ближайшие 5-10 лет!
Если не брать во внимание этот факт, то вот список того, на чем программистам и дизайнерам, по моему мнению, следует сосредоточиться.
- Языки высокого уровня. Такие, как Java или C++. Советую вам их освоить, они уже в течение некоторого времени существуют на рынке и точно не собираются его покидать. Также полезен Python. Кроме того, существует еще несколько очень крутых, но не столь широко распространенных языков программирования, но единого мнения по их поводу все же нет.
- Научитесь работать с большими объемами данных. Не все способны на такую работу, но именно она приносит большие деньги. Кроме того, это умение несомненно поможет в бизнесе, в работе с карманным персональным компьютером и человеко-машинным интерфейсом. Через некоторое время станут распространены информаторы искусственного интеллекта – программное обеспечение, которое запоминает ваши предпочтения и ищет вещи так, как это делали бы вы. Несомненно, что в этом будут задействованы большие объемы информации, ведь нужно будет обрабатывать данные для понимания того, что нравится и что может понравиться человеку.
- Облачные технологии. С ними однозначно стоит ознакомиться. Воспримите их как прекрасный способ легко и быстро управлять своей деятельностью в зависимости от того, сколько у вас информации/клиентов/времени. Научитесь работать с ними, ну или хотя бы с AWS и, пожалуй, Azure. Ну и, конечно же, с теми вещами, которые мы с моей командой выпустим в Oracle.
- Touch и другие non-qwerty интерфейсы. Вам не обязательно знать механизм распознавания касания или голосового управления. Вместо этого попытайтесь по возможности включить эти и похожие технологии в те устройства, над которыми вы работаете.
- Создание универсального экрана. Компания Microsoft работает над объединением своей операционной системы, начиная от самых маленьких и заканчивая самыми сложными устройствами. И я считаю эту идею просто гениальной! Поэтому я бы посоветовал ознакомиться с технологиями, позволяющими объединить самые различные устройства.
- Правила, касающиеся мобильных товаров. Мобильный телефон – это то устройство, которое всегда с нами. Так, сматрфонов и планшетов уже намного больше, нежели компьютеров, ноутбуков и нетбуков, и я считаю, что та тенденция продолжит развиваться. То время, которое вы потратите на изучение приложений для мобильных устройств, точно не пройдет впустую.
- Веб-технологии. Хоть веб-технологии и выглядят яркой вспышкой, озарившей небо и готовой вот-вот исчезнуть, но я не думаю, это произойдет. HTML5 и веб-протоколы могут стать разумными инвестициями для тех, кто сможет извлечь из этого выгоду.
Заметьте, я ничего не сказал о попытках стать математическим гением или экспертом распределенных систем. Конечно, такие способности всегда будут в цене, но в действительности небольшая группа людей сможет решить существующие в этих областях проблемы, а также сможет найти разумный компромисс между мощностью проекта и удобством использования.
Даль Винтерс, ученый в области геопространственных данных
Для того, чтобы не только выживать, но и процветать в своей профессиональной области, программисту нужен не какой-то определенный набор инструментов и технологий, а техника их применения.
- Многопоточность нужна не только машинам. Разделите проект между несколькими ядрами (то есть, между несколькими людьми) и вы получите результат намного быстрее, нежели вы бы работали над ним в одиночку.
- Оперативная коммуникация имеет важное значение между всеми, кто работает над проектом. Вы же не хотите, чтобы ваш проект «завис» по причине недопонимания между несколькими сторонами.
- Избегайте чрезмерного ускорения темпов работы. Столкнувшись с неприятной ошибкой, встаньте из-за компьютера и сделайте перерыв. Научите своих коллег делать то же самое.
И, наконец, избегайте перенапряжения, наш организм это не любит. Высыпайтесь. Это, наверное, один из самых главных навыков программиста на ближайшие 5-10 лет.
Бонусный навык №1: создавайте и придумывайте
Самый верный путь к процветанию в сфере программирования – это создать такое программное обеспечение, которое смогло бы решить серьезную проблему или удовлетворить важные потребности. Представьте себе, что решение проблемы висит где-то высоко на ниточке над вами, и все, что вам нужно сделать, это подставить оптимальную комбинацию лестниц и стульев, чтобы достигнуть этого самого решения. Точно также вам необходимо проанализировать, использование каких инструментов, технологий и членов вашей команды приведет вас к решению задачи. Научитесь создавать цепочку последовательных шагов, которые приведут вас к необходимой цели, и вы станете незаменимым.
Бонусный навык №2: Справляйтесь с объемами быстро
Создавать и творить можно вечно, но всегда есть крайние сроки, с которыми нужно считаться. Объем данных, нуждающихся в обработке, будет продолжать расти, и компании ожидают, что с помощью вашего кода они смогут обрабатывать эти данные быстрее, нежели их конкуренты. Естественно, необходимо стремиться к написанию наиболее эффективного кода. Кроме того, дополнительное изучение методов и инструментов обработки данных несомненно окажется полезным навыком, вне зависимости от того, с каким объемом данных вы работали до сих пор.
Тим Менш, консультирующий разработчик программного обеспечения
Другие пользователи упоминали так называемые «социальные навыки». Несомненно, они важны; так, почти с любой моей предыдущей работой я мог обратиться за помощью к какому-либо моему другу или приятелю, с которым я познакомился на мероприятии по налаживанию связей.
Непрерывное изучение нового - тоже важная составляющая. Найдите наиболее удобный для вас формат обучения и не прекращайте этим заниматься. Знакомьтесь с новыми технологиями и умейте их применять в нужный момент. При этом учитесь понимать, когда этого не следует делать; не стоит использовать свежую технологию только лишь потому, что это новинка, используйте ее только тогда, когда она наилучшим образом подходит по ситуации. Кроме того, будьте осторожны с использованием более чем одной «новой» технологии в одном и том же проекте. Проект может продолжить существовать, но раз за разом будет генерировать ошибки только лишь по причине использованной экспериментальной технологии. В том случае, если окажется, что одна новинка работает не так, как было обещано, вы сможете поменять ее, но два или более неработающих компонента обрекут проект на провал.
Какие технологии выглядят перспективными на ближайшие пять лет? (я считаю, что 10 лет – это слишком долгий срок для точных прогнозов, поэтому тут можно только попытаться угадать).
- Программное обеспечение для мобильных телефонов. Особенно кроссплатформенная среда программирования. Я предполагаю, что уже через 5 лет кодирование в собственной системе команд не будет считаться оптимальной практикой.
- Машинное обучение. В этой области будут новые достижения, которые будут применяться к новым областям, но те, кто хорошо знают свою работу в этой сфере, будут всегда обеспечены рабочими местами.
- Безопасность. Сеть, сервер, клиент – так много компаний сталкиваются с проблемой утечки данных, что, вероятно, эксперты в сфере безопасности будут еще долго востребованы. Хотя, это та работа, где трудно все делать без ошибок.
- Node.js выглядит неплохо в пятилетней перспективе, но для более крупных проектов я бы посоветовал овладеть ES2016 и TypeScript (edit: изначально хотел назвать flow.js, но с ним оказалось слишком много проблем, поэтому теперь я бы его не рекомендовал). JavaScript с его новыми расширениями выглядит многообещающе.
- The Go Programming Language выглядит как хороший вариант для микросерверов. Вообще, я считаю, что все движется к более широкому использованию такого формата. Огромные монолитные сервера намного труднее поддерживать, обслуживать и переносить, нежели микросервера.
- Виртуальная реальность и дополненная реальность скорее всего станут доступными потребителям уже в этом году, и, вероятно, откроется масса возможностей в этой области. Есть шанс, что в ближайшие пять лет будут появляться т.н. «приложения-убийцы виртуальной/дополненной реальности» и любой, кто обладает знаниями и навыками в этой области, сможет ими воспользоваться.
- Приложения, связанные с машинным обучением, а также личные виртуальные помощники могут стать новой отраслью промышленности. Google Now, Siri, Alexa и Cortana – это всего лишь детские игрушки по сравнению с тем, что может быть создано. Представьте, что почти каждое приложение будет оснащено речевым смарт-интерфейсом, или же спортивного тренера, использующего видеораспознавание для того, чтобы помочь вам улучшить свои результаты в игре в теннис или гольф.
Я буду изучать некоторые из этих областей, потому что они все мне интересны. Но, скорее всего, через год мой список таких программ будет выглядеть совсем по-другому.
Дима Королев
Развивающийся класс будет направлен на противодействие хакерам и постепенно разрастется и переключит свое внимание с расширения пользовательской базы, сбора и хранения на модернизацию и LTV.
Умение писать коды не является обязательным навыком в 2016. Также как и умение увидеть и объяснить, какая форма больше подойдет продукту. Также как и опыт выбора между А и Б.
Вместо того, чтобы фокусироваться на форме, нужно приобрести жизненно необходимый навык - неустанно искать ту суть, которую продукт должен нести в себе. После того, как эту суть найдена и усвоена, жизненно важным навыком становится неустанное проталкивание продукта в правильном направлении, невзирая ни на что.
Говоря в общем, что касается 2016 и по крайней мере следующего десятилетия, упомянутое выше на сто процентов является процессом применения человеческого разума в лучшем его виде в области управления данными.
Комментарии
>Справляйтесь в объемами быстро
>Создавать и творить можно вечно, но всегда есть крайние сроки, которые с которыми нужно считаться.
Соглашусь с тем, что умение думать головой и делать вещи быстро и качественно всегда будут в тренде:) Но для этого не нужно было писать так много текста.