Я и код: как стать востребованным программистом

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

    Проекты краснодарской студии Plarium значительно отличаются друг от друга по используемому стеку технологий. Нам приходится решать разноплановые задачи и задействовать большое количество профессионалов. Программисты — важная часть команды Plarium Krasnodar. Всего над созданием кода в проектах студии трудятся свыше 50 наших коллег.

    Мы проанализировали их опыт и готовы ответить на поступившие вопросы.



    Программистом может быть каждый


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

    Значимость математической базы зависит от того, чем конкретно вы будете заниматься в будущем. Так, в Data Science глубокие познания в математике — обязательная компетенция программиста. Чтобы решать большинство задач в этой сфере, приходится создавать сложные модели. Конечно, если думать последовательно и логически, то написать подходящую формулу получится и без докторской степени по математике. Однако соответствующая теоретическая подготовка сэкономит вам уйму времени и сил.

    Английский язык сейчас — негласный стандарт индустрии. На русском существует куда меньше качественных туториалов. Документация по актуальным технологиям, новости, семинары, лекции авторитетных спикеров, за редким исключением, публикуются на английском. Локализованных версий может не существовать вовсе.



    Обучение никогда не заканчивается


    IT-отрасль развивается непрерывно. Каждые несколько лет разрабатываются новые языки программирования. Библиотеки, наборы инструментов и эффективные приемы кодинга появляются еще чаще. По этой причине профильное образование и достижения в учебе — не панацея, ведь на самом деле обучение программированию не заканчивается никогда. Университеты и колледжи скорее формируют нужные шаблоны мышления. Знания, полученные в стенах альма-матер, редко применяются на практике, в чем убеждаются многие из наших коллег. По-настоящему важную информацию приходится добывать самостоятельно.

    В обучении языкам программирования нельзя делать больших перерывов. Желательно ежедневно уделять этому занятию по несколько часов. А попутно — развивать навыки тайм-менеджмента. Хотя эта компетенция не зависит от будущей специализации, чем быстрее вы научитесь правильно распоряжаться своим временем, тем успешнее пойдет учеба и дальнейшая работа. Важная часть образования для программиста — общение с коллегами. В таких беседах можно узнать о новых технологиях и профессиональных секретах.

    Интернет — лучший источник знаний


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

    Много полезной информации есть на YouTube: туториалы разного уровня сложности, записи лекций, семинаров, презентаций, наглядные демонстрации возможностей тех или иных технологий. Не стоит игнорировать трансляции лайвкодинга (проводятся на Twitch и YouTube). На них можно в прямом эфире увидеть, как работают состоявшиеся специалисты, а если что-то покажется непонятным — сразу же задать вопрос стримеру. Подсмотренные на трансляции приемы и подходы к работе, вплоть до расположения окон и используемых сочетаний клавиш, сэкономят вам много времени и уберегут от досадных ошибок.

    В процессе обучения крайне важно анализировать уже работающий код. Здесь пригодится GitHub и ему подобные сервисы. Книги по программированию не могут предоставить тот же объем качественных и актуальных примеров.

    В своей повседневной работе специалисты Plarium Krasnodar пользуются и массой других сайтов. Мы отобрали самые интересные и подготовили подборку ресурсов для программистов.

    Если вы планируете посвятить себя C# и веб-разработке, полезными источниками информации станут:

    https://blogs.msdn.microsoft.com/dotnet
    https://metanit.com
    https://learn.javascript.ru/

    Если вас интересует изучение движка Unity, следите за обновлениями на следующих ресурсах:

    https://connect.unity.com
    https://blogs.unity3d.com
    https://jacksondunstan.com

    Если хотите погрузиться в индустрию геймдева, посещайте эти сайты:

    https://dtf.ru
    https://gamasutra.com
    https://www.alanzucconi.com
    https://app2top.ru
    https://simonschreibt.de
    https://engineering.riotgames.com
    https://proglib.io/p/gamedev-blogs



    Программист — универсальный специалист


    Программист в IT — универсальный солдат. Необязательно фокусироваться на определенной сфере деятельности: несмотря на разный стек технологий, специалист без особых проблем может перейти из геймдева в Enterprise и наоборот. Это вовсе не отменяет того, что нужно понимать особенности работы. К примеру, программисту в геймдеве все-таки стоит разбираться в игровой индустрии и самому быть геймером.

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

    Типичные ошибки новичков


    Мы проанализировали типичные ошибки начинающих программистов и на их основе сформулировали несколько советов. Не наступайте на чужие грабли!

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

    Не стоит изобретать велосипед. Почти для любой задачи можно найти подходящий фрагмент работающего кода. Если поиски безрезультатны, скорее всего, вы некорректно сформулировали запрос. Зачастую программистам свойственна некоторая самоуверенность. Даже если поиски увенчались успехом, может показаться, что самописный код — лучше готового решения. Со временем вы начнете понимать, когда именно оправданы усилия, потраченные на написание системы с нуля. До этого целесообразнее пользоваться чужими наработками.

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

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

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

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

    Мы надеемся, что статья оказалась полезной тем, кто делает первые шаги в программировании. А если вы уже стали гуру кода, делитесь в комментариях своей историей: как учились, где набирались опыта, чем вдохновлялись, какие ошибки совершали.
    Plarium
    132.18
    Разработчик мобильных и браузерных игр
    Share post

    Comments 24

      +6
      Если вы планируете посвятить себя C# и веб-разработке, полезными источниками информации станут:
      blogs.msdn.microsoft.com/dotnet
      metanit.com
      javarush.ru
      ох уж эти маркетологи…
      всё-таки уровень бизнес-аккаунтов определяет уровень ресурса
        0
        Статья ориентирована на новичков, и мы считаем, что указанные источники информации полезны для начинающих. Если вы не согласны, дополните наш список более полезными ресурсами или поделитесь своим, пожалуйста :-). Это очень поможет целевой аудитории статьи.
          +1
          Вы не видите, что для "C# и веб-разработки" вы рекомендуете ресурс, посвященный java?
            0
            Конечно же, там должна была быть другая ссылка – эта. Перепутали. Поправили. Спасибо за внимательность!
        +2
        Программист в IT — универсальный солдат.

        То-то почти все вакансии сейчас называются «Frontend developer», «Backend developer», «Devops» и прочие специализации. Человек-отдел — признак низких бюджетов и низких запросов на качество. Для хорошей скорости и качества нужны люди с глубокой экспертизой в своей области. Менять профиль всегда можно, но придется работать на 150%, интенсивно учится и чем-то пожертвовать.
        К примеру, программисту в геймдеве все-таки стоит разбираться в игровой индустрии и самому быть геймером.

        Много раз слышал обратное от людей из игровой индустрии. Многие программисты могут вообще не играть, либо играть не в те жанры, которые разрабатывают. Чего не сказать, конечно, о гейм-дизайнере. Или у вас программист еще и гейм-дизайнер до кучи? :)
          +2
          Поверьте, у них не играют) Ну либо плюют на неудобства/глюки/баги/etc в своей же игре.
            0
            1) не надо врать — играем, еще как играем. Как не играть, если дебажишь взаимодействие игрока и аптечки (например)?
            2) но на тестовых уровнях (кхе кхе). И в тестовых позициях (т.е. все загружется из настроек, а не прохождением уровней).
            3) и увы, привыкаем к «особенностям поведения». Пример: делали как-то игрулину для ТВ (не спрашивайте), с управлением от телевизионного пульта. Сначала она просто ОК принимала, потом цифры, потом смогли влево-вправо и т.д. Все красиво, все тестеры уже по три раза прошли все уровни.
            Выходит ПМ из отпуска, пробует пройти и спрашивает «а че у меня пульт не работает ?»… оказывается — мы-то все уже привыкли, что на кнопку жать нужно по полсекунды, чтобы она сработала, а он пробовал как на обычной клавиатуре «нажал-отпустил».
              +1
              1. почему сразу врать? Если играешь в свой продукт то просто нельзя пропустить целый ворох проблем. Я сходу могу сейчас зайти в трон например и воспроизвести замечательный баг который делает совершенно неюзабельным интерфейс (ну если только в последнем патче вдруг не поправили). А чего стоит обновление UI при смене онлайн статуса членов гильдии.
              2. синтетические тесты бесполезны
              3. дак не надо привыкать к такому с самого начала)
                0
                Поверьте, у них не играют)
                (с) habr.com/company/plarium/blog/433530/#comment_19515802
                Вы уверены что можете сказать за всех игроделов? Если же вы думаете, что они не играют, то напишите что-то типа: «я уверен, что у них не играют» и т.д. А уж оборот «поверьте» — это уже НЛП какое-то.

                хорошо не привыкать, когда оно с самого начала работало хорошо, а потом кто-то что-то поломал и оно работает плохо.
                А когда оно перешло от стадии «не работало совсем, никак, вообще» к стадии «так, вроде заработало, а ну бегом фиксим визуальные баги», то это происходит само собой…
                  0
                  Вы уверены что можете сказать за всех игроделов?

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

                  Обычно я багрепорты катаю вагонами, но ру тп очевидно не заинтересована в них. С англоязычной получше, но ответы черезх пару месяцев в стиле «проблема не обнаружена» тоже не добавляют желания.
                    0
                    перечитал всю ветку заново.
                    хмхм… возможно, когда вы написали «у них», то вы имели в виду не всех геймдевелоперов, а какой-то конкретной команды\фирмы\издателя? (потому что начальный пост ветки был про "игровую индустрию") Если да — тогда я не увидел «имени героев», если нет — тогда повторюсь: «Вы уверены что можете сказать за всех игроделов?» (всех создателей тостеров)
                      0
                      Я имел ввиду плариум. За всех сказать не могу, нужно поиграть, например в близовских играх я отдыхаю и на баги натыкаюсь ну очень редко. Броузерки и мобильки я пробую сотнями в поисках интересных идей, и они там есть, но и качество, как правило, жуть.
              0
              Играют :-). Более того, некоторые подразделения даже сдают экзамен на знание проектов. Что касается неудобств/глюков/багов, то если они и появляются после обновлений, то мы стараемся своевременно их устранять, постоянно улучшая качество наших игр.
                0
                Позвольте вам не поверить. Ну например в троне:
                — Неверные всплывашки по окончанию войны орденов наблюдаю год
                Багу с расползанием списка вложений столько же. А иногда так шустро расползается, что его просмотреть невозможно
                — В броузере возврат отряда с героем вызывает лаг списка отправки войс секунд в 5, а если отрядов возвращается много то можно запросто повиснуть минуты на две.
                — Уже можно в свой аккаунт зайти с телефон и броузера?)

                Ну и так далее)

                К слову сказать, конечно, и идея у вас интересная, и среди мобильных игр довольно умеренные аппетиты, но все же дико раздражающие баги присутствуют.
                  0
                  Мы не нашли ни одной подобной жалобы среди обращений игроков Throne.
                  Вы не могли бы конкретизировать каждый из пунктов? Какая информация в нотифаях по окончанию войны Орденов неверна? Какие вложения вы имеете в виду и куда они расползаются? Также опишите действия, которые приводят к баге со списком отправки войск, пожалуйста.
                  Что касается невозможности зайти в веб-версию игры с аккаунта мобильной версии, то это не бага :-). Это просто невозможно, потому что синхронизации нет.
                    0
                    Мы не нашли ни одной подобной жалобы среди обращений игроков Throne.

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

                    Какая информация в нотифаях по окончанию войны Орденов неверна?

                    По моему при окончании войны ордденов всплывашка гласит «Война королевств: возмездие началась», ждать 7 утра знаете ли мне было лень.

                    Какие вложения вы имеете в виду и куда они расползаются?

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

                    Также опишите действия, которые приводят к баге со списком отправки войск, пожалуйста.

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

                    Что касается невозможности зайти в веб-версию игры с аккаунта мобильной версии, то это не бага :-). Это просто невозможно, потому что синхронизации нет.

                    Жуть как удобно… К тому же я одно время встречал заявления мол «сделаем».

                    Зы а говорите играете) это самые простые вещи я вам описал, которые воспроизвести может любой вообще. Есть еще трудноуловимые, например человек повешал 2 недельный щит, и обнаружил вскоре, что щита нет. Игроки с этим борются методом добавления 8ч щита любому более длинному.
            0
            «Чтобы стать востребованным программистом, нужно разбираться в популярной ныне предметной области и владеть технологиями, эффективными для её реализации.»

            Возможно, в статье стоит указать, что она рассчитана на людей, которые не знают, как подступиться к программированию и разработке вообще.
              +3
              сама статья откровенно слабая, только и того, что ссылки на Сдиез и джаваскрипт (да, и реклама юнити).
              С таким же успехом можно было сократить до всеми любимого девиза: «Программисты, пишите код без багов! А код с багами — не пишите.»
                +1
                Стоп-стоп-стоп, а как же тогда тестировщики?
                Мы же все любим тестировщиков, а тестировщиц — еще больше
                Нельзя разрушать целую индустрию
                Я, вот, вообще все свои баги исключительно специально и для них делаю, я вообще никогда не ошибаюсь, все так задумано
                  0
                  ну вы прямо как наш скраммастер, когда выносит недоделанные задачи из спринта, и закрывает его со 100%-ым выполнением задач: «ядерная бомба всегда попадает в эпицентр взрыва!»
                    0
                    Ну что вы…
                    Он — корысти ради, а я исключительно из любви к человечеству
              0
              После прочтения у меня остался только один вопрос — кем работает автор статьи?
              P.S. Похож на райтера, но сейчас даже райтеров учат привлекать специалистов при сборе материала.
                +2
                Статья ни о чем. Программист боец на все фронта, ага, уже вижу как разработчики быстрых отказаустойчивых решений под ембед для управления системами подачи какой нибудь кислоты на культях бегут переквалифицироваться в реакт бэкенд разрабов. Еше бы глянул на миграцию с каким нибудь программистов графики на java кровавый интерпрайз. Интернет худший источник знаний, грязь и помойка, подобен кораблю идушему на рифы, понятно дело, что усердие и труд все перетрут, ну и не выполнимых задач конечно же не бывает, бывают инфаркты в 30. Опять же, какой к черту дедлайн? Это мантра мне уже надоела, за что получает деньги тимлид и манагер? Не могут сепарировать задачи по приоритетности и обеспечить стабильный паплайн задач, ну дак я то тут причем, пусть купят себе Макконнелла или с торентов скачают. «Избавляйтесь от ригидности мышления» — ага только при условии, что молодой специалист не стерет в порошок сеньор девелопера, а то «мы всегда так делали, нам норм иди нафиг со своими новомодными фигнями». Про код и проектировку — это скорей фиг пойми что, лучше как-то чем никак, хотя иногда лучше никак чем как то, но бизнес есть бизнес а я есть человек, так что караван идет и давится кактусом. Крч, я чтот пытался выдать конструктивное, но скорей всего ничего не выдам потому как я не знаю что можно выдать конструктивное на откровенную менеджерскую туфту о браздении софтом простором бескрайнего It, да и вообше зря я написал это но пусть будет
                  0
                  Программист в IT — универсальный солдат. Необязательно фокусироваться на определенной сфере деятельности

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

                  Only users with full accounts can post comments. Log in, please.