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

Достижения

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

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

Все теги (76)

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

Все ответы (137)
  • Как не распыляясь дотащить до front-end мидл девелопера?

    @djay
    Must have:

    - HTML5/CSS3 - знать как минимум в совершенстве
    - JavaScript, включительно ECMAScript 6-7
    - В порядке вещей - Bootstrap + Jquery
    - Grunt/Gulp, Bower
    - Знание хотя бы одного фреймворка. Сейчас более менее ходовые это Angular.js и Backbone
    - Знание системы контроля версий Git. Умение работать с GitHub/BitBucket
    - Опыт работы от 2-х лет

    Как плюс:

    - Знание Canvas, SVG, умение писать игры
    - Знание шаблонов проектирования
    - Умение покрывать код тестами

    Это и есть обобщенный набор навыков по рынку на текущий момент.
    Ответ написан
    9 комментариев
  • Стоит ли изучать Symfony?

    @djay
    Итак, обо всем по порядку:

    1. Дописать новую фичу можно в любой системе и в любом фрейморке (ZF/Laravel/SF/Cake/CI/Phalcon ... ), даже если все было спроектировано не правильно изначально. Единственно на это уйдет чуть больше времени и нервов.

    2. Симфони второй по востребованости в СНГ, после Yii - согласно hh и brainstorage. Остальное - ZF/Laravel. В Европе/США - наоборот, ZF2/Laravel, потом Symfony, а Yii вообще редко попадается.

    3. Да Ларавел работает быстрее и есть меньше памяти. Это потому в симфони очень много слоев абстракции. Но как правило, память дешевая и многие могут её себе позволить. То есть в основном никого не волнует какие-то 9-10 лишних МБ памяти.

    4. Симфони - не для слабаков. Его API гораздо сложнее всех остальных. Нужно уже знать и понимать DI контейнеры, принцип разделения концепций и аналогичное. Для работы с Yii/Laravel - знать этого не нужно, поэтому каждый второй школьник Yii/Laravel программист (образно говоря).

    5. Не встречал адекватных мануалов для новичков на русском языке, к сожалению. Могу посоветовать только англоязычные:

    Symfony2 Registration and Login
    Creating a blog in Symfony2

    Пройдя эти мануалы, уже сможешь писать приложения.

    6. В любом фрейворке, тебе нужно будет в основном только это:

    - Роутер / контроллеры
    - Компонент валидации форм
    - Слой над базой данных

    И все! Фремворк предоставляет только инструменты, не более того. Т.е фреймворк - это не цель, а средство.
    Ответ написан
    Комментировать
  • Можно ли работать программистом, но не оценивать сроки?

    @djay
    Самое главное в этой индустрии - это не качество кода, а сроки. Вся индустрия держится на сроках. И нет, такого работодателя, который будет давать много времени на реализацию фичи. Любой работодатель заинтересован в извлечении максимальной прибыли при минимальном вложении (т.е экономии бюджета на разработке).

    Тебе придётся научится с этим работать и жить. Иначе никак. Это главный навык.

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

    1. Когда спросят "сколько понадобится времени" - всегда отвечай - дайте минут 10-20 на оценку, я не могу взвесить не подсчитав.

    2. Разбей задачу которую тебе дали на под-задачи. Обычно получается - обрабока/создание какой-либой формы, добавить небольшой подсчёт и аналогичное. То есть по сути, одна задача в своём подавляющем большинстве состоих из мелких под-задач.

    3. Приувеличь сроки на ~50% (+/- 20%). Например на создание CRUD формы уйдет не больше 30 минут, а ты называй час. И остальные подзадачи в этом духе. В итоге, даже если просчитался где-то у тебя есть страховка.
    Ответ написан
    4 комментария
  • Какие требования к frontend-junior?

    @djay
    Почему от новичков требуют много и неадекватно?

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

    Вот - представь, допустим есть красивая девочка, свободная. Представляешь сколько парней к ней будут подкатывать всячески? И что потом? У неё повышается самооценка быстро и не заметно. Теперь требования к парням выше - чтобы теперь, как-минимум - чтобы была тачка и доход от 100К в месяц.

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

    Во-вторых, что значит нативно и на обе платформы? Нативно и на обе платформы - это подразумевает знание SWIFT и Java (со всеми их фреймворками и ежедневными библиотеками).

    В-третиих, какое еще администрирование?
    С точки зрения работодателя, это же просто не этично и опасно подростку давать root-доступ от сервера.

    А теперь по делу:

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

    Ты должен знать:

    - Чистый JS (как и старый так и новый ECMA2016)
    - Jquery, Bootstrap
    - На базовом уровне фреймворки (Angular 5+, React)

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

    И крайне желательно иметь репозиторий на GitHub со своими пусть даже мелкими наработками.
    Остальное - чем больше, тем лучше.
    Ответ написан
    28 комментариев
  • Статический или не статический метод?

    @djay
    Статика - это глобальное состояние. Статический метод или статическая переменная абсолютно ничем не отличаются от глобальной переменной, потому что, ни статика ни глобальная переменная не были переданны в качестве аргументов нигде и никак, а значит поступают из глобального пространства.

    Чем статика может быть опасна?
    Представь, что ты пишешь утилиту для загрузки изображений. И вот наступил момент, когда нужно указывать параметры обрезки для превьюшек. Со статикой это может выглядеть так:

    public function upload()
    {
         $width = Config::read('width');
         $height = Config::read('height');
         // .. Do upload..
    }

    (На заметку CakePHP кишит такими подходами)
    Проблемы такого подхода?

    1. Нужно знать и быть точно уверенным, что статичный класс Config, был где-то там далеко инициализирован. А вдруг он не был инициализированным?

    2. А что если ты решишь сменить источник конфига? Например читать, это все не из класса `Config` а откуда-нибудь из REST? Придется все переписывать, затем опять тестировать. Эта проблема известна как сильная связка.

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

    4. Скрытые зависимости.

    Например инициализуруя класс, в случае статики:

    $uploader = new Uploader();
    $uploader->upload(...);


    Ты и твои пользователи не видят какие у класса зависимости и от работы чего вообще он зависит. Проблема заметна особо, когда ты пишешь библиотеку или компонет.

    Но тогда почему такие популярные фреймворки как Yii или Laravel полностью покрыты статикой?

    Для того чтобы понять какие последствия несет статика, попробуй воспользоватся хоть одним компонентом Yii фреймворка отдельно. Например, если тебе нужна только CAPTCHA ты не сможешь её вытащить оттуда не переписав почти весь компонент, потому что везде внутри присутвует глобальное состояние, в виде `Yii::$app->`. То есть чтобы воспользоватся только капчей, придется подключать весь фреймворк и все его внутренние механизмы, когда это абсолютно не нужно.

    Что касается Laravel, то статики там меньше, поскольку некоторые компоненты, вроде Eloquent могут использоватся по отдельности. Статика в ларе, она существует как обёртка, но не как реализация, во многих местах в отличии от Yii.

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

    Вообще посмотри, как задачи решаются в Zend / Symfony
    Там почти везде все зависимости передаются в качестве аргументов, что есть хорошо, слабо связано, и тестируемо.
    Ответ написан
    5 комментариев

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

Все вопросы (43)