Что же по итогу требуется от программиста?

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Что же по итогу требуется от программиста?

Сообщение unknownby »

Предлагаю обсудить в данной теме все тонкости и нюансы касающиеся требований от работодателя.

Многим необходимы знания по следующим пунктам и это не весь список:
- CI/CD
- RabbitMQ
- Github, Gitlab, Bitbucket, Mercurial
- Docker
- Swagger
- Agile, Scrum, Kanban

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

Что касается относительно PHP, CSS, HTML, JS и различных фреймворков тут всё понятно, однако с вышеуказанными пунктами не всё так однозначно.
Нужны ответы от людей, которые используют вышеуказанные пункты в повседневной работе.
Почитать про каждый пункт в гугле не составляет проблемы (читал), однако хотелось бы понять, как это использовать в своей работе, а самое главное нужно ли.

Вопросы относительно CI/CD, RabbitMQ, Docker, Swagger :?:
Как используете? Специфические ли это какие-то вещи для вас (в одном проекте использовали, а в другом нет)? Могли бы вы обойтись без этого?
В каких проектах используете (в вашей организации, для сторонних организаций, для личного использования)?
Вопросы общего назначения, т.к. сам не сталкивался с этим или сталкивался, но не осознал этого. Хорошо бы прочитать о практическом опыте. Например, название задачи и её реализация (без кода и ссылок) словесно. Код, конечно, хорошо бы увидеть, если только он не захламит ответ :D

Вопросы относительно Agile, Scrum, Kanban :?:
Что используете в целом? Если я правильно понял это простая доска на которой размещаются стикеры (задачи), которые могут передвигаться в зависимости от стадии задачи.
Если сравнивать с Redmine, то чем эти три сущности лучше?
Если правильно понимаю, то Agile, Scrum, Kanban, Redmine, Jira - это всё своеобразный вид ведения записей и отслеживания на каком этапе находится задача. (Jira тоже иногда упоминается у
Если пришли на собеседование и спрашивают про одну из трёх вещей, что будете говорить?

Вопросы относительно Github, Gitlab, Bitbucket, Mercurial :?:
Чем пользуетесь в основном? Почему? В связке с чем? (Git, TortoiseHg и т.д.)
Где успели опробовать свои силы из этих систем контроля версий?
С чем больше проблем возникло при обучении/работе?
Какой навык по вашему мнению больше всего пригодится?

Что касается фреймворков:
В каких связках и что используете? И становится интересно "почему?" именно такая связка.

Буду рад любым ответам. :)
И делитесь своим стэком в конце
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Что же по итогу требуется от программиста?

Сообщение ElisDN »

unknownby писал(а): 2021.10.07, 13:34 Вопросы относительно CI/CD, RabbitMQ, Docker, Swagger
Как используете? Специфические ли это какие-то вещи для вас? Могли бы вы обойтись без этого?
Используем всё по назначению:

RabbitMQ как брокер очередей для общения модулей или сервисов в распределённой системе. Для простейшей очереди можно взять Redis, а для более продвинутой работы с очередями и маршрутизацией удобнее RabbitMQ.

Swagger для описания схемы любого REST-оподобного API. И по его OpenAPI-схеме удобно генерировать структуры запросов и ответов на фронтенде и бэкенде.

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

Continuous Integration как практику ускорения разработки за счёт избавления от неактуального кода и конфликтов слияния, а также для безопасного тестирования фич на продакшене.

Continuous Delivery для постепенной постоянной доработки проекта вместо авралов.

Continuous Deployment для избавления от согласований деплоя за счёт полностью автоматизированного бесшовного деплоя.

Многие думают, что CI/CD/CD - это только про запуск тестов и автодеплой. Но в реальности это философии постоянной разработки проекта. Я об этом подробно расказал в своём скринкасте про CI/CD и подход Trunk Based Development с использованием Feature Flags в бою применяю на фронтенде и бэкенде.

Если у вас есть тесты, но в Git месяцами висят старые ветки и деплой поизводится только раз в неделю, то у вас не CI и CD.
Последний раз редактировалось ElisDN 2021.10.07, 17:09, всего редактировалось 4 раза.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Что же по итогу требуется от программиста?

Сообщение ElisDN »

unknownby писал(а): 2021.10.07, 13:34 Вопросы относительно Agile, Scrum, Kanban
Что используете в целом? Если я правильно понял это простая доска на которой размещаются стикеры (задачи), которые могут передвигаться в зависимости от стадии задачи. Если сравнивать с Redmine, то чем эти три сущности лучше?
Kanban - это именно доска из нескольких столбиков-стадий вроде этой доски для Yii3. На ней сразу видно, какая задача на какой стадии. В отличие от простого списка в Redmine.

Agile - это философия гибкой разработки больших проектов.

Для мелких проектов можно применять подход "Водопад", где сначала с заказчиком составить полное ТЗ и назвать стоимость, потом полностью всё спрограммировать и через месяц задеплоить и проверить. Или если нужно автоматизировать уже имеющийся бизнес, в котором понятно что делать, то тоже можно сразу согласовать всё работу и стоимость.

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

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

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

Так что Scrum - это один из фрейморков для выстраивания у себя в компании Agile-разработки. А задачи и идеи можно хранить в Redmine или ещё где-то и удобно просматривать по стадиям в Kanban-доске.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Что же по итогу требуется от программиста?

Сообщение ElisDN »

unknownby писал(а): 2021.10.07, 13:34 Вопросы относительно Github, Gitlab, Bitbucket, Mercurial
Чем пользуетесь в основном? Почему? В связке с чем? (Git, TortoiseHg и т.д.)
Есть сами системы контроля версий вроде Git, Mercurial и SVN с консольной программой. Сейчас победил Git.

Чтобы не возиться с консолью для них есть удобные графические оболочки вроде SmartGit и Tortoise. Я использую платный SmartGit.

А есть хостинги для репозиториев вроде Github, BitBucket и Gitlab с обвязкой для ведения проектов и автоматизации. Раньше приватные репозитории в GitHub были платными и многие их хранили в BitBucket. Gitlab можно устанавливать на свою виртуальную машину, там удобно вести проекты и ревьювить. Там есть удобная автоматизация GitLab CI для тестирования и деплоя. Поэтому многие компании как альтернативу GitHub использовали из облака или ставили себе GitLab. Сейчас же бесплатные приватные репозитории и автоматизация через Actions появилась в самом GitHub. Поэтому многие возвращаются на GitHub.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Что же по итогу требуется от программиста?

Сообщение ElisDN »

unknownby писал(а): 2021.10.07, 13:34 Что касается фреймворков:
В каких связках и что используете? И становится интересно "почему?" именно такая связка.
Раньше для классических сайтов и админок удобным был Yii2 с готовыми виджетами GridView, формами ActiveForm с валидацией. Сейчас же, когда бэкенд из себя стал представлять только API для JS-фронтенда, необходимость в виджетах и jQuery отпала. Теперь для API можно взять абсолютно любой фреймворк. Варианты выбора приводил в докладе про выбор фреймворка. Я предпочитаю собирать проекты из библиотек на легковесных микрофреймворках.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Что же по итогу требуется от программиста?

Сообщение ElisDN »

unknownby писал(а): 2021.10.07, 13:34 В каких проектах используете (в вашей организации, для сторонних организаций, для личного использования)?
Вопросы общего назначения, т.к. сам не сталкивался с этим или сталкивался, но не осознал этого. Хорошо бы прочитать о практическом опыте. Например, название задачи и её реализация (без кода и ссылок) словесно. Код, конечно, хорошо бы увидеть, если только он не захламит ответ :D
Как раз сейчас во всех подробностях показываю и рассказываю, как это применяю у себя в проекте аукциона на микрофреймворке Slim.
goodfriend
Сообщения: 50
Зарегистрирован: 2018.06.02, 09:58

Re: Что же по итогу требуется от программиста?

Сообщение goodfriend »

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

В джире просто будут ставить задачи, там вообще не в чем разбираться, если не усложнять.
С гитом думаю понятно.
А чтобы в команде работать нужны гитлаб и т.д.
Плюс чтобы запускать у всех одинаково локально нужен вагрант или докер.
А выгрузить автоматом из репы на сервер это ci, от гитлаб например.
Потребуются какие ещё задачи, то и доустановится и в этом уже можно походу разбираться, если тебе это получат.

Плюс не обязательно все должно быть идеально, что то можно и ручками делать
Ответить