• Как повысить базовые знаний архитектуры?

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

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

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

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    То о чем Вы спрашиваете, называется Computer Science. Гуглофпомасч. :)
    Ответ написан
    Комментировать
  • Что делать со своей невнимательностью?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Когнитивный ресурс мозга конечен. Оперативная память ограничена и способна удерживать одновременно 7+-2 объекта. Если задач много и приходится постоянно переключаться, то все нормально, так и должно быть.

    Отдельный вопрос - что со всем этим делать?

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

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

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

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

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

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

    Повторюсь. Никаких других чудесных - путей нет и быть не может.

    Хочешь научиться решать задачи - прорешай задачи 1000 часов как можно более интенсивно, хотя бы по 3-4 часа в день, и научишься без вариантов. А нет - так и нет.

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

    А в целом я просто думаю что это не твоё и ты зря себя так мучаешь.
    Ответ написан
    Комментировать
  • Как часто нужна модель MVC?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Всегда полезно отделять мух от котлет.

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

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

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

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

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

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Кароч, Склифасовский, тут много написали коллеги.

    Если ты реально так крут как описываешь, то это уже, нифига, не джун. Это раз.

    За одни и те же требования в разных компаниях готовы предлагать очень разный рейт. Это два.

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

    Соответственно кто тебе мешает хотеть? Только твои страхи и псевдо-рациональность. Потолка нет. А если он и есть, то кто его установил и на каком основании?

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

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

    У многих вакансий не указана вилка, по разным причинам, поэтому новичку сложно ориентироваться в плане, что тут почем. Нормальный рейт мидла стартует от 90к. Это не принято обсуждать и многие эйчары мне не простят, ну да и Бог с ними. Инфа про рейт двух-трех летней давности, соответственно с тех пор инфляция внесла корректировки. Но мы не будем жадничать.

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

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

    Сложность проектов в айти нарастает как снежный ком, поэтому годных специалистов ВСЕГДА будет не хватать, пока машины нас не заменят. Стремись быть годным специалистом, и за тебя компании будут бороться. :) Чуваки которые наивно полагают что уже всего достигли, очень быстро сходят с дистанции... Потом очень сложно наверстывать и догонять. Тут зевать не приходится - слишком дорого.

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

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

    Итого резюме:
    1) Сформируй в голове реальную цифру, которая позволит тебе жить как человеку, обрести самоуважение и стремись к ней с полной самоотдачей. Только помни, сами по себе деньги - просто циферки в серверах центробанка. Реальная ценность денег в тех благах, на которые их пока еще можно обменять. Поэтому мыслить, на самом деле, надо в терминах желанных благ, а не желанной циферки на счету. :)
    2) Продавай себя грамотно
    3) Ходи по собесам регулярно, хотя бы 2 раза в месяц. На начальных этапах лучше чаще.
    4) Постоянно развивайся, никогда не останавливайся на достигнутом.
    5) Мир, труд, жвачка.
    Ответ написан
    Комментировать
  • Как разбираться в огромных исходниках?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Самым твоим большим ограничением, внезапно, будет твоя собственная оперативная память, которая, в моменте, согласно исследований британских ученых, способна удерживать 7+-2 объекта (от 5 до 9 в среднем). Если у тебя объектов для рассмотрения тысячи, десятки тысяч или сотен тысяч и больше - желаю успехов. :)

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

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

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

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

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

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

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

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

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    в obj скорее всего промис, соответственно весь остальной код надо на асинхронный лад переписать
    Ответ написан
    Комментировать
  • Как вы справляетесь с тупняком в программировании?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Когда у меня что-то не получается с ходу, а такое бывает периодически, не смотря на 25+ лет опыта в отрасли, это означает что я либо чего-то недоучел, либо одно из двух. Ну и в целом лично у меня это вызывает дикий азарт по типу "Как так то, у самого меня и не получилось??? Да ну не. А ну иди сюда!"

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

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

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

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

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

    Любой успешный разработчик тот еще джедай. :)
    Ответ написан
    Комментировать
  • Алгоритмы парадигмы и т.д. Как учить?

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

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

    В целом я склоняюсь к тому, что 90% практики и 10% теории - нормальное соотношение для эффективного развития, при условии, что этому уделяется не менее 4-6 часов в сутки.

    Ваши 10-20 тысяч часов для достижения мастерства в конкретной сфере никто не отменял и вряд ли сможет.
    Ответ написан
    Комментировать
  • Расскажите о РЕАЛИЯХ удаленной работы?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    На удаленке с 2006, с 2017 в рамках аутсорсинговой компании на разных проектах.

    Если ты могёшь, то удаленку найти вполне реально, ну и со временем ее все больше.

    Ты ничего не написал про скиллы и опыт, так-что пальцем в небо.

    Работать удаленно с одной стороны комфортно, потому что встал с дивана, сел за комп и ты уже "на работе". Очень здорово экономится время на транспортировку тушки в/из офиса.

    С другой стороны имеется куча нюансов, всё давно описано, владеющий гуглом, да обрящет.

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

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

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

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

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    В общем смотри, дружище, расскажу свой опыт.

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

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

    Тем не менее, если, все же, шанс есть, что ты передумаешь, тогда вот тебе план:
    1) Заполни нормально профиль на линдекине (найди меня и напиши мне, если нужна помощь)
    2) Ходи на все собесы, куда позовут.
    3) После каждого собеса делай сам себе разбор полетов, где налажал, и подтягивай матчасть.
    4) Перестань ныть, что не тянешь - сделай всё, чтобы тянуть.
    5) Перестань ныть, что не взяли - это их проблемы, они профукали шикарного кандидата.
    6) Тупо перестань ныть, нытики никому не нужны.

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

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

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

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

    Если ты реально крепкий мидл, твоя минимальная цена 120 на руки. Вот к ней и надо стремиться. Пока достремишься, твоя цена вырастет до 160+. А теперь прикинь, сколько ты недополучаешь за год. :)

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

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

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

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Оформляешься как самозанятая, платишь 6%, профит.
    Ответ написан
    Комментировать
  • Как в webpack указать пути модулей относительно папки src?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    алиасы фпомасч
    Ответ написан
    Комментировать
  • Как вести документацию для react компонетов?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Документировать надо, в первую очередь, бизнес-логику
    Ответ написан
    Комментировать
  • Какие паттерны существуют для отрисовки ui?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Я как-то писал форму на 300 полей с конфигуратором, тоже всю структура в JSON бахнул, на каждый элемент шаблончик и скриптами собирал страницы.
    Ответ написан
    2 комментария
  • Действительно ли reduce, filter, map и прочие работают медленнее обычного for?

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

    Многие из коллбеков создают и заполняют новый массив. Это всё накладные расходы.
    Ответ написан
    Комментировать
  • Как вам такое решение задачки?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Ой намудрили коллеги. :) Все очень просто, если сортирнуть... :) Если не сортировать, то меньше итераций особо не получится, поэтому таки сортируем и не паримся. :)

    const rangeIt = data => {
      const a = [...data].sort((a, b) => a-b), r = [[a[0], a[0]]];
      for (i = 1; i < a.length; i++) {
        if (r[r.length - 1][1] + 1 === a[i]) {
          r[r.length - 1][1] = a[i];
        } else {
          r.push([a[i], a[i]]);
        }
      }
      return r.map(rr => rr[0] === rr[1] ? rr[0] : rr.join('-')).join(', ');
    }


    вот как-то так :)

    const rangeIt = data => {
      const a = [...data].sort((a, b) => a - b), r = [[a[0], a[0]]];
      const calcRanges = (n, i) => {
        if (!i) return;
        if (r[r.length - 1][1] + 1 === n) {
          r[r.length - 1][1] = n;
        } else {
          r.push([n, n]);
        }
      };
      a.forEach(calcRanges);
      return r.map(rr => rr[0] === rr[1] ? rr[0] : rr.join('-')).join(', ');
    }


    или так
    Ответ написан
    Комментировать