• Существует ли "карта программиста"? Что и за чем учить?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Нет одинаково эффективного пути для всех и каждого.

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

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

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

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

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

    На первых порах, тестирование будет занимать до 99% времени и сил. Заодно подтягивается синтаксис используемых языков (вообще не важно каких), вырабатывается внимательность, концентрация, тренируется память и пр.

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

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

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

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

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

    Ах да, обложись справочниками по любому инструменту и научись быстро вникать и подхватывать необходимый минимум. Обычно достаточно на 20% владеть инструментом, чтобы решать 80% задач.

    В любом случае я за критерий истины держу платежеспособный спрос.
    Ответ написан
    3 комментария
  • Codewars - поможет ли?

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

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

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

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

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

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

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

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

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

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

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Я в начале 2000-х писал приложение для учета некоммунальных услуг ЖКХ для местного МУПа. Начинался этот проект как тестовое задание для приема на работу.

    Писать можно было на чем угодно, но на тот момент для меня лучшим инструментом казался Clipper 5.x, которым я, как мне тогда казалось, более-менее владел.

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

    Забегая вперед скажу, что автоматизация, в конце концов, удалась, из режима работы 3 человека по 8 часов в день 6 дней в неделю, за 6 месяцев после начала внедрения, вышли в режим 1 человек 2 часа в день 5 дней в неделю... Т.е. 3*8*6*4 = 576 человеко-часов превратилось в 2*5*4 = 40 ч/ч, КПД был увеличен в 14.4 раза.

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

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

    Далее я реализовывал эти пути как разумел и предоставлял тётушкам.

    И о чудо, обычно на этом этапе прорезался дар речи (тётушки, как все нормальные люди, обожают критиковать то, что по их мнению "не так"), и на меня начинал сыпаться поток весьма конкретных и ёмких ЦУ (ценных указаний), которые я подробно документировал и впоследствии претворял в жизнь.

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

    Первые месяцы они вели двойной учет, по старинке в своей огромной бухгалтерской книге, и в программе, и программу проверяли по книге. Через 2-3 месяца они убедились, что в программе "цифры" точнее, ошибки отлавливаются быстрее, меньшими усилиями, и стали уже свою книгу проверять по программе. Через 5-6 месяцев я написал им модуль расчета и распечатки месячного отчета, и они перестали вести свою книгу, просто печатали ее каждый месяц на огромном матричном принтере.

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

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

    Ввод/редактирование данных осуществляется посредством форм, которые, в общем случае, повторяют структуру таблицы БД, за исключением случаев, когда присоединяются поля из справочников.

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

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

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

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

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

    Причем генератор грамотно отрабатывал множественную вложенность, и каждый вызываемый справочник имел полный функционал CRU (Create, Read, Update), включая фильтрацию по столбцам и сортировку.

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

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

    Для реализации этого функционала пришлось пропатчить стандартный грид TBrowse (он применяется для просмотра таблиц).

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

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

    P.S.: когда я мигрировал в веб, через некоторое время я снова вынужден был пройти аналогичный путь, в результате которого родился простенький AJAX-фреймворк на стеке PHP+Smarty+DBSimple+jQuery. Сегодня я всеми силами стараюсь от него уйти, хотя для своих задач он достаточно хорош. Был опыт, когда на шареном хостинге за 5 баксов проект на этом фреймворке со скрипом но держал 30-40 тысяч уников в сутки (после ряда оптимизаций) и достаточно хорошо был защищен от топорного взлома через SQL-инъекции благодаря DBSimple...
    Ответ написан
    1 комментарий
  • Как максимально быстро отслеживать новые проэкты на upwork?

    @hebrian_vasyl
    Веб-разработчик
    Пользуйтесь агрегаторами фриланс бирж
    Нормальные агрегаторы показывают новые проекты с задержкой до 1 минут.
    Ответ написан
    Комментировать
  • Как максимально быстро отслеживать новые проэкты на upwork?

    vicodin
    @vicodin
    Имею некоторый опыт
    Не нужно смотреть на количество поданных заявок, уже год или больше не ранжируются заявки по времени.
    Ответ написан
    4 комментария
  • Кто работает на upwork только по верстке?

    vicodin
    @vicodin
    Имею некоторый опыт
    Работаю не только верстальщиком, но некоторые проекты на чистую верстку в работе имею. Без всяких натяжек на WordPress. Конкуренция низкая, так как хороших верстальщиков на Upwork мало(по той же причине не могу делегировать свой поток заказов - просто некому).
    Сейчас верстаю за 50$/hr.
    Английский может быть начальным, но должен не быть таким, если хочется иметь хороший рейт.
    Ответ написан
    32 комментария
  • Не могу получить заказ на бирже?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Это закат WEB разработки?
    Это рассвет качества web-разработки на фрилансе !
    59d1302d86732308296040.jpeg
    1. Будут больше заказывать "под ключ"
    2. Будут чаще работать через безопасную сделку
    3. Будут работать с теми, кто прошёл тесты на знания направлений на фриланс-ресурсе.

    Т.е., люди будут требовать не подобие рабочего продукта ("поделку за гроши"), а именно рабочий продукт, соответствующий критериям качества и конкуренции на рынке.

    Минимум для веб-сайтов:
    1. Внешний вид (презентабельный и "рабочий" дизайн для ЦА, корректная работа вёрстки),
    2. Удобство (UI/UX),
    3. Скорость обработки пользовательских запросов сервером.
    Ответ написан
    4 комментария
  • Не могу получить заказ на бирже?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    потребность рынка растет еще больше, просто вы выбрали очень конкурентный, низкоквалифицированный сегмент с низким уровнем входа, начните заниматься разработкой для ЭПЛ ватч например, или там какой-нибудь автоматизацию на ардуино, сегментов становится все больше и больше с каждым днем, а также ниш. Не стоит замыкаться, тот сегмент который вы выбрали, очевидно загибается, оставьте его школьникам или индусам, идите дальше, повышайте качество, беритесь за более сложные проекты, на них всегда будет спрос.
    Ответ написан
    Комментировать
  • Не могу получить заказ на бирже?

    @AnneSmith
    самая ленивая
    на сложные проекты конкуренции не будет никогда, потому что количество проектов растет, а количество умных остается прежним, тем более с такими мутными шарманками, как ангуляр

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

    80% "разработчиков" знают "основы html и css" и не в состоянии отладить собственный код, хотя бы даже судя по этой забегаловке

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

    vicodin
    @vicodin
    Имею некоторый опыт
    суд ему дороже обойдется) не парьтесь
    Ответ написан
    Комментировать
  • Про конкуренцию на фрилансе?

    @n12eq3
    жалуются ленивые и остановившиеся в проф развитии исполнители либо пафосные говнокодеры. конкуренция это нормально - была, есть и будет. и если тупо стричь купоны здесь и сейчас то через пару лет можно будет идти подметать улицы - СНГшных крутых пацанов скоро частично попрут с рынка южные коллеги. разговоры про то, что индусы умеют только быдлокод - это не совсем объективная оценка. средний уровень ниже, но он растёт и чисто количественно там потенциальных программистов больше чем вообще население рф.
    поэтому для средне-начальных уровней - да, конкуренция есть и она будет расти в будущем.
    Ответ написан
    3 комментария
  • Про конкуренцию на фрилансе?

    opium
    @opium
    Просто люблю качественно работать
    Надо понимать что хорошие специалисты на тостере не сидят)
    Я вот на тостере для того. чтобы заказы интересные забирать время от времени.
    Если хороший спец работает года 3 то у него просто нет проблем с поиском работы, работа сама его ищет.
    Ответ написан
    20 комментариев
  • Про конкуренцию на фрилансе?

    search
    @search
    мама говорит что я особенный
    • индусы и "хорошие специалисты" - это разные непересекающиеся ниши;
    • заказчики тоже разделяются на новичков (не знающих разницу между индусом за 5 долларов в час и тяжеловесом за 50) и опытных. Чтобы стать опытным заказчиком нужно хоть раз обжечься об индуса;
    • заказчики в основном аматоры, но на том же апворке можно встретить и приличные компании. Компании в основном ищут грамотных спецов и не жалеют денег;
    • если у вас нет отличного профиля с историей заказов, то вам предстоит как-то доказать что вы не индус;



    PS
    Как-то у своей хорошей подруги из Индии спросил "почему индусы такие дряные программисты?". Она ответила что это культурная особенность. В Индии во многих школах запрещено задавать вопросы (во всяком случае так было раньше), поэтому программист выполняет задание настолько, насколько он его понял и редко ставит под сомнение идеи начальника/заказчика. Такие дела.
    Ответ написан
    2 комментария
  • Какой язык востребованнее для фриланса?

    mrusklon
    @mrusklon
    Не получается? Яростно гугли!
    было буквально вчера.,
    английский :)
    Ответ написан
    Комментировать
  • Стратегия входа, путь развития во фрилансе. С чего начать, чтобы стать верстальщиком и php-программистом?

    vicodin
    @vicodin
    Имею некоторый опыт
    сложно будет вот так вкатиться в недофуллстека, раз есть навыки верстки и если хотите изучать пхп, то фокусируйтесь на нем - будете хорошим беком. Либо изучайте js и продолжайте качать вёрстку и будете хорошим фронтом. А когда станете одним из них можете смежную технологию уже развивать и уже тогда становиться хорошим фуллстеком

    По курсам - htmlacademy, pluralsight
    Ответ написан
    Комментировать
  • Стратегия входа, путь развития во фрилансе. С чего начать, чтобы стать верстальщиком и php-программистом?

    opium
    @opium
    Просто люблю качественно работать
    Решение очевидно заходишь на фриланс биржу и смотришь описания работ.
    Ответ написан
    Комментировать
  • На какой фриланс площадке сейчас возможно найти исполнителей?

    vicodin
    @vicodin
    Имею некоторый опыт
    Поставьте бюджет такой, чтобы человек хотел заработать, а не умереть от смеха :D
    Ответ написан
    5 комментариев
  • Почему не рекомендуют начинать с фриланса?

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

    Ну и + то, что вы называете "удалёнкой"(я так понимаю, подразумеваете постоянный контракт на фулл-тайме) можно также найти на фриланс-бирже, тут грань размыта. И тут-то пригодятся отзывы с более мелких проектов в рамках этой биржи.
    Ответ написан
    2 комментария
  • Почему не рекомендуют начинать с фриланса?

    Sanes
    @Sanes
    Процесс обучения будет сильно дольше.
    Фриланс это продажи и менеджмент. Остальное вторично.
    Ответ написан
    Комментировать