Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (4)

Наибольший вклад в теги

Все теги (22)

Лучшие ответы пользователя

Все ответы (19)
  • Как уйти с распутья технологий?

    @0x131315
    Стратегию уже подсказали: найти любую работу, чтобы кушать, и тем самым выиграть время на изучение чего-то, что поможет зарабатывать больше, и тем самым выиграть еще больше времени, и в конце концов изучить то, благодаря чему будешь работать не на зарплату, а на удовлетворение.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @0x131315
    Да, программист - не так романтично на деле, как кажется)
    Потому что, в отличии от всяких мечтаний, в реале вопрос завязан на деньги, а деньги - на время.
    Программист работает на заказчика, заказчику нужно быстро и дешево - отсюда готовые решения и костыли сейчас, с прицелом разобрать это потом (но потом тоже костыли)
    Поначалу все это очень напрягает и срывает башню - нас учили не такому, нас учили стремиться к простому и оптимальному коду, а везде вокруг накручивают дичайшие костыли, и это жесть, но...
    Со временем понимаешь, что лучше сейчас быстро сделать костыль, и забыть об этом, возможно навсегда, чем потратить времени в 3-4 раза больше, но сделать по канонам... Просто у программиста нет столько времени...
    В конце концов в реальности работа программиста не так сложна, и во многом не так красива, как ожидается - по большей части это рутина и разгребание чужого страшного кода, отладка и ваяние своего страшного кода, сожаление о том, что не было возможности сделать хорошо, и радость, когда попадается что-то интересное, или то, что сделал хорошо, качественно
    Как и на любой работе, есть свои светлые и темные стороны. И деньги не так легко достаются - программист за них щедро платит нервами. Как и врач, и любой другой специалист
    Ответ написан
  • Как научить ботов учитывать гравитацию планеты при стрельбе?

    @0x131315
    По поводу скрипта - он странный:
    1) Он работает только для обьектов, которые участвуют в столкновениях.
    2) Он не учитывает дистанцию до центрального тела, только его массу, и работает только для случаев, когда дистанция между противниками в тысячи раз меньше дистанции до центрального тела, т.е. более-менее точен где-то на задворках звездной системы, вдали от звезды. На более ближних дистанциях начинает безбожно врать.
    3) Он наполняет обьектами массив, который не особо нужен скрипту для работы, который нигде не очищается. Это - утечка памяти.
    4) Его можно прикладывать только к одному телу - центральному. Иначе это умножает утечку памяти и сильно расходует процессор. В некоторых случаях его можно заменить триггером. И часто его оптимизируют, вызывая раз в несколько десятков кадров, а не каждый кадр. Также пишут, что указание маски слоя в Physics.OverlapSphere повышает эффективность работы.

    По поводу утечки.
    Не знаю тонкостей unity, не могу сказать точно, насколько она серьезна. Но возможны два варианта:
    1) обьект скрипта пересоздается каждый кадр, и время от времени устаревшие экземпляры собирает сборщик мусора.
    Тогда утечка равна размеру массива помноженному на количество кадров в секунду и на таймаут сборщика мусора.
    При условии, что скрипт используется только на одном обьекте (надеюсь ты не додумался применить его ко всем обьектам?), для 1000 обьектов в сцене, 60фпс и 10 секундном таймауте сборщика мусора, утечка составит 5..50Мб - именно столько памяти игра будет отьедать впустую, никуда не используя, только на один экземпляр этого скрипта.
    Если скрипт применен к 10 обьектам, утечка увеличится до 50..500Мб.
    А если обьектов 1000?
    Так и рождаются игры, которые требуют 16Гб оперативки.
    Это не говоря о бесполезной трате процессорных ресурсов: если по глупости применить скрипт ко всем обьектам, эффективно работать он будет только на одном, но жрать память и процессор будет за всех.
    На 1000 обьектах потребление процессора этим скриптом увеличится в 1000000 раз: 1000 скриптов должны будут каждый обработать по 1000 обьектов.
    Так рождаются игры, которые требуют топовое железо.
    Всего 2 легкие ошибки с одним скриптом (далеко не основным) - и такой потенциал! :)
    2) Используется один экземпляр скрипта, он не пересоздается каждый вызов.
    Тогда обьем массива каждую секунду умножается на фпс, пока массив не забьет всю память.
    И сборщик мусора тут не поможет, т.к. скрипт существует пока существует основной обьект, т.е. пока загружен уровень - всю игровую сессию.
    Для тех же условий утечка в первую секунду составит 0,5..5Мб, и каждую секунду будет увеличиваться на столько же. За час игры утечка составит от 2 до 20Гб, в зависимости от размера структур.
    Утечка процессора останется той же, что и в первом варианте.

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

    По поводу ошибок прицеливания: введи поправки на гравитацию при прицеливании.
    Не факт, что это тебе поможет, все-таки скрипт у тебя кривой, и непонятно правильно ли ты его используешь - каковы максимальные дистанции между противниками, каковы минимальные дистанции от противников до центрального тела, каков размер центрального тела, как создаются снаряды (независимыми или привязанными к тому, кто выстрелил), как задается их скорость (постоянная или относительно скорости выстрелившего), какова скорость снаряда и цели.
    Но самое простое:
    dy=g*t*t/2
    t=l/v
    dy - величина смещения снаряда гравитацией на текущей дистанции
    g - величина гравитации, локальная (вблизи точки выстрела). В твоем скрипте гравитация постоянна, не зависит от координат, и равна массе центрального тела, значит вместо g можно подставить массу центрального тела.
    t - время полета снаряда
    l - прямая дистанция до противника.
    v - глобальная скорость снаряда (относительно мира).
    Ограничения:
    Локальная гравитация неприменима, если дистанция сравнима с расстоянием до центрального тела - там нужен дополнительный учет кривизны поля гравитации. Гравитация в разных точках пути снаряда будет разная, а это сильно снизит точность, особенно на больших дистанциях - на много порядков.
    Прямая дистанция неприменима, если дистанция сравнима с расстоянием до центрального тела - там нужен дополнительный учет кривизны поля гравитации. Дистанция будет не прямой, а дугой, и значит снаряд пройдет больше расстояния, лететь будет дольше, и поправка нужна больше.
    Если время полета больше нескольких секунд, придется учитывать влияние гравитации на скорость снаряда. Снаряд будет ускоряться или замедляться гравитацией, а значит точность с дистанцией начнет быстро падать.
    Если скорость цели сравнима со скоростью снаряда - придется учитывать, что цель движется. Пока снаряд летит в точку прицеливания, быстрая цель оттуда уже убежит, и точность никакой не будет.
    Ответ написан
  • Действительно ли важно правильное питание для мозга программиста (с точки зрения науки)?

    @0x131315
    Интеллектуальным спецам нужно не только правильно питаться, но и правильно жить:
    1 - шум отвлекает, "выключает" мозг. Шум - это радио, телевизор, и родня.
    Нужна отдельная комната, желательна отдельная хата.
    Дети в доме - конец работе, комната не спасет.
    Единственное тихое время - ночь, но она слишком коротка.
    2 - без четкого распорядка дня работа неэффективна, без распорядка внимание с удовольствием поглощают всякие "срочные" дела, мозг ищет любую возможность убежать от работы. С точки зрения эволюции и выживания - работа мозга самая тяжелая по ресурсам организма, вот организм и пытается эти ресурсы экономить, выключая мозг. Сюда же относятся раздражители и рассеиватели внимания - интернет, телефон, родственники.
    Можно тренировать силу воли, но проще приучить себя к определенному порядку действий, например в рабочие часы блокировать средства связи: смарты в беззвучный режим и с глаз долой, роутер режет все, кроме справочных сайтов, справочные сайты можно заменить оффлайн-книжкой. В общем стараться выводить себя в оффлайн. Ночные часы почти автоматом оффлайновые - никто не побеспокоит.
    3 - когда работаешь головой, требуется постоянно учиться, но к концу рабочего дня мозг "протухает", так что учиться нужно в первой половине дня.

    По питанию:
    Заметил, что чувствую себя гораздо лучше, если не ем сахар, мясо, жирное, и не злоупотребляю водой, и вообще немножко голодую.
    Впрочем, когда чем-то увлечен, голодуешь автоматом - тупо забываешь покушать. Но если совсем не есть - быстро теряешь силы, быстро выдыхаешься, появляется слабость, истощение. В общем еда в прямом смысле заряжает.
    В то же время если пить слишком мало, или слишком много, есть плотно, обильно, употреблять много сладкого и жирного - обязательно будет хуже, сразу или отложено, в течении нескольких дней.
    Вода с жиром вообще не сочетаются: если ты имеешь лишний жирок, излишек воды тебя "раздует" как бегемота, заметно увеличив обьемы жирка, зато когда вода выйдет (а выходит она быстро, в течении 2-3 дней) - также быстро "похудеешь". Так что жир - настоящая подкожная емкость, способная питать водой в течении нескольких суток напрямую, и еще несколько суток - по мере выгорания жира.
    Таким образом нужно есть и пить чуть больше минимально необходимого уровня.
    На счет худобы - слишком много жира в теле это плохо, и болезни всякие, и просто тяжело, но в то же время жир - отличный источник энергии, и когда надо много работать, но кушать нечего/забываешь - жир желателен.

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

    Вообще с энергоснабжением организма все очень забавно: нативное топливо клеток, в которое конвертируются все другие топлива - молекулы АТФ, это что-то вроде маленьких химических батареек, весь организм пропитан этим веществом, но мгновенная масса его ничтожна - около 250гр. Фокус в том, что эти батарейки производятся организмом в огромных количествах, и тут же потребляются. В магазинах продают порошок АТФ для спортсменов, рекомендуют принимать по полграмма в сутки - это на самом деле звучит смешно, если учесть, что в сутки организм производит около 40кг(!) АТФ (и тут же их поглощает) - эти полграмма погоды не сделают никак. Избыток в 250гр - это именно что оперативный (АТФ - "мгновенное" топливо, может потребляться сразу по потребности) резерв, как конденсатор, на случай если возникнет скачок энергопотребления: пока будет расходоваться этот резерв, в работу успеют включится дополнительные механизмы синтеза. А этих механизмов у нас много.

    Главный цикл энергообмена: АДФ + фосфорная кислота + энергия <=> АТФ + вода.
    Т.е. цикл замкнутый: сколько поглотилось, столько и выделилось. Но можно заметить, что без фосфора и воды процесс не идет.
    Фосфор - в рыбе, значит нужна рыба в рационе, и побольше: мозг требует активного энергообмена.

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

    Основные механизмы синтеза АТФ:
    1 - гликолиз: С6Н12О6(глюкоза) + 2Н3РО4 + 2АДФ = 2С3Н4О3(ПВК) + 2АТФ + 2Н2О. Для превращения сахара/углеводов в глюкозу нужен инсулин, который синтезирует поджелудочная.
    ПВК в мышцах превращается в муравьиную кислоту - та, что вызывает жжение в мышцах.
    2 - кислородный гликолиз: 2С3Н6О3(молочн.кислота) + 6О2 + 36Н3РО4 + 36АДФ = 6СО2 + 42Н2О + 36АТФ
    3 - расщепление жиров, липолиз - дает много тепла, выделяется 131АТФ и много воды. Инсулин тормозит липолиз - глюкоза не дает сжигать жиры. Жировой реактор позволяет греться зимой, и "пить" без воды - поэтому мишки набирают жирок перед спячкой, для отопления, а верблюды запасают жир в горбах - чтобы пить.

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

    Для того, чтобы увеличить подачу энергии в мозг в 20 раз, нужно сьесть углеводов(сахара например), поработать мышцами и активно дышать (ага, секас считается).
    Для того, чтобы увеличить подачу энергии в мозг в 65 раз, нужно наличие жира в организме (в принципе обычное питание и так обеспечивает до 100гр жира в сутки, так что всегда есть что сжигать) и час физ.нагрузки на воздухе (требуется очень много кислорода), отсутствие инсулина: после тренировки 2 часа ничего не есть и 12 часов не потреблять углеводов, можно потреблять только продукты с низким гликемическим индексом, иначе углеводы запустят синтез инсулина, который погасит липолиз.

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

    Оба источника взаимоисключающие: пока есть глюкоза - липолиз не запустится, когда запущен липолиз - нельзя есть углеводы.
    Зная это, можно "профилировать" энерговыработку: в случае срочной работы - принимаем сахар и воду (чтоб предотвратить обевоживание и растворить сахар), и работаем, если работа длительная - сахар сгорает, и запускается жировой реактор, который тащит еще 12 часов, но сожженные жиры придется компенсировать заранее, иначе сжигать будет нечего, так что если подобные нагрузки не редкость - требуется питание с большим количеством жиров и солей: жидкость вымывает соли из костей, делает их хрупкими, а когда потеем или сжигаем глюкозу с жирами - жидкости из организма, а значит и солей (т.к. раствор), уходит много. Чтоб при всем при этом не сыпались зубы - юзаем пасты с фтором.

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

    Ссылки любопытствующим: 1, 2, 3, 4, 5, 6

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

    @0x131315
    ИМХО ключевое в php, когда имеешь базу - это не сам язык, а понимание того, какую роль он выполняет, и какое место в архитектуре эта роль занимает.
    Что касается php, то это в первую очередь скриптовый язык, созданный специально для связи Фронта с Беком, т.е. основная его функция - предоставление доступа к БД сервиса для html и js-кода, работающих на фронте.

    На сегодняшний день php решает следующие задачи:
    -доступ к БД
    -вспомогательные вычисления
    -шаблонизация
    -связь с внешними сервисами
    -предварительное кеширование

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

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

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

    Очень важно изучить php.net
    Не обязательно штудировать всё, но стоит как минимум взглянуть что там вообще есть.
    Этот сайт - нечто вроде документации по STDLIB языка, в ходе практики ты к нему будешь возвращаться ещё тысячи раз.
    Многие задачи, которые ты планируешь решить велосипедом, уже решены за тебя, и входят в язык - нужно просто знать про то, что язык умеет из коробки, а что нет.

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

    Т.к. php - это прокладка между html и БД, обязательно нужны основы html, SQL, и практика по развертыванию, проектированию, и управлению какой-либо СУБД.
    Наиболее популярная и простая СУБД - MySQL, на ней и сконцентрируйся. Намного позже, когда будет опыт, обязательно попробуй postgres - это намного более совершенная СУБД, но она сложнее MySQL, и новичкам с неё начинать не стоит.
    Особо углубляться в sql не стоит, т.к. в чистом виде с ним будешь работать мало, по большей части взаимодействие с БД сведётся к установке ORM-библиотеки, например doctrine2. Вот ORM стоит изучить плотнее, они предоставят тебе простой и приятный доступ к данным в БД, и обеспечат лёгкие миграции состояния БД.

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

    Очень сильно поможет хороший редактор кода, например phpstorm - он будет подсвечивать твои ошибки, предоставит интерактивные подсказки по коду, и позволит быстро инспектировать код большого проекта, параллельно работая с ФС сервера, БД и docker-контейнерами. Серьезно ускоряет и упрощает работу.
    Ответ написан