Профессионал не тот кто выполняет задания в коллективе, а тот кто смог набраться опыта и создать что-то сам своим умом, затем набрать людей, которые смогут повторить это хотя бы частично, разделив ответственности и затем управляет процессом.
Хех.. ну давайте потренируем свои мысленные способности :)
Ты путаешь понятия профессионала, предпринимателя, лида/техлида и возможно исследователя. Давай разберёмся по определениям.
Согласно толковому словарю С. И. Ожегова,
Профессионал — это «человек, занимающийся какой-нибудь деятельностью профессионально, то есть как профессией».
То есть профессионал — это тот, кто компетентно и качественно выполняет свою работу, будь то написание кода, проектирование архитектуры, тестирование, поддержка пользователей или даже управление проектом. Профессионализм не зависит от того, работает ли человек один или в команде, нанимает ли он кого-то или нет.
Более того, Международный стандарт ISO 21001:2018 (а также общепринятая практика) подчёркивает, что профессионализм включает в себя способность эффективно решать задачи в рамках своей роли, соблюдая различные нормы профессии.
Многие выдающиеся профессионалы работают в крупных командах, не создавая «своё» с нуля, но при этом решают сложнейшие инженерные задачи, без которых продукт просто не заработал бы.
И, кстати, менеджер — тоже профессия. Хороший менеджер обладает глубокими знаниями в управлении, коммуникациях, рисках и процессах. Утверждать, что он «не имеет опыта и знаний», — это всё равно что сказать, что повар — не профессионал, потому что не выращивает овощи.
Истинный профессионал — это тот, кто своевременно, качественно и ответственно решает задачи, стоящие перед его ролью, вне зависимости от должности, штата или масштаба проекта.
Сам по суди: ты бы пошел ко врачу, который поставив тебе диагноз пошел изобретать лекарство? Ты бы доверил ремонт квартиры бригаде, которая пропала бы на пару лет изобретя молоток?
Поставь себя на место потребителя: сколько раз ты делал выбор "мне конечно ОЧЕНЬ важно это иметь сейчас, но вы там поизобретайте, мне не надо как у тысяч других людей успешно используемых решений".
PS. Правда на долгую дискуссию не претендую, отвлекся на минуту - есть работа и ответственность за порученные задачи и есть челендж и данное мною слово.
Мой без вариантов. :) Поясню не спора для
Если сравнивать результаты челенджа, то тут вообще два абсолютно разных инструмента для разной ЦА. Их сравнивать не корректно. Но вот если конечной целю поставить: инструмент для неподготовленного человека, то тут все сильно иначе.
И тут как раз вся суть в понимании термина "фреймворк" (я не просто так хотел узнать твое видение этого)
В моем понимании.
Фреймворк - инструмент для разработчиков. На нем надо программировать. Однако может быть на разной "глубине". т.е На примере ЯП% и чистый асм и джава вооруженная фреймоврками это все языки программирования, но вот количество кода для решения одной и той же задачи требуется разное. Так и здесь один фреймворк решает из коробки 1% задач, другой 80%.
Далее CMS - в ее основе лежит фреймворк, но уже большое число функций можно решить не зная ни ЯП ни html/css. Т.е. если простой проект и подобрали правильно cms. То тут тоже может быть ни чего не придется учить. Просто уровень вполне достаточный: "пользователь CMS".
Далее идет констуркторы сайтов. По сути та же CMS. Только тут уже больше все в режиме "наелозить мышкой по страничке и поотвечать на вопросы мастеров". Т.е это даже просто более продвинутый интерфейс CMS. :) Здесь пользователю вообще не надо знать ни о каких то бд, ни о каких то xml да даже css html не надо.
Т.е. потенциально мой проект закрывает вообще все варианты целевой аудитории.
Ну и конечно же у меня есть огромнейший плюс, я использую композер. А это значит, что пользователь моего фреймворка потенциально уже прямо сейчас может установить любые из 441 484 пакетов зарегистрированных на packagist (а можно ведь кроме этого и пакеты с github, но не зарегистрированные на packagist). Предположим даже там много аналогов, пусть только треть "уникальны", чтобы воспроизвести этот функционал даже если в день по пакету успевать то это 402 года. А теперь взглянем на АПИ wildberries клиента для такого за день? :) (а это сейчас нужно большинству интернет магазинов, а есть еще и другие МП)
git clone https://github.com/Voral/joke-minimal my-appcd my-appdocker compose up -d
Вот пример на котором я "игрался" при разработке на гитаб
/** * @var Router $router */$router->get('/', fn() => <<<HTML<ul> <li><a href="/name/Alex">Hi Alex</a> Текстовый ответ. Имя можно менять</li></ul>HTML);$router->get('/name/{name:slug}', fn(string $name) => 'Hi ' . $name, 'hiName');$router->get('/json/{name:slug}', fn(string $name) => ['fio' => $name]);$route = $router->get('/name-filtered/{name:slug}', fn(string $name) => 'Hi ' . $name)->addGroup('filtered');$router->get('/invoke/{prop}', InvokeController::class);$router->get('/shop', [SingleController::class, 'index']);$router->get('/shop/info', SingleController::info(...));$router->get('/shop/infoNew', SingleController::class . '::info');$router->get('/shop/{filter}', [SingleController::class, 'find']);$router->get( '/csrf', fn(Vasoft\Joke\Core\Request\HttpRequest $request) => [ 'csrf' => $request->session->get( CsrfMiddleware::CSRF_TOKEN_NAME ) ]);$router->delete( '/csrf', fn(Vasoft\Joke\Core\Request\HttpRequest $request) => [ 'csrf' => $request->session->unset( CsrfMiddleware::CSRF_TOKEN_NAME ) ]);$routeHandler = fn(Vasoft\Joke\Core\Request\HttpRequest $request) => [ 'id' => spl_object_id($request), 'get' => $request->get->getAll(), 'post' => $request->post->getAll(), 'files' => $request->files->getAll(), 'json' => $request->json,];$router->post('/queries', $routeHandler);$router->put('/queries', $routeHandler);$router->patch('/queries', $routeHandler);$router->head('/queries', $routeHandler);$router->get('/{*}', static fn(string $path) => new HtmlResponse() ->setStatus(ResponseStatus::NOT_FOUND) ->setBody("Запрошен несуществующий путь: {$path}"));
Хм. я планировал про докер с готовым приложением :) ок, разберусь и сделаю "для разработки"
У меня у самого как то с докером не сложилось в практике: большинство проектов без докера, а брать на себя роль и сисадмина, к тому же свои коррективы вносит то, что проекты в основном на Битрикс (а там контент менеджер через интерфейс может менять файлы).... а так у меня установлено с 14 года апач и bind9 в которые я конфиги просто скопировал с предыдущего компа... и все работает :) Пробовал ставить себе докер - у меня начались какие то непонятки : браузеры на любом сайте постоянно стали сбрасывать соединение. :) в общем в этом плане я не продвинутый :) но постараюсь разобраться. может у той же лары подгляжу - сделаю
Вообще я хотел изначально сделать %%...%% (у меня моя CMS так работала когда то). тут пошел из идеи: если тег не отработан, то он останется на странице и не будет виден. Правда пока писал этот текст осознал - у меня в этом случае бросается исключение. Подумаю. в целом "переключить" совсем не проблема.
ужис :) сейчас закину на ютуб
Итак вторая пятница (далее через две недели "отчеты")
Фреймворк
Выпустил первый релиз. Базовый функционал (естественно он очень минимальный) работоспособен. Вполне можно собрать какой то внутренний микросервис. Реализовано:
Так же начата разработка следующей версии: функционал, в основном, определяется разрабатываемым параллельно шаблонизатором. Тут сейчас на очереди задача регистрации модулей, т.е. чтобы не приходилось при подключении в проект шаблонизатора регистрировать все его сервисы и потребности, а сделать некие провайдеры упрощающие процесс
GitHub Дока
Так же сделал скелетон, для старта с минимальным набором (в README описано)
composer create-project voral/joke-minimal my-app
Видео
Видео записал не в формате "показать что у меня внутри" тут, если у кого то будут вопросы, готов ответить, а выдавливать из себя... хз... (я вообще наверно первый раз лет за 30 столько говорил без перерыва :) )
Записал видео с демонстрацией создания с помощью фреймворка простейшего приложения Списка задач. видео созданное приложение на github
Шаблонизатор
Основная разработка сейчас здесь. Реализованы сейчас базовые теги <j-echo>, <j-if></j-if>, <j-each/> на их базе отработал построение AST дерева, рендер в HTML. Но осознал, что выполнять сразу полный рендер HTML это не правильно для динамических сайтов: по этому будут следующие шаги: лексер - парсер - рендер тегов отмеченных атрибутом static (сейчас на гитхабе версия с "j-static", но у атрибута префикс планирую убрать) - компиляция в PHP код. Т.е. на первом хите будет и построение AST дерева и компиляция php кода. На последующих (пока не сработают правила обновления кода) будет только выполнение PHP (естественно я пока опускаю, что будут и другие уровни кеширования).
Сейчас работаю над внедрением в шаблонизатор DI контейнера, что позволит и регистрировать свои теги и заменять те, что идут из коробки. В общем то можно будет заменить не только обработчики тега, но и например компилятор штатный заменить на компилятор который будет компилировать в любой другой ЯП, например в код на питоне :)
Репа шаблонизатора GitHub
Как это можно применить - не придумал)))
Прикольно, интересно было бы узнать нет ли "родственных" душ в рамках форума :)
PS. А у меня тем временем сегодня первый релиз (и фреймворка и скелетона для простого старта разработки на нем). постараюсь к пятнице видео запилить. Начинается у меня череда ДР: отец, сын и я - друг за другом, "скорость" подспадет