• Почему чувствую себя бесполезным и ни на что не способным на первой работе по специальности?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Если ты реально умеешь программировать, т.е. успешно донести до машины мысль, да так, чтобы она ее в точности выполнила, то это очень здорово, но этого категорически недостаточно.

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

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

    Один из вариантов разговорить - это прийти и рассказать своё видение. Люди любят поправлять, вносить коррективы, добавлять деталей. :) Это называется посплетничать. :)

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

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

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

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

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

    Внезапно выясняется, что во всех этих процессах софтскиллы рулят и решают.

    В общем мой совет - качай всё, особенно софтскиллы и отставить кукситься.

    ПыСы: Большинство сотрудников в компаниях, где ты будешь обитать, будут считать тебя то ли кудесником, то ли магом, то ли телепатом, то ли всё вместе. Каждый будет искренне убежден, что ты знаешь все то же самое, что знает он и плюс еще кучу всего, чего они не знают, поэтому будут грузить всем чем угодно. Так же будут искренне верить, что ты обладаешь доступом в пятое измерение, что у тебя времени вагон (т.е. примерно 48 часов в сутках, а может и 72, кто тебя знает то...) и ты многозадачный. В общем будут проявлять все мыслимые и немыслимые формы неадеквата. Это нормально. Через это нужно пройти, научиться во всем это плавать, как рыба в воде. Это здорово прокачивает тебя как личность, если ты настроен на подобный прогресс.

    Если же хочешь просто сидеть в сторонке и кодить, то тебе нужно искать компании/команды, где все айтишные процессы уже выстроены и формализованы, где всю эту работу за тебя уже сделали аналитики, манагеры, лиды. Где ты придешь на готовую архитектуру, с детальным описанием кодстайла. Где тебе будут скидывать посильные таски, продуманные и детально прописанные. Да, такие компании тоже существуют, но их нужно искать, т.к. они пока в меньшинстве...
    Ответ написан
    Комментировать
  • Делимость двоичного числа на N?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Максимальное число для A+B бит = С = 2^(A+B) - 2^B, т.е. для 9 бит это 2^9-2^2 = 512-4 = 508

    Нужно найти все числа от N до С включительно, которые делятся на N без остатка (по сути являются произведением N на индекс цикла от 1 до (C div N) включительно), и проверить, являются ли они суммами не повторяющихся степеней двойки, и если являются, то равняется ли количество чисел в сумме значению A. Т.е. проверяем, все ли A бит задействованы.

    Для данного случая при N = 25, 508 div 25 = 20 (итераций). Нужно проверить является ли произведение индекса цикла на N суммой из A (7) чисел (не повторяющихся степеней двойки от 0 до A+B-1 (8)).

    Числа (степени двойки) можно предварительно вычислить и сложить в массив, и доставать оттуда по индексу.

    Таким образом самое сложное, что нужно написать, это функцию, которая будет проверять, является ли её аргумент суммой A не повторяющихся степеней двойки от 0 до A+B-1.

    Проверять все не нужно, можно прерывать выполнение на первом положительном результате.

    Быстро проверять на степень двойки можно через битовую операцию сравнения И

    Например K = 13 (8+4+1), тогда K & 1 = 1, K & 2 = 0, K & 4 = 4, K & 8 = 8. Т.е. очевидно, что если K & 2^i > 0, то число содержит степень двойки. Ну и останется считать для каждого числа, сколько степеней двойки оно в себе содержит.

    Опять же, сверять надо не со всеми степенями двойки, а с ближайшей меньшей от K, т.е. для K=28, максимальная степень двойки для сравнения будет равна 16. Для K=50 - 32, для К=100 - 64 и т.д.

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

    https://codedump.io/share/hMw9j5suUF41/1/doesbinar... вот беглое решение на JS

    PS: решение нуждается в оптимизации, но это уже самостоятельно :)
    Ответ написан
    Комментировать
  • Как проверить, что знаешь на базовом уровне JavaScript?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Зачастую об этом умалчивают, считают как бы само собой разумеющимся, но кроме знаний собственно языка надо еще уметь выстраивать и реализовывать алгоритмы, отрабатывать структуры данных, и владеть еще огромной кучей сопричастных знаний и навыков.

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

    Если ты знаешь команды JS, можешь рассказать о прототипном наследовании, замыканиях и пр., но не знаешь как работает DOM, Event loop, каррирование и пр. то как бы нет, ты не знаешь языка в должной мере.

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

    Вангую что очень часто будет непонятно почему и для чего делается так и эдак, а что делать, чтобы стало понятно, читай выше...
    Ответ написан
    7 комментариев
  • Как пишутся динамические многопользовательные игры на html5?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Как правильно написал коллега выше, рисовать в канвасе, данные синхронизировать по вебсокетам, всю логику считать на сервере, тут оптимальнее будет сервер на ноде, т.к. он долгоживущий, в отличии от пыхи.

    Выглядеть это может следующим образом:
    1) клиент открывает соединение с сервером по вебсокетам
    2) на сервере создается сущность под клиента
    3) на сервере бесконечный цикл обсчета мира, после обсчета обновленные данные рассылаются клиентам, висящим на вебсокетах, у них, в свою очередь, отрабатывают коллбеки в каждый момент, когда сервер им что-то присылает
    4) если на клиенте происходит какое-либо действие, то уже клиент шлет серверу данные, и на сервере отрабатывает коллбек, который меняет стейт, и эти изменения при следующем обсчете мира обрабатываются, далее см. п. 3, так все участники получают апдейты
    5) при этом чтобы не было лагов, действия пользователя на клиенте рендерятся сразу, а потом перерендериваются в зависимости от того что пришлет в ответ сервер, т.к. там будут проверки, чтобы пользователи не читерили (должны отсекаться невозможные/ошибочные действия)

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

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Делаешь ИП на УСН под 6% до 300 тыр в год + 1% свыше, считаем что 7%, плюс комиссии банка, в целом до 10% в общем и спишь спокойно. Все деньги на счете ИП, за вычетом обязательных платежей и налогов, являются собственностью ИП, и распоряжаться он ими может как угодно.

    Есть еще вариант посложнее - заморочиться и взять не 6% с дохода, а 15% с прибыли, тогда если документально и адекватно/актуально для налоговой сможешь подтвердить расходы официально, допустим от миллиона у тебя расходов 800 тыс., стало быть 15% нужно будет платить с 200 тыс., что намного приятнее, чем 7% с миллиона. Но тут я не уверен, что в эти 15% войдут страховые взносы, как они входят в 6% (нужно уточнять).

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

    Свобода и здоровье - те ценности, которые никакие деньги не компенсируют, тем более малые деньги...
    Ответ написан
  • Как сделать тяжелый импорт из excel 800к товаров?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Сконвертировать XLS посредством скрипта в SQL пакетами по 50к строк и пулять в базу из консоли.
    Ответ написан
    Комментировать
  • Какой клавиатурный тренажер посоветуете?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    ИМХО лучший клавиатурный тренажер всех времен и народов у Шахиджаняна, давным давно когда я этим вопросом интересовался он назывался "Соло на клавиатуре". Вроде нынче существует онлайн версия.
    Ответ написан
    1 комментарий
  • Как преодолеть кризис начинающего специалиста?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Количество мыслетоплива которое запасает организм на каждый день строго ограничено, поэтому весьма наивно полагать, что получится фигачить с раннего утра и до заката и еще сил на pet-project останется. При этом еще очень желательно спать регулярно, качественно и достаточно. А чтобы спать качественно необходимо получать достаточный уровень инсоляции (а с этим уже все не так радужно).

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

    Говнокод был, есть и будет есть во все времена, а бизнесу надо чтобы оно работало, а текучку кадров никто не отменял, поэтому рефакторинг и допилинг это навсегда, с этим надо тупо смириться.

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

    ЗЫ: Про мыслетопливо Макс Дорофеев интересно рассказывает.
    Ответ написан
    Комментировать
  • Могу ли я тратить деньги заработанные на UPWORK не выводя их себе в страну в рубли или валюту?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Для ИП на упрощенке мзда в фонды покрывается из 6% налога, сверх 300 тыр в год налог будет 7%, в любом случае все выплаты в фонды входят в этот налог в итоге. Сюда еще нужно приплюсовать комиссии банков и обслуживание, в среднем это порядка 2-3%, итого получается 10%, зато надежно, стабильно, чисто, бело, спокойно и совесть чиста.

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

    Поэтому лично я категорически не рекомендую страдать херней. Как говорится заплати налоги и спи спокойно, или вали на Кипр, ходят слухи, что там налоги поменьше (правда жизнь существенно дороже)...
    Ответ написан
    Комментировать
  • В какой последовательности читать книги по JS?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    За всю свою практику продолжительностью более 20 лет я прочитал только одну книжку по программированию, это был Фигурнов про программирование на паскале под ДОС, и это было в середине девяностых... С тех пор читаю только документацию и то по мере необходимости.

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

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

    В общем критерий истины - практика и никак иначе.

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

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

    Короче говоря ключевое слово тут ДЕЛАТЬ, а все остальное - лишь вспомогательные элементы.

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

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Я наставничаю в той самой htmlacademy, и частенько студенты приходят, не умеющие программировать от слова совсем. Им курс дается тяжело, приходится их вытягивать буквально за жабры и разжевывать все мелочи, что, в целом, в мои обязанности и не входит вовсе.

    Поэтому перед академией я настоятельно рекомендую на три круга прослушать под запись курсы Zorax Или JavaScript weird parts на ютубе, почитать/послушать Кантора, это раз.

    Прорешать 30-40 задачек на кодварс (я там прокачиваю некоторых своих студентов), это два.

    И вот уже после этого идти в академию, тогда от курса будет максимальный толк и отдача.
    Ответ написан
    1 комментарий
  • Как (и возможно ли) дотянуться до Junior JavaScript Developer в кратчайшие сроки?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Во первых: совершенству нет предела.
    Во вторых: невозможно объять необъятное и впихнуть невпихуемое.
    В третьих: как ты не крутись, а технологии развиваются быстрее, поэтому отставание неминуемо, как следствие приходится всегда чем-то жертвовать ради чего-то более важного.

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

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

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

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

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

    Коммерческая разработка - это, примерно, от 70% времени/сил на дебаг и фиксы, потому что мало где процессы поставлены грамотно. По хорошему до сего дня (а мне под 40) я только одну команду видел, где процессы прям вообще очень хорошо поставлены и мне посчастливилось какое-то время с ними поработать. За эти несколько месяцев я подрос на целую голову. Самостоятельно достичь сходных результатов было бы весьма затруднительно.

    Сам я сменил стек совсем недавно, начал в конце 15 года, и процесс продолжается до сих пор. Сменил я по одной простой причине - во всех моих прежних проектах большая часть логики с бэка уехала на фронт, и прекраснейший jQuery перестал справляться чуть более чем полностью. Он, по прежнему, хорош, но задачи, которые приходится решать, требуют совершенно других подходов. Для себя я выбрал React, но в целом на рынке имеются альтернативы. По моим данным очень большим спросом пользуется Angular 2+.

    Когда говорят о фронтенд разработке, постоянно говорят о технологиях, стеке, но почти никто не упоминает, что не стеком единым... Существенная часть разработки - это, для начала, понять задачу и построить у себя в голове модель. Заказчики бывают разные, от очень толковых, до очень безтолковых. Соотношение первых ко вторым примерно 1% и всё остальное... Т.е. в большинстве случаев тебе скажут минимум, своеобразно, плюс ты это поймёшь по своему. Потом, по ходу пьесы, в самые неподходящие моменты, начнут всплывать подробности, которые: забыли упомянуть; ну это же очевидно, ты же профи; мы сами не знали, это только выяснилось; ну это же мелочи, мы думаем тебе это будет не сложно; а ты не спрашивал; и т.п....

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

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

    Если ты попадешь в команду, где люди будут понимающие, квалифицированные, процессы выстроены, а джуну задачи будут сгружать джунские, то, считай, тебе крупно повезло. Шансов на это примерно 1%. Особенно учитывая, что джуны это обычно студенты лет в районе 20...

    Когда я менял стек, то я тоже был какое-то время 35-летним джуном. С этим ничего не поделать, потому что, внезапно, стек это не просто так, и имеется масса нюансов, которые с наскоку не освоишь. Чтобы все пощупать, попробовать на зубок, понять и осознать требуется время и усилия, иногда много времени и много усилий. Да, весь прежний багаж служит опорой и поддержкой, и там, где настоящий джун будет копаться недели, ты за пару часов по аналогии поймаешь идею и двинешь дальше. Но эти пару часов никто не отменял, а идей которые нужно отловить сотни, если не тысячи...

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

    Даже если тебе попадается практически идеальный проект, внезапно оказывается, что твоя оперативная память это 5-7+-2 объекта, а удерживать в голове одновременно нужно сотни...

    Зачем я все это рассказываю? Затем, что это реальность, которая для джунов не делает исключений.

    Термин "фигак-фигак и в продакшен" встречается повсеместно, т.к. ресурсы (деньги, время, кадры) практически всегда весьма жестко ограничены и ничего ты с этим не поделаешь.

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

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

    Теперь относительно того что делать - если в бэкграунде нет сильных скиллов по алгоритмике и структурам данных (олимпиады по программированию, универский курс информатики), то прям очень сильно рекомендую прокачать. Будучи наставником на нескольких курсах фронтенда я постоянно встречают студентов, которые "вроде бы" знают язык, но затрудняются скомпоновать пару циклов с условиями, вот буквально просто виснут на неопределенное время, причем без результата. Лично я рекомендую кодварс. Своих студентов я прокачиваю именно там. Достаточно прорешать 30-40 задачек, чтобы базовые скиллы ушли на уровень рефлексов и перестали парить мозг. Правда желательно решать это все с наставником.

    Косвенный бонус тут будет в том, что ты привыкнешь решать задачи на JavaScript. Я когда менял стек, поначалу мыслил на PHP, и подобный финт на кодварс позволил мне переформатировать мышление на JS. Вот мой профиль на кодварс как пруф: https://www.codewars.com/users/iCoderXXI

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

    Понять надо настолько глубоко, чтобы легко и просто, с юморком, рассказывать это любой первой встречной бабушке, да так, чтобы та всё поняла... Это вот прям залог успеха в JS, потому что все остальное держится на этих двух китах. В ютубе имеется курс Зоракса (Zorax) и JavaScript Weird Parts, оба про то же самое, первый на русском, второй на инглише. Кантор, безусловно, крут, но эти двое объясняют попроще и понятнее (имхо).

    После этого прокачиваемся в использовании встроенных методов JS, таких как map, reduce, includes, replace и пр. (на том же кодварс)

    После этого нужно прокачаться в ES6+, стрелочные функции, let/const, деструктурирование, рест оператор, классы, промисы, генераторы, async/await, декораторы - без этих продвинутых штук в современных фреймворках ловить нечего.

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

    Потом уже заостряемся на API форм, DOM, AJAX (fetch/axios), вебсокетах, Localstorage и пр.

    И вот только теперь можно переключаться на фреймворки. Проще всего освоить Vue (по слухам), наибольшим спросом пользуются React и Angular, для общего развития так же неплохо бы немного послушать про Ember.JS.

    React только на первый взгляд выглядит простым, на самом деле это только view-библиотека, а в любом нормальном SPA есть много чего еще кроме view, поэтому React всегда идет в компании Redux, Router, и еще целой толпы всего, что тоже придется осваивать, не только с точки зрения API, но и с точки зрения философии (а нахрена оно вообще сдалось?)

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

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

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

    Еще вроде большие компании вроде Яндекса устраивают летнее обучение, с последующим трудоустройством лучших кандидатов, но это не точно.

    Оптимистичный прогноз - 6-12 месяцев плотного фигачинга и ты в тренде.
    Ответ написан
    7 комментариев
  • Как узнать ближайшую станцию метро к определённому адресу?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Станций метро конечное число, я складывал их координаты в базу, а потом по методу гипотенузы вычислял расстояния в попугаях от нужной точки до разных станций и брал ближайшие в определенном радиусе.

    Даже можно без базы решить, будет еще быстрее и более автономно. Даже без бэкенда можно, если на то пошло.
    Ответ написан
    Комментировать
  • Что почитать для «посредственного» js разработчика?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Язык программирования, это инструмент, по типу молотка или кухонного комбайна.

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

    Понятно что инструментом желательно владеть виртуозно. Но одного инструмента категорически недостаточно. Глупо считать, что выучил JS и все, можно покорять вершины. Для начала имеется немалое количество сопричастных технологий, да хоть те же HTML+CSS, DOM, браузеры с их нюансами и API, HTTP, Ajax, Rest, алгоритмы и структуры данных, хранилища, и еще миллион всего.

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

    В общем совет тут такой уже давали, выше, но не объяснили почему. Так вот, надо тупо делать. Набивать руку, так сказать. По мере деланья придется со всем этим зоопарком, так или иначе, познакомиться. Через, примерно, тысячу часов уже в голое сложатся базовые паттерны, что там к чему, как, зачем и почему. Сначала будет "Ну ваще ничего нипаняятнааа", и это нормально. Декомпозируешь большое и сложное на более мелкое и не такое страшное, и делаешь что можешь. Остальное снова декомпозируешь и так далее. И гуглишь, гулишь, гуглишь, гуглишь, гуглишь... Ну ты понял.

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

    ЗЫ: Если не владеешь инглишем в достаточной степени, чтобы свободно понимать устную речь и тексты, то я тебе, в общем то, не завидую...
    Ответ написан
    Комментировать
  • Как найти цепочки пар?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    А еще часть клиентов будет отказываться от ряда цепочек, так-что невозможно найти одну-единственную и вариантов будет уйма.

    В любом раскладе для каждого звена цепочки будет ряд критериев, удовлетворив которые получаем некое множество, в результате применяем комбинаторику и получаем уйму вариантов в каждом случае.
    Ответ написан
    Комментировать
  • Как выбраться из теоретика?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Программирование напоминает сборку сложной конструкции из простейших кубиков лего.

    Раз плаваешь на 6-кью катах, значит мозг вообще пока не настроен на процесс программирования. То ли незачем, то ли еще что мешает настроиться.

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

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

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

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

    Лично я других подходов не ведаю.

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

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

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

    Таким образом я выношу тебе вердикт - у тебя самомотивация ниже плинтуса, поэтому результата нет и не будет.

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

    Может быть тебе просто ничего не нужно от железяки?

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

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

    З.Ы.: Если воли фигачить самостоятельно не хватает и вектора нет, найми наставника, который будет тебя направлять, курировать и выписывать волшебные пендыля от души, стабильно и регулярно. К сожалению мой опыт показывает, что большинство людей без подобной пенделемотивации подобны гордой птице Ёж...
    Ответ написан
    Комментировать
  • 44 года можно ли еще стать востребованным специалистом в IT?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    PHP учить смысла нет, ИМХО.

    Мне скоро 40, программированием занимаюсь всю сознательную жизнь, но долгое время занимался им больше ради искусства. Работал всегда сольно, с мелкими закачиками (по факту занимался всякой чепухой, везде по чуть-чуть и нигде толком), в результате к 34 годам приплыл - мои знания внезапно стали не актуальными. Как только осознал сей бардак, провел анализ, что я делаю не так, выработал план, стратегию и за пару лет потихоньку прокачался до вновь более-менее актуального стека. Параллельно успел много чего в оффлайне.

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

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

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

    Разработка - это весьма обширная и ёмкая в плане знаний сфера, ее просто так с наскоку, увы, не охватить. Тут реально до правдоподобного результата могут запросто уйти годы и миллионы усилий. К тому же все постоянно развивается, примерно каждые пол-года-год требования ужесточаются, поэтому тут постоянно надо прокачивать скиллы, порог вхождения постоянно растет и усложняется.
    Ответ написан
    Комментировать
  • Почему Jquery не парсит JSON массив?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Вообще ниочем вопрос. Ты бы код куда выложил да JSON который отдаешь, да заголовки которые от пыхи улетают, а так что называется телепаты в бессрочном отпуске...
    Ответ написан
    Комментировать
  • React: как правильно загрузить картинку(php)?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    На тег формы вешается onSubmit={this.submitHandler}, в который прилетит агрументом evt. Через evt получаем доступ к userImage. Отправить можно через axios.

    В конструкторе такой фигней страдать, да еще с jQuery это весьма годное извращение. :)

    Вообще PHP с React это не очень сочетание, как только речь зайдет про Server Side Rendering во имя Seo, вот тут и поймешь, как здорово промахнулся с пыхой на бэке.
    Ответ написан
  • Создание простого приложения на react?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Голый JS и даже с голым React это очень-очень-очень мало для построение чего-либо существенного, увы.

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

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