Карьера Kirill Kazakov
21 662

От новичка до разработчика за девять месяцев

История разработчика Human API Остина Такаберри о том, как он самостоятельно научился программированию и сменил работу.

В закладки
Остин Такаберри

Читая любую историю успеха, я непременно изучаю биографию автора в надежде найти между нами что-то общее. Ещё ни разу мне не встречалось стопроцентного сходства, наверное, его нет и у нас с вами. Тем не менее я хочу рассказать, как практически без опыта в программировании я научился всему самостоятельно и стал разработчиком с шестизначной зарплатой, работая полный день. Поехали.

Скрывать нечего

Итак, в средней школе я прошёл курс по VBA (девять лет назад). На первом курсе колледжа немного изучил C, Python, Matlab и Labview (семь лет назад). Учился я на химика-технолога и окончил университет с хорошим средним баллом (три года назад). Вне учёбы программированием я никогда не занимался.

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

Почему я хотел сменить профессию

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

Около года назад, 27 мая, я в очередной раз искал информацию о программах MBA и случайно наткнулся на программы по разработке ПО. Вот оно, подумал я.

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

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

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

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

Цель

Прежде всего, вам нужна цель. Особенно тогда, когда вы пытаетесь учиться, работая полный день. Без какого-то внешнего стимула ваши занятия будут тянуться бесконечно долго. Поэтому создайте внутренний стимул. Сформулируйте вашу цель коротко и чётко, проведите небольшое исследование, чтобы не поставить неоправданную цель. У меня получилась такая формулировка.

За год получить работу разработчика ПО с зарплатой не ниже, чем нынешняя.

План

Обозначив цель, займитесь планом её достижения. Как раз на этом этапе следует прочесть как можно больше историй успешных людей. Да, ни одна из них не впишется в вашу жизнь целиком, но из каждой можно извлечь полезный урок. Свой план я составил, используя, например, сабреддит learnprogramming, форум freeCodeCamp и Medium.

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

В итоге мой план, претерпевший множество изменений, приобрёл вот такой вид.

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

Довольно просто для начала. Своё обучение я решил построить вокруг программы для разработчиков от Google и поэтому начал с Udacity CS101, рекомендованного вводного курса.

Месяц первый — Udacity CS101, Harvard CS50

Как только я со всем определился, меня охватила эйфория. По возвращении домой с работы я сразу начинал писать код и сидел до самой ночи, в том числе и по выходным. В Udacity CS101 есть замечательная шкала прогресса, которая послужила неплохим мотиватором. Я отмечал свой прогресс каждый день, преодолев 75% программы за десять дней. Последние 25% дались мне не так легко, эта часть была нацелена на повторение. На весь курс у меня ушло 20 дней.

Занимаясь по Udacity CS101, я налёг на чтение сабреддита learnprogramming. Там я вычитал, что для разработчика-самоучки, который хочет сменить работу, очень важно быть активным в сети. Используя своё реальное имя, я создал новые аккаунты на Twitter, Reddit, Stack Overflow, Medium и Quora, чтобы нарастить присутствие в интернете.

Вместе с тем я отказался от Instagram, Facebook и чтения сабреддитов, не относящихся к программированию. Телефон я проверял только на наличие новостей и записей, связанных с кодом. Так я не сомневался, что следую лучшим обучающим методикам. Как-то раз я наткнулся на программу Harvard CS50.

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

Месяц второй — Harvard CS50, Linux, freeCodeCamp и первый семинар

К середине месяца я разделался с CS50. Не стану много рассказывать о своём опыте, ему я посвятил отдельную статью. В двух словах: программа великолепная, рекомендую. Дэвид Малан — блестящий лектор, сам курс полон вспомогательных материалов. Занятия начинаются с языка C, затем идёт Python, следом — веб-разработки. Расписание очень насыщенное. Обязательно попробуйте.

Окончив курс, я решил установить на свой Dell XPS 15 две ОС — Windows и Ubuntu. Выходные выдались тяжёлыми — я напутал с разделом диска и едва не угробил ноутбук.

Желая освоить работу с командной строкой, я полностью перешёл на Ubuntu, что в определённом смысле дало свои плоды, хотя многое ещё предстоит изучить.

Для самоконтроля я принял вызов «100 дней кода». Также очень важно документировать свой прогресс. Продвигаясь по чуть-чуть каждый день, вы вряд ли заметите улучшения. Имея же под рукой какие-то записи, вы поймёте, что за последние пару месяцев немалого достигли, и желание продолжить работу станет только сильнее.

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

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

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

Как раз в то время внутри меня зрела неопределённость — предстояло решить, разработчиком какого ПО я хотел стать.

Свой выбор я остановил на веб-разработке, потому что мне казалось, на таких специалистов высокий спрос. Кроме того, я располагал множеством обучающих онлайн-источников. Определившись с направлением, следовало наметить дальнейший план обучения. Тут я положился на мнение окружающих: прикинул, разработкой каких приложений мне бы хотелось заниматься и что мне для этого нужно знать. Выбор сузился до двух курсов — Odin Project и freeCodeCamp.

Руководитель еженедельных семинаров, которые я посещал, знал Ruby и хотел заниматься проектами на этом языке, и во многом подтолкнул меня к решению поставить всё на Odin Project. Но через пару дней я передумал.

Это один из минусов самообучения — вечером ты уверен в своём выборе учебной программы, а на утро неприятно удивлён вчерашним решением. Оказалось, Ruby теряет популярность, в чём я убедился, сравнив число вакансий с Ruby и JavaScript.

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

Месяц третий — YDKJS, фронтенд на freeCodeCamp, React

В качестве дополнения к программе freeCodeCamp многие рекомендовали книгу «Вы не знаете JS» Кайла Симпсона, поэтому я взялся и за чтение. Несколько глав, правда, пришлось перечитать, так как книга оказалась не из лёгких. Тем не менее она послужила отличным подспорьем в работе и помогла разобраться в тех элементах JavaScript, о которых я слышал, но к которым боялся подступиться из-за сложности.

Так или иначе, я завершил часть, связанную с фронтендом. Формат чеклистов и примерное время на выполнение задания здорово подстегнули меня писать быстро. Мне также не терпелось приступить к обучению работе с React, фреймворком для создания интерфейсов. Вместе с тем в моих проектах фактически отсутствовал стиль — я делал всё возможное, чтобы выполнить «требования заказчика» и ничего кроме.

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

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

Cходу разобраться в React у меня не получилось. От кого-то я услышал, если React не идёт, то ты просто недостаточно хорошо понимаешь JavaScript. К сожалению, тогда на примете не оказалось хороших обучающих программ (теперь их наберётся сотня). Я снова вернулся к чтению «Вы не знаете JS», но толком так и не продвинулся.

Месяц четвёртый — freeCodeCamp React, CodeClub, начало курса по бэкенду на freeCodeCamp

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

В то же время моя группа на семинаре решила отказаться от Ruby в пользу JavaScript. Первым нашим полноценным проектом стал сайт для наших встреч CodeClub.Social.

Я, например, используя React и Meetup API, разработал страницу для записи на три предстоящих занятия. Было немного сложно переключиться с заданий на freeCodeCamp, но такую возможность я упустить не мог. Я был рад поработать над проектом в небольшой команде. Наш сайт также помог мне разобраться в Git и Github. Месяц ещё не подошёл к концу, когда я приступил к секции бэкенда на freeCodeCamp.

Месяц пятый — с бэкендом покончено, Yeggle

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

Мне в голову пришла идея — написать приложение на Node, которое хранило бы в своей базе данных случайные ссылки на изображения с Imgur и по требованию пользователя выдавало определённое им количество случайных изображений из базы.

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

Закончив, я был ужасно горд собой, хотя приложение и выглядело жутко. Зато работало. На freeCodeCamp я учился определять, какие проекты мне по силам, и наконец-то почувствовал, что готов писать полноценные приложения, которыми не стыдно было бы поделиться и вложить в портфолио.

В поисках нового кафе я часто пользовался Yelp и Google Maps, чтобы ознакомиться с отзывами. А что если сделать приложение, которое объединило бы отзывы с этих платформ?

Так появился Yeggle. При разработке я использовал Node, Express и React, а ещё API Google Maps и Yelp. Да, была пара препятствий, которые, казалось, мне преодолеть не по силам, но я справился и остался доволен проделанной работой. Я опубликовал приложение на Reddit, но никто не обратил на него внимание, что немного меня расстроило. Но я не опустил руки.

Месяц шестой — StockIT

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

Тут я вспомнил про одну игру: на экране выстраивается график Dow Jones, а у вас есть одна возможность купить и продать акции. Задача — обойти рынок. Я задумал создать похожую игру, только вместо рынка противником будет самообучающийся алгоритм. В результате появился StockIT.

На Pandas и Scikit Learn я прослушал пару видеокурсов о самых разных техниках машинного обучения. Сначала я собирался задействовать продвинутые методики, но затем осознал, что для этого требуются большие базы данных и много времени.

Вместо этого мой выбор пал на простую модель линейной регрессии. Я предполагал, что самой сложной частью станет как раз машинное обучение, но не тут-то было. Самым сложным оказалось совместить работу библиотек D3 и React, так как обе пытались контролировать DOM. Наладить их работу мне удалось с помощью других библиотек, при этом меня не покидало ощущение, что код слишком раздут. В итоге я использовал D3 для генерации SVG, а React оставил для DOM.

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

Месяц седьмой — jobSort() и подготовка к поиску работы

Едва закончив StockIT, я приступил к реализации другого проекта — доске объявлений, на которой были собраны вакансии с таких сайтов, как Stack Overflow, Github и Hacker News. Чтобы придать разработке индивидуальности, я решил добавить фильтры — пользователь мог сам выбрать область, в которой хотел бы работать, и определял степень своего желания. Замысел получил название jobSort().

Приведу пример: скажем, я ищу работу, где требуется специалист, знающий JavaScript, React или Python, и хочу работать с JavaScript и React, а на Python мне всё равно. Таким образом, я даю JavaScript и React три балла, а Python — один. И получаю соответствующую выборку.

Над этим проектом пришлось попотеть и пару раз даже сменить курс, но я остался доволен результатом. При создании приложения я задействовал React, Node, Express и MySQL. Опубликовав проект на сабреддите cscareerquestions, я получил 650 просмотров, затем мою запись удалили, так как в этом разделе размещать персональные проекты запрещено. Из-за возникших проблем я провозился с jobSort() большую часть месяца.

Как-то раз мы с приятелем по семинару решили выпить кофе. Тогда он посоветовал мне не мешкать и искать работу. Я и до этого наталкивался на подобные рекомендации в интернете. Но у меня же был план. Однако приятель посоветовал мне отложить его в сторону и начать поиски, что я и сделал в следующем месяце, собрав портфолио и написав резюме.

Месяц восьмой — отладка, поиск работы

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

На сайте нашего семинара я добавил поддержку флексбоксов, чтобы улучшить отклик, а также обновил графический интерфейс мобильной версии jobSort(), проведя тестирование с помощью Mocha, Chai и Enzyme. Над последним пришлось поломать голову.

К концу месяца я разослал 63 заявления, как бы оценивая самого себя: хороши ли мои портфолио и резюме? Если да — над чем следует поработать, чтобы как следует подготовиться к собеседованию? Сначала я размещал объявления на Hacker News: Who is Hiring и сайте Indeed. Для HN я использовал jobSort() — так легче выделить технологические компании. На Indeed я оставлял заявки на работу в предприятиях, не связанных с ИТ — просто хотел узнать, перезвонят ли мне вообще.

Сперва я делал быструю рассылку, не вдаваясь в подробности ни в резюме, ни в сопроводительном письме. Затем всё-таки я решил рассказать о себе поподробнее и сразу отправлял письма прямо в компанию, а не на сайт. Такой подход оправдал себя.

Всего за месяц я получил пять звонков — три из них от компаний, разрабатывающих ПО.

  • Подряд в отделе интеграции разработки и эксплуатации в одной дотком-компании. Сюда же отнесём и отладку продукта.
  • Место в развивающейся компании по анализу продуктов питания.
  • Должность в меру большом и успешном стартапе, недавно приобретённом крупной корпорацией.

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

В сети только ленивый не писал: на старте от начинающих разработчиков никто не ждёт чего-то особого. Главное — любить своё дело и желание учиться. Легко, мотивации у меня хоть отбавляй. Звонки же дали мне понять: разработчик-любитель никому не нужен. С первого рабочего дня от вас ждут чёткого понимания того, чем вы занимаетесь. Итак, усвоил я следующее.

  • Будь готов повышать отдачу с первого дня.
  • Будь достаточно уверен, чтобы убедить в своей готовности работодателя.

Месяц девятый — ночные смены, Redux, волонтёрство, настоящее собеседование

Тут мне пришлось нелегко. 40 дней я работал в ночную смену — шесть дней в неделю, 12 часов в день, с пяти вечера до пяти утра. Я понимал, что с таким графиком много не сделаю, но у меня была цель, и я хотел достичь её, потому не мог себе позволить выпасть на целый месяц.

Сперва я переписал jobSort() с использованием Redux, что, к моему удивлению, оказалось не так сложно. Честно говоря, с этой библиотекой я разобрался, только когда начал ею пользоваться: ни подкасты, ни статьи не помогали.

Мне действительно пришёлся по душе поток данных, который создаёт Redux, поэтому я с удивлением замечаю нынешнее недовольство библиотекой. Для категоричных заявлений опыта у меня маловато, но от редюсеров я просто в восторге.

В дополнение ко всему этот месяц был полон волонтёрской работы. Я намеревался сделать свой первый вклад в проект с открытым исходным кодом — не в какой-нибудь, а в React. И пусть он был бы небольшим, я всё равно решил попробовать.

Для начала я проштудировал все официальные документы, а затем погрузился в базу кода, пытаясь отыскать неполадки. Чтение документов оказалось весьма полезным занятием. И всё же довольно быстро я смекнул: серьёзных проблем в React не так много, да и те живо расхватывают.

На одном из семинаров Энтони обратил моё внимание на Downshift, виджет автозаполнений, созданный Кентом Доддсом. Наконец-таки идеальный проект. Мало того, что я неплохо разбирался в подобных вещах — виджет Доддса оказался достаточно сложным, и его предстояло доработать, несмотря на чистый хорошо отлаженный код. К тому же в добровольцев, готовых помочь, набралось немного, да и сопроводитель был просто прекрасным. Downshift здорово помог мне с решением некоторых проблем jobSort().

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

Они искали программиста с таким же набором навыков, как у меня — React, Redux и D3. Большую часть времени я рассказывал о своих разработках и причинах принятия того или иного решения. В итоге они пригласили меня на настоящее собеседование. Моё первое собеседование в качестве разработчика.

Так как от плана я отошёл, то и к собеседованию толком не подготовился, тем более, работая в ночь, выспаться было невозможно. Поэтому в офисе я появился с настроем, что работы мне не видать. К счастью, мы не рисовали на доске, а целый час занимались парным программированием. Задание незатейливое, но я сильно нервничал.

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

Сперва я засомневался в собственных знаниях — вспомню ли я всё без того, чтобы куда-то подсмотреть? Когда я понял, что в любом случае не выполню задание до конца, мне стало всё равно, и я спокойно искал ответы в интернете, не оглядываясь на работодателя. Тест я так и не закончил, а в голове вертелось: «Полный провал».

Однако с устной части собеседования я вышел с гордо поднятой головой — программирование я уже завалил, поэтому вёл себя более непринуждённо.

Месяц десятый — приглашение на работу

Таким образом, через девять месяцев и семь дней я получил своё первое приглашение на работу. С одной стороны, я был уверен в своих силах, если учесть: это было первое собеседование, на которое я отправился в качестве программиста. В то же время меня не покидала мысль: а что было бы, не согласись я на первое предложение? Но я нисколько не жалею о своём решении. Я любил программировать и хотел получать за это деньги!

Советы

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

  • Определите, что вас мотивирует и используйте это с выгодой для себя. Мне нравилось визуализировать свой прогресс, а также общаться в разных сообществах. Если у вас нет мотивации, добиться желаемого вам не поможет ничего.
  • Ставьте цели и достигайте их. Я бы сказал, что цели нужно ставить и на год, и на месяц, и на день. Так вы не собьётесь с пути и не будете лениться, думая при этом, что в чём-то продвинулись. Сравнивайте свои успехи за день, за месяц и год с намеченными целями.
  • Посещайте семинары, не задумываясь, готовы ли вы к ним. Да, может быть страшно. Но на деле все очень милые и отзывчивые. Кто-то, конечно, не захочет с вами общаться, но таких немного. И вот ещё: все любят давать советы (прямо как я сейчас).
  • Работайте над проектами с открытым кодом, не задумываясь, готовы ли вы к ним. Поначалу Github вселяет ужас, но в действительности там очень тепло относятся к новичкам. Более того, на Github можно ознакомиться с хорошим кодом и представить свой. Если же вы до сих пор сомневаетесь, можете прочесть мою запись.
  • Подавайте заявления на работу, не задумываясь, готовы ли вы к ней. Этот пункт дался мне тяжело, ведь я считал себя особенным. Я думал: «Зачем мне изучать рынок, я и так соображу, в каком направлении продолжить развитие». Я был уверен, что пойму, когда буду готов к работе. Говорю откровенно — не ждите, такой момент не настанет. Поэтому начинайте искать место прямо сейчас. Конечно, не стоит сходить с ума и отправлять заявки в 300 компаний, когда вы даже не усвоили неопределённые циклы. И всё же лучший ориентир для развития дают изучение рынка и попытки найти работу.

#карьера #образование

{ "author_name": "Kirill Kazakov", "author_type": "editor", "tags": ["\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435","\u043a\u0430\u0440\u044c\u0435\u0440\u0430"], "comments": 76, "likes": 62, "favorites": 155, "is_advertisement": false, "subsite_label": "hr", "id": 38420, "is_wide": false, "is_ugc": false, "date": "Tue, 22 May 2018 10:54:22 +0300" }
{ "id": 38420, "author_id": 127882, "diff_limit": 1000, "urls": {"diff":"\/comments\/38420\/get","add":"\/comments\/38420\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/38420"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199121 }

76 комментариев 76 комм.

Популярные

По порядку

Написать комментарий...

Комментарий удален

12

Я тоже решил научиться. Могу я у Вашей собаки проконсультироваться? Попрошу её моим ментором быть?

Ответить
23

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

Ответить
3

Мамой клянешься, что гарантирован?

Ответить
35

У нас уже тысячи историй успеха, выпускники нашей собаки работают в Google, Apple, Amazon...

Подробнее - спросите у Аяза.

Ответить
3

Я собака

Ответить
4

Блин, не заходил неделю. Пикабу давно выкупил сайт vc.ru ?

Ответить
3

Я Пикабу

Ответить
2

Отличны йпост!

Ответить
8

Кому лень читать: чувак "нащупал" дело по душе, поставил промежуточные цели, упорно к ним двигался и в итоге нашел работу. Вместо программирования можно подставить любое "ремесло". Молодец короче.

Ответить
7

Норм, у меня так знакомая замуж вышла

Ответить
–1

можно поподробнее )?

Ответить
3

Что-то в комментах снобов дофига.

Разве ИТ-это не самое свободное сообщество где люди могут говорить на равных и помогать друг другу (github, stackoverflow и тд)?

Ответить
9

Это ИТ-Россия. Мир токсичных взаимодействий. Завышенное ЧСВ надо кормить каждую секунду.

Ответить
3

На vc дофига снобов? Да ладно?

Ответить

Комментарий удален

Комментарий удален

0

Нет.
Этот сайт не про ИТ

Ответить
3

Я думал речь пойдет о программисте, а он оказывается больше по фронтенду веб-приложений!

Ответить
4

Фронтенд программисты уже не программисты ?

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

Ответить
4

Для начала нужно дать определение "программиста". Вот, допустим, пишу я низкоуровневые утилиты для быстрого анализа трафика и поиска узких мест в реализации http/http2 одной компании. Т.к. приходится много отлаживаться из-за неопределенного поведения сэмплинга в ядре, я несколько раз находил очень странные вещи у этих "программистов". Когда начинаешь им рассказывать про особенности реализации сетевого стэка на мобильных устройствах, то видишь что человек знает что такое http только в общих чертах. Глубина знаний такова, что дальше React/Redux человек не знает ничего. Казалось бы, фронтэндер должен понимать как можно слать данные по сети, а как мы просто греем процессор из-за частых перезапросов и мусора из их js/css/картинок. Ладно бы сеть, но люди даже базовых вещей вроде модели памяти не знают. Для них JS это текст, который раз и показал нужную строчку. Про AST-деревья, парсеры и JIT компиляторы они ничего не знают. Про алгоритмическую подготовку я вообще молчу, люди даже не могут доказать, что сортировка сравнением не может быть быстрее nlogn.

Ответить
2

Ну ты вроде тоже ПО для адронного коллайдера пишешь? У тебя свои сложности у них свои сложности.

Попахивает программистским фашизмом :) Всех под одну гребенку плести

Ответить
1

Ты чота даже не понял, что он написал

Ответить
0

Ну так поясни

Ответить
1

Бэкендщики набежали? :) Хотяб пояснили :) Каждый свою работу уникальной считает

Ответить
–1

А шо вы имеете против бэкенда?

Ответить
0

Мой код, хоть и не большой кусочек, используется на адронном коллайдере.

Ответить
–1

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

Ответить
2

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

Давай дадим определение программиста. Это тот, кто пишет программный код. А повар готовит еду.

Ответить
0

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

Ответить
1

Ашот в придорожном кафе — повар.
Шеф-повар — руководитель, а не готовщик сложных блюд.
Спорить с вами — бесполезно.
А для всего остального есть все остальное.

Ответить
0

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

Ответить
0

Нет, наборщик текста не писатель. Потому что писатель придумывает художественные образы, придумывает художественную литературу. А наборщик текста не придумывает художественных образов и не придумывает художественную литературу.

Кодер — программист. Кодером не может быть любой наборщик текста, любой повар или любой писатель. Чтобы писать код (программный) нужно уметь его писать. А значит нужно быть программистом.

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

Ответить
0

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

Сделать блюдо по рецепту неравно разработать рецепт с нуля. А в рестораны ходят из-за поваров, потому, что повара придумывают рецепты.

А то получается любой человек с книгой рецептов у себя дома поваром становится - это бред.

Ответить
1

Боже какая каша в голове. Одна пишет, что шеф-повар — это тот, который сложные блюда готовит, другой, что повара придумывают рецепты, иначе они не повара.

Друзья, кодер — это программист. Это как солдат в армии. Ему не обязательно уметь водить танк или уметь пользоваться миноискателем. Его дело — идти куда скажут и стрелять куда покажут. Но при этом, он военный, военнослужащий. Он состоит в армии. Он занят в боевых действиях.

Пишет программный код — значит программист. И не важно какой категории, мы о самом понятии спорим. Развели тут сопли илитарности.

Ответить
2

Представляете! Некоторые пилоты не могут собрать турбовентиляторный двигатель! Ай-я-яй )

Ответить
–1

Мастер херовых аналогий в треде! Ай-я-яй )

Ответить
0

У тебя своё направление, у них своё. Фронтендеры на то и не фулл стек. Более того у тебя больше серверные утилиты, а не веб-морды. Это очень разные направления и действительно, фронтендщики про http и ws знают поверхностно, так как считают что они должны отправить запрос и получить ожидаемый ответ. А как устроена передача их вообще не интересует. А если возникают какие либо вопросы и проблемы с http или веб-сервера, сразу делегируют задачу сис-админам и бекэндщикам. Это нормально

Фронтендеры должны быть ближе к маркетологам и ui-дизайнерам, а фронтендщики к архитекторам, к сетевикам и программистов(моб приложений и декстоп).

Ответить
1

А если возникают какие либо вопросы и проблемы с http или веб-сервера, сразу делегируют задачу сис-админам и бекэндщикам. Это нормально

Ох, не работали вы с фронтэндерами. Знакомый товарищ отбивался ссаными тряпками от фронтэндеров, которые хотели переписать все с Java на JS. Такой цирк и кони был, а ведь за пределами России нельзя просто взять и сказать, что человек долбоеб.

Ответить
1

Да не, там такое говорят, обычно просто умнее. Ну да такое встречается часто когда надо переписать с .NET, java, python и др на js фронтенд. Но такая ситуация реально нужна когда фронтенд и бэкенд неразделимы и там есть только client side и server side. Но тогда и бэк возможно придётся переписать. Это нормальная практика, в случае тогда, когда это реально необходимо.

Ответить
0

Когда они бывают не разделимы? Я вижу только один случай - когда фронтэндеры пролезли в бекэнд. Хотя нет, второй случай - когда нет денег на разработчиков.

Ответить
0

Хотите пример неразделимости?
Это когда вы пишете весь сайт/площадку на symphony или lavarel, mode revo, не дай бог wp, Zend framework.
А раздельно это когда бэкенд отдельным проектом(rest API) на симфони или ноде, а фронтенд отдельным проект на чем угодно.

Ответить
0

Первый случай легко превращается во второй. На php не писал уже больше 12 лет, не знаю насколько сложно сделать rest api из готового проекта. Лет 8 назад переделывал бекэнд на Django и выносил все в rest api. Сейчас у ребят новая морда и немного изменённый бекэнд. Все работает.

Ответить
0

Ну это правильная схема

Ответить
1

Но ведь в этом много смысла, потому что SSR для React на Node получается очень хорошо.
А вот с Java, я даже не знаю, что делать. V8 в JVM интегрировать как-то.

Ответить
0

Логично, что SSR для JS кода будет работать хуже, так же как JNI модули будут хуже работать в JS(вернее вовсе не будут работать). Странный пример.

Ответить
1

Фронтендеры на то и не фулл стек.

Это которые jack of all trades, master of none?

Ответить
0

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

Ответить
0

А если проект уже запустился и зарабатывает денег - есть возможность нанять нормальных инженеров - специалистов в своих областях.

Ответить
0

Тогда да и рефакторинг потихоньку если бизнес процессы уже отлажена и нужно только развитие.

Ответить
0

Поэтому в моей голове ниша для фулстэка - стартап на начальной стадии, когда надо чтобы что-то кое как работало. Быстро, некачественно, порой без архитектуры, но MVP сваяли и ладно. Беда в том, что такие чуваки потом остаются в компаниях «я тут все с нуля сделал». Другим с ними сложно.

Ответить
0

Это уже проблемы управления.

Ответить
0

Не "уже не программисты", а "еще не программисты".

Ответить
0

Да не, бывают хорошие комплексные задачи где фронтендеры - программисты. Где нужно реально написать что-то интересное на angular, vue или не дай бог react.
А не юзать ужасные cms"ки

Ответить
0

Почему такое отношение к react постоянно? Это какой-то тренд? Снобизм?

Ответить
0

Наоборот. Это целое направление, которое идёт своей своеобразной дорогой. Мне лень объяснять. Если ты прогал на реакте и на других реактивных движках, то поймёшь разницу, если нет, то попробуй

Ответить
3

Клиенты становятся толще, фронтенд, соответственно, сложнее.
Если раньше тру-бэкендеры сторонились фронтэнда в основном из-за рутины и необходимости иметь относительно бесполезные знания (привет, IE6), то сейчас им просто не хватает компетенции, чтобы делать фронтэнд правильно.

Ответить
1

Фронтендеры - это в большинстве своем безграмотные паразиты, которые ушатали интернет. Когда браузер с одной вкладкой жрет целиком одно ядро проца, автор кода сайта - криворукий уебан, а не программист. Отмотайте страницу какого-нибудь живого паблика вк на несколько дней назад и ЛЮБОЙ браузер у вас подохнет. Что там можно было так нахуевертить?

Ответить
2

> Когда браузер с одной вкладкой жрет целиком одно ядро проца

Как часто вы сталкиваетесь с этим? Я сходу могу разве что сайты с майнерами вспомнить.

> Отмотайте страницу какого-нибудь живого паблика вк на несколько дней назад

Во времена, когда фронтенд был равен вёрстке, какой-нибудь здоровый тред на лепре нехило подвешивал любой браузер. Так что же, разработчики браузеров - тоже не программисты?

> Что там можно было так нахуевертить?

Я фуллстек-программист, часто в мои задачи входит оптимизация фронтэнда и бэкенда. Так вот, дичи я повидал везде. В 90% случаев виной был не программист, а задача - сделать быстро и чтобы работало.

Веб дал возможность быстро разрабатывать и доставлять программный продукт широкому кругу пользователей. Можно на ассемблере вк написать (и клиенты и сервера), но это будет мучительно долго, нереально дорого, а по итогу никто им не воспользуется, ведь вместо клика по ссылке пользователю надо будет где-то брать бинарники, устанавливать, вовремя обновлять. Зато будет летать :)

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

Ответить
0

Как часто вы сталкиваетесь с этим?

К сожалению очень часто. Последний раз вчера это был хром (с ublock) и вк.
Я сам бэкендер и бывший мобайл и знаю что есть много нормальных программистов, но к сожалению именно низкий порог во фронт породил кучу пациентов пришедших в айти ради денег. Почти все эти суккес-стори про то как я был черти кем и стал реакт-программистом (раньше эти истории были про жквери) именно от юных фронтендеров.
И я предъявляю именно им, потому что именно с их косяками сталкиваюсь каждый день. Везде есть баги, но такое ощущение, что во фронте на них всем особенно наплевать.
Насчет разработчиков браузеров - все же, как мне кажется, там люди посерьезнее сидят и тестирования больше в отличие от.
Кстати в те стародавние времена, которые вы упомянули эти треды тормозили на совсем другом железе. Сейчас сайты весят чуть ли не десятки мегабайт сжатого жс. Зачем это все?
И, кстати, нахрена нужен везде бесконечный скролл, если им тупо невозможно пользоваться? Я что, один это замечаю?

Ответить
3

Ну блин, опять истории "хотел поднять бабла, увидел инфу про вайти, стал вайтишником" :(

Ответить
3

Нафига 9 месяцев париться, есть же книга бестселлер "С++ за 21 день"...

Ответить
3

Дэвид Малан — гениальный лектор. Посмотрев его лекции на youtube даже человек далекий от computer science может загореться программированием.

Ответить
–14

Во времена далёкие, теперь почти былинные, к ЭВМ - даже близко не подпускали без должной подготовки.
Профессия - так и называлась "Математическое обеспечение ЭВМ".
Что бы кодить физрасчёты - надо было хорошо знать физику (Фортран - так и назывался "формула транслейшен"); что бы кодить прочностные расчёты - надо было пройти полный курс Сопромата; для кода систем массового обслуживания - тервер, матстатистику, и саму теорию мас.обслуживания, и т.д.
Джобс для разработки шрифтов первого мака - изучал каллиграфию, Цукерберг для своего фейсбука - психологию.
А потом компьютеры подешевели, и "от новичка до разработчика" стали готовить в поселковых клубах.
Конечно и дебилов надо куда то пристраивать, что бы они от скуки пальцАми в розетку не лезли, но раньше им поручали картонные коробочки собирать, или комнатные выключатели.
Нынешние "программисты", это типа "операторы ПК".

Ответить
5

Результатом работы Математических обеспечителей ЭВМ не поделитесь? Желательно в виде продаваемого рыночного продукта, а не экспоната Политехнического музея.

Ответить
3

а вы готовы оплачивать цукбергов и джобсов или у вас только тарелка супа в наличии? )

Ответить
0

На эту тему - есть хороший старый мультфильм, как один жадный товарищ захотел сшить несколько шапок из одной овчины.
И ему их - действительно сшили, правда их размер ему почему-то не понравился.
В этом мире, чудес - не бывает.
Если дело сделано "за тарелку супа", оно - сделано ровно на эту тарелку (а может и ещё меньше).
Тот, кто не оплачивает джобсов и цукербергов, их - и не получает.
Это верно хоть для IT, хоть для любой другой отрасли.
В этом мире, чудес - не бывает.

Ответить
3

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

Ответить
–6

В конце 90-х - начале нулевых, девушки на сайтах знакомств писали: "Познакомлюсь с молодым человеком (кроме программистов)."
Меня тогда это немного напрягало, но они оказались правы.
Женщины (как и собаки к слову) - очень хорошо, на природно-животном уровне, чувствуют неуверенность, и неудачливость (и тем и другим этот навык нужен для банального выживания).
Я узнал об этом сайте вчера, и вчера зарегистрировался.
Но почитав ваши убогие (не обижайтесь) каменты, понял, что здесь (как впрочем и на многих других подобных ресурсах), увы - скопилось много обиженных жизнью неудачников, которые повышают свою самооценку минусиками, и прочим детсадом.
ОК, всё понятно, уходим.
Ребята! Займитесь спортом, найдите себе нормальную работу, и главное - заведите себе девушек.
И сразу почувствуете уверенность в себе. (а может и нет)
):-)))

Ответить
1

Вам, пожалуй, надо стать завсегдатаем одного сайта, eba*цензура!!!*.it

Ответить

Комментарий удален

1

Кстати, про Harvard CS50...
Оказывается, он есть на русском на ютубе https://www.youtube.com/playlist?list=PLawfWYMUziZqyUL5QDLVbe3j5BKWj42E5
и на ЯваРаш https://javarush.ru/quests/QUEST_HARVARD_CS50

Жаль, это уже мало кто увидит.

Ответить
0

Всем, привет!! Я сабираюсь стать програмистом. Пасоветуйте книжки пожалуста.

Ответить
2

Начни с учебника русского языка.

Ответить
0

Статья отличная и полезная. Как раз на злобу дня мне :)

Ответить
0

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

Ответить
0

Крутая, мотивирующая статья, особенно полезна будет тем, кто решил за пол года стать программистом.

Ответить
0

Молодец парень, а всякие гикбрэйнсы - для тех, кто не умеет гуглить

Ответить
0

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

Ответить

Комментарий удален

0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Нейронная сеть научилась читать стихи
голосом Пастернака и смотреть в окно на осень
Подписаться на push-уведомления