Разбор загрузки из Excel для джунов
Показал, на что начинающим 1С программистам обращать внимание при написании кода на 1С. Заявку на разбор кода оставляйте здесь: https://forms.gle/duwvQhoWNtbeZLBh9
Показал, на что начинающим 1С программистам обращать внимание при написании кода на 1С. Заявку на разбор кода оставляйте здесь: https://forms.gle/duwvQhoWNtbeZLBh9
Простите, не помню откуда я это взял, нашел у себя в заметках. Видимо забыл опубликовать. Всем, кто хочет сделать B2B бизнес посвящается.
"1. B2B продаж не существует, это миф. В биздеве стартап-корпорация, стартап-стартап, корпорация-корпорация это всегда человеческие отношения, очень похожие на B2C продажи.
2. Сначала продажа - потом продукт
3. масштабируемые продажи невозможны до подтверждения ключевых гипотез: клиент, проблема, решение, ценность, рынок.
4. Лучше разрабатывать за деньги первых клиентов
5. Не продавай, пусть у тебя покупают!
6. Искренне помогай клиенту.
7. Деньги будут не скоро. Будь готов работать в долг, по постулате и с отложенными на 3+ месяцев платежами.
8. Запасись терпением. Все будешь дольше, чем ты предполагал.
9. Не обижайся на людей и на компанию, если они не купили. Не купил не конкретный человек и не компания в целом, сделка не состоялась по целому ряду причин, в которых нет одного виноватого. и.
10. Поддерживай отношения и пингуй каждые 6-12 месяцев, узнавая, как идут дела. Это необременительное действие поможет тебе оставаться в памяти сотрудника, который вспомнит про тебя в подходящий момент.
11. Определи свое отношение к тендерам. Они отнимают время, сили, нервы, деньги и всегда надо осознанно подходить к участию в них, предполагая, что в определенном их количестве победитель заранее известен.
12. «Пацан сказал – пацан сделал», «нормально делай – нормально будет» – все это как нельзя лучше описывает ожидание большой компании от стартапа, который одним своим видом вызывает недоверие. Корпорации потому и работают с корпорациями потому что им нужна четкость, надежность и прогнозируемый результат.
13. Сделай так, чтобы клиенту было не страшно. Большие компании пропитаны страхом, страх порождает закрытость и бюрократию, как инструмент минимизации персональных рисков. Твоя задача дать понять своему клиенту или лоббисту, что работа с тобой не менее надежна.
14. Блефуй. Блефуй, что ты нарасхват, что у тебя очередь клиентов, что ведешь переговоры с конкурентами. Это единственный политико-манипулятивный инструмент из арсенала самих корпораций, который я могу рекомендовать использовать.
15. Инвестируй в контет и спец.проекты. Они могут не дать сиюминутной отдачи и не дают прогнозируемый ROI, но долгосрочно могут быть очень позитивный результат при сравнительно очень небольших вложениях.
16. «Дешевый понт дороже денег». Когда ты впервые обращаешься в компанию или кто-то делает тебе интродакшен (кстати, всегда ищи того, кто может тебе его сделать), первое, что всех волнует – кто ты такой? Любой твой ответ на этот вопрос их не устроит потому что не даст им никакой информации, которая убедит их в твоей крутости и надежности. За тебя это могут сделать твои клиенты, твои партнеры, лидеры мнений и то, что более известно, чем ты.
17. Связи решают все. Думаю, пояснений не требуется.
18. Заранее реши для себя, как ты относишься к откатам, серых схемам и прочим негативным проявлениям бизнеса в России, которые могут тебе предложить. Ответ должен быть готов заранее, чтобы не замяться, когда его зададут.
19. Все должно быть красиво подано и упаковано. Исторически, технологические решения уделяют мало внимания дизайну
20. Каждую сделку веди до конца как последнюю и единственную. Все может развалиться в последний момент, а ты отказаться всегда успеешь. При этом каждый потенциальный покупатель должен чувствовать себя особенным."
Цикл статей: "Гравицапа для бизнеса"
Автор: Фабрин Максим
Должность: Руководитель отдела разработки, внедрения и развития ПО
«Лавка Технологий»
Время чтения: ~5 минут
Предисловие:
Статья для тех, кто начинает первые шаги в разработке ПО
Если вы спросите программистов со стажем о том, как они выбрали свой язык, то большинство ответит, что его ему посоветовал друг/знакомый/форумчанин.
Но почему-то никто не спрашивает о том, какие ошибки совершил этот «доброжелатель» на своем пути и чего стоит избегать.
Вторить разным топикам типа «5 ошибок программиста» про бессмысленные имена переменных, план разработки и прочее – не буду, про это уже написано и не раз :)
Расскажу про ту боль, которую вам предстоит испытывать раз за разом вне зависимости от выбранного ЯП и о которой мало информации.
Статья максимально оптимизирована под джунов и около-IT, так что грязью сразу не бросаемся, Господа True Разработчики ;)
Подумай дважды.
Первое, о чем я спрашиваю новичка в этой области, готов ли он посвящать своему новому увлечению много времени. Есть ли оно вообще у него, время это?
Если вы устроились шофером – вы отрулили 8 часов и свободны.
Если вы устроились кассиром – вы сдали кассу и свободны.
Если вы устроились разработчиком – вам придется постоянно учиться, в том числе в личное время.
И речь не о курсах «Программист на Java за 2 часа», «Освой CSS за 4 минуты» и прочей ерунде.
Речь о полноценном обучении по книгам, видео, форумам.
А главное – это обучение через непосредственное написание работоспособного кода.
IDE (среда разработки) – ваш друг и товарищ и если на собеседовании вы не знаете с какой стороны ее запускать, то ничего кроме печали это не вызывает.
Разработчик = обеспечен работой.
Не редко к нам приходят собеседоваться сотрудники (джуны в основном), которые претендуют на ЗП в районе 50-150к.
По факту все, что они могут – это писать код.
«Hello World» в консоли, так сказать :)
Подобный функционал (чистый кодер) будет востребован в компаниях-единорогах, а-ля Гугл, Яндекс, Тесла и т.п. с миллионами человеко-часов кодинга.
Но молодежь туда просто не возьмут – не хватит квалификации.
А в компании поменьше требуется «многостаночник на минималках».
Как пример, стэк (набор технологий), который мы рассматриваем:
Java + Maven + GIT + Linux-сервер (поднять и запустить) + Tomcat (поднять и настроить) + HTML (база для отрисовки) + SQL (поднять и настроить, хотя бы SQLite).
И это становится для новичков открытием.
Как итог – они не проходят ни к «единорогам», ни к нам.
Грокать алгоритмы – это, конечно, прекрасно.
Но в коммерческих проектах важно понимать, как все устроено и уметь это запустить в полном цикле при необходимости.
Удары в стенку – это больно.
Каждый новичок будет ходить по кругу:
Я не понимаю -> Я разобрался -> Это не работает -> Я не понимаю …
Раз за разом с каждой новой библиотекой, фреймом, кодом.
Главное правило, которое я выработал лично для себя, звучит так:
«Не понял, выдохни, и начни снова»
По итогу, в одной из итераций будет прорыв.
Кстати, многие сливаются именно на этом этапе, так как не хватает сил постоянно ломать стенку головой.
Больше – не значит лучше.
Еще один интересный подход, когда джун пытается освоить сразу все.
Часто можно наблюдать в резюме что-то типа:
Опыт 1-2 года
ЯП: Java, C++, PHP, Python, CSS, JS, SQL, ….
В 50% случаев – это чистое вранье, которое вскрывается при первом созвоне. То есть до этапа технического собеседования человек просто не доходит.
В 50% случаев – это человек, который прошел 100 500 курсов и не овладел ни одним языком.
То есть опять же до этапа собеседования человек не доходит.
Определитесь с набором технологий, который вам по душе и на старт.
Если вы Backend, то вам требуется лишь база по Front.
Если вы Front, аналогично, нужна лишь база по Backend.
В любом случае в резюме направление должно четко просматриваться, по крайней мере у джуна.
Никаких «Знаю 100 языков и играю на скрипке».
Мама сказала, что буду много зарабатывать.
Писали авторы ранее, напишу и я.
Деньги вы начнете зарабатывать тогда, когда сможете решать нестандартные задачи. Либо когда вы станете заменять собой сразу несколько должностей.
В любом случае все упирается в ваши знания, а значит в то, сколько времени вы готовы уделить своему саморазвитию.
Пока вы кушаете, спите, отдыхаете – кто-то другой наберется опыта и выкинет вас с позиции джуна.
Да, таких новичков очень много и это значительно снижает стоимость работы.
Однако вашим преимуществом может стать кросс-функционал, если вы сможете использовать свой прошлый рабочий опыт (шофером грузовика, например) для создания ПО (система управления камазом).
Ведь джун – это не обязательно возраст соискателя 20 лет ;)
Базовый английский.
Если вы не разработчик 1С – вам потребуется английский.
Хотя бы базовый, уровня А1.
Просто поверьте на слово.
Я филолог, но у меня все получится.
Не получится, забудь и ищи себя в другом направлении.
Либо ты не филолог.
Если нет понимания причины и следствия, то код просто не будет работать. Логика действий, цепочки событий, ветки вариантов – это то, что требуется понимать, а не изучать.
Возможно, что по этой причине среди девушек мало разработчиков и много тестеров. Мозг девушек не всегда логичен (да простят меня дамы :) ) и именно эта особенность позволяет находить «дыры» в уже разработанном ПО.
В защиту девушек-разработчиков так же скажу, что те решения, которые приходят к Вам в голову часто становятся открытием для мужчин, но они в этом не признаются никогда в жизни ;)
Смотрите шире.
Ваши PET-проекты (самоделки) должны быть оригинальными.
HR при подборе кандидата обязательно заглянет в GIT и посмотрит, что вы там ваяли.
Если это стандартный кейс из любого обучающего материала, то у меня для вас плохие новости – вам даже не позвонят, ведь по этому кейсу вас водили «за ручку».
А вот грамотное переиспользование чужого проекта, даже если будет замечено, то вызовет интерес.
Ведь IT и состоит из «переиспользования» всего на свете: библиотек, фреймов, модулей и т.п.
В любом случае дерзайте,
И пусть в этом мире станет хотя бы на 1 программиста больше ;)
Здесь я собираюсь рассказать свои мысли о себе и текущей своей ситуации и возможно получить некий фидбэк в виде советов и поучений. К адекватной критике настроен положительно, ибо для меня она станет не лишней проверкой моей уверенности в том, что я занимаюсь правильным делом. Писателем не являюсь, но стараюсь прогрессировать в этом(это можно понять по предыдущим постам). Так что удачи в листании простыни)
Я помешанный на играх, в хорошем или плохом смысле, не мне судить, но главное то, что целью своей жизни я когда то поставил склепать свою игровую студию, в которой я бы мог воплощать все свои ебанутые идеи. Как меня судьба привела к подобному решению - это рассказ для отдельного поста, но всё же чуть ясности внесу.
Когда то горел двигать отечественную науку, но будучи наивным студентом из деревни попал в коррупционную схему, в которой меня ещё умудрились кинуть. Тогда я потерял место в институте, в который очень хотел попасть, будущее которое так планировал весь 11ый класс, получил разочарование в отечественной системе образовании и окончательно потерял смысл в жизни.
Такое вот, не очень весёлое начало. Но тогда за одно лето я понял, что очень обожаю игры, что всегда хотел разобраться как они устроены, кто и как их делает. Эта идея-фикс теперь ни на минуту не отпускает меня. Что раньше мне казалось просто баловством и фантазией, тогда я понял, что из этого можно получить что то стоящее, чему можно посвятить свою жизнь.
Таким образом вдохновившись, я поступаю заново в институт попроще, но уже не на физика, а на программиста. Из-за специфики города, попадаю в очередную схему) без коррупции, уже хорошо, жизнь всё же немного научила. Грубо говоря, в городе есть градообразующее НИИ, в которое идут 90% выпускников. Но качество образования хромает на обе ноги, поэтому сюда отправляют непутёвых детей научных работников, для того чтобы их тут устроили по блату. Соответственно учиться/активничать здесь не особо кто хочет, только местные студенты не из семей работников НИИ и приезжие. Поэтому моё начинание в виде клуба разработки игр, как я его окрестил GameDevLab быстро появилось и быстро исчезло. Но в процессе нашёл девушку и несколько хороших друзей, которые тоже заинтересованы в геймдеве.
Ирония. Ближе к выпускному курсу по знакомству меня берут в отдел занимающийся инновационными разработками, но по факту это попытка втереться в современные технологии в условиях секретного совка. Набравшись там опыта и уверенности в собственных навыках я перевёлся в новый институт цифровых технологий, который отрыли 2-3 года назад, пишу там диплом и меня берут там на работу. Причина перевода как раз и заключалась в отсутствии секретности на работе и более современных технологиях.
Кажется, при чём здесь моя работа и игры, сейчас поясню. Всё как раз дело в моей не уверенности связанной с финансами. Грубо говоря, я просто не представляю на что мне жить, если я сходу посвящу свою жизнь разработке игр и текущая моя работа является частью плана.
Собственно говоря цель... Она абстрактная... Я не гонюсь за конкретными объективными показателями, не уверен что мне удастся реализовать всё то, что я когда либо задумаю, поэтому целью поставил сам процесс создания игр, а всё остальное я делаю по вторичному приоритету. Нужно научиться программировать - учусь, рисовать - вот скетчбук и граф-планшет, нужна студия - ищу людей, учусь работать с коллективом и т.д. Так что ставлю промежуточные цели исходя из потребностей, на ходу.
Порой не могу адекватно оценить размер своего игрового опыта, с одной стороны - я поиграл во множество игр, различных жанров и направлений, а с другой стороны постоянно нахожу пласт игр, про которые даже не слышал.
Здесь я опишу игры, которые оказали на меня большее влияние.
Вкус менялся со временем, да и жанровые предпочтения. Когда то в детстве, как и все, залипал в GTA: San Andreas с читами, но параллельно играл в мрачную Hellgate: London. Пытался разобраться в сложной для меня тогда TES: Morrowind и убегал от собак в STALKER: Call Of Chernobyl, потому что фпс на семейном компьютере не позволял мне нормаль в них прицелиться. Дивился красоте и возможностям Crysis. Даже как то в мои руки попала старая сборка Minecraft с индустриальными модами, которая увлекла на годы вперёд.
Ещё в школьные времена меня познакомил с Dota 2 мой старший двоюродный брат(вот тут в меня полетят камни). Тогда я ещё подумать не мог, что подобные игры существуют. Сложные механики, огромная карта, огромное количество различных персонажей и их синергий меня завораживало, да и что уж скрывать, завораживает и сейчас. Из всех игр, этой я уделили большее количество времени, к сожалению или к счастью.
Будучи довольно одиноким человеком до определённого времени, мне очень нравилось чувствовать себя частью команды, приносить пользу. Будучи в глубокой депрессии я захожу в эту игру, надеясь как и раньше услышать слова благодарности за вовремя оказанную помощь. Из выше описанного становиться понятно, что я играл и играю на роли поддержки. Понимаю что для многих эта игра является мусором на данной площадке, причины мне отлично понятны. Но видимо я не так критичен в своём отношении.
Мне эта игра до сих пор дорога сердцу, ибо только она может давать настолько яркие положительные эмоции от слаженной командной игры и настолько отрицательные даже от победы в токсичной команде, где с твоим желанием помочь и выиграть играются для того чтобы потешить своё эго. Но подобные игры закаляют характер, заставляют тебя понимать человеческие невежество и жестокость, но и не забывать про положительные качества.
У многих молодых/детей, интерес к доте возник на фоне популяризации киберспорта(по мне так, это сейчас раздутый пузырь), желания заработать на собственном хобби. У меня произошло совершенно не так, у меня просто очень общительный брат, который постоянно рассказывал мне о различных интересных игровых ситуациях, героях и предметах. Интерес был подогрет ни на шутку, поэтому при появлении у меня интернета, эта игра была установлена чуть ли не первой. Тогда ещё вроде можно было играть только по приглашению.
Но как то раз я услышал о такой сложной игре как Dark Souls, диск которой я увидел в нашем магазинчике пиратских дисков. На том диске были две части - обе оригинальные игры без дополнений. Первая часть как назло оказалась битая, но вторая встала на ура. До сих пор вспоминаю как обалдел от атмосферы выхода из обучающей пещеры в Маджулу... Как же я тогда ошибался, когда думал что это вершина развития графики в играх) В любом случае, с тех пор я пристрастился к душевным играм.
Местная боевая система поставила меня на колени. Мой путь от костра до костра мог занимать пол часа, а количество попыток уходило за десяток. Поэтому в последствии она была успешно брошена и забыта на долгое время. Но лишь для того чтобы появиться в самый тяжёлый период моей жизни и сыграть в ней очень важную роль. Эта игра дала мне причину жить дальше. Не уверен что хочу подробно рассказывать эту историю. Но самое главное, что это был первый курс университета и полное разочарование во всём, чем я занимался. Она привнесла в моё тогдашнее состояние толику смысла. Хватало хотя бы того, что она была причиной, по которой я вставал по утрам, это было уже хоть что то, а не звенящая пустота внутри. Я себя очень плотно ассоциировал с игровым персонажем, тоже воспринимал себя каким то мёртвым внутри полым(на тот момент я не знал как пользоваться человечностью) безликим человеком в несправедливом и враждебном мире(да, да, не отпускающий подростковый максимализм и все дела). Продвигаясь по игре, встречая новых противников, я формировал свой "уникальный" стиль игры, сейчас я его в шутку называю "билд х**соса". Мой персонаж мог использовать магию, пиромантию и молитвы, взять в руки самую тяжёлую булаву или меч, требующий большой ловкости, при этом я всегда жертвовал здоровьем и защитой(иронично, так и получилось в жизни). Я хотел получить все возможности, предоставляемые игрой, что и стало для меня тогда важным аспектом во всех играх - вариативность геймплея.
Сейчас я вспоминаю об этом как о каких то тёмных временах, когда я забивая на свою жизненную ситуацию полностью ушёл в игру. С другой стороны, оно меня и спасло от забвения и дало причину нового витка в моей жизни.
Таким образом я погрузился в соулслайки. На данный момент я прошёл все Души, Elden Ring и нашёл важную серию игр, которая, в моём понятии, развила философию вариативного геймплея - Nioh. На обе части я потратил суммарно около 2к часов и нисколько не жалею.
Настолько системно и глубокой боевой системы я ещё не встречал, да и похоже в ближайшее время не встречу. А непростые противники не дадут заскучать. Я нисколько не рекламирую, у игры достаточно недостатков, но сейчас не об них.
Проходил я её с другом из универа в коопе и это был, пожалуй, один из лучших моих опытов. Собирая синергирующие друг с другом билды, подстраиваясь под плейстайл друг друга я получал нереальное удовольствие. Но недостатки со временем перевесили положительные стороны и игра исчерпала себя.
Сейчас я хочу посмотреть их новую игру, недоступный, к сожалению, в РФ. Боюсь возлагать на неё большие надежды, ибо уже увидел достаточно отзывов, где её ругают за болячки прошлого, так что тактика выжидания здесь как никак кстати.
Эта игра меня вдохновила на собственный проект, о котором я расскажу в дальнейшем.
Я стараюсь следить за всеми новостями игровой индустрии, ибо её тенденции меня очень сильно напрягают.
"Баланс" между представлением и геймплеем сместился в сторону показухи и пыли в глаза. Трейлеры крупных игр больше не впечатляют, а сразу дают понять, где та или иная студия обосрётся в этот раз. А хорошее техническое состояние игры теперь является какой то сверхспособностью, и это не говоря только про новинки текущего или прошлых годов.
Теперь же это индустрия, на которой зарабатывают деньги, подумали все из руководств крупных студий и издателей. А то что это в первую очередь творчество, позабыли все кроме тех редких студий, которые до сих пор готовы выпускать уникальные инди и игры категории B.
В то же время успех инди-сегмента заметили многие и начали клепать клоны успешных проектов, тем самым насыщая магазины копипастой идей и реализаций. Теперь даже в инди-играх надо очень сильно разбираться, чтобы не нарваться на посредственную вторичность, типа Cult of the Lamb, которая является калькой из The Binding of Isaac и фермы, не развивая никак ни одну идею ни того ни другого, а пытаясь выкатить чисто на визуале.
Но почему только о грустном?! Я в очередной раз радуюсь, когда слышу новости о том, что очередной разработчик решил отделиться от крупной студии, что основать свою поменьше, когда идейные люди получают возможность не идти ни у кого на поводу, а делать своим проекты, вкладываю свою душу. Когда вижу новости о реабилитации Российского геймдева после Lada Racing Club и начале поддержки от государства отечественных студий(да да, Смута выглядит, хммм, смутно) но первый блин комом никто не отменял).
Мдааа, спустя неделю как я начал писать этот пост в заболевшем состоянии чёт я в афиге от того что я здесь накалякал.
Как я уже и писал, что слежу за текущим состоянием игровой сцены, встаю утром, включаю на телефоне на ютубе Инфакт от Стопгеймов и параллельно с умыванием/завтраканием с надеждой услышать о новых играх, которые должны исправить то что сейчас происходит. С другой стороны меня радует некое плачевное состояние крупных студий, это показатель того что они действительно что то делают "не так". Что я могу посмотреть на их решения и к чему они приводят. Иногда думаю, что у всех этих топ-менеджеров из руководства реально какой то свой мирок, в котором игры с средним геймплеем и раздутым бюджетом должны стабильно хорошо продаваться, что больше половины бюджета можно отдать на маркетинг и оправдать ожидания игроков. Ах да, им не надо оправдывать ожидания, им надо жить сегодняшним днём.
По другую сторону находятся сессионки. Охх, сколько времени на них было потрачено, сколько я видов их повидал. Фанаты Геншина могут сразу ставить минус. Настолько ублюдочной и гениальной системы удержания игроков никто ещё не придумал. Чтобы вы понимали, у меня есть древний друг, который на полном серьёзе мне хвалился, что потратил 400к за год в этой помойке. Это тот случай, когда механики для правильного распоряжения вниманием игрока используют для заработка на нём. Я могу только похлопать, выражая уважение их интеллекту и жадности. Сам же я наиграл в неё часов 20, ни о чём не пожалел, абстрагируясь от гачи-системы и левелгейтов игра неплохая, но постепенно скатывается в гринд. В противоположность могу привести моё "говно", которое я кушаю с удовольствием - Warframe. Это игра сплошной гринд с некоторым вкраплением сюжета, но самое главное что этот гринд и есть самый главный плюс игры, она просто делает его приятным. Всё что ты фармишь в игре даёт тебе разнообразие геймплея, либо упрощение оного. Буду конечно выглядеть фанатом, но я выражу Диджиталам(разрабам Warframe) уважение, их подход к расширению геймплейных возможностей в игре поражает. Мне кажется ни одной игры не существует, в которой бы присутствовало столько разнообразия.
*Оцениваю игры я со своей колокольни, так что будьте благоразумны и учитывайте, что бывают люди с отличной от вашей системой ценностей. А я на объективность и не претендую.*
Но все игры, которые я назвал плохими, мне всё равно интересны своими решениями, каждая может быть плоха в целом, но отдельные элементы заслуживаю внимания.
Первый раз я прикоснулся к самому созданию игры я в школе, когда маме, как учителю, дали бесплатные путёвки для летней школы программирования. Как я понял это был пилотный запуск подобного мероприятия. Туда я попал с парой своих одноклассников, которые тоже были заинтересованы в программировании и имели обеспеченных родителей. Там было много городских ребят, давно крутившихся в этой теме, а я даже Паскаль к этому времени толком не освоил. Притащил свой ноут, который купил на деньги заработанные на подработке садовником в местном монастыре. Программировать или делать игры я там конечно не научился) Когда ты не понимаешь даже базовый синтаксис C++, пытаться что то наковырять на CryEngine плохая идея, хоть сейчас и понимаю, что движок был ещё дружелюбный. Зато научился настраивать локальную сеть и познакомился с Minecraft, играя в перерывах с ребятами. Тогда в мою голову и залетела искорка о создании своих игр. Но под тяжестью возложенных на меня мамой ожиданий я всё же отбросил на тот момент эту идею, отложив её и законсервировав.
Как и было указано в предыстории, вернулся к идеи геймдева я из-за личностного кризиса, при котором я переосмыслил свои ценности. Входе переосмысления мной был составлен приблизительный наивный план попасть в геймдев. Первым делом, после глобального проёба перед родителями, я решил отдалится от них т.к. думал что в процессе могу упасть на самое дно и утащить их за собой(бляяяя, я до сих пор испытываю испанский стыд за подобное решение, хоть и мной двигали хорошие намерения). Поступил я тогда на программиста из логики, что первое я должен уметь для того чтобы делать игры, так это кодить. Универ конечно не фонтан для подобного направления, но зато из-за отсутствия напрягов на учёбе(даа, эти напряги я создал себе сам) было очень много свободного времени, которое я посвящал играм. Летом работал, чтобы заработать себе на новый компьютер, потому что ноут еле тянул редактор Unity. На втором курсе я начинаю реже появляться на учёбе, т.к. пришло осознание что нас не учат, а просто хотят нашего присутствия для галочки. Там даже кто то жалобу писал в основной институт, за то что в их филиале знания не дают, но это быстро пресекли, дав понять что тут у них всё схвачено и трепыхаться бесполезно. А мне что, я игры делать хочу, а не разборки устраивать с универом. Вот и создавал иллюзию учёбы, а сам уже в другой город ездил на собеседование на должность стажёра на втором курсе. Это было очень наивно, но поучительно. Ко мне подошли серьёзно, пришёл какой то начальник и начал задавать мне вопросы по программированию, с чем то я справился, с чем то не оч. Были так же вопросы по англ, которые я успешно заваливал. Конечно мне отказали, но зато тот начальник хорошо мне объяснил, что именно мне надо изучить для того чтобы стать программистом. В тот же день я поехал в книжный магазин и родители мне купили справочник Страуструпа по плюсам и самоучитель по англ.
Всё следующее лето я посвятил себя этому справочнику насколько мне позволяли родители, точнее мама. Я спустя 2 года, наконец начал полноценно оставаться дома, а не сбегать от них на работу. Тут то как оказалось, её давно не устраивает то чем я занимаюсь. Ни моя учёба, ни мой род занятий. И всё это лето была конфронтация меня в моей комнате с компом и мамы. Каждую неделю происходил скандал на фоне того, что я только и делаю, что сижу в комнате и ничем им не помогаю. А у нас частный дом в селе, была даже животинка, так что я понимал суть её претензии, что и вызывало у меня чувство вины постоянно. Но с другой стороны я понимал, что ни учёба в универе, ни вот эта так "необходимая помощь" мне в дальнейшем никак не пригодится для достижения моих целей. Почему в итоге я не стал ей помогать? Всё очень просто, в доме есть ещё 2 мужика, которые крепче и выносливее меня, которые всю эту работу выполняют лучше и быстрее меня. Но в её понятии, я не умею трудится, ведь "умственный труд, трудом не является". Какое это отношение имеет к геймдеву? В моём понятии, прямое. Ведь лишь поборов все свои внутренние комплексы и травмы ты сможешь раскрыться и действительно потянуться к тому что ты действительно хочешь. Только в текущем своём состоянии я это понимаю, а тогда для меня это была подростковая борьба с системой) Сейчас самому смешно, но одновременно и грустно. Что если бы я поддался на те провокации? Кем бы я сейчас был? Благо, так не произошло, так что продолжим.
Окончательно рассорившись с родителями, я уехал в город уже на 3ий курс. В моей голове постоянно пульсировала мысль, о том что меня никто не поддерживает в моём начинании и что все мои стремления это "хотелки не зрелого ребёнка", что разъедало меня изнутри. Сейчас я понимаю, что тогда я был на пороге нового кризиса. В отчаянии я втянулся в авантюру с разработкой приложения на базе универа от каких то мутных типов из НИИ, которые обещали хот немного заплатить и даже заложить тему для будущей научной работы. Конечно же ни темы, ни денег я не получил. Но зато заполучил лучшего друга, который изменил всю мою жизнь. Он был старше меня на 10+ лет, видимо его опыт позволил увидеть мою внутреннюю боль, с которой он решил бороться. Охх, я бы всем пожелал таких друзей. Я не хочу сильно вдаваться в подробности, но суть такова, была проведена огромная работа надо мной. Для начала меня научили тому, что в жизни(а не только в игре) можно пробовать начинать всё что захочешь, главное для этого достаточного количество стремления, а конкретно не бояться делать ошибки. Затем, меня отучивали от моей дурной философии "баланса счастья", в которой я считал, что если у тебя что то в жизни начинает получатся, то надо себе же нанести аналогичный вред по силе, но в другой сфере. Даааа, тогда я рассуждал так, что если постоянно радоваться, то вскоре вся эта радость перестанет доставлять удовольствие и надо балансировать между радостью и грустью, чтобы сохранять вкус к жизни. Я не понимаю как я к этому пришёл, но херню тогда я со своей жизнью вытворял знатную. Но меня он отучил. Показал что можно быть, оказывается, если не счастливым всегда, то хотя бы всегда стремиться к этому.
Тогда мой друг предложил действительно реализовывать все мои задумки касательно игр. Началось всё очень тяжело из-за моей убеждения что я должен уметь всё делать сам. Тогда я мало понимал как к этому подходить на практике. Мы тогда ещё выбрали только появившийся движок Godot. На нём мы склепали первую приложуху на телефон, которая представляла из себя игру из гайда. Почти всё сделал мой друг, а я начал загоняться что я ничего практически не сделал. Видимо этот момент стал для меня переломным. Тут себя я оправдать могу только тем, что я лишь хотел реально сам пойти к своей цели, а не на чьё то горбу. Из-за своей заносчивости я начал потихоньку сепарироваться от друга, когда начал чувствовать собственную силу. Благо на этом наша дружба не закончилась и судьба сложилась довольно забавно. В то же время он видимо понял мой настрой и решил мне помочь получить самостоятельность, он дал возможность мне попасть на собеседование в особенный отдел в НИИ, где занимаются инновационными разработками. Но как потом оказалось он был под секреткой, что и сыграло свою роль. Меня тогда очень интересовала тема искусственного интеллекта, задолго до всей этой текущей шумихи, а они как раз работали в этом направлении, вот меня и перехватили.
Я параллельно всё же пытался грызть годот, но из-за понимая нехватки навыков программирования мне было сложно что то начать, т.к. основные предметы я всё же понимал хорошо, следовательно понимал, что в основе приложения должны стоять какие то стандарты. Вот и я их искал, навный пиздец. Как будто в создании игр есть какие то утверждённые стандарты, аля ГОСТы?!) Сейчас смешно, тогда было нет. Но между тем, я уже заготовил 3 концепта для игр. Я просто не мог думать ни о чём другом. Меня это очень сильно мучало, потому что оно мне мешало во всех других сферах моей жизни. Я себя постоянно корил, что не реализую то что задумал, что провожу время просто так, словно овощ. Тогда я ещё не понимал, что то были симптомы обостряющейся болезни. Но продолжал генерировать идеи без остановки и корить за отсутствие сил для реализации.
Потом случилось просветление, а что если всё же не делать всё одному? что если всё же собрать команду? И тогда родился коварный план. Я решил организовать клуб обучения разработке игр - GameDevLab. Соболезную тем, кто узнаёт это название. Всё это было аккурат прям перед ковидом. Началось всё бодро, мою инициативу одобрил один из преподавателей, что было для меня большой неожиданностью. Друг сделал тогда оформление с моего описания. Я был тогда очень доволен проведённой работой. Я заготовил несколько лекций, решил начать с истории самих игр, подразумевая что ничего лучше не расскажет об играх кроме их же истории. Получилось немного занудно, тогда я ещё не понимал ценность той информации. Но зато начал перебарывать себя для работы с публикой, пусть небольшой, но это было уже большим прогрессом для меня. Тогда даже один из моих соседей по общежитию пришёл на занятия, ибо задавался целью создать свою глобальную стратегию. Он до сих пор потихоньку её клепает, после того как показал ему Godot) Суммарно было человек 12. И мне нравился тот факт, что многие из них не гнались именно делать свои идеи, а скорее их привлекала сам факт работы с играми. Там же я встретил свою девушку, с которой нам предстоял непростой путь. Но начался ковид, у меня должна была начаться преддипломная практика, но всё закрыли на карантин со сложной темой и без пространства для реализации проекта.
Но перед непосредственно ковидом, всё случилась забавная история. Где моя будущая девушка(уже почти невеста), попросила меня вынести книжку, которую я всем тогда в клубе рекомендовал к прочтению - "Кровь, пот и пиксели" Джейсона Шрейера. У меня тогда с другом как раз случился очень неприятный кризисный момент и мне надо было развеется. А её предложение прогуляться было как глоток свежего воздуха. Я в плане девушек, тот самый тупоголовый тип, намёков не понимаю, мне надо говорить в лоб. А как оказалось, что со мной давно флиртовали, а я этого в упор не замечал, увлечённый своими играми. Даже друг мне рассказывал, после того кризисного момента, что он всё видел и был в афиге с моих затупов. Но благо нам помогла связь в виде общих интересов, чтобы я смог взглянуть на человека поближе. Мы гуляли около 2ух часов, в ходе которых я пытался отогнать негативные мысли после разговора с другом, а она пыталась меня как следует разговорить. Там оказалась полная синергия интересов, когда я гнался за интересным геймплеем и атмосферой, её интересовало веселье и интересный визуальный дизайн. Она нисколько не программист, но как оказалось хорошо рисует. После нескольких свиданий мы пришли к выводу, что на время карантина она переедет ко мне(тогда я уже начал потихоньку снимать однушку)) Т.к. у неё не молодые родители, а быть всё это время на расстоянии улицы, без возможности нормально погулять из-за локдауна, мы пришли к такому решению. Началась некая идиллия на основе влюблённости, я так это называю)
Но как бы хорошо всё не было, надо было как то в этих условиях делать диплом. И тогда то, со мной связался мой руководитель и предложил реализовать некоторую агентную модель на Unreal Engine, с которым я начал недавно знакомиться. Это был переломный момент в моём приближению к геймдеву. Я тогда пережил много и хороших и не очень моментов, связанных с этим дипломом. Но всё же как то но мне удалось, что то накалякать и сдать его на отлично.
Так как пикабу стало плохо от количества символов, я вынужден разбить пост на две части.
Продолжение следует...
Я не знаю что мне делать, мне 17 лет и я нахожусь на пути в 11 класс. Я живу в России (это важно). Школьная программа мне даётся легко (Если вникнуть), но некоторые предметы я знаю очень хорошо, буквально находясь на уроках (Дз я не делаю и имею 4-5 по ним благодаря устным ответам и К/Р). Сейчас проходит промежуточная аттестация по трём предметам, и я два из них завалил, и буду пересдавать их в ближайшее время. У меня совершенно нет тяги к изучению этих предметов, но к сожалению школьная программа не предусматривает такой вариант событий. Может быть я бы и напрягся и начал бы учиться как и все вокруг, но есть одно но: я уже преуспеваю в некоторых отраслях, которые в теории могут приносить мне стабильный доход. Во время десятого класса я заинтересовался фрилансом а конкретнее монтажом роликов. Я умел это делать хорошо, так как раньше я довольно успешно вёл ютуб канал (было по пару тысяч, а то и десятков тысяч просмотров), но забросил это дело из за отсутствия монетизации. В августе я начал заниматься фрилансом, и в том же августе я уже нашёл первых клиентов. На протяжении всего учебного года я работал и по подсчётам в каждом месяце выходило около 10.000 рублей (при условии что в месяц я уделял этому делу не больше 35 часов, то есть получал по 285 рублей в час, при условии что в регионе средняя часовая ставка 150 рублей). Мне уже пару раз приходили предложения по постоянной работе, но я отказывался, обосновывая это тем - что я ещё учусь и времени у меня не много. Предлагали от 30к стабильно, до 60-70к (В моём месте проживания 60к это больше в два раза чем получают тут кассиры, грузчики и другие не особо мудрёные профессии). Я думаю это не последние предложения для меня и в будущем у меня будет более стабильный доход. Но вот незадача, если я сдаю промежутку, то я прохожу в 11 класс, где надо будет напрягаться, иначе смысла в нём нету. В итоге у меня всего 3 месяца лета, на которых мне может и не поступить предложение по постоянной работе, и заработаю я за лето тысяч 60 максимум. Ещё в последнее время не очень хорошая ситуация в семье, где с доходами стало туговато, и я хочу помогать финансово, ибо родители мне дали много, а отдача пока не очень большая. +Мне нужны финансы на личные нужды, а просить у кого то - совесть не позволяет. Вот и выходит что я могу либо попробовать сейчас выстроить себя как самостоятельную личность, работая и развиваясь (или обломаться). Или попробовать через год сдать хорошо экзамены, потом ещё 4 года где то учиться и не факт что всё будет отлично. Плюсом хочу изучить программирование под юнити и в случае чего устроиться в какую нибудь студию, зарплата меня в таком случае будет устраивать. Я уже начал это делать, и всё идёт очень хорошо. Уже изучил основы c# и ООП, сейчас смотрю как это всё работает в связке с юнити. Я хочу услышать ваше мнение по данной ситуации и возможно услышать ваши истории, которые похожи на мои. Мне нужно принять возможно самое важное решение в жизни. P.S - с армией всё нормально, скорей всего я не годен.
«Человек может стать человеком только путем воспитания. Он — то, что делает из него воспитание»
И. Кант
На мой взгляд, эта цитата очень подходит программистам. По сути, программист – это ведь не просто специалист, который хорошо разбирается в технических вопросах. Программист – прежде всего, ремесленник, который каждый день создает код, используя свои знания. Создание хорошего кода невозможно без дисциплинированного применения определенных навыков. А это регулярное применение как раз и есть привычки.
Так уж сложилось, что плохие привычки мешают нам жить и работать, а хорошие повышают производительность, и вообще человек получает больше удовольствия от жизни. Если вы будете прилагать усилия и начнете приобретать и прокачивать полезные привычки, то очень скоро начнете замечать, как становитесь специалистом более высокого уровня. Но и это еще не все, ваши коллеги также быстро заметят изменения к лучшему, и это заставит их самих обучаться и принимать на вооружение полезные приемы. Когда работаешь с кодом в команде, то можно в каждом коммите читать отношение человека к работе.
Итак, пройдемся по восьми полезным привычкам программиста, которые сделают вас лучшим профессионалом.
Вы наверняка сталкивались с тем, что, просматривая очередной участок кода, думаете: «Хм, вот тут я уже делал что-то подобное, но с другими аргументами, и вообще был другой массив данных».
Это должно быть вам звоночком о том, что данный код будет повторяться и в будущем, опять с небольшими изменениям в условиях и данных. Но если вы не обратите внимание на данный сигнал или слишком торопитесь, то, скорей всего, снова напишете алгоритм с нуля, когда в будущем потребуется подобное решение. Постепенно такие алгоритмы будут скапливаться, код – разрастаться, и в итоге вы совершенно потеряете мотивацию делать правки и улучшения в такой лапше.
Поэтому выработайте в себе хорошую привычку следовать принципу DRY («Не повторяйся»). Всегда, когда ловите себя на написании похожего алгоритма, потратьте время, продумайте несколько возможных вариантов с разными сущностями. Организуйте небольшую типовую функцию или даже класс, если алгоритм сложный. Это займет чуть больше времени, чем написание быстрого решения для конкретной задачи, но сэкономит в будущем невероятное количество часов на отладке и тестировании.
Постепенно у вас скопится целая библиотека таких заготовок, и вы сможете легко ими пользоваться в любом проекте.
Программирование в целом и состоит из таких небольших усилий, которые выполняются в процессе работы. Заставьте себя отжаться чуть больше, чем требуется в текущий момент. Тогда вы начнете расти.
Существует еще целый список подобных принципов, которых очень полезно придерживаться. Но, на мой взгляд, DRY – это основополагающий для всего остального в работе программиста.
Большинство программистов, особенно новички, полагают, что их работа сделана, как только код начинает выполнять задачу так, как задумано. Только вот слово «сделана» включает в себя более обширное понятие, чем тривиальное написание кода.
Код работает правильно? Да! Так в чем же дело?
Да, все верно. Только перед тем, как вы перейдете к решению следующей задачи, просмотрите то, что вы написали. От начала до конца. Скорей всего, вы заметите, что некоторые переменные объявлены в неудобном месте и не совсем очевидно, зачем они нужны. Также может найтись слишком длинная строчка, не влезающая в экран, значит, тут нужно подумать, как сделать ее красивее. Либо функция получилась слишком объемной и ее можно разделить на пару частей.
Подумайте о тех людях, которые будут читать ваш код в будущем. Понравится ли им этот код или без пива тут не разобраться.
Сделайте красивое решение, а не просто рабочее. Так же, как у хороших писателей после написания черновика: они по нескольку раз прочитывают свое произведение и выбрасывают ненужные участки, чтобы читателю понравилось, и он схватывал суть без необходимости вникать в лишние детали.
Очень рекомендую прочитать по этой теме «Чистый код» Роберта Мартина. Просветляющая книга, которая должна быть в библиотеке каждого программиста.
Многие программисты склонны фокусироваться на изучении технической стороны своей работы и считают, что бизнес не имеет к ним отношения. Главное – дайте хорошее ТЗ, а дальше я все сделаю в лучшем виде. Только для того, чтобы стать действительно мастером своего дела, вы должны понять, зачем то, что вы делаете, потребовалось бизнесу.
Если очень грубо представить программиста, который работает чисто по ТЗ без понимания сути, то можно привести пример. Водитель автобуса, рядом с которым сидят пассажиры и говорят ему: «Поверни налево, поверни направо, теперь прямо». И вот так пассажиры «ведут» автобус. Но если водитель проявит инициативу и спросит: «Куда нужно ехать?», тогда пассажир может просто сказать: «Едем в город N», и все становится намного проще. Водитель знает конечную точку назначения и может, используя свой опыт, самостоятельно строить маршрут и сам себе говорить, где и как нужно поворачивать.
Как это ни странно, но многие программисты совершенно не утруждают себя пониманием цели проекта. И, с одной стороны, понять такую точку зрения можно, ведь программирование очень сложная ментальная работа. Порой знание своего инструмента занимает такую большую часть в сознании, что на все остальное просто не хватает ресурсов. Вот и выходит, что программисты, как водители в танке без смотрового окошечка, умеют только поворачивать ручки, когда им по каске долбит командир экипажа.
Также понимание бизнес-задачи не даст погрузиться в разработку чего-то совершенно ненужного в данный момент времени. Например, если задача – сделать функцию, которая помогает составлять статистику при прохождении тестов, то, зная, что это не критичная по производительности задача, уже не нужно тратить время на излишнюю оптимизацию и ускорение алгоритма. Все равно это никак не повлияет на конечный результат. Тесты будут запускаться только разработчиками, и только раз в неделю.
Другой пример, если в программе есть функция, которую запускают все пользователи каждый день по нескольку раз, то имеет смысл потратить больше усилий на отработку идеального варианта исполнения этой функции и идеальной доступности ее в интерфейсе. Здесь уже можно не жалеть времени.
Но, согласитесь, с точки зрения программиста, не знакомого с бизнес-задачами, обе эти задачи будут казаться равноценными.
Для лучшего понимания советую прочитать книгу «Начни с Почему» Саймона Синека.
То, что программисту необходимо использовать систему отслеживания версий, думаю, очевидно. Хочу рассказать о другой очень полезной привычке – это делать коммиты как можно чаще и как можно меньшими порциями. При этом добавлять в каждом коммите осмысленные и полезные комментарии.
Часто начинающие программисты и даже более опытные просто в конце рабочего дня делают один пуш со всеми измененными файлами и каким-нибудь бесполезным комментарием вроде «fix issue29». Или же «пофиксил баг в реквесте». Никто по такому описанию не поймет, что было сделано конкретно. А когда придет время сливать такой большой коммит в общую ветку, то владелец репозитория, во-первых, мысленно обматерит ленивого разработчика. Во-вторых, если случится конфликт при слиянии, то велика вероятность, что владелец просто откатит этот коммит и не примет его. Кому охота получить порцию багов от того, что неправильно понял, какое условие оказалось лишним при ручном разрешении конфликтов.
С другой стороны, если вы будете регулярно раз в час пушить свои изменения и снабжать каждый коммит более подробным описанием, так, чтобы в будущем легко, не заглядывая в код, можно было понять, что вы изменили и какие соображения у вас были по поводу этих изменений, вот тогда вы выйдете на новый уровень понимания общей философии написания кода. Теперь вы будете не просто «примус починять», теперь вы станете частью творческой команды и будете общаться со своими коллегами через свои коммиты, так же, как в чате. Это будет осмысленный диалог.
В качестве литературы очень рекомендую прочитать хотя бы первую главу из книги «Git для профессионального программиста» Скотта Чакона и Штрауба Бена. Когда узнаешь, какие чудесные есть функции в Git и на что он способен, тогда остается только коммитить почаще, а остальное все можно уладить нужными инструментами.
Любая работа имеет начало и конец. Эффективность программиста измеряется в количестве часов, необходимых ему для решения определенных задач. Чем быстрее решаются задачи, тем лучше. Это вполне очевидно и не требует каких-то объяснений.
Но есть у этой очевидности другая сторона, которая часто ускользает от программистов, – нужно точно считать время, затраченное на решение. Не то, что вы ощущаете, когда сидите на работе с девяти до пяти вперемежку с котиками и совещаниями. А настоящее время вашей работы.
В самом начале я вырабатывал привычку считать время, просто записывая отчеты о том, что делал в течение дня, и прикидывая примерное время. Уже тогда я примерно вычислил, что эффективной работы у меня выходит только 4 часа из 8.
А затем установил специальные программы, которые считали время автоматически. Сначала я использовал www.rescuetime.com. Благодаря этой программе я увидел, что социальные сети хоть и казались мне незначительной тратой, на самом деле сильно портили мне картину производительности. В итоге я решил отключить доступ к некоторым сайта полностью в рабочее время. Для этого тоже есть специальные плагины в браузере.
Следующий шаг по учету времени потребовался, когда я решил фиксировать точное время работы именно с программным кодом. Для этого я сначала пробовал hubstaff.com. Как оказалось, довольно дорогое решение, если использовать его при работе в команде.
Затем испробовал wakatime.com. И это оказалась та самая серебряная пуля. У этого сервиса есть возможность внедрения во все популярные IDE, а также интеграция с github. В результате можно с точностью до минуты определить, сколько вы провели полезных минут, программируя. К тому же идет привязка к коммитам. Это просто замечательно, когда вы можете увидеть не только сами коммиты, но и узнать время, которое потратили на этот коммит.
Потрясающий сборник рецептов по правильной организации времени и работе над проектами есть в книге «Джедайские техники» Максима Дорофеева.
Как вы уже наверняка поняли – можно бесконечно развивать свои навыки и способности. То, что вы делали год назад, вам может показаться смешным и неказистым с точки зрения вашего нового опыта. У вас, естественно, будут совершенствоваться способы написания сложных выражений.
Но среди всего этого вы должны выработать привычку придерживаться определенных правил. Даже если они вам кажутся не совсем отработанными, используйте эти способы работы повсеместно.
На примере кода: если вы решили использовать определенную схему для наименования переменных или использовать пробелы вместо табуляции, то следуйте этому принципу постоянно. Не нужно каждую неделю пробовать новый стиль и стараться применить новые продвинутые практики. Так вы только сбиваете свою фокусировку.
Проблема в непостоянстве состоит в том, что время разрушает любой программный продукт. Чем дольше над программой трудится несколько человек, тем больше в процессе вносится правок, которые в итоге создают хаос. Если каждый из участников команды не придерживается определенного соглашения.
Так что же нужно делать, чтобы соблюдать принцип постоянства?
Первое, что нужно взять на вооружение, – это придерживаться определенно стиля в коде. В JetBrains редакторах мне очень нравится инструмент, указывающий на качество вашего кода. Раньше меня пугало такое количество предупреждений, но когда начинаешь дисциплинированно следовать советам линтера, тогда код становится понятным и эстетически приятным.
Также изучите литературу по способам наименования классов, методов и переменных. Рекомендую книгу «Совершенный код» Стива Макконелла.
В свое время я читал эту книгу по полчаса вечером, когда все остальные уже уходили домой. Книга была в офисной библиотеке. Буквально через пару месяцев я увидел весь ужас, который я кодировал до этого времени. Пришлось постепенно внедрять новые приемы и проводить рефакторинг.
«Это я поправлю чуть позже». Каждый из нас произносил это про себя, когда сталкивался с каким-нибудь багом у себя в коде или недостаточно верным условием обработки в цикле. И каждый из нас знает, что это «поправлю позже» так и остается потом в коде в виде замечания todo. А когда вы сами встречаете в коде комментарии в стиле todo, это значит лишь то, что кто-то не следует принципу «делай здесь и сейчас». В тот момент, когда был написан этот комментарий, программист, скорей всего, очень хорошо понимает, в чем состоит проблема и как ее исправить. Потому что находится в контексте текущей задачи. Но если вернуться к этому участку кода позже, то будет уже сложнее понять, почему именно потребовалась такая оговорка.
Поэтому примите для себя очень важную привычку – отработать решение с нуля до наиболее полного завершения задачи. Наиболее полное – потому что на сто процентов покрыть все варианты бывает действительно нереально. Но, по крайней мере, не оставляйте место для этих todo-комментариев. Ведь если вы придумали и потратили время на комментарий, значит, для следующего шага – реализации – осталось совсем немного.
Хороший вариант понимания того, что вы действительно закончили этот участок кода, – это создание теста для проверки нескольких входящих условий.
Это, казалось бы, очевидный навык, необходимый любому специалисту, не только программисту. Но, к сожалению, многие забывают про него. Иногда, я спрашиваю у своих знакомых, кто занимается программированием, какие книги они прочитали в последнее время. Часто многие начинают с трудом вспоминать, что же они читали год-два назад. При этом они овладели парой приемов в университете или же на каких-то курсах и пользуются этим все время.
Однако если в такой бурно развивающейся сфере перестать хотя бы раз в месяц знакомиться с новым инструментом, технологией или же интересной концепцией, то через некоторое время можно обнаружить, что вы буквально не понимаете, что происходит в настоящем.
Такое со мной произошло однажды. Я разработал один успешный продукт и некоторое время продавал его. Я, конечно, слышал рассказы про новые фреймворки, но особо не обращал внимания на них. Был сильно погружен в разработку и поддержку своего решения.
Только лишь когда поток клиентов уменьшился, я понял, что мой продукт нуждается в модернизации. И тут я столкнулся с огромным барьером. Раньше я использовать только PHP и очень редко AJAX-функции. А для понимания современных JS-фреймворков React, Angular, Vue мне потребовалось в срочном порядке потратить примерно год времени, чтобы по книгам изучить их. Самое интересное, что если бы я до этого уделял обучению достаточное времени, то мой продукт не терял бы конкурентоспособности. Просто вместо поддержки старых функций нужно было изучить новые и внедрять технологии постепенно, а не в таком авральном режиме.
Даже если вы уверены на все сто в своих навыках, помните, что совершенству нет предела. Не переставайте задавать себе провокационные вопросы. Признавайтесь себе в том, что в некоторых областях у вас недостаточная подготовка или вы не знаете тонких моментов в знакомых вам фреймворках, но вам хотелось бы их узнать. Потратить пару часов и запустить на локальном сервере тестовый вариант прямо с github теперь очень легко.
В таких мелких экспериментах вы будете тренировать свои навыки и вырабатывать все важные привычки.
Одна вакансия, два кандидата. Сможете выбрать лучшего? И так пять раз.
или как мы продолбали свой первый стартап
Привет! Меня зовут Лев Клебанов. Расскажу, как в 2015-м мы с друзьями делали первую в мире платформу для видеочелленджей. Как с нейросетями вместо мозгов мы заработали первые деньги и провели чемпионат мира за 100к деревянных. Обо всём этом ниже.
Итак, 2015-й. Я менеджер проектов и потихоньку схожу с ума от рутины заказов для крупных банков. Вот тут 👇 Может, даже кто-то узнает местечко =)
34 часа без сна, из них 31 час работы – мой антирекорд
Имея кучу друзей-айтишников, логично было замутить какой-нибудь IT-бизнес. Оставалось найти идею. В то время видеоконтент становился всё более популярным, за это я и зацепился.
Что, если создать платформу для челленджей, где можно бросать видеовызовы другим людям?
Тогда как раз жёстко хайпил Ice bucket challenge, где люди на видео обливали себя водой со льдом. Мне хотелось многократно повторить его успех, поставив дело на поток.
Изначально я представлял это с уклоном в треш-контент в духе “смотрите, как я далеко пропрыгал на тазике по лестнице”. TikTok, который спустя пару лет круто раскроет тему челленджей, на тот момент еще не существовал.
Закинул мысль своим друзьям. В итоге нам показалось перспективней сделать платформу, на которой можно устраивать не дичь, а адекватные онлайн-соревнования — самим или под началом каких-нибудь крупных брендов вроде RedBull.
Тогда на пике были шоу вроде “Минута славы”, в соцсетях многие компании проводили свои видеоконкурсы. Но процесс сбора заявок и отбора участников был довольно муторным. По сути, конкурс приходилось пиарить на каждой площадке с нуля, а потом собирать ссылки и ролики участников по всему интернету.
Макдональдс устраивает конкурс на лучшее исполнение песни про булочку с кунжутом.
Мы хотели сделать платформу, где можно запустить челлендж “под ключ”. И что не менее важно, со временем на платформе должна была собраться своя активная аудитория, участвующая в разных соревнованиях.
Идея нам настолько понравилась, что мы сразу решили – её нельзя никому рассказывать, а то украдут! Да даже не будем общаться с потенциальными клиентами-брендами, пока не выкатим работающий продукт!
С участниками челленджей мы тоже не общались – они же и так участвуют в конкурсах, значит и в наш их можно будет привлечь. Вместо всех этих пустых разговоров, ныне зовущихся custdev’ом, мы решили просто начать. Сделать сервис и запустить первый конкурс под нашим брендом – показать, как же всё круто работает.
Just do it, понимаешь?
Это я готовлюсь резко стать долларовым миллиардером
Представление о стартапах у нас было ну очень приблизительное. В духе “Пацаны с универа в Калифорнии собрались и накодили что-то крутое и масштабное”. Да, еще мы слышали, что надо делать MVP. Ну, базовая версия, так ведь?
По работе у всех был плотный загруз, поэтому решили все вместе взять отпуск осенью и улететь на Кипр – у Кирилла там как раз был уютный домик. Цель поездки – сделать MVP.
Предварительно обсудили концепт – это будет сайт и мобильная аппка со списком конкурсов и видеороликами. Ролики можно оценивать как по лайкам, так и по оценкам жюри, также можно настраивать этапы отбора.
Бэкенд решили делать на Django. Для базы данных взяли знакомый нам Postgresql. С фронтендом тоже долго не думали – jQuery тогда еще был на коне. Ролики решили заливать на Vimeo, потому что на YouTube нельзя вставлять свою рекламу.
Оставалось понять, как мы всё это сделаем. Сюрприз-сюрприз: классических frontend/backend/mobile разработчиков среди нас почти не было, поэтому каждый взял тот кусок работы, который хотел.
Слева направо:
Я – менеджер проектов и экс-системный аналитик. Беру на себя руководство и бэкенд.
Леша – еще один системный аналитик. Ответит за Javascript.
Паша – разработчик хранилищ данных. Будет пилить приложение под Android.
Кирилл – айтишник, который ищет себя. Займется аппом для iOS.
Дима – разработчик BI с небольшим опытом в дизайне и верстке сайтов. Ну хоть тут ничего придумывать не надо.
Спасало, что у всех нас был базовый опыт разработки со школы и универа.
Наш высадка на остров выглядела так.
1-й месяц: все сидят разбираются с новыми технологиями. Дима поехать с нами не смог и ваяет дизайн в свободное от работы время. Пашу тоже постоянно дергают по работе, он пытается выживать в стиле “поспим на том свете”.
Павлик работает в режиме многозадачности
2-й месяц.
Паша улетает домой, продолжает кодить оттуда.
Леха проигрывает драку с волной и тоже летит лечиться.
Кирилл к этому моменту понимает, что программирование ему не заходит, и покидает команду проекта.
Дима заканчивает дизайн основных блоков и начинает верстать первые страницы.
Я запиливаю основу бэкенда, ловя дикий кайф от Python и Django. Развернул инфраструктуру в AWS – это такой навороченный облачный хостинг с блекджеком и Джеффом Безосом.
Классно, интересно, но по итогу MVPшка не готова, цель не достигнута.
Один из ранних макетов того, что должно было получиться
Вернувшись в Россию, мы договорились собираться каждую субботу и фигачить плечом к плечу.
История начинала безмерно растягиваться. Играли роль и отсутствие опыта с применяемыми технологиями, и загруз на основной работе, но главная причина – мы делали тонну лишнего.
Так, мы запилили поиск по сайту, чтобы пользователь не потерялся в нашем море контента.
Я делал систему кеширования, чтобы выдержать наплыв пользователей, если мы сразу завирусимся.
А еще у нас была сделана нейросетевая модерация видео для взрослых, чтобы к нам в систему вдруг не залили обнаженку. Переживали, что при ручной проверке не справимся с наплывом участников…
Сколько у нас было к тому моменту роликов на платформе? Ни одного, Карл! =D
Модерировать видео для взрослых? Да легко! Когда видео заливается на S3-хранилище, триггер будит Lambda-функцию, которая с помощью ffmpeg нарезает видео на кадры каждые 5 секунд и заливает их в AWS Rekognition. Если нейросеть выявляет подозрительное, то модератору приходит e-mail и видео ждет ручной проверки. Если нет, то сразу система заливает ролик на Vimeo. Итого: 4 рабочих субботы потрачены с невероятной пользой для бизнеса.
Мы нещадно продолжали жечь свои выходные на проект.
Спустя время из команды отвалился Паша, который делал Android-приложение – не вкатила ему мобильная разработка. Вселенная пыталась сказать нам: “Пацаны, ну не нужно вам сейчас делать аппы, хватит и сайта”. И мы таки вынули беруши с уходом Павлика ¯\_(ツ) _/¯
В общем, прошло 9 месяцев со старта работ – женщина бы уже успела родить. Мы? Делаем MVP.
И тут к нам обращается ОДНА крупная компания. И ей срочно нужно провести видеоконкурс с тысячами участников. И её стандартный подрядчик отказался ей помочь. И по счастливой случайности она вышла на нас.
БИНГО.
Нужно было сделать сайт конкурса плюс всю систему управления контентом, включая подгрузку данных о роликах из Excel-файлов.
Заказчик хотел разместить конкурс на своем домене и с весьма специфичным дизайном. Поэтому речь шла не о запуске конкурса на нашей площадке, а об использовании нашей технологии “под капотом” разработанного на заказ сайта.
И все же мы были в восторге.
Да мы бы даже бесплатно всё сделали, лишь бы проверить ядро нашей системы в действии.
Дима выступал для заказчика менеджером, так как именно с ним изначально завязалось общение. При этом он оставался нашим дизайнером и верстальщиком. Однако заказчик в упор отказывался принимать, что менеджер может быть еще и дизайнером. Пришлось нам попросить одного друга (который вообще-то программист) посидеть на встрече и покивать с умным видом. А делал дизайн в итоге все равно Дима =D
В итоге за 12 дней мы всё сделали и таки подзаработали. В моменте это ощущалось как быстрые деньги. Но в реальности, конечно, они до сих пор самые медленные в моей жизни =)
И все же мы были довольны. Особая гордость – первая созданная нами система проработала более года вообще без поддержки. А когда, наконец, сломалась, я зашел (пароли, конечно же, никто не менял) и поставил на расписание процесс очистки, который ранее забыл включить – все продолжило работать как часы.
Окей, протестили свой бэкенд за чужой счет. А что дальше то?
Я понял, что с нашими бешеными скоростями проект может заглохнуть, не доехав до старта. Предстояло не только доделать техническую часть, но и собственно организовать первый конкурс, заняться его продвижением – задач было еще навалом. Да еще и Лешу так напрягли по основной работе, что ему временно было совсем не до конкурсов.
Я пообещал себе, что точно доведу проект до запуска, а дальше посмотрим. Уволился с работы.
Уехал в тихое место на севере Тайланда, чтобы ничего не отвлекало. И все двигалось весьма бодро, пока я не сел на байк и не сломал ногу.
Я прилетел в Россию, врачи поставили мне внутрь кости в ноге металлический стержень. Возвращаюсь к работе в режиме росомахи.
Платформа уже была почти готова к запуску. Решили, что будем делать конкурс танцев. Ну а что еще может делать человек со сломанной ногой?
Формат — в духе танцев на ТНТ, только онлайн. Танцоры – открытые и отзывчивые люди, поэтому подумали, что привлечь их к чему-то новому будет проще.
Мы хотели заявить себя как международную площадку, поэтому назвали конкурс Street dance planet и решили делать его сразу на весь мир.
Выделили бюджет: 50к на призовые, 50к — на маркетинг и прочие расходы.
Участие для всех бесплатное.
Я оформил англоязычную страницу в синей запрещенной соцсети и русскую в VK. Наконец-то предстояло начать активно общаться.
Я писал танцорам везде, где только мог. Потом в довесок настроил таргетинг. Бюджет и ставки у нас были маленькие, поэтому реклама активно наливала нам людей из бедных стран – в основном из Африки и Азии.
Помимо участников, важно было найти судей для конкурса. Я хотел жюри из разных стран и разных стилей. Первая судья вызвалась помочь бесплатно. Это была хореограф из Аргентины Agustina Cumba, команда которой регулярно ездила на финал Hip Hop International в Америку. Отличный старт!
Также я активно написывал крутым российским танцорам. Моей мечтой было заполучить в состав жюри Алену Двойченкову, которая покорила меня своим бомбическим выступлением на Танцах на ТНТ.
Я написал ей письмо, но две недели ответа не было. Я уже не рассчитывал на успех, как приходит сообщение – Алена с радостью поучаствует. Опять же, человек вызвался помочь нам просто так, от души поддержать бесплатный конкурс для всех желающих. Я танцевал от радости – сорри, тут обойдемся без видео =)
К таким прекрасным девушкам в жюри хотелось добавить какого-то классного парня. А что может быть более мужским направлением, чем брейк-данс? Я раскопал какой-то старый рейтинг би-боев и начал писать всем подряд. Большинство ребят игнорировали меня либо сразу, либо после первых фраз.
И все же Thiaz Lopez a. k.a. bboy Thesis из Америки, который был где-то на 12-м месте этого древнего рейтинга, ответил с интересом. «Так как вы не мои друзья, и я вас не знаю, дайте хотя бы какое-то небольшое вознаграждение – например, 250 баксов. ” Я согласился. Написал в наших соцсетях, что третьим судьей будет Thesis. И тут начали сыпаться сообщения в духе »чегоооооооо??? ВЫ КАК умудрились вообще????!” Оказалось, что за пару месяцев до этого Thesis выиграл самый престижный баттл в мире и был действующим чемпионом мира по брейк-дансу. А я был даже не в курсе =D
В общем судьи для ноунейм площадки получились просто отпад, до сих пор не верится.
В итоге нам удалось собрать 110 видео из 54 (!) стран мира. Было очень обидно, что никто не залил порно — мы же такую систему модерации навернули!
Тем не менее, не все прошли проверку – кто-то присылал групповые танцы, хотя в условиях было одиночное выступление. Кто-то заливал что-то странное. В итоге прошли не все (на ютуб их перенесли, чтобы не потерять).
Победила у нас в итоге девочка брейкер
Уровень выступлений был далеко не топовый – сказывалась небольшая сумма призовых, слабый PR и неизвестность площадки. Но все же поставленная задача была выполнена, мы показали систему в действии. А главное был очень крутой фидбек и от участников, и от судей. Нам писали ребята из Руанды, что у них нет даже зала, они танцуют прямо на улице. Они записали видео на единственный в их компании телефон с камерой и возможность получить обратную связь от танцоров мировой величины было для них чем-то невероятным.
Такие сообщения было очень приятно читать. Очень. Но…
Вроде бы вот оно – мы запустили платформу, которую делали 2 года(!), можно идти продавать. Но мне становилось нехорошо при мысли продолжать.
Я через нехочу немного подергался, пописал брендам и блогерам, которым могло бы быть интересно проводить у нас конкурсы для своей аудитории. Успеха не было, но, откровенно говоря, я и не сильно старался.
Решил взять небольшую паузу – поехал в Будапешт на месяц, где занимался помощью отцу с его научной работой. Одновременно я читал Lean startup и слушал стэнфордский курс лекций от Y Combinator. Ловил один фейспалм за другим. Сколько времени можно было бы сохранить, если бы я узнал все это до, а не после.
Увы, через месяц отторжение к проекту никуда не ушло – я четко осознал, что это просто не мой продукт. Я не тот человек, который участвует в видеоконкурсах и интересуется ими. Ну разве что танцы на ТНТ =D
Вместо того, чтобы создавать что-то, что я считаю важным, я просто попытался поймать тренд и заработать денег.
И это даже не то чтобы плохо. Возможно, если бы мы быстрее получали результаты, мое отношение было бы другим. Но тогда я понял, что просто не готов продолжать этим заниматься. Остальные ребята тоже не горели желанием развивать проект, и в итоге это все просто сошло на нет – сервис мы отключили. The end of the road.
Что можно было сделать иначе? Примерно всё, но вот основное:
Пообщаться с брендами на старте, узнать их проблемы при организации соревнований. В цифрах посчитать, кто и сколько готов платить за решение этих проблем.
Не бросаться в программирование очертя голову, а попробовать сначала провести челлендж “на коленке”. Поговорить с участниками разных конкурсов, узнать их мотивацию, проблемы и впечатления от таких конкурсов. Понять, сможем ли мы собирать сообщество вокруг наших мероприятий, сколько это стоит и какой даёт охват.
Решать проблемы по мере их поступления. Делать разработку только в том объеме, который необходим для текущих потребностей (а сейчас еще многие вещи можно сделать с помощью no code).
Постараться сразу найти спонсоров и PR-партнеров для первого конкурса, чтобы не вкладывать свои деньги в призы и продвижение, либо вкладывать меньше. Мы договорились с крутыми судьями, под такие имена можно было точно кого-то найти.
У ребят все в порядке. Леша вырос до Head of digital transformation в банке. Дима – Head of BI в крупном дистрибьюторе. Паша был главой аналитики в Делимобиле, а теперь в Movavi. Кирилл пошел в офлайн-бизнес и развивает сеть аптек.
Я поехал в Израиль поучиться на лайф-коуча – подумывал сделать IT-продукт в этом направлении, но не случилось. Там же закрепил полученные в стартапе знания, сдав экзамен на архитектора AWS.
Вернулся в Россию и пошел в Яндекс.Погоду продакт-менеджером, чтобы прокачать свои навыки работы над продуктом.
В Погоде мне понравилось. Развивать массовый b2c продукт было куда интереснее, чем пилить один b2b проект за другим, как было на предыдущих местах.
Но желание сделать что-то свое никуда не исчезло, и в 2020м началась новая история – я создал поисковик жилья HomeBro, привлек полмиллиона пользователей и ушел из Яндекса. Про это я уже подробно рассказывал =)
Как вы считаете, актуальна была бы такая платформа видеоконкурсов в 2023ем?