Простой способ успевать больше и зарабатывать лучше в геймдеве

Сейчас в мире проходит неделя компьютерных наук, в рамках которой во многих школах проходит Hour of Code. Это такие уроки, где детям рассказывают, как начать программировать и потом стать программистами. В интернете выкладывают ролики о том, как зашибись быть программистом. И это, кстати, правда – я тоже слышал, что программистом быть интересно.

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

Я сам вообще не программист, но способность автоматизировать многие задачи с помощью кода позволяет мне быть сильно эффективнее конкурентов. Там, где другие люди в похожей ситуации вынуждены заказывать обработку массива данных отдельному специалисту (и ждать результатов неделю) я могу сделать простой скрипт за полчаса и получить результат тут же.

Геймдизайнер, способный программировать на скриптовом языке, может выразить свою идею куда быстрее и понятнее с помощью кода, чем с помощью дизайн-документа на 50 страниц. Лучшие питчи – это моды для чужих игр или наброски в редакторе игр, которые можно попробовать тут же. Сид Мейер никогда не пишет диздоков, он пишет код.

Вы все слышали истории о том, что нужно потратить 10 тысяч часов на то, чтобы стать мастером своего дела. Это правило конечно не универсальное, но смысл в том, что да – экспертом за месяц не стать. А вот стать сильно лучше, чем новичок можно за 100 часов практики – и это совершенно достижимо даже в программировании, даже для тех, кто программировать никогда не пробовал.

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

Такой специалист будет лучше программиста, который кроме того изучил аналитику, маркетинг, геймдизайн или надувать щеки. Потому, что в этих профессиях не нужно высокое качество кода, а нужны профессиональные знания по основной специальности, подкрепленные возможностью работать быстро. Код в таком случае – для автоматизации и прототипирования, а не чтобы новый idTech писать. Новый idTech пусть пишут те самые эксперты с 10 тысячами часов. Ваша задача – делать свою основную работу эффективнее.

В общем, не откладывайте программирование. Если вы аналитик или маркетолог, скачайте сегодня вечером Anaconda и возьмите какую-нибудь книжку по Python. Если вы геймдизайнер – поиграйте со скриптовым языком для какой-нибудь популярной игры в вашем любимом жанре (Papyrus для Skyrim, NWScript для Neverwinter Nights, Galaxy для Starcraft II и так далее) – они обычно сильно проще полноценных языков и имеют кучу примеров от создателей модов.

Вам не нужно учить серьезный язык вроде C++ или даже C#, потому что они для программистов. Python, PHP, lua и некоторые другие интерпретируемые языки прощают множество ошибок и позволяют писать довольно разгильдяйский код. Не самый лучший выбор для программистов, но отличный для всех остальных, кто программирует для решения своих задач, а не для сотен тысяч благодарных пользователей. К тому же изучить такой язык куда проще.

Кстати, меня часто спрашивают, на чем написан Steam Spy и я обычно отвечаю, что PHP + JavaScript. Но на самом деле он написан на SQL (язык запросов к базам данных), а крайне примитивный код в PHP+JS там только чтобы рисовать таблички и графики, причем тот же JS целиком состоит из вызовов чужих библиотек. Я не открываю код в общий доступ, потому что программисты его засмеют – и правильно сделают. Но это не так важно. Важно, что я его написал за один вечер и он работает.

Да, вы не напишете новый движок, как и велосипедист-энтузиаст не выиграет Tour de France. Но умение написать несколько строк кода вам очень пригодится в жизни.

  • И сразу вопрос от маркетолога, который слушает и перешёл по ссылкам. Глупый вопрос. Python 2.7 или 3.5?

  • Я за 3.5, он чуть более логичный и чуть менее шаляй-валяй. Но принципиальной разницы там нет, оба хороши.

  • weitergeo

    2.7

  • Sector

    От себя для геймдиза будет довольно просто, но безмерно полезно освоить unity. Возможность накидать прототип – бесценна.

  • Eli Ostashko

    Вообще всё равно. Я учил 2, потому что курс на курсере был 2. Потом почитал 3 и всё ок.

  • ArtK

    Начал учить Pyphon после “мультика”, который упоминался в посте. Сразу обнаружил кучу применений в сфере недвижимости и оценке имущества(чем собственно занимаюсь). Мне конечно как гуманитарию трудновато, но жутко интересно. Спасибо Сергею за твит с роликом.

  • Dencheg

    Не, ну предыдущая мажорная версия нужна именно для тех случаев, когда нужна именно предыдущая мажорная версия 🙂
    Если просто сходу смотреть-увлекаться-развлекаться, берите 3.x, он уже 100 лет как stable

  • Алексей ///

    >>Вам не нужно учить серьезный язык вроде C#

    А геймдизайнеру, чтобы прототипировать на Unity?

  • 2.7, если в планах работать с какой-то существующей кодовой базой (например, в наследство досталась пачка скриптов).
    В остальных случаях 3.5

  • Там UnityScript есть

  • Рекомендовать Марка Лутца для тех, кто не собирается писать какой-то серьезный код для продакшена — это уже перебор. Это все-таки довольно толстая и скучная книга для любителей.

  • Однозначно 3.5, у вас же нет зависимости от каких-то архаичных библиотек или серверов. И если книгатуториал рассчитана на 2.7, а у вас что-то не работает в 3.5, то решение гуглится за пару секунд.

  • Проще вообще взять что-то типа playmakerblueprints.
    Но даже в таком случае понимать как работают программы (переменные, ветвления, циклы) необходимо.

  • Конечно. Просто скриптовые языки прощают больше ошибок 🙂

  • Я подумал, что в списке пригодилась бы одна фундаментальная книга. Это как раз тот случай 🙂

  • TogusaRusso

    У меня создалось впечатление, что стоит учить javascript, благо теперь на нем можно писать и серверные приложения и интерактивные веб страницы. А после этого браться за Java потому что это ключ к Android и просто мощный компилируемый язык.

  • Можно и JavaScript, он тоже скриптовый и тоже многое прощает.

  • TogusaRusso

    Дело не в том, что он прощает. Дело в том, что можно написать сайт на RoR bkb Web.py и обойтись практически без JS, но это будут костыли за каждым углом. А JS позволит писать реально интерактивные странички.

  • mrBrerr

    Уговорили, попробую.

  • Это если тебе надо писать интерактивные веб-странички. А если тебе надо данные по опроснику категоризировать быстренько, то лучше Python. А если прототипчик убийцы Доты набросать, то Galaxy.

  • Captain Person

    Я бы для Питона из тех что пробовал рекомендовал бы книгу Python Programming for the Absolute Beginner и продолжение, More Python Programming for the Absolute Beginner.

  • MadFanBoy

    Я бы вполне добавил и обратное, что если вы программист, то неплохо бы понимать в UX/UI, дизайне интерфейса, проектировании баз данных, 3d-моделировании и бла-бла-бла. Так как все что напроектируют дизайнеры и намоделируют аналитики тебе потом кодить придется и все их косяки то у тебя в процессе реализации и выплывут, а ты крайним будешь, потому как не смог закодить реализацию такой то офигительной идеи. Это я не только про геймдев …

  • Vlad Arakelov

    Вот сколько я ни начинал писать на js, так и не привык к нему. Потому что из-за отсутствия нормальной типизации, в 90% случаев вместо того чтобы нажать ctrl+space и узнать что я с этим объектом могу делать – приходится отдельно открывать документацию.

  • Eugene Bahmatsky

    А у нас геймдизы в выделенных классах логику и настройки на шарпах херачат – и норм)

  • LXj

    Для маркетолога разница не принципиальная. Но лучше уж сразу учить более перспективный 3.5+

    Это мы, программисты, мучаемся с легаси-проектами…

  • Alex Zhdankin

    Он мало чем отличается от C#. Слегка синтаксисом, но принципиально ничем. Если это вдруг первый изучаемый язык, то из двух логичнее выбрать C# ― и материалов больше и возможности применения шире.

  • madsaylor

    Это не важно, скорее всего вы не столкнетесь с разницей между ними. А так 3.5

  • Kinrany

    Пользуясь случаем, https://learnxinyminutes.com/

  • #AYYTEAMLMAO

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

  • Imp

    Завтра ищешь в интернете книжку Dive into python. Пох** если ничего не поймешь. Затем идешь на python.org и изучаешь стандартную библиотеку от корки до корки. Потом зубришь, именно, с*ка, вызубриваешь конвенцию по написанию питоньего кода – PEP8, чтобы от зубов отскакивало. Когда напишешь свою первую имиджборду, по пути изучив верстку на html+css, скачиваешь и изучаешь любой питоний асинхронный вебсервер, рекомендую Tornado или Gevent. Как переделаешь имиджборду, чтобы выдавала по крайней мере 5 тысяч запросов в секунду, можешь идти дальше – тебя ждет увлекательный мир хайлоада. Apache Hadoop, сверхбыстрые асинхронные key-value хранилища, MapReduce. Отсос хиккующих выб**дков / просто неудачников типа рейфага или сисярп/джава-х**сосов, которые сосут х** по жизни не заставит себя ждать и уже через пол года ты будешь получать такие суммы, что любая баба будет течь при одном упоминании твоей зарплаты.

  • TogusaRusso

    Это ты приводишь Job Specific задачи. Понятно, что для статистики Питон лучше, благо ставишь ты его сразу с пакетом статистических библиотек.

    Если же исходить из фразы:

    >>Но умение написать несколько строк кода вам очень пригодится в жизни.

    То скорее ты столкнешься с JS. Я сейчас пишу этот текст в интерпретаторе JS, Ctrl+Shift+J открывает консоль, а с помощью TamperMonkey можно улучшать функциональность сайтов, которые посещаешь каждый день, например так https://github.com/TogusaRusso/MyShowsKickass/blob/master/MyShowsKickass

  • Dmitry Konstantinov

    Е-е-е! Вот поэтому я и записался на Cursera на Python for Everybody!

  • Pavel Kulikov

    Очень важная тема. И здорово, что все это чувствуют. Сегодня как раз с коллегой обсуждали, что программирование – это как математика: оно должно быть с тобой сейчас всю жизнь, начиная со школы. Отличный пример вы же ретвитили про угольщиков, которых переучивают в программисты.

    Я бы еще отдельно сказал про подкатегорию обработки данных, так как сейчас работаю с Google BigQuery. Чем больше входишь в этот мир, тем сильнее осознаешь, сколько мы данных имеем уже и сколько не успеваем/не можем обрабатывать. Взять хотя бы GDELT (http://www.gdeltproject.org/). Пока все только простенькие хитмапы рисуют, а ведь какой простор для машинного обучения. Но для этого нам (человечеству) нужно больше специалистов.

    Отдельно про Hour of Code. Когда узнал про инициативу, то решил провести у себя в команде. Но так как блок-схемы двигать во взрослом возрасте уже не так интересно, то нашел вот такое: https://www.codeavengers.com/javascript/100#1.1 . Тут хотя бы уже прямо код надо копировать и изменять.

  • Я Code Avengers на сыне тестирую 🙂 Будет результат – напишу 🙂

  • TogusaRusso

    Rice University за пару месяцев (без напряга) учат писать такое
    http://www.codeskulptor.org/#user40_LCxTGljiu1_0.py

    А потом у них неплохие дополнительные курсы по алгоритмам.
    https://ru.coursera.org/course/interactivepython1
    https://ru.coursera.org/rice

  • disqus_7MZrePqmhY

    “Он мало чем отличается от C#”
    ЮнитиСкрипт строго-типизированный ООП язык?

  • Igor

    3.5 для старта проще. В

  • Владимир

    Согласен на 200%. Сам маркетолог, кое-как осваивающий html+css/js/sql с помощью гугла и ковыряния в коде сайта компании.

  • Igor

    Вы умеете вдохновлять 😀

  • серьезный язык вроде C++ или даже C#

    Но почему C# — это “даже”, он ведь проще С++?

  • TON14

    От самого Unity с видео и примера на C#, JS ,BOO
    Начиная с того что такое переменная.
    http://unity3d.com/ru/learn/tutorials/topics/scripting

  • сисярп/джава-х**сосов, которые сосут х** по жизни

  • TON14

    Blueprints playmaker
    Ну развечто чтоб избавить от страха перед программированием.
    Потомучто на опредленном этапе проще просмотреть 60 строк кода с комментариями.
    Чем понять что делают 20 цветных блоков с 40 цветными стрелочками…

    ЗЫ: А еще можно усадить играть в human resource machine и смотреть как мозг взрывается =)

  • TON14

    Дайте сыну поиграть в human resource machine =)

    http://store.steampowered.com/app/375820/

  • TON14

    “Он мало чем отличается от C#” для новичка..
    Первые 500 часов разница для новичка будет только в синтаксисе =)

  • Sergey Melnikov

    JavaScript – это чудесный язык. Он может допустить где-то полную ерунду, но на другой так сломается, что перестанет работать напрочь, там практически каждый, даже самый безобидный на вид вызов должен быть в try-catch. А ещё он умеет асинхронно (привет, “гонки”), так что лучше с него не начинать.
    Самый дружелюбный язык из моей практики – ColdFusion. Он реально позволяет писать тремя стилями и почти всё переваривает. Но для казуального программиста это оверкилл – официальный сервер монструозен, а неофициальные имеют неканоничные нюансы.

  • Sergey Melnikov

    Это суровая правда 🙁 Хотя прямая обязанность у меня – серверная часть, часто приходится заниматься и анимацией на клиентских страничках, и даже рисованием иконок. Опять же, осаживать разбуянившуюся фантазию дизайнера – вообще прямая обязанность.

  • Harmanz

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

  • Потому и стоит вторым 🙂

  • > То скорее ты столкнешься с JS.

    Если аналитик – нет, скорее столкнешься с Python 🙂 Если гейм-дизайнер то опять же скорее всего нет.

    JS крутой, просто не всем он нужен.

  • TogusaRusso

    А почему Ruby так топит? Только из за рельс?

  • Я писал на ColdFusion (очень давно правда), не повторяйте моих ошибок 🙂 Он же ебанутый, но не по-хорошему, как Python, а по-плохому.

  • Sergey Melnikov

    Я не могу повторять ошибок, т.к. уже несколько лет работал, причём как новые проекты, так и дичайший легаси-код в недрах канадского министерства природных ресурсов. Или около того. Освоение заняло недели две. Нынешний CFML, особенно если запастись вменяемым framework – просто отдых. После “колды” возврат к PHP – как инвалидность.

  • Ну у меня CF был во времена голодного фриланса в конце девяностых и там был легаси, да.

  • Sergey Melnikov

    Могу представить и посочувствовать, но CF уже немножко совсем другой язык и в целом гораздо более развитая платформа. Только из-за политики перехватившей её Adobe крайне слабо распространённая. Они с завидным упорством который год отказываются выпустить сервер под Linux.
    Однако, что занятно, тот код из 90-х наверняка запустится на последней версии сервера – и это одна из причин, почему ColdFusion живёт в консервативном секторе корпораций и госучреждений (где клиенты ещё умеют удивлять заданиями вроде: “нужно, чтобы работало так же и в 6-м Эксплорере, а то у нас админ запрещает апдейтить” – и это не шутка, а реальное задание от какой-то серьёзной компании). Две стороны медали: с одной стороны легаси есть и очень много, с другой – легаси всё же работает и очень много.

  • Думаю, да

  • letaushijmakaronijmonstr
  • Andrii Vintsevych

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

  • dog_funtom

    Ох уж эти веб-разработчики, все им мерещится, что веб/JS/HTML везде, что разработка = веб-разработка (а исключения = статистическая погрешность), что скоро вообще все вберет в себя веб, и задачей операционки будет только запустить браузер, а там буквально все и будет происходить, от работы до игр. Как геймдев-программист (до этого десктопный и мобильный программист), я конкретно устал читать такого рода заявления и фейспалмить.

  • Roman Я

    Слишком толсто.

  • TogusaRusso

    Вот, я извиняюсь, вы чем читали то место, где я написал, что надо хотя бы и Java учить, потому что Android. Я не web-программист и был бы рад, если бы браузеры умерли как класс, но на данном этапе комменты вы пишете в браузере, языки многие учат в браузере, для каждого языка норовят создать свою веб-песочницу, многие утилиты предпочитают не использовать гуй, а подымать веб-сервер и управляться через браузер, JS ПРОСТО БОЛЕЕ ДОСТУПЕН.

  • Сергей

    Привет коллеге-оценщику)

  • Powershell забыл 😉 Для автоматизации взаимодействия с windows-системами незаменим, имхо ;))

  • rokorok

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

  • Да тут дело привычки, имхо. Ну и не все можно в батниках реализовать… к примеру, с active directory через PSH взаимодействовать вообще одно удовольствие… ну и никто не запрещает в повершельных скриптах использовать привычные по батникам команды))

  • Антон

    Я вот сейчас мечусь между 3D анимацией( по которой нашел очень хороший вводный курс) и программированием, и сам недавно начал понимать, что второе в любом случае никогда лишним не будет, но вот что в итоге выйдет на первый план не пойму. Спасибо за советы)

  • rokorok

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

  • Да, ситуация знакомая ) …но, кому действительно приспичит, переходят ) Как говорил мой бывший начальник, “я слишком ленивый, поэтому мне проще написать скрипт” :DDDD

  • Мы же говорим о прототипировании.

  • One

    Начинать вообще проще с бейсика (я серьезно). А когда дело до серьезного дойдет – тут уже язык особо не важен, принцип один и тот же везде.
    Мне по геймдев надобности много пришлось писать на Python, C++, C#, JAVA, PHP, и россыпь скриптовых языков вроде LUA или там Squirrel.

  • dog_funtom

    И правда, не по адресу получилось, сорри. Тем не менее, JS-программисты всячески навязывают всем свои JS и облака, но популярно — не значит лучше. Раз речь идет о состоявшихся специалистах, то пусть сразу берутся за свой отраслевой стандарт, быстрее получится применить, и энтузиазма учить будет больше на реально полезных в работе сценариях, а не ради гипотетической потенциальной возможности писать странички и сервера или ради незначительной оптимизации интернет-серфинга.

  • Timothej Morozov

    Можно еще глянуть на R – становится всё более популярным, даже SQL Server решил включить его использование в MSSQL 2016.
    + он берёт часть синтаксиса линуксового и позволяет легко работать с файловой системой.
    К тому же у R есть интерактивные курсы прямо в RStudio (не говоря уж о Coursera и прочих MOOC), либо даже не устанавливая ничего, например тут: http://tryr.codeschool.com/ – там обучат и основам булевой логики и прочим вещам, общеприменимым практически к любым языкам (разве что R ведёт своё исчисление с 1-го элемента, а не нулевого).

  • Imp

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

  • Все-таки С# и C++ совершенно несправедливо рядом поставили, между ними пропасть и C# гораздо ближе к скриптовым языкам по дружелюбию для новичков. Для новичка разница между PHP/JavaScript и C# будет только в необходимости прописывать типы переменных. С другой стороны строгая типизация позволяет избежать ошибок, которые могут появляться в самых простых скриптах из десятка строчек. А при наличии любой бесплатной IDE резко упрощает их написание.

    А вот ручное управление памятью требует хорошего понимания происходящего.

  • Cadmus

    Еще автоматизация разных видов. Скрипты для билдсерверов и вот это все.

  • Dencheg

    А если в реале выгорит только хуесосить, то можно продолжать фантазировать, что это на самом деле сисярп/джава хуесосят, и в перерывах между хуесосеньем постить “путь к успеху” в обсуждашках ^_^

  • Дмитрий Ткаченко

    хочу от мануального тестирования десктопной софтины (монстр ака 1с бухгалтерия) перейти к автоматизированному. софт на с#, зарывать в него не охота. есть советы?

  • Alex Zhdankin

    Он чуть менее строго типизированный, чем C#. Допускает больше неявных преобразований типов. Но, например, присвоить числовой переменной строку “123” не даст. И наоборот, строковой переменной присвоить числовое значение тоже не даст без явного вызова метода ToString().

    Я бы UnityScipt поставил рядом с Visual Basic. Они оба почти как C# (абсолютно те же принципы, одинаковая система типов, одинаковая стандартная библиотека классов, одинаковая производительность), но допускают чуть больше неявных преобразований и несколько отличаются синтаксисом (где-то более лаконичным, где-то менее).

    И да, UnityScript ― это ООП-язык в той же степени, что и C#. Единственная разница в этом плане ― в UnityScript все методы виртуальные.

  • Alex Zhdankin

    Там и дальнейшая разница останется только в синтаксисе. Можно конечно вспомнить, что в UnityScript нет некоторых удобных конструкций из C# типа using или lock, что нет штатной поддержки LINQ; но гораздо большее значение имеют, имхо, совсем другие вещи:

    1. Наличие для C# нормальной удобной IDE (Visual Studio + Resharper) против MonoDevelop для UnityScript, у которого постоянно отваливается даже автодополнение.
    2. Мегатонны документации по C#. По UnityScript вообще нет ни спецификации, ни какого-либо официального руководства/описания. Типа, вот вам язык с парой примеров ― пользуйтесь. Инфу ищите сами на форумах и разных wiki.
    3. Возможность использовать C# за пределами Unity.

    Т.е. разница не столько в языках, сколько в инфраструктуре вокруг них.

  • Alex Zhdankin

    Сейчас вспомнил, что C# поддерживает позднее связывание (dynamic), и даже засомневался в выборе, какой из этих языков более строго типизированный, а какой менее. Впрочем, в Unity dynamic не работает, но это так просто, к слову.

  • Миша

    Странно, где-то читал что steamspy на рельсах написан.

  • Я про SteamSpy тоже много интересного читал в Интернете.

  • ViSher

    А где же Java?(

  • Вы эту пасту впервые чтоли видите? Еще и картинки на полном серьезе постите, лул.

  • >Вы эту пасту впервые чтоли видите?
    Ага. Как-то так получилось, не слежу за новинками в этой области.

  • AntoxaGray

    Я не программист, но примитивные знания jQuery порой помогают мне, когда нужно переделать кривой дизайн или логику на каком-либо сайте, который я часто посещяю с помощью Greasemonkey. Там, где обычный css-плагин не справится.

    Ну и при создании текстур в UE4 и Substance Designer, некие знания математики и логическое мышление очень помогает.

    В том же After Effects простенький скрипт для автоматизации эффектов могу написать, и это экономит кучу времени, не нужно создавать много кейфреймов и вручную всё считать.

  • AntoxaGray

    Я вообще удивляюсь, как мало людей знают английский. Вроде в школе он идет как один из основных предметов.
    Но 90% моих знакомых язык не знают. Фраза «а на русском есть?» меня уже начинает напрягать.

  • AntoxaGray

    Или Unreal Engine 4.

  • AntoxaGray

    Если такого происходит, то в команде отсутствует грамотный директор. Который и в программировании, и в дизайне понимает.

  • #AYYTEAMLMAO

    1 его дерьмово преподают
    2 люди дерьмовые учащиеся
    3 они активно его не используют отчего не просто не учат но и забывают что учили

    вобщем 95% как всегда