Вот я разработчик крупного портала, у нас стоит платная CMS не буду говорить какая, но точно ни это. И с ней постоянные проблемы:
1) Код ядра максимально запутан и фиг поймешь как оно работает
2) Вендор выпустил новую версию несовместимую со старой да и еще с доплатой, пришлось оставлять старое легаси которое требует php 5.4 sic!
3) Эта штука постоянно ломалось в самых неожиданных местах, которые как раз и были в этом запутанном ядре
4) Масштабировать эту штуку было не реально
5) Документация как бы была, но ключевое слово как-бы, после выхода новых версий старые доки удалили
6) Развивать эту жуть сложно — по сути она стала стопором для многих бизнес-процессов компании
Итог — самые сложные компоненты проекта вынесли на отдельные сервисы созданные с помощью laravel а сам проект будем переписывать на phalcon.
Потому, что готовые решения вроде битрикса при всех своих недостатках и устаревшести имеют поддержку, пул готовых специалистов на рынке труда и, самое главное, команду, которая нивелирует бас-фактор. А вот самописные решения (особенно те, автор которых ушел, пошел на повышение, или просто потух) представляют из себя черные ящики.
Вот именно в этих случаях когда типовые решения на подходят, но при этом не охота городить велосипед и существуют фреймворки, причем для всех более менее развитых языков. Которые позволяют взять типовые решения определенных проблем (бд, логи, валидация, админка) а для конкретной уникальной бизнес-задачи написать кейс который полностью удовлетворит самые смелые бредни заказчика.
В этом случае бизнес-велосипед изолирован от стандартных решений и новому человеку придется только понять только эту нестандартную часть — остальное уже есть в доках к фреймворку и учиться на раз-два. Тем более что компоненты фреймворках даже на разных языках похожи — тот же DI, та-же ORM тот же логер, тот же Роутинг и все остальное.
В такие моменты нужно стараться заставить себя не страдать фигней а подтягивать навыки.
Такой подход позволит покачаться и более эффективно выполнять работу в будущем. Когда я был джуном у меня уходило 3 дня на то что сейчас я делаю за пару часов. Причем 1:30 я думаю как это правильно сделать и 30 минут собственно набираю код. Такой скачок производительности естественно заметят руководители (если они есть) и грамотный руководитель пересмотрит оплату, если же нет всегда есть шанс сменить работу с повышением оплаты. Правда ответственность и сложность вырастают с ростом карьеры, если раньше я менял ссылки на сайте, то теперь мне могут кинуть важный но не срочный эпик который я буду делать пол года в одиночку и на который по хорошему нужно 2 отдела. Правда от таких фортелей начинаешь выгорать.
Именно в такой период стоит посмотреть другие технологии, которые внезапно помогут сдать проект быстрее. Для меня php быдлокодера такой технологией стал React и он позволил мне сэкономить кучу времени на верстку однообразных компонентов — ui киты просто замечательная идея!
Если же совсем выгорел то стоит посмотреть смежные области работы, например вместо кодинга можно вести курсы или стать тимлидом. Пара коллег так и сделали — один устроился на постоянную работу в универ, второй взял на себя отдел, пусть из всего 2-х людей но они реально тащат!
В принципе да, но над этим парятся только "серьезные компании"
Компании поменьше чаще всего над этим не парятся не у нас не на западе. Главное чтобы успевал по своим таскам, а что ты там делаешь — читаешь хабр, пишешь в twitter делаешь левак или катаешь в cs — всем как-то по барабану.
В западных компаниях вообще подписывают документ который говорит о том что вообще любые наработки которые были сделаны во время работы в компании в том числе и у себя дома в 1 ночи принадлежат копании либо открыто разрешают вносить вклад в opensource и делать пет-проекты даже на работе. Довольно сложно определить что вы делали в компании а что нет. Единственный способ — тотальный контроль и слежка за сотрудником, но вот большинство сотрудников этого не любят и сваливают.
На самом деле я тоже так думал, пока не додумался об одной маленькой проблеме — трейт не самостоятельный объект и если к нему привязывать интерфейс тогда у нас 3 варианта.
1) Интерфейс не должен влиять на исходный объект куда примешивается никак — тогда собственно зачем он нужен
2) Необходимо выдавать ошибку если класс не реализует интерфейс трейта, что усложнит код
3) Необходимо делать магию что у объекта как бы есть интерфейс но он не описан явно, что будет выдавать еще больше юмора, особенно если методы интерфейса переопределяются родительским объектом или другим интерфейсом.
Если бы я описывал свою коллекцию со всей этой фигней то да.
Но так как я использую один из бесполезных и ненужных и тормознутых фреймворков то мне проще тупо использовать его коллекции а не писать собственные велосипеды.
Хотя в данном случае, если мне хочется чтобы любое изменение в коллекции генерировало событие update мне конечно придется переопределить некоторые методы.
Я php-шник и могу делать еще большее зло выводя общий код в трейты, описывать под них интерфейсы и вообще отказываться от базовых классов, тупо подмешивая функционал в нужные объекты.
php код не для слабонервных
interface ObservableInterface {
public function addObserve(ObserverInterface $observer);
public function notify();
}
trait Observable {
protected $observers = [];
public function addObserve(ObserverInterface $observer)
$this->observers[] = $observer;
}
public function notify(){
array_map(function($observer){ $observer->update(); }, $this->observers)
}
}
class MySomeWidget implements ObservableInterface, WidgetInterface {
use Observable, WidgetUx, WidgetSupport, WidgetConfigs;
}
class MyParser implements ObservableInterface {
use Observable;
}
class MyCollection extends Illuminatie\Support\Collection implements ObservableInterface{
use Observable;
}
— хорошее пожелание, но невозможно жить дружно при тотальной глупости населения.
Я тут постоянно удивляюсь насколько люди бывают тупые ))
Элементарные вещи не понимают!
Не понимают даже смысл слов!
Все мы были тупыми, причем настолько, что гадили в пеленки/памперсы и не знали смысла слов.
Любой психически здоровый и не совсем здоровый человек за 25 как-то живет и применяет свой разум добывая себе на доширак и это значит что у него есть мозг. А коли он у него есть — то этот человек уже материал с которым можно работать.
Так что нужно не игнорить и поносить идиотов. Стоит постепенно обучать тупых людей до средне-тупых и может быть даже до совсем не тупых. В случае если вам с ними необходимо общаться или работать — их тупость уже даже ваша личная проблема.
Как говорил мой учитель по программированию
Я не $#! вам мозг — я пытаюсь зачать сознание
И это дает результаты — из 30 тупых студентов, он сразу убрал 2 нариков и четверых "просто пытающихся получить корочку" остальные 24 человека к концу обучения могли набрать простенькую программу. Около 60% 3 курса уже зарабатывали кодерством на свой хлеб.
Я обычный php/laravel + js/react быдлокодер. И вот читаю это все и мне жутко.
С одной стороны суровые мужики инженеры (вроде моего учителя из колледжа или тестя) которые имеют дело с суровым железом и программирование для них это написать драйвера на с++/asm мыслят гостами, инженерами считают только тех кто способен собрать вундервафлю из говна и палок. В одной старой книге команда таких попав на необитаемый остров быстро сделал его обитаемым и даже телеграф провела.
Другая сторона хипстеры от программирования (я пока до самых крутых из них не дотягиваю) которым нет дела до железа от слова никак, из задача быстро и желательно качественно сделать приложение, поднять на нем бабла и хайпа. Эти люди попав на необитаемый остров быстро построят каяки из говна и палок и вернутся к цивилизации чтобы дальше использовать труды первых.
Между этими категориями непримиримый холивар, первые считают вторых щенками и "не инженерами", вторые же видят в первых людей которые настолько шаблонны что вместо того чтобы автоматизировать процессы будут замыкать их на себя любимого, даже если это смотреть на то как станок работает и если он сделал фигню — нажать кнопку. одним словом Ламеров.
Плюс еще холивар западной и пост-советской терминологии и идеологии.
Люди давай жить дружно с долей сарказма и иронии над собой и окружающими, и пусть я буду php-макакой а вы инженеграми.
я middle php разраб и ответил всего на 80% вопросов (не знаю java, нуб в nosql и не teamLead для открытых вопросов) при чем по ощущению правильных ответов процентов 40-50. Это нормально?
Изначально я проучился 4 года к колледже где используя turboPascal великий сенсей нас гонял по структурам данных и алгоритмам сортировки.
Именно тогда на втором курсе я и встал на сторону тьмы (php), хотя стоит признать — мне удалось продать 3 софта частным конторам — один на c++, один на delphi и один на VB.Net. Естественно там был быдлокод. Заказ на десктопное приложение в нашем городе — скорее чудо чем данность и мне вообще повезло что я их ухватил, постоянное жить такими заработками я бы не смог.
Одногрупники тоже распределились по технологиям — кто-то выбрал java и сейчас счастлив, кто-то action-script и когда умер flash человек стал менеджером. еще один кайфовал по питону и уехал в чехию.
Изучая php и html/css и читая различные книги я стремился всегда превзойти себя и создать свой «идеальный код». Но что в итоге? я работаю 5 лет backend разрабом и стараюсь писать адекватный код, но вот только это никого не волнует.
Бизнесу важен быстрый результат а не идеальный код. И понятное дело все чаще и чаще бизнес задается вопросом почему middle — спец с 5-и летним стажем фигачет систему сложностью N за 4 месяца и кушает 5 дошираков в месяц, когда быдлокодер со стажем в 1 год делает похожую систему за месяц и кушает 1.5 доширака в месяц. И в итоге все смотрят косо на небыдлокодера, так что небыдлокодить не так просто как кажется, особенно под дикой нагрузкой и сжатыми сроками.
Так что быть быдлокодером выгодно и прилично, да и бизнес будет тебя хвалить…
Вот я разработчик крупного портала, у нас стоит платная CMS не буду говорить какая, но точно ни это. И с ней постоянные проблемы:
1) Код ядра максимально запутан и фиг поймешь как оно работает
2) Вендор выпустил новую версию несовместимую со старой да и еще с доплатой, пришлось оставлять старое легаси которое требует php 5.4 sic!
3) Эта штука постоянно ломалось в самых неожиданных местах, которые как раз и были в этом запутанном ядре
4) Масштабировать эту штуку было не реально
5) Документация как бы была, но ключевое слово как-бы, после выхода новых версий старые доки удалили
6) Развивать эту жуть сложно — по сути она стала стопором для многих бизнес-процессов компании
Итог — самые сложные компоненты проекта вынесли на отдельные сервисы созданные с помощью laravel а сам проект будем переписывать на phalcon.
Вот именно в этих случаях когда типовые решения на подходят, но при этом не охота городить велосипед и существуют фреймворки, причем для всех более менее развитых языков. Которые позволяют взять типовые решения определенных проблем (бд, логи, валидация, админка) а для конкретной уникальной бизнес-задачи написать кейс который полностью удовлетворит самые смелые бредни заказчика.
В этом случае бизнес-велосипед изолирован от стандартных решений и новому человеку придется только понять только эту нестандартную часть — остальное уже есть в доках к фреймворку и учиться на раз-два. Тем более что компоненты фреймворках даже на разных языках похожи — тот же DI, та-же ORM тот же логер, тот же Роутинг и все остальное.
<irony>
На следующий день после приема Вити hr уже видит задачу найти замену Сереже в течении года.
</irony>
В такие моменты нужно стараться заставить себя не страдать фигней а подтягивать навыки.
Такой подход позволит покачаться и более эффективно выполнять работу в будущем. Когда я был джуном у меня уходило 3 дня на то что сейчас я делаю за пару часов. Причем 1:30 я думаю как это правильно сделать и 30 минут собственно набираю код. Такой скачок производительности естественно заметят руководители (если они есть) и грамотный руководитель пересмотрит оплату, если же нет всегда есть шанс сменить работу с повышением оплаты. Правда ответственность и сложность вырастают с ростом карьеры, если раньше я менял ссылки на сайте, то теперь мне могут кинуть важный но не срочный эпик который я буду делать пол года в одиночку и на который по хорошему нужно 2 отдела. Правда от таких фортелей начинаешь выгорать.
Именно в такой период стоит посмотреть другие технологии, которые внезапно помогут сдать проект быстрее. Для меня php быдлокодера такой технологией стал React и он позволил мне сэкономить кучу времени на верстку однообразных компонентов — ui киты просто замечательная идея!
Если же совсем выгорел то стоит посмотреть смежные области работы, например вместо кодинга можно вести курсы или стать тимлидом. Пара коллег так и сделали — один устроился на постоянную работу в универ, второй взял на себя отдел, пусть из всего 2-х людей но они реально тащат!
В принципе да, но над этим парятся только "серьезные компании"
Компании поменьше чаще всего над этим не парятся не у нас не на западе. Главное чтобы успевал по своим таскам, а что ты там делаешь — читаешь хабр, пишешь в twitter делаешь левак или катаешь в cs — всем как-то по барабану.
В западных компаниях вообще подписывают документ который говорит о том что вообще любые наработки которые были сделаны во время работы в компании в том числе и у себя дома в 1 ночи принадлежат копании либо открыто разрешают вносить вклад в opensource и делать пет-проекты даже на работе. Довольно сложно определить что вы делали в компании а что нет. Единственный способ — тотальный контроль и слежка за сотрудником, но вот большинство сотрудников этого не любят и сваливают.
На самом деле я тоже так думал, пока не додумался об одной маленькой проблеме — трейт не самостоятельный объект и если к нему привязывать интерфейс тогда у нас 3 варианта.
1) Интерфейс не должен влиять на исходный объект куда примешивается никак — тогда собственно зачем он нужен
2) Необходимо выдавать ошибку если класс не реализует интерфейс трейта, что усложнит код
3) Необходимо делать магию что у объекта как бы есть интерфейс но он не описан явно, что будет выдавать еще больше юмора, особенно если методы интерфейса переопределяются родительским объектом или другим интерфейсом.
Не знаю как в java но в php можно тупо сделать wrapper который будет прозрачно проксировать вызов любого метода да и еще и notify вызывать при этом.
забыл оставить тег <irony>
Если бы я описывал свою коллекцию со всей этой фигней то да.
Но так как я использую один из бесполезных и ненужных и тормознутых фреймворков то мне проще тупо использовать его коллекции а не писать собственные велосипеды.
Хотя в данном случае, если мне хочется чтобы любое изменение в коллекции генерировало событие update мне конечно придется переопределить некоторые методы.
Я php-шник и могу делать еще большее зло выводя общий код в трейты, описывать под них интерфейсы и вообще отказываться от базовых классов, тупо подмешивая функционал в нужные объекты.
Все мы были тупыми, причем настолько, что гадили в пеленки/памперсы и не знали смысла слов.
Любой психически здоровый и не совсем здоровый человек за 25 как-то живет и применяет свой разум добывая себе на доширак и это значит что у него есть мозг. А коли он у него есть — то этот человек уже материал с которым можно работать.
Так что нужно не игнорить и поносить идиотов. Стоит постепенно обучать тупых людей до средне-тупых и может быть даже до совсем не тупых. В случае если вам с ними необходимо общаться или работать — их тупость уже даже ваша личная проблема.
Как говорил мой учитель по программированию
И это дает результаты — из 30 тупых студентов, он сразу убрал 2 нариков и четверых "просто пытающихся получить корочку" остальные 24 человека к концу обучения могли набрать простенькую программу. Около 60% 3 курса уже зарабатывали кодерством на свой хлеб.
Я обычный php/laravel + js/react быдлокодер. И вот читаю это все и мне жутко.
С одной стороны суровые мужики инженеры (вроде моего учителя из колледжа или тестя) которые имеют дело с суровым железом и программирование для них это написать драйвера на с++/asm мыслят гостами, инженерами считают только тех кто способен собрать вундервафлю из говна и палок. В одной старой книге команда таких попав на необитаемый остров быстро сделал его обитаемым и даже телеграф провела.
Другая сторона хипстеры от программирования (я пока до самых крутых из них не дотягиваю) которым нет дела до железа от слова никак, из задача быстро и желательно качественно сделать приложение, поднять на нем бабла и хайпа. Эти люди попав на необитаемый остров быстро построят каяки из говна и палок и вернутся к цивилизации чтобы дальше использовать труды первых.
Между этими категориями непримиримый холивар, первые считают вторых щенками и "не инженерами", вторые же видят в первых людей которые настолько шаблонны что вместо того чтобы автоматизировать процессы будут замыкать их на себя любимого, даже если это смотреть на то как станок работает и если он сделал фигню — нажать кнопку. одним словом Ламеров.
Плюс еще холивар западной и пост-советской терминологии и идеологии.
Люди давай жить дружно с долей сарказма и иронии над собой и окружающими, и пусть я буду php-макакой а вы инженеграми.
Извиняюсь, забыл отправить комментарий на проверку моему личному grammar nazi
я middle php разраб и ответил всего на 80% вопросов (не знаю java, нуб в nosql и не teamLead для открытых вопросов) при чем по ощущению правильных ответов процентов 40-50. Это нормально?
Объясните пожалуйста backend разработчику что это за два лагеря и в чем различия
Вот бы еще про .docx такую статейку!
Логично ибо эффект Даннинга — Крюгера имеет место быть
Изначально я проучился 4 года к колледже где используя turboPascal великий сенсей нас гонял по структурам данных и алгоритмам сортировки.
Именно тогда на втором курсе я и встал на сторону тьмы (php), хотя стоит признать — мне удалось продать 3 софта частным конторам — один на c++, один на delphi и один на VB.Net. Естественно там был быдлокод. Заказ на десктопное приложение в нашем городе — скорее чудо чем данность и мне вообще повезло что я их ухватил, постоянное жить такими заработками я бы не смог.
Одногрупники тоже распределились по технологиям — кто-то выбрал java и сейчас счастлив, кто-то action-script и когда умер flash человек стал менеджером. еще один кайфовал по питону и уехал в чехию.
Изучая php и html/css и читая различные книги я стремился всегда превзойти себя и создать свой «идеальный код». Но что в итоге? я работаю 5 лет backend разрабом и стараюсь писать адекватный код, но вот только это никого не волнует.
Бизнесу важен быстрый результат а не идеальный код. И понятное дело все чаще и чаще бизнес задается вопросом почему middle — спец с 5-и летним стажем фигачет систему сложностью N за 4 месяца и кушает 5 дошираков в месяц, когда быдлокодер со стажем в 1 год делает похожую систему за месяц и кушает 1.5 доширака в месяц. И в итоге все смотрят косо на небыдлокодера, так что небыдлокодить не так просто как кажется, особенно под дикой нагрузкой и сжатыми сроками.
Так что быть быдлокодером выгодно и прилично, да и бизнес будет тебя хвалить…