Comments 32
Совершенно не ясен вопрос, что начинающему PHP кодеру учить важнее: другой язык программирования с понятным разбором алгоритмов и структур данных или JS, JQuery, MySQL, Laravel.
Какой странный вывод у вас, я бы даже сказал несколько абсурдный. Единственное что верно, так то что нужно читать книги - пока уровень знаний в языке минимальный. Про другой язык - так вообще бред, алгоритмы будут выглядеть в разных языках +/- одинаково - тут проблема в понимании принципов работы алгоритмов, и простите камушек в ваш огород - в объяснении их ментором. Для алгоритмов - проще выписывать на бумаге числовые ряды, векторы матрицы и объяснять по каждой итерации наглядно что происходит.
или JS, JQuery, MySQL, Laravel
Вот это отдельно порадовало, тут можно уже говорить о ваших компетенциях. Это настолько разные вещи - а ответ настолько очевиден.
Во первых сначала теория переменные, циклы, условия, типы данных, структуры, ООП. А затем уже инструмент - ЯП. У каждого языка вкупе с направлением (веб, моб., фронт, бэк) - есть свои дорожные карты. И те же фреймворки - это уже up-инструмент, и лезть туда без хорошего знания языка, понимания ООП - смысла не то чтобы нет, он отсутствует полностью. Базы - это нужно учить параллельно.
Когда я занимался с двоюродным племянником, мы с ним написали небольшую систему отчетов постоянно внося дополнительные фитчи и требования (дада пусть привыкает), сначала это был большой монолитный скрипт, потом вы выделили функции, затем перешли к ООП, далее несколько бест-практик и принципов ООП, я показал пару простых шаблонов, и в процессе даже обратил внимание что он пытает изобразить другие. Я считаю лучшее обучение - это практика, и такая где примеры максимально приближены к жизни.
алгоритмы будут выглядеть в разных языках +/- одинаково
Это для вашего уровня знаний, когда вы уже переросли планку какая разница что не знать и понимаете код на любом языке программирования.
А представьте на своем месте школьника средних классов, который путается в операторах циклов паскаля ... И вы ему даете методичку разбора алгоритма на Java
Во первых сначала теория переменные, циклы, условия, типы данных, структуры, ООП
Полностью с вами согласен, студентка щас увязла в циклах и полном непонимании ассоциативных арреев. Но вот после типов и структур данные учебный план соверненно не ясен - лезть в алгоритмы или ооп.
Честно говоря не знал, что для освоения фреймвока нужны глубокие знания ООП.
Я считаю лучшее обучение - это практика, и такая где примеры максимально приближены к жизни.
Тоже согласен, но это уже уровень ментора
Даже далеко не каждый преподаватель вуза может похвастаться хотя бы уровнем мидла в каком либо языке программирования ( с другой стороны, какому мидлу будет интересно преподавать? )
На самом деле не странный.
РНР действительно скрывает огромное количество деталей реализации от пользователя, который в итоге не знает ни структур данных, ни алгоритмов. Они ему просто не нужны. РНР на 95% — это круд. И из всех структур данных наш джуниор может в течение многих лет обходиться одним только универсальным пхп массивом, а из алгоритмов знать только уайл роу равно муэскюэль фетч эррэй…
И человеку, который учил программирование по академическим учебникам видеть такой hands on подход к программированию довольно странно. Вот это удивление автор и высказывает.
Другое дело что учить сухую теорию тоже бессмысленно. Особенно если она в дальнейшем не пригодится. Надо просто признать тот факт, что программирование из искусства давно уже превратилось в ремесло. Натягиватели тем на Уордпресс не дадут соврать.
Подождите, стоп, правильно ли я понимаю что вы предлагаете согласится с ТС и выбрать путь - изучения джуниором, который кстати сказать не освоил и первый язык еще одно языка, в угоду тому что в другом языке семантика более дружественна для изучения алгоритмов (с сем я конечно же категорично не согласен, ведь то что php скрывает какие-то реализации не является обратно исключающим что эти реализации можно воспроизвести и даже очень наглядно использовать их при необходимости "качественно" изучать алгоритмы), вместо того чтобы потратить ресурсы на более углубленное изучение "начатого" языка?!
Я не предлагаю ни с чем соглашаться :)
Я просто показываю точку зрения, с которой сделанный автором вывод не выглядит странным.
Понятно, что при озвученных целях (джуном к осени) учить другой язык будет бессмысленной тратой времени — мне кажется, я это довольно ясно обозначил. Чтобы говнякать круды, алгоритмы изучать не нужно.
Но вот скажем, если бы цель была указана другая — например "стать программистом" — то я бы даже пожалуй одобрил смену языка. Не потому что пых плохой, а именно в тех целях, о которых говорил автор — меньше императива, больше понимания основ.
Смешались в кучу кони, люди
Да ну столько всего учить, мне бы к осени куда вначале пристроиться джуниором
Она безнадежна.
С возрастом происходит некоторый пересмотр приоритетов.
Семья, ипотека и уже вместо простой гонки за знаниями идет оценка зарплат.
С каждым прожитым годом начинает приходить понимания, что шансы пристроиться джуниором все больше стремятся к 0. Вспоминаются слова тим лидов: "Если вы не достигли ничего к Х годам, то ..."
Безнадежна в плане отсутствия надежд на успешную трудовую деятельность разработчиком. Не может, например, врач, сказать: да зачем мне это все знать, мне бы пристроиться в какую-нибудь больницу.
Ну не знаю, насчет позиции джуниора - если ей удасться зацепиться за хорошего тимлида, то за год тимлид даст ей больше чем почти любой препод в институте за 5 лет - ну тут мы не берем мет-мах или МГУ. Хотя мне тоже кажется сомнительным, что она за 3 месяца натаскается на уровень достаточный для трудоустройства.
Насчет врача: до путинских реформ достаточно было просто посещать все лекции и практические занятия в вузе, чтобы пристроиться на нищенскую зарплату почти в любую больницу - дальше все решало умение вымогать деньги с пациентов.
Сейчас будущих врачей уже начинают конретно иметь на госах, качество знаний получаемых в ординатуре стало много выше ранних интернатур, уровень нового поколения медиков становится несколько выше. Но ситуация та же (если конечно не брать, что то типа СМП или ВМП) пристроился в больницу - уровень твоих знаний нафиг никому не нужен, набрался опыта: если получается раскручивать пациентов на деньги - то обеспечена головокружительная карьера в частной лавочке, если получается строить средний и младший медперсонал плавный карьерный рост на руководящие должности в госучереждениях. Единицы медработников двигают науку: получают кандидатскую, начинают иметь доход с лекций и конференций. Единицы настолько талантливы, что могут эмигрировать на достойную зарплату.
В общем, если есть талант и\или связи, можно сделать головокружетельный карьерный рост, а так пристроился куда-нибудь в больничку, набрался опыта , удвоил доход и для большинства это будет потолок, если не развивать альтернативные(руководящие, финансовые) способности.
Кстати что за основные алгоритмы? В PHP же все сортировки встроенные.
Даже со встроенной сортировкой у нее большие проблеммы: отсортировать массив пар: символ-его встречаемость в строке, по встречаемости символа - было долго за пределами ее понимания.
Механизм поиска данных через хеш ( ассоциативные ареи), похоже мне ей не объяснить, как и временную сложность алгоритмов.
И неужели кто то использует самописные сортировки в PHP?
Обычно все решается cредствами даже не PHP, а SQL.
Самописные алгоритмы сортировки конечно никто, но самописные сортировки, через usort() — сплошь и рядом (при этом если самый примитивный случай освоить ещё могут, то скажем пользовательская сортировка по двум полям уже ставит таких горе-программистов в тупик).
Но в данном конкретном случае даже этого не нужно — [mb_]str_split() / array_count_values().
Студентам для оценки временной сложности алгоритма, было бы полезно написать пару тройку самописных сортировок
Но вопрос: нужны ли алгоритмы начинающему пых пых кодеру - так и остался открыт
До SQL мы еще не добрались, мне кажется не рациональным туда соваться с околонулевыми знаниями языка.
Хотя кто-то может сказать: зачем вникать в эти циклы и массивы, начинайте сразу с SQL
Вычислительная сложность на этом уровне вообще не нужна и только запутает.
Как и алгоритмы сортировки.
Я уже писал выше полный и подобный ответ на вопрос, который для вас всё ещё "остаётся открытым". Вся эта академическая муть только сбивает с толку и не дает получить хоть какую-то отдачу от обучения, убивая мотивацию.
Интересное наблюдение: каждый раз когда на хабре заходит речь про новичков в программировании которые как любой из нас в этой точке карьеры хотят просто начать зарабатывать на хлеб - вне зависимости от текста поста его адски по местным меркам минусуют.
К чему бы это?
Не знаю, сам в шоке ... Я думал читателям будет интересно обсудить когнитивные процессы:
Изучение первого языка программирования в 30+ лет против средних классов школы.
Юношеский максимализм против зрелого принятия решений.
Детская пластичность мозга против закостенелости.
Целая вечность на изучение языков против цейнота в 3 месяца
Ну начинать изучения с Laravel не зная ООП такое себе, знаю ребят которые так делали, ничем хорошим это не кончилось
Это отлично работает. При изучении очень важно научиться быстро получать результат, это поднимает желание учиться. Всякие циклы и алгоритмы без контекста вызывают лишь желание всё бросить.
Я занимался менторством, после основ php быстро переходили к Laravel, там учились делать круды, затем рассказывал про рефакторинг и лишь в конце погружались в тонкости реализаций и как работает фреймворк, какие паттерны использует.
Через 3 месяца ребята были готовы к писанине продакшен кода под присмотром, а через год местами были лучше некоторых программистов с 10+ годами опыта (посмотрите только на ужасный код автора статьи).
В целом, курс надо подстраивать под стажёра, но надо помнить о стремлении к быстрому результату.
Я занимался менторством, после основ php быстро переходили к Laravel,
Сколько времени уходило на изучение основ языка?
Я попытался закрепеть циклы и ассоциативный аррей, через подсчет каждого символа в строке - не поняла.
Дальше думал недельки за 2 закрепить основы языка ( добавить объекты, анонимные функции) через задачку расчитать формулу типа: f = data1 + 3 * data2 - 7 ... заодно может поймет single linked list
И затем перейти к MySQL и по усвоению начать решать тестовые задания для вакансий
Честно говоря рефакторинг и патерны уже далеко за пределами моей компетенции
Реальный пример выучить на джуниора за 3 месяца, конечно, очень обнадеживает - но это уже уровень ментора уровня сеньора
Многое непонятно. Сама суть статьи не до конца ясна и без какого-либо итога.
Сложно согласиться с тем, что с "поиском ментора вряд ли стоит заморачиваться до тех пор, пока вы не достигните уровня студента старшекурсника технического вуза". На собственном примере могу сказать, что думаю перейти из графического дизайнера в Wordpress (PHP) разработчика, но вообще не понимаю даже на данном этапе куда копать с точки зрения потребностей в разработке плагинов, тем и т.п. База PHP и все это изучено, а понимания к чему это всё нужно - нет.
Из этого вытекает согласие с посылом, что "совершенно не ясен вопрос, что начинающему PHP кодеру учить важнее"...
А насчет старшекурсника — это да, заведомая чушь. Я делаю нормального джуна за три месяца асинхронного курса с полного нуля. Главное препятствие при этом — не начальный объём знаний, а мотивация. Вот это реальный бич всех студентов. Из начавших доходят до финала максимум треть. Хотя к их услугам хорошо структурированный курс, куча учебных материалов и консультации по любым вопросам. И именно отсутствие усидчивости, умения концентрироваться, способности заставить себя просто сесть и сделать назначенное задание и являются основными препятствиями по вхождению вайти. А не «наличие уровня старшекурсника».
Спасибо за мысли про "уордпресс". Согласен абсолютно. Создаю сейчас темы простые и легкие плагины в силу своих навыков и столкнулся с тем, что это "разные сущности".
Можно узнать - как вы делает джуна за 3 месяца? У вас какая-то школа?
Я подвизался одно время в htmlacademy. Платят там копейки, так что менторил я исключительно из любви к искусству. Сам по себе курс на четыре с минусом — в целом довольно неплохой, есть отдельные сильные стороны — например, очень жёстко даётся гит (который, с одной стороны, напрямую к РНР не относится, но без которого сейчас с тобой никто даже разговаривать не будет) плюс даёт твердый минимум PHP и сопутствующих технологий — БД, SQL, HTTP, композер и пр. Но при этом и не без отдельных изъянов — есть вещи которые сильно устарели или не соответствуют действительности. И в целом курс не предполагает понимания со стороны студента своих действий, а скорее механического заучивания. Но тем не менее, по завершении студент сдаёт худо-бедно действующий проект, блог или аукцион, в котором приходится применять практически все базовые элементы бэкенд-программирования.
А я со своей стороны, во-первых, старался добиться понимания, объясняя как работает каждая технология, будь то БД, отправка почты или обработка ошибок, а во-вторых дать несколько общих принципов, которые помогают сразу делать правильно. Например
— упор на читабельность кода: форматирование по стандарту, иерархические отступы, именование функций и переменных, отсутствие «волшебных чисел»
— принцип единственной ответственности и слабая связанность. Каждая функция должна быть по максимуму универсальной и делать что-то одно. отделение логики приложения от логики отображения
— работа с ошибками. Никогда не подавлять, уметь читать текст ошибок и гуглить его, не лепить самопальную обработку, единый подход ко всем ошибкам. Понимание, чем режим разработки отличается от боевого
— следование стандартам. Если по стандарту код должен вернуть 4хх или 5хх статус, то никакого 3хх. Если после поста положен 302, то 302 и никаких 200. Если по стандарту положено что сначала идут заголовки, а потом тело ответа, то в коде сначала идут заголовки, а как обычно
— базовая безопасность. SQL, XSS, хэширование паролей, заливка файлов. Важность неукоснительного соблюдения правил безопасности, а не как бог на душу положит
— повторное использование кода, создание собственных инструментов
Причем это всё не в виде теории, а на конкретных примерах.
Спасибо! Я проходил курс от HTMLAcademy по PHP, но несколько лет назад, в целом понравилось, но времени было мало и я не успел сдать проект. Правда сейчас я на тот курс смотрю уже немного по другому, боюсь, что после окончания я бы не осмелился назвать себя Джуном.
С тех пор ушел в WP, делал много сайтов, дорабатывал темы и т.п., но всё как-то несерьезно. Вот сейчас сумбур в голове :) И не PHP-девелопер и не WP-девелопер...
Еще раз спасибо за отзывчивость!
Хотя сам по себе объем курса, если его пройти нормально, вполне достаточный. Это именно уровень джуна — то есть уровень кода, отдельного файла. Соответственно, уровень мидла — это модуль, а сеньора — приложение.
Сложно согласиться с тем, что с "поиском ментора вряд ли стоит заморачиваться ...
Я какую ситуацию пытался раскрыть: "хорошо структурированный курс, куча учебных материалов и консультации по любым вопросам" у каждого ментора расчитан на определенный багаж базовых знаний.
И если вы не в состоянии за 2 недели выполнить простейшую задачку с точки зрения ментора на вложенные циклы, к примеру, потому что это у вас первый язык программирования или вы совершенно не разбирали алгоритмы, то ментор может решить, что у вас: "отсутствие усидчивости, умения концентрироваться, способности заставить себя просто сесть и сделать назначенное задание" ... и вам придется искать следующего ментора менее требовательного к базовым знаниям.
PHP репетиторство