Как войти в IT или история о том, как я учусь программированию (игрообзор с юмором)
"Есть ли в жизни что-то более захватывающее, чем самосовершенствование?" - спрашивает меня менеджер компании, куда я только-только устроилась работать. Я отвечаю: "Конечно же нет, босс!" - и иду складывать и вычитать переменные совершенно бесплатно.
Итак, обзор на Human Resource Machine.
Войти в IT оказалось гораздо легче, чем вещают на многочисленных курсах и коучингах. Это стоило мне всего 100 рублей. Вжух, 10 секунд - и вот я уже самый настоящий айтишник, готовый приступить к работе в огромной компании (прим.: без скидки игра в Стиме стоит 360 р. но, поскольку я люблю оптимизировать не только действия в игре, но и свои расходы, то стараюсь покупать игры по скидкам).
Итак, меня взяли на работу в некую компанию. Обещали карьерный рост, но первое время придется просто работать нахаляву стажёром ради опыта.
Я, конечно же, согласилась.
Первые задания были совсем простые, типа: "возьми две переменные и выведи в обратном порядке", "возьми две переменные, сложи их (или вычти) и выведи". Потом появилось что-то посложнее: "вычти первое число из второго и выведи, затем вычти второе из первого и тоже выведи".
(Видео - в конце статьи) Все переменные - это кубики на транспортере. Чтобы их "обработать" перед выводом - можно скопировать данные в ячейки на полу. Нам нужно написать "программу" (на скрине - справа) которая даёт указания что делать с кубиками персонажу перед тем, как положить на транспортёр вывода. То есть вам даётся несколько операторов (взять, скопировать, сложить с, вычесть из, вывести, повторить и т.д.) и вставляя их в поле справа в определённом порядке вы задаёте действия, которые потом повторит ваш персонаж, когда вы нажмёте кнопку "пуск". С каждым последующим уровнем вам выдают новые операторы и усложняют ТЗ (Техническое Задание — документ определяющий цель, структуру, свойства и методы какого-либо проекта).
После того, как меня обучили базовым основам и действиям, шеф начал требовать, чтобы я максимально оптимизировала свой "код". К каждому заданию стало добавляться требование использовать не более X команд и чтобы на обработку всех данных ушло меньше N шагов.
В принципе, если мой рукожопный код нормально работал, то за отсутствие оптимизации не наказывали и давали следующее задание. Премии и зарплаты за провал оптимизации меня тоже не лишали, - ведь нельзя же лишить зарплаты, если у тебя её нет.
Так что тут я, даже можно так сказать - обманула начальство! Во какая хитрожопая :) Кстати, можете использовать это как лайфхак.
И вот, таким вот образом, я проработала у них стажёром 10 лет. Эх, пролетели как один день. Всё это время денег на еду и квартиру не было, поэтому приходилось ночевать в офисе и незаметно подъедать забытое в холодильнике коллегами. К счастью, начальство попалось очень доброе и никто из офиса на ночь не выгонял, а после окончания стажировки даже обещали начать платить зарплату! Поэтому я продолжила у них работать.
Наконец, наступил тот день, когда меня направили на экзамен для повышения квалификации. Он состоял из 3-х этапов и задания уже были посложнее и запутаннее. Но я справилась, ура! Меня повысили! Но не зарплату... Хотя шеф клятвенно пообещал, что если я хорошо буду справляться, то скоро мне выпишут премию. Я думаю, он не стал бы обманывать своих сотрудников, ведь тогда на него никто бы не работал. Так что я осталась в этой компании. Всё равно больше некуда идти. А вдруг там будет хуже? А здесь вроде такой хороший, дружный коллектив и порядочное начальство.
С новым усердием я бросилась на решение новых задач. Первые две были очень даже лёгкие, почти как в первые 10 лет моей стажировки, и я справлялась с ними очень быстро, поэтому всегда было время отдохнуть и посмотреть фильмы на работе. Видимо, начальство это заметило...
Так вот вместо того, чтобы похвалить меня, что я так быстро и хорошо справляюсь, они решили, что раз у меня слишком много свободного времени, то можно меня побольше нагрузить и поручить самые сложные задачи (от которых отказались все другие сотрудники).
И вот мне дали написать программу настолько сложную, что я пару недель только пыталась разобраться в ТЗ.
Если интересно поломать голову, вот условие одной из задач:
На текущий момент я уже научилась работать с такими операторами:
Я вертела их и так и эдак, складывала, вычитала, минусовала, проверяла на ноль... Но ничего не получала (по шее не считается). В итоге, спустя пару (прим.: реальных) дней, я придумала как это всё можно сделать, чтобы получался верный вывод для любых поступающих переменных. Всё чётко по ТЗ.
Но моя программа получилась огромной... А по доп.задаче на оптимизацию надо было уложиться всего в 12 команд!!! У меня же было аж больше 20... Как??? Как сделать лучше? И тут я впервые сдалась.
Пока начальник отвернулся, зашла на Stackoverflow (прим.: подсмотрела прохождение). Там мне довольно быстро подсказали как все "сделать красиво" и я успешно сдала работу (прячу под спойлер, на случай если вы вдруг хотите разгадать сами):
Начальство очень обрадовалось тому, что я справилась и с еще большим рвением стали скидывать на меня проекты, за которые больше никто другой не брался.
Вот тут то я уже и начала сомневаться... а может, IT - это не моё? А может, всё таки, нельзя вот так вот с улицы просто "влететь в it", ничему ранее не учившись... А что, если я не смогу? Если не справлюсь? Что, если все предыдущие несколько лет успешной работы я просто притворялась что что-то знаю и делала вид, что разбираюсь? Может до этого мне просто везло? Может я просто самозванка?
По ТЗ мне нужно было выводить от некоего числа все промежуточные до нуля. При этом, числа могли быть не только положительными, но и отрицательными. И надо как то это програмно распознать, чтобы задать исходя из этого команду на вычитание или сложение по единице до нуля.
Но КАК??? Всё показалось таким запутанным...
А если серьёзно:
Я пока что застряла на "Второй усложнённой задаче". Думаю, как же правильно написать эту программу... Но уже решила написать на игру обзор, так как от неё сильно в восторге.
Я вообще очень обожаю головоломки и загадки, где надо реально думать и решение действительно есть, то есть оно не надуманное или притянутое за уши. В Human Resource Machine - всё ясно, чётко и подчиняется его величеству Логике.
Не могу это объяснить, но эта игра чем-то напоминает мне шахматы. Может просто мозг использует те-же процессы или что-то в этом роде. Я не спец и с трудом могу объяснить, но чувствую от этой игры такой же кайф, как при игре именно в шахматы, когда продумываешь свои ходы на несколько шагов вперёд и так же ищешь лазейки, продумывая возможное наступление противника.
Однако, я совершенный нуб в программировании. Поэтому, возможно, кажущиеся мне сложными задачи, для опытных людей - просто семечки. Меня же, как человека впервые пробующего такой "геймплей", Human Resource Machine сильно заинтересовала.
Мне так же очень нравится в ней то, что решение задач не привязано к сидению у компа. Операторы (пока что) не сложные и их не много, так что запомнив ТЗ, можно просто думать над "написанием кода" в дороге (в очереди, в пробке и т.д.) прикидывая решение в голове или чирикая в блокноте.
Очень рекомендую попробовать Human Resource Machine таким же любителям головоломок. Но настоящим программистам игра скорее всего не зайдёт.
Ссылка на страницу в Steam под видео:
P.S. Даже не представляла себе, что на такую простенькую игру напишу столько текста и что она вообще меня так зацепит :) Просто - вау...
Но мне было интересно писать. Надеюсь, вам было интересно это читать.