Advertisement
Guest User

Untitled

a guest
Jun 4th, 2018
15,824
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.70 KB | None | 0 0
  1. Я должен писать на эту тему.
  2.  
  3. Написать этот текст меня вдохновили успехи двух 16-и летних подростков из Кишинёва. Оба трудоустроены JS-макаками. Один на ваниле пишет плагины для говноконструктора за 1k$ в месяц, второй за 500$ кодит на реакте. Верю, что через три-четыре месяца к ним присоединится их сверстница из Фалешт, которой я займусь с июня.
  4. Речь идёт о детях из неполных семей, которые вчера закончили девять классов средней школы и живут в нищей Молдове. Что в них такого особенного? Как им это удалось? Ведь на дваче сказали, что программировать это сложно, рынок труда переполнен, а фронтенд так распух от обилия используемых технологий, что жизни не хватит, чтобы выучить все необходимые фреймворки и библиотеки.
  5. Удивительно, как много хуйни о вкатывании в кодинг навыдумывали борщееды и неосиляторы, чтобы оправдать свои неудачи. Попытаюсь развенчать некоторые популярные мифы, рассеять страхи, вдохновить приунывших и рассказать желающим, как просто без задней мысли, регистрации и смс начать зарабатывать деньги, программируя на JS.
  6.  
  7. Делать уроки.
  8.  
  9. Представь, что мне поставили задачу, вместо тебя обучить программированию ребёнка из африки, который всю жизнь пас коров и пил их мочу. Он и читать-то не умеет. Очевидно, что придётся потратить немало времени, создавая базу у этого чувака, прежде, чем ему можно будет что-то рассказать о языках программирования.
  10. Ты можешь возразить мне, что ты умеешь читать, следовательно, база у тебя есть. Но это исключительно твоё субъективное мнение основанное на завышенной самооценке. Просто ты в определённый момент решил, что школа себя исчерпала и ничего полезного в ней нет.
  11. Схуяли ты так решил? Потому что не можешь представить, где тебе в жизни пригодятся квадратные уравнения или ты знаешь отличника Васю, который стал алкашом и никакая школа ему не помогла? Школа сама по себе не решение, а только его обязательная часть. Одно лишь выполнение домашки успех не гарантирует. Что же касается бессмысленных уравнений и задач, подумай о кочках которые напрягаются в спортзалах вовсе не для карьеры грузчика. Прежде, чем ты сможешь принять в свои анальные чертоги разума мощный елдак асинхронного программирования на джаваскрипте, тебе надобно разработать очече задачками попроще, например, из курса школьной математики. В противном случае, никакого удовольствия, только боль.
  12. Сперва, тебе нужно развить навык самообучения и декомпозиции. Ты должен уметь дробить задачи на подзадачи и так до атомарного уровня, пока подзадачи не окажутся настолько простыми, что выполнить их сможет даже имбецил, вроде тебя. Ты должен уметь самостоятельно определять, добывать и усваивать нужную инфу. Ты можешь спросить у гугла “как стать хакером” и получить кучу ссылок на второсортные статьи для умственно отсталых домохозяек, а можешь забомбить его тысячей правильных вопросов и действительно, спустя годы, стать хакером.
  13. Самообучение - билет в твоё счастливое завтра, тот фундаментальный навык, без которого твоя жизнь не будет отличаться от жизни пресловутого таджика-дворника. Ни один, даже самый детальный, самый подробный план, не поможет неспособному к самостоятельной работе человеку. Рано или поздно где-то что-то пойдет не так и неосилятор сломается. Забьёт и решит, что он не предрасположен к делу или это дело - говно и не стоит его внимания.
  14. Любой нищий даун до конца своих дней останется нищим дауном потому, что он умеет лишь те вещи, которым любого другого нищего дауна можно научить за две недели. Рулят не те, которых учат, а те которые учатся сами. Разжёвывают и кладут в рот знания только в начальных классах школы, во взрослой жизни в рот пихают нечто совершенно иное.
  15.  
  16. Дрочить Кантора.
  17.  
  18. Это будет твоим первым учебником по JS, но надеюсь не первым по программированию вообще, хотя он с натяжкой подходит и на эту роль. Так будет сложнее. Читая Кантора, тебе придётся выяснить, что такое HTML и CSS, DOM-дерево, как веб-страничка обменивается запросами с сервером, как работать с дебагером и многое другое. Всё это там есть(точнее, там есть вообще всё необходимое - я это подчёркиваю), но если ты не сталкивался с этими понятиями раньше и плохо себе представляешь, как устроено веб-программирование и программирование вообще, пробираться через каждый абзац учебника будет чертовски трудно. Ну ты попробуй.
  19. Любой язык существует не в вакууме, он работает с файловой системой, что-то читает из базы данных, посылает запросы на сервер, меняет структуру какого-нибудь документа(например HTML) или свойства его отдельных элементов, и т.п. Джаваскрипт может и делает это всё сразу, он оброс огромным количеством возможностей, библиотек и фреймворков. Я хочу, чтобы ты не заблудился и помнил, что в первую очередь, ты учишься программировать, программировать на ванильном джаваскрипте, а всё остальное как бы само собой прирастёт со временем.
  20. Ты не планируешь стать верстальщиком, поэтому учиться верстать не надо. Надо уметь работать с готовой вёрсткой. Это значит всего лишь программно управлять DOM-элементами на страничке через простенький интерфейс.
  21. И ты не планируешь(по крайне мере пока) стать React или Angular разработчиком, поэтому не спеши с изучением фреймворков. Они чуть менее, чем полностью состоят из сложных, незнакомых тебе концепций, призванных решать задачи, проблематику которых ты не в состоянии пока ещё даже осознать. Для этого нужна основательная теоретическая подготовка и практика. Фреймворки это не прихоть разработчиков, которых хлебом не корми, дай себе жизнь усложнить. Фреймворки были созданы в ответ на задачи и проблемы, возникшие у программистов в процессе создания знакомого тебе современного интернета со всеми его веб 2.0 свистелками и перделками. Не зная и не понимая проблем и задач, которые призван решить фреймворк, как ты можешь научиться с ним работать?
  22. Куча неосиляторов обломали себе зубы на попытках изучить какой-нибудь React+Redux, минуя усвоение фундаментальных знаний о языке и практику программирования на нём. Им кажется, что из-за возросшего кол-ва библиотек и фреймворков, вкатиться новичку во фронтенд с каждым годом всё сложнее и сложнее. Этим дебилам невдомёк, что нет абсолютно никакой необходимости учить весь этот зоопарк. Это невозможно, более того - строго противопоказано. Общее правило таково, что нужно учиться разбираться с документацией, а не задрачивать тысячи гайдов.
  23.  
  24. Учиться писать асинхронный код.
  25.  
  26. Скорее всего, тебе ещё не знакомо это понятие, если ты только решил вкатиться в IT. Но я хочу, чтобы разобравшись с Кантором хотя бы на три четверти, ты сосредоточился на написании асинхронного кода и умел его писать с использованием всех возможностей JS. В первую очередь, промисов и синтаксического сахара к ним - async/await. Вот это самое важное. Фреймворки, библиотеки, вся хуйня малафья - это временное. Неизменно одно: взаимодействие с ресурсами, будь то API, DOM или файловая система, происходят асинхронно. Скорее всего, если скрипт делает что-то полезное, а не просто складывает между собой переменные или сортирует массив, то его код будет асинхронным. Хорошей JS-макакой становится тот, кто умеет писать сложный, но внятный асинхронный код, а не тот, кто прошёл все курсы по всем модным фреймворкам. Ты должен научиться ворочать в голове асинхронными конструкциями любой величины и сложности.
  27.  
  28. Всем своим малолетним кентам-вкатывальщикам я даю три одинаковых задания.
  29. ToDo-list с использованием одного лишь jQuery(http://todomvc.com/ в помощь). Но не забывай, что jQuery это вчерашний день и удел быдлокодеров, которые штампуют менюшки и лендинги, а ты стремишься научиться программировать одностраничные приложения(SPA) на многие тысячи строк кода.
  30. Парсер на Node.js с использованием пакетов из NPM, на промисах, обязательно с использованием Promise.all. Вовсе необязательно для этого красноглазить и поднимать себе линукс, хотя какой-нибудь убунту в виртуалке был бы неплохой практикой(и это не так уж сложно сделать). Ноду можно запустить под виндой. В качестве альтернативы можешь запилить бота, который работал бы с любым API(вк, двач - что сердцу ближе). Суть задачи в том, чтобы ты научился строить цепочки из промисов, когда для продолжения выполнения скрипта, нужно дождаться выполнения нескольких асинхронных запросов.
  31. Собственная реализация промиса. Хотя бы просто, чтобы работало, без заморочек с детальной реализацией всего функционала из стандартного объекта Promise. Достаточно сделать только then(возможности составлять цепочки - опционально).
  32.  
  33. Как определить, что ты готов к попытке трудоустройства джаваскрипт-макакой? Можешь попробовать устроиться на работу, если ты а) в состоянии уверенно решить все три задания выше б) осилил хотя бы вводную статью по функциональному программированию в) знаешь основы любого популярного фреймворка г) можешь пройти тест “perfection kills javascript quiz” хотя бы на 10/14(в идеале 13/14). На первый взгляд новичку может показаться, что вопросы в нём притянуты за уши, но на самом деле они призваны обнаружить у тебя понимание или непонимание важных особенностей языка. Я практически уверен, что если ты осилишь собственную реализацию промиса, то и тест сможешь пройти(ровно, как и наоборот). В качестве справочника всё это время, кроме Кантора, можно использовать javascript garden.
  34.  
  35. Ну и так ещё в общем я хочу кое-что сказать.
  36.  
  37. Если ты встретил много незнакомых слов, типа, фреймворка или промиса и испугался - ты это брось. Времени от начала дрочки Кантора до момента, когда ты сможешь написать свой промис или поймешь зачем нужны чистые функции - полгода занятий с нуля для типичного девятиклассника. Это тебе воображаемая шкала для оценки собственных возможностей. Насколько надо быть хренового мнения о себе, чтобы даже не попробовать разобраться?
  38.  
  39. Заведи себе аккаунт на codewars и заглядывай иногда туда, чтобы порешать самому и посмотреть чужие решения. Это особенно важно, если у тебя нет опыта программирования даже в школе на паскале. Дурацкую задачку на валидацию парных скобок (){}[] мне задавали на двух собеседованиях. Терпеть не могу алгоритмические задачки, но их любят работодатели, их бодрое решение однозначно добавит тебе очков на собеседовании, а кроме того, это отличный способ попрактиковаться, когда ты не можешь выдумать себе, чем заняться, а приступить к какой-нибудь сложному заданию не хватает навыка.
  40.  
  41. Не отчаивайся, если что-то не получается, потому что не получаться будет всё. И не жди, что когда-то в твоей карьере наступит момент, когда ты будешь безошибочно набирать идеально работающий код и знать ответы на все вопросы. Всегда что-то будет идти не так, ты будешь много тупить над элементарной хернёй, вообще будешь много тупить и ничего не будет работать - это нормальное состояние даже для опытного программиста, так что - привыкай. Учись решать возникающие проблемы с использованием документации и учись взаимодействовать с опытными разработчиками, которые не против поотвечать на вопросы и помочь тебе. Учись формулировать эти вопросы, чтобы не злить опытных разработчиков своим тупняком. За каждым тупым вопросом стоит лень и нежелание самостоятельно найти ответ, что очевидно для отвечающего. Хорошо сформулированный вопрос, это почти всегда готовый запрос в гугол и решение по первой же ссылке в выдаче.
  42.  
  43. Из книг, после Кантора, рекомендую JavaScript: The Good Parts. Основные источники информации это документация, статьи и ответы на стековерфлоу-подобных ресурсах. Алсо, добро пожаловать в JS-тред в програмаче.
  44.  
  45. Если ты научился писать асинхронный код, освоил Кантора, решил с десяток задач на codewars и вообще выполнил всё из списка выше, и теперь стоишь перед выбором стека, в качестве первого фреймворка для изучения, я бы рекомендовал Vue.js из-за его небольих размеров и документации на русском.
  46. Также настоятельно советую почитать о Redux и RxJS, а особо продвинутым и любопытным задротам об Elm.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement