Pull to refresh

Comments 32

Совершенно не ясен вопрос, что начинающему PHP кодеру учить важнее: другой язык программирования с понятным разбором алгоритмов и структур данных или JS, JQuery, MySQL, Laravel.

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

или JS, JQuery, MySQL, Laravel

Вот это отдельно порадовало, тут можно уже говорить о ваших компетенциях. Это настолько разные вещи - а ответ настолько очевиден.
Во первых сначала теория переменные, циклы, условия, типы данных, структуры, ООП. А затем уже инструмент - ЯП. У каждого языка вкупе с направлением (веб, моб., фронт, бэк) - есть свои дорожные карты. И те же фреймворки - это уже up-инструмент, и лезть туда без хорошего знания языка, понимания ООП - смысла не то чтобы нет, он отсутствует полностью. Базы - это нужно учить параллельно.

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

алгоритмы будут выглядеть в разных языках +/- одинаково

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

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

Во первых сначала теория переменные, циклы, условия, типы данных, структуры, ООП

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

Честно говоря не знал, что для освоения фреймвока нужны глубокие знания ООП.

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

Тоже согласен, но это уже уровень ментора

Даже далеко не каждый преподаватель вуза может похвастаться хотя бы уровнем мидла в каком либо языке программирования ( с другой стороны, какому мидлу будет интересно преподавать? )

На самом деле не странный.


РНР действительно скрывает огромное количество деталей реализации от пользователя, который в итоге не знает ни структур данных, ни алгоритмов. Они ему просто не нужны. РНР на 95% — это круд. И из всех структур данных наш джуниор может в течение многих лет обходиться одним только универсальным пхп массивом, а из алгоритмов знать только уайл роу равно муэскюэль фетч эррэй…


И человеку, который учил программирование по академическим учебникам видеть такой hands on подход к программированию довольно странно. Вот это удивление автор и высказывает.


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

Подождите, стоп, правильно ли я понимаю что вы предлагаете согласится с ТС и выбрать путь - изучения джуниором, который кстати сказать не освоил и первый язык еще одно языка, в угоду тому что в другом языке семантика более дружественна для изучения алгоритмов (с сем я конечно же категорично не согласен, ведь то что php скрывает какие-то реализации не является обратно исключающим что эти реализации можно воспроизвести и даже очень наглядно использовать их при необходимости "качественно" изучать алгоритмы), вместо того чтобы потратить ресурсы на более углубленное изучение "начатого" языка?!

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

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

Она безнадежна.

С возрастом происходит некоторый пересмотр приоритетов.

Семья, ипотека и уже вместо простой гонки за знаниями идет оценка зарплат.

С каждым прожитым годом начинает приходить понимания, что шансы пристроиться джуниором все больше стремятся к 0. Вспоминаются слова тим лидов: "Если вы не достигли ничего к Х годам, то ..."

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

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

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

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

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

UFO just landed and posted this here

Кстати что за основные алгоритмы? В PHP же все сортировки встроенные.

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

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

И неужели кто то использует самописные сортировки в PHP?

Обычно все решается cредствами даже не PHP, а SQL.

Самописные алгоритмы сортировки конечно никто, но самописные сортировки, через usort() — сплошь и рядом (при этом если самый примитивный случай освоить ещё могут, то скажем пользовательская сортировка по двум полям уже ставит таких горе-программистов в тупик).


Но в данном конкретном случае даже этого не нужно — [mb_]str_split() / array_count_values().

array_count_values ()

даже не знал про эту функцию.

но после подсчета символов, мы плавно перешли к поиску первого из 4+ символов в строке, вернее к тому, как это сделать без нагромождения if

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

Но вопрос: нужны ли алгоритмы начинающему пых пых кодеру - так и остался открыт

До SQL мы еще не добрались, мне кажется не рациональным туда соваться с околонулевыми знаниями языка.

Хотя кто-то может сказать: зачем вникать в эти циклы и массивы, начинайте сразу с SQL

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


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

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

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

Изучение первого языка программирования в 30+ лет против средних классов школы.

Юношеский максимализм против зрелого принятия решений.

Детская пластичность мозга против закостенелости.

Целая вечность на изучение языков против цейнота в 3 месяца

Ну начинать изучения с Laravel не зная ООП такое себе, знаю ребят которые так делали, ничем хорошим это не кончилось

Знаю ребят которые знают ООП, и пишут на 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 недели выполнить простейшую задачку с точки зрения ментора на вложенные циклы, к примеру, потому что это у вас первый язык программирования или вы совершенно не разбирали алгоритмы, то ментор может решить, что у вас: "отсутствие усидчивости, умения концентрироваться, способности заставить себя просто сесть и сделать назначенное задание" ... и вам придется искать следующего ментора менее требовательного к базовым знаниям.

Sign up to leave a comment.

Articles