Сообщество - Лига программистов

Лига программистов

2 076 постов 11 884 подписчика

Популярные теги в сообществе:

6

Мифы и реальность: есть ли основание противопоставлять Agile и Waterfall?

Почему каскадная модель не так «жёстка», как кажется, а Agile — не методология.

На написание статьи сподвигла статья с Хабра и обсуждения в чате одного сообщества по бережливому производству.

Хочу сразу обратить внимание, что здесь будем обсуждать ложную дихотомию в управлении проектами.

Споры о превосходстве Agile над Waterfall или наоборот давно стали клише в IT-среде. Однако корень этой дискуссии — фундаментальное непонимание сути обеих концепций. Agile часто ошибочно называют методологией, тогда как на деле это набор ценностей, а выбор реальных инструментов управления происходит между каскадной моделью (Waterfall) и итерационными подходами — Scrum, Kanban, XP. Почему этот нюанс так важен? Потому что смешение философии и инструментов ведёт к мифам, которые мешают эффективно управлять проектами.

Кажется, что waterfall (каскад) это старая и неповоротливая система

Кажется, что waterfall (каскад) это старая и неповоротливая система

Agile — это ценности, а не методология

Манифест Agile, созданный в 2001 году, провозглашает четыре ключевые ценности:

  1. Люди и взаимодействие важнее процессов и инструментов.

  2. Работающий продукт важнее исчерпывающей документации.

  3. Сотрудничество с заказчиком важнее согласования условий контракта.

  4. Готовность к изменениям важнее следования первоначальному плану.

    Это не инструкция «как управлять проектом», а напоминание о приоритетах. Agile не отменяет документацию или планирование — он лишь предостерегает от их абсолютизации. Например, детальное ТЗ необходимо при разработке ПО для автомобиля, но нужно меньше заострять на этом внимание в условиях полной неопределённости — например, для стартапа.

Если коротко, то Аджайл - это крик души замученного разработчика

Если коротко, то Аджайл - это крик души замученного разработчика

Waterfall: миф о жестком подходе

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

Собственно говоря, Waterfall манифеста нет, поэтому ориентируемся на заполнение документации в классической разработке. Есть такая нормативка, которую можно условно отнести к каскадной модели разработки - ГОСТ 19.102-77 Единая система программной документации (ЕСПД). Стадии разработки. Устанавливает стадии разработки программ и программной документации для вычислительных машин, комплексов и систем независимо от их назначения и области применения:

  1. Техническое задание

  2. Эскизный проект

  3. Технический проект

  4. Рабочий проект (Разработка программы, Разработка программной документации, Испытания программы Корректировка программы и программной документации по результатам испытаний)

  5. Внедрение (Подготовка и передача программы)

Но в таких регламентированных отраслях, таких как разработка ПО по ГОСТам, процессы предусматривают корректировки. Например, ГОСТ 19.603-78 прямо регламентирует внесение изменений в документацию по двум причинам:

  1. Устранение ошибок.

  2. Развитие и усовершенствование продукта.

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

Ведь в Каскаде обратная связь не запрещена, просто требуется документирование

Ведь в Каскаде обратная связь не запрещена, просто требуется документирование

Почему возникает миф о несовместимости?

Противопоставление Agile и Waterfall часто служит маркетинговым инструментом. Консультанты и тренеры упрощают сложную картину, создавая «чёрно-белый» нарратив: «старое vs новое».

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

Однако в реальности:

Waterfall не запрещает гибкость. Многие проекты в аэрокосмической отрасли или энергетике успешно комбинируют детальное планирование с оперативными корректировками.
Agile не отрицает документацию. В регулируемых индустриях (финансы, медицина, машиностроение) документирование остаётся критичным, даже если команда разработки работает по Kanban или Scrum.
Ключевое различие — не в наличии или отсутствии изменений, а в формализации обратной связи. Итерационные методы (Scrum, Kanban) встраивают её в процесс через короткие циклы (спринты), тогда как Waterfall требует явного согласования правок на каждом этапе.

Кажется, что это разные подходы, но это не так

Кажется, что это разные подходы, но это не так

Синтез вместо конфронтации: гибридные подходы

На практике чистые Waterfall, Kanban, Scrum встречаются редко. Большинство проектов используют гибридные модели. Например:
Water-Scrum-Fall — детальная проработка этапов запуска и внедрения в стиле Waterfall с гибкой разработкой ядра продукта.

Такие подходы возникают не из-за «непонимания Agile», а из-за реальных ограничений: бюджетные циклы, требования регуляторов, необходимость согласования с внешними поставщиками. Например, команда может использовать Scrum для создания MVP, но переключиться на Waterfall при масштабировании продукта для enterprise-клиентов, где необходимы аудиты и сертификаты.

Например работа по непосредственной разработке ПО может идти итеративно, спринтами

Например работа по непосредственной разработке ПО может идти итеративно, спринтами

Как же выбирать методологию? Нужно опираться на критерии, а не догмы
Выбор между Waterfall и итерационными методами зависит от четырёх факторов:

  1. Предсказуемость требований.
    Если цель проекта чётко определена и маловероятно изменится (строительство моста, разработка ПО для учёта налогов), Waterfall эффективнее. Если требования эволюционируют (стартап, исследовательский проект), нужны итерации.

  2. Стоимость изменений.
    В разработке мобильного приложения правка дизайна в процессе дешевле, чем перепроектирование атомной станции. Waterfall оправдан там, где ошибки чреваты катастрофическими последствиями.

  3. Регуляторные ограничения.
    В банковской сфере или здравоохранении документирование и согласования неотъемлемы, что делает чистый Agile невозможным.

  4. Культура команды и заказчика.
    Если стейкхолдеры не готовы к частым демонстрациям и изменениям приоритетов, попытка внедрить Kanban или Scrum приведёт к конфликтам.

Выбор методологии зависит от многих вводных. Но нужно понимать плюсы и минусы каждой.

Выбор методологии зависит от многих вводных. Но нужно понимать плюсы и минусы каждой.

Примеров неправильного применения Scrum полно. Тот же Scrumfall существует уже повсеместно, потому что команды гонятся за мифом чистого Agile, там где никакой гибкостью даже не пахнет. Отсюда и вылезает такая проблема как "усталость" от Scrum

Спринты выжимают все соки из разработчиков из-за частых дедлайнов <a href="https://pikabu.ru/story/mifyi_i_realnost_est_li_osnovanie_protivopostavlyat_agile_i_waterfall_13485192?u=https%3A%2F%2Fhabr.com%2Fru%2Fcompanies%2Fruvds%2Farticles%2F844506%2F&t=https%3A%2F%2Fhabr.com%2Fru%2Fcompanies%2Fruvds%2Farticles%2F844506%2F&h=f6d9dd8b075f8ee82894641f25c1c3b4ed088000" title="https://habr.com/ru/companies/ruvds/articles/844506/" target="_blank" rel="nofollow noopener">https://habr.com/ru/companies/ruvds/articles/844506/</a>

Спринты выжимают все соки из разработчиков из-за частых дедлайнов https://habr.com/ru/companies/ruvds/articles/844506/

Заключение: за пределами маркетинговых мифов

Agile и Waterfall не конкурируют — они решают разные задачи. Манифест Agile напоминает о ценностях, но не даёт готовых решений, а Waterfall — не догма, а инструмент, который можно адаптировать. Когда выбираем методологию управления проектами, вместо вопроса «Что лучше — Agile или Waterfall?» стоит спросить:

  1. Какова степень неопределённости требований?

  2. Какие ограничения накладывают регуляторы или бюджет?

  3. Насколько команда и заказчик готовы к гибкости?

Управление проектами в разработке ПО это тоже инженерная дисциплина и должно быть прагматичным. Важно:

  1. Нужно отказаться от догм и мифов. Waterfall не означает «отсутствие изменений», Agile — «отсутствие документов».

  2. Ориентироваться на ценности, а не методы. Даже в каскадном проекте необходимо внедрить частые коммуникации с заказчиком (ценность Agile №3).

  3. Признать контекст. «Идеальная» методология не существует — есть инструменты для решения конкретных задач.

Когда следующий раз услышите: «Мы Agile, поэтому не пишем ТЗ», или «Это Waterfall, тут нельзя менять требования», — задайте вопрос: «А почему?». Возможно, за этим стоит не разумный выбор, а миф, которому не место среди инженерной культуры.

Показать полностью 7
0

Лёрника, часть следующая. Война с jitsi

Всем привет!

Доступ к ресурсу: https://learnika.ru/

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

В начале было слово, а какое не скажу. Потому что не знаю, это все равно что спросить "а кто изобрел колесо".
Естественно, после установки нужно добавить параметры что у нас не анонимные пользователи, а авторизованные. подключил в конфигах токены. И понеслась...

1 Битва. Prosody не видит токены. Видишь токены? и я не вижу, а он есть.
в логах пишет:
modulemanager: Unable to load module 'auth_token': /usr/lib/prosody/.../mod_auth_token.lua: No such file or directory modulemanager: Error initializing module 'auth_token': module 'inspect' not found:
Суть оказалась проста, Prosody искал плагины не там, где они были. так же ему не хватало библиотеки из Lua, которая нужна для работы в jwt. Собственно, через luarocks поставил inspect.
так же в конфигах нужно прописать путь к плагинам : plugin_paths = { "/usr/share/jitsi-meet/prosody-plugins/" }, кто поймет, тот поймет, а кто не поймет, тот не поймет. Да, я капитан очевидность. И..... Prosody таки увидел плагины и начал их грузить!

2 Битва. Пользователи таки стали проходить аутентификацию, но когда подключается второй клиент - давай до свидания, вылетают тут же оба. Client disconnected: connection closed. Сразу оба два.

В настройках : c2s_require_encryption = true а было false, не помогло, если что, это это настройка Prosody XMPP сервера, опять же, кто то понял, кто то нет. да и какая разница. А, ну да, эта настройка определяет обязательно ли шифрование или нет. Вскрытие показало что пациент умер от вскрытия. По любому этот параметр тоже влиял, но, как могла подумать моя многоуважаемая публика, а может и не влиял. Скорее всего да. Но, визуально ничего не поменялось, ошибки все те же самые.

Хм..... хмыкнул я, но и это не помогло. а вдруг права доступа к файлам не права доступа к файлам? а вдруг все под рутом? А у Prosody и пользователь prosody. Права установил, но и это не помогло! Хотя, вскрытие показало что все файлы были под правами рута. При этом Jicofo очень даже молодец, видит, принимает. Если что, он отвечает за управление, фокусировку, координацию участников.

Но вылеты при коннекте продолжаются.

3 Битва. Финал. Порты.

Ну по логике, когда подключение без токенов, оно работает, ну значит и машина не виновата же? А вот Фиг Вам, называется, привет, Шарик. Вскрытие в очередной раз показало что без токенов коннектится по порту 443/TCP, а с токенами используются чуть чуть другие порты, которые для медиа более эффективны: 10000/UDP и 4443/TCP.

Ну а поскольку я брал облачный vps в timeweb (ни в коем случае не реклама) то стало быть настройки где то там в панели. И, в кое то веки вскрытие показало что пациент ожил от вскрытия!!! Оно стало работать!

после выхода с конференции перекидывает на главную страницу

Да, у меня два монитора, очень удобно,

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

Как то так, всем спасибо за внимание!

Показать полностью 2
2
Вопрос из ленты «Эксперты»

Ошибка при получении метаданных из гугл таблицы

Понимаю, что пикабушечка не стэковерфлоу, но может тут я быстрее получу совет. Заранее извиняюсь, если мой пост окажется глупым или раздражающим. Я не профессиональный программист, пишу больше для себя. Поиск по гуглу и общение с ИИ не дал результатов.

У меня есть две функции:

import gspread

import pandas as pd

.

def authorization():

....json_keyfile = "451208-af95638d0bdf.json"

....scope = ['https://spreadsheets.google.com/feeds',

'https://www.googleapis.com/auth/drive']

....credentials = ....ServiceAccountCredentials.from_json_keyfile_name(json_keyfile, scope)

....gc = gspread.authorize(credentials)

....return gc

.

def get_df(gc, table_name, sheet_name, columns_name_index=0):

....spreadsheet = gc.open(table_name)

....worksheet = spreadsheet.worksheet(sheet_name)

....data = worksheet.get_all_values()

....df = pd.DataFrame(data[columns_name_index+1:], ....columns=data[columns_name_index])

....return df, worksheet

Они выполняются таким вызовом:

auth = authorization()

df_change_price, change_renta_sheet = get_df(auth, 'Рентабельность', 'Изменения Ренты', columns_name_index=0)

Собственно в чём проблема. Данный кусок скрипта крутился на сервере с февраля 2025 года. Выполняется пару раз в день. Всё работало исправно. Но неделю назад при чтении метаданных:

spreadsheet = gc.open(table_name)

я стал получать ошибку: 'Connection broken: IncompleteRead(6429 bytes read, 3811 more expected)'. Число байт в ошибке меняется, но примерно остаётся таким же

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

В основном скрипте множество таблиц и все они открываются без ошибок, проблема только с конкретно этой. Так же мы пробовали сделать полную копию таблицы "Рентабельность", и она снова не открылась, сделали промежуточную (надёргали нужные столбцы и проставили зависимости) и она открывается. Даже не представляю что можно сделать.

Показать полностью
12

Курьезы и странности отечественного ІТ. Опыт циничного программиста

Для тех, кому надоели АИшные сгенерированные котоламповые наборы букв от ChatGPT, я притащил с просторов интернета старые добрые человеческие истории от программера из 2005 года. Мне такие очень заходят. Может кому тоже понравятся. Тем более познавательные и исторически значимые чтобы "те кто знает историю...". Синтаксис и пунктуацию оставляю авторские.

Кто в армии служил, тот в цирке не смеётся.

Здравствуйте, меня зовут Владимир Кожаев, и я работаю в ІТ с 2004 года. Родился в маленьком областном центре, Николаеве, учился в тамошнем кораблестроительном институте (сейчас Национальный университет кораблестроения им. Макарова). Первым местом работы еще во время учёбы была Николаевская астрономическая обсерватория. Потом уехал в Харьков, поработав там — в Киев.

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

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

Зачем я общался с этими людьми

Если Андре-Луи хотел обедать каждый день, ему следовало начать с
того, чтобы съесть свою гордость на первое.
Рафаэль Сабатини, «Скарамуш»

В кораблестроительном институте мы изучали всякое: историю религии, строительную механику корабля, высшую математику, теорию вероятностей, различное программирование и околопрограммистские дисциплины. В результате к выпуску я прорешал всего Демидовича (задачник по матанализу), почти весь задачник Базылева по аналитической геометрии, Фаддеева и Соминского по общей алгебре, Иродова по общей физике, задачник Гмурмана по теории вероятностей и математической статистике. Почти весь задачник Филиппова по дифференциальным уравнениям. Участвовал в олимпиадах по математике и занимал призовые места.

Первым моим языком программирования был Delphi, потом Python, затем обрезанная Java для мобильных устройств (J2ME, ныне забытая технология). Ещё я прорешал все задачки из книги Хювенёна и Сеппянена «Мир Лиспа» и почти все из книги Братко «Программирование на языке Prolog для искусственного интеллекта». И дипломом у меня была не кочующая из года в год реализация рабочего места библиотекаря, а исследование ПЗС-матрицы телескопа (это такая шайтан-машина, что накапливает попадающее в объектив излучение).

Вроде бы неплохое начало, но вот беда — преподаватели тогда были либо вовсе без опыта, либо с ним, но 80-х годов ХХ века. То есть сказать, за что платят деньги вот прямо сейчас, тем более в будущем, не могли. Рынка труда в Николаеве в 2000–2004 гг. попросту не существовало: две больших фирмы, в них PHP-разработка, несколько маленьких с 1С. И со свойственным юношеству максимализмом я думал, что где-то там далеко есть работодатели, которым очень нужны мои умения решать задачки.

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

Так что мне приходилось, что называется, кушать, что дают, и устраиваться, куда зовут — часто к странным людям. Все «прелести» отечественного ІТ испытал на собственной шкуре!

Иллюстрации Ульяны Патоки

Иллюстрации Ульяны Патоки

2005 год, Николаев

Встречаются два начальника:
— Ты своим зарплату выдаешь?
— Нет.
— И я нет. А они все равно на работу ходят?
— Ходят.
— И мои ходят. Может, вход платный сделаем?
Проходит неделя.
— Ну как, твои ещё на работу ходят?
— Ага, тока экономить начали!!!
— ?!
— В понедельник приходят, а в пятницу уходят.
Анекдот

Антипаттерны в менеджменте на моей второй работе проглядывались гроздьями: на говне сметану собирали. И первое, что вспоминается, — компьютер один на двоих. Да, работали посменно: первая смена с 7:00 до 15:00 и вторая с 15:30 до 24:00. Официальное обоснование этого — необходимость работы в часовом поясе с заказчиком. С кем это работали, начиная с 7:00, не уточнялось. При этом опоздание более чем на 5 минут равнялось штрафу в половину рабочего дня. Буквально охранник стоял с секундомером. Ни снег, ни дождь, ни даже неожиданная авария с перекрытием трассы не являлись уважительной причиной.

Ещё один антипаттерн — экономия буквально на всём, не касающемся непосредственно работы. Даже на елку в фойе собирали всем офисом по 5 гривен (вы представляете себе, чтобы в «Люксофте» с сотрудников собирали на ёлку?) О том, чтобы оплатить развозку (после 24:00 ничего же не ходит) или устроить корпоратив, даже речи не шло. Естественно, такая кадровая политика не способствовала долгой работе на одном месте. Поэтому начальство решило... всех запугать. Мол, эти гады поработают до полугода и уволятся. Но как это сделать?

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

Осенью 2005 года директор созвал всех на митинг: ну не можем мы больше платить! Если будете разбегаться из-за зарплаты, мы вообще свернем производство и переедем в Китай. Средняя зарплата моих коллег при этом была 200 долларов. Человек, который работал с 12:00 до 24:00, на полторы ставки был тимлидом, курировал еще несколько проектов, получал 300. Он захотел 400 — уволили. И когда мне говорят «не можем больше платить», я вспоминаю теплый сентябрьский день, 200 баксов средней зарплаты и штрафы за опоздание в пять минут.

Но не помогло и это. Что же делать? Надо, наверное, заключить договор, по которому работники фирме должны всё, а она ничего. Ниже его реальные пункты:

  • После увольнения программист обязуется совершенствовать и поддерживать разработанное программное обеспечение (я не шучу, это пункт договора. Даже работая на другой работе, ты всё равно должен этой фирме).

  • Работник обязуется не использовать знания (!), полученные на работе, после ее окончания. И список того, что знал, прилагается к договору (!).

Люди, серьёзно, я не шучу — это действительно было! Дальше по мелочи, ну там не имеешь права судиться с фирмой на территории Украины — должен ехать в Канаду. Фирма имеет право в случае претензий забрать всё имущество и так далее.

Когда я показал этот договор юристу, она так смеялась, что упала со стула. Я бросился ее поднимать, и в результате у нас завязались отношения.

Советы для менеджера:

  • Работа есть и в другом месте.

  • Не нужно думать, что все дураки.

  • Жадность приводит к бедности.

Совет для программиста: иногда, если другой возможности заработать нет, приходится проглотить очень горькую пилюлю. Не печальтесь (это не навсегда), ищите другую работу. Найдёте — уволитесь.

2006 год, Харьков

Жизнеспособна ли социалистическая система?
— О да! Если бы такой бардак был при капитализме, он бы давно погиб!

Из анекдота

Как вы, наверное, уже поняли, долго в Николаеве я не продержался — переехал в Харьков. Но, как я писал выше, до уровня тамошних программистов объективно не дотягивал. Получать же, как остальные джуниоры, живущие с родителями, чисто на пиво не мог: надо было снимать квартиру в большом городе и кушать там что-то.

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

Дело в том, что у тамошнего руководства примерно раз в полгода обострялась подозрительность вместе с раздвоением личности. Оно считало себя Иваном Грозным: я царь — всех на кол. Менеджеров среднего звена увольняли, нанимали других, и эти другие на буквально всех форумах пытались обелить контору.

Дескать, до нас работали редиски. Они, как пиявки, присосались к фирме. Справедливое начальство их выгнало, пригласило нас, и уж теперь... Потом цикл повторялся, предыдущих менеджеров пинками выставляли на мороз, брали новых, и всё по новой. Некоторых начальников уволили со словами: «Чтобы через 20 минут тебя здесь не было», потом не выплатили зарплату с формулировкой «так вы же не передали дела».

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

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

Студенты приходили вечером, иногда с пивом, записывали себе 3–4 рабочих часа и получали деньги за это. Когда кто-то из кураторов требовал показать сделанное, студент говорил: «А я уже увольняюсь». Потом увольнялся сам менеджер, и его приемник что? Опять набирал студентов!

Не меньший бардак происходил с выплатой зарплаты. Этим занимался отставной военный с правом ношения оружия: носил деньги в дипломате и давал сотрудникам. Но не сразу всем — частями. Приходилось ловить этого мужичка и получать своё вместо работы! Почему ІТ-компания не могла создать элементарную систему записи, чтобы сотрудники не толпились в коридоре, — для меня большая загадка. Очевидно, из-за того же перманентного разброда.

При этом контора была вовсе не жадной: сотрудникам оплачивали корпоративы и раз в неделю бассейн. Проекты тоже не сплошной CRUD, и в целом, если бы не эта вот странность «главного по тарелочкам», можно работать.

Советы для менеджера:

  • Все великие люди — шизофреники, но не все шизофреники — великие, и вообще, это лечат.

  • Во избежание потерь нужно контролировать, кому и за что ты платишь.

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

2006 год, Харьков, собеседования

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

С порога, ни о чём не спрашивая, начал монолог: «Вот современные программисты зажрались — не работают за 400 долларов. А я в своё время три месяца бесплатно...». Я думаю «зачем ты всё это мне говоришь», но поддакиваю. Так ни о чём, что касается непосредственно работы, моих навыков и так далее, мы не общались, в растерянности я ушел. Через несколько дней приходит офер, 500 долларов. Я отказываюсь: «Спасибо, уже есть 800». Мне пишут: «Ну так через несколько месяцев мы вам, может, повысим, и зарплата станет почти такой же» (?)

Я отказался. Вдобавок сразу после этого там начали задерживать зарплату, сильно задерживать.

Конец 2008 года, Киев, кризис

Кризис — это когда ты ждал, что вот-вот начнешь жить хорошо,
а потом понял, что хорошо ты жил раньше.

Это сейчас в Харькове платят меньше, чем в Киеве, ровно на разницу цен на квартиры. В 2008-м это было в полтора-два раза. И не удивительно, что, получив первый опыт, я ломанулся в столицу. Но вдруг случился кризис, проекты замораживали пачками, и, естественно, меня сократили, как и многих других. Однако я уже был знаком с Яковом Файном, он посоветовал: «Иди и получи свой отказ. Пиши во все конторы, соглашайся на собеседования, и ты найдешь работу». Я так и поступил, в конце мне улыбнулась удача, работа была хоть и не без странностей, но не самой плохой.

Сейчас речь пойдёт о разных собеседованиях, которые я проходил.

Игровая контора с задержкой зарплат

Пошёл я пообщаться в контору, что тогда находилась в районе ст. м. «Тараса Шевченко», игры они делали. В кризис у них случились задержки зарплат, то ли заказчик платить перестал, то ли зачем платить, если и так никуда не денутся. Я спросил, мол, как денежку даёте?

— Ну, новым сотрудникам мы, конечно, стараемся не задерживать.
— А что со старыми?
— Все, кто хотел, уже уволились.

Собеседование под банкой

Одной из отечественных контор по продаже трафика захотелось ещё и SIP-телефонию: звонки с компьютера на мобильный. Для этого им понадобился программист. С руководителем я встретился в кафе после работы (по его инициативе, конечно). Ну ладно, в кафе так в кафе. Я взял чай, он — два джина по 200, вылакал и сказал: «Я тебя хочу соблазнить на проект». Спрашиваю: «Зарплату-то платят?». Платят, отвечает, но по внутреннему курсу (сильно меньше, чем рыночный) и нерегулярно.

2009 год, торговля мордой лица

В 2009 году посчастливилось мне наконец-то устроиться в нормальное место. Ну как нормальное: зарплату платили практически вовремя и директор фирмы — адекватный (на первый взгляд) человек + специалист хороший. Как оказалось, и тут не без странностей.

Как-то заканчиваю я очередную работу. Начальник: «Я занят сейчас — посиди». Ну... я посидел, говорю: «Что мне делать?». Он: «Я еще занят». Так продолжалось неделю и было довольно часто: время работы сменялось бездеятельностью. Пик ничегонеделания был летом 2009-го: начальник сперва уехал в командировку, потом в отпуск, затем опять в командировку.

Я в офисе неделями (!) был один. Мог приехать на два часа дня и уйти в четыре, мог привести девушку на работу и делать с ней кое-что. Всё равно никого нет! Я поначалу думал, что он недоволен, что сейчас уволит меня. Работал буквально и днём, и ночью. Потом перестал: зачем, если твоей работой то интересуются, то забивают на нее, при этом платят всё в срок?

А ларчик открывался просто: начальнику его клиент платил не за часы и не за выполненные задачи, а за собственно его работу плюс дополнительно одного программиста, потом за троих (опуская детали, двух наняли осенью). Со стороны директора это выглядело так: есть работники, которых я могу предъявить заказчику. Стоимость устраивает, в случае авралов они помогают, а что-то мелкое в собственном коде я поменяю быстрее, чем им расскажу.

Совет для менеджера: иногда следует говорить подчиненным о реальном положении вещей, особенно если тебя их работа устраивает.

Заключение и советы для всех

Не кусайте руку, которая вас кормит

Вы видите, что последняя работа со странностями была у меня аж в 2009 году, больше десяти лет назад? Да, мне было 30 (сейчас 40), и я создал знаменитый афоризм: «Мне тридцать лет, вашу мать». Почему, как вы думаете? Да, крупный аутсорсинг развился и создает конкуренцию на рынке труда!

Хотите опять в конторы со странностями: платить штрафы за опоздания, собирать по пять гривен на ёлку, получать двести долларов с задержками, быть выгнанным с работы и собираться за 20 минут под тяжёлым взглядом охранника, а потом последнюю зарплату не получить — катите на аутсорс-бочку.

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

Не верь, не бойся, не проси

Блатная поговорка, применимая и в IT. Что это значит? Многое! К примеру, помни о кризисном 2008-м: как только ты станешь не нужен, будешь уволен — это бизнес. Стоит ли жертвовать своими интересами в пользу фирмы? Если тебе обещают что-то по окончанию проекта, тоже не верь: уже сделанная работа стоит очень дёшево.

Тебя обещают уволить, посадить в тюрьму, съесть — не бойся. В подавляющем большинстве случаев самое страшное, что могут сделать — выгнать, не заплатив последнюю зарплату. Будь к этому готов: имей финансовую подушку и не позволяй задолженности по зарплате перерасти в нечто значительное. Считаешь, что тобой не доволен менеджер: а ты его спрашивал? Если уж очень страшно — спроси. Но лучше просто повышать свой профессиональный уровень и быть готовым к увольнению в любой момент.

Что касается «не проси», то тут сложнее. В качестве иллюстрации приведу лишь известное утверждение: «Кто первым назвал сумму — тот проиграл». Вот и вы не называйте: не просите, пусть сами предложат.

Будь готов к увольнению

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

  1. Учиться, учиться и ещё раз учиться, постоянно учиться. На техническом собеседовании должно всё от зубов отскакивать.

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

  3. Позаботься о финансовой подушке: будь готов не работать более полугода и вырулить. Лучше, если деньги есть на год-другой жизни. Хотя бы скромной, но чтобы не пришлось менять её стиль.

Как-то так.

И ещё немного о налогах

В 2006 году я приехал в Харьков со 100 долларами в кармане и одной сумкой. Очень страшного ничего не происходило, но приходилось и пакетик чая с работы брать, чтобы булку утром запить, и жить первое время в квартире с начатым ремонтом, и многое другое. Отступать было некуда: дома осталась мать-пенсионерка и жить на ее пенсию я не мог, совесть не позволяла.

Сейчас, когда я стал опытным специалистом, вдруг оказалось, что нужно делиться с другими. Дескать, дети у них, квартиры (доставшиеся от родителей) нужно оплачивать — тяжело. У меня вопрос: а что, я не такой же? Где-то у меня дополнительные мозги, удачливость или умер богатый дядюшка? Все начинали приблизительно с одного.

Так почему средний класс должен оплачивать жизнь оставшихся дома? Давать на субсидии, пенсии для их родителей, бесплатную школу детям? Пусть каждый несет свой чемодан. На моем примере видно, что парень из маленького города с хреновым образованием может приехать куда угодно и строить свою жизнь. Может быть, не супер-пупер богатство, но на пиво и к пиву хватит. Жизнь тяжёлая? А пойдите и поработайте слегонца!

Источник: https://dou.ua/lenta/columns/curiosities-in-ukrainian-it/

Показать полностью 3

«Это просто калькулятор!»: Как я горел, но всё-таки сделал сайт без знаний кода за выходные

Всем привет. В последнее время из каждого утюга кричат: «Нейросети заменят всех!», «Учись промпт-инжинирингу или умри!». Я решил не верить хайпу, а проверить на своей шкуре: реально ли создать рабочий IT-продукт, если ты вообще не умеешь писать код?

Дано:

  • Я: 1 шт. (код читать умею по слогам, писать — нет).

  • Задача: Сделать веб-сервис «Трекер привычек» с регистрацией, базой данных, личным кабинетом и админкой.

  • Инструменты: Только нейросети (ChatGPT, Claude) и редактор кода.

  • Срок: 3 вечера.

  • Помощник: Кот (обязателен для код-ревью).

Как это было

Сразу скажу: я не написал ни одной строчки кода руками. Вообще. Моя роль была — «Дирижер». Я говорил, что хочу, а нейросеть (в роли оркестра) пыталась это сыграть. Иногда получалось фальшиво, иногда — гениально.

Этап 1. Архитектура Я просто написал промпт: "Я хочу сделать трекер привычек. Распиши структуру файлов и какие технологии лучше взять для новичка". Она выдала стек: HTML, JS, простая база данных. Окей, погнали.

Этап 2. Кодинг Я скармливал задачи кусками:

  1. "Напиши HTML-страницу с формой входа". — Готово.

  2. "Сделай так, чтобы данные сохранялись". — Готово.

  3. "Добавь календарь, где можно отмечать галочками выполненные привычки".

Тут началось самое интересное. Нейросеть — это не магия. Это, блин, калькулятор. Если ты просишь её «сделать красиво», она сделает ерунду. Нужно говорить четко: "Сделай кнопку зеленой, отступ 20px, а при нажатии отправляй запрос вот сюда".

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

Результат

Спустя 3 вечера, пару литров кофе и десяток "тыгыдыков" от кота — сайт заработал. Реально рабочий сервис.

  • Регистрация работает.

  • Привычки сохраняются.

  • Статистика считается.

Раньше (году в 2019-м) мне пришлось бы учить Python или JS полгода, чтобы такое собрать. Сейчас — выходные.

Выводы

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

  2. Локальные нейронки — топ. Я попробовал запустить модели локально (Ollama), чтобы данные не улетали «проклятым пендосам». Работает медленнее, зато бесплатно и приватно.

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

Если вам интересно посмотреть на сам код, архитектуру приложения — я собрал всё это в архив. Чтобы не захламлять пост, выложил у себя в ТГ-канале

Интересно мнение реальных программистов, кто уже пробовал кодить с ИИ — как впечатления? Реально помогает или больше времени тратишь на исправление багов?

Показать полностью 3 1

Как ИИ разработал и опубликовал приложение с помощью человека

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

И вот наступает тишина. Все сообщения прочитаны, все чаты отвечены. Телефон открываешь по привычке — «а вдруг кто-то написал?». И если ничего нет, возникает лёгкое разочарование: будто мир живёт своей жизнью, а ты в ней на секунду лишний. Лента надоела, новости повторяются — хочется чего-то персонального, адресованного именно тебе. Хочется отмечать, завершать, закрывать непрочитанное.

Так и появилась идея приложения. В один из таких моментов, глядя на пустой список уведомлений, я поймал себя на мысли: если меня это задевает, значит, я не один. Значит, есть и другие люди, чувствующие феномен «Великого завершителя» — внутренней потребности доводить всё до нуля.

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

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

Следующим шагом я создал проект в Android Studio, подключил GitHub — и начал передавать задачи GitHub Agent. Конечно, работа заняла не один день, но в свободное время за неделю получился вполне рабочий прототип: десяток экранов, база логики и даже минимальный сервер. Если сравнивать с «досетевым» опытом разработки, такой объём я бы делал пару месяцев, если бы вообще не бросил.

Вдохновлённый, я отправил приложение в RuStore. Но модераторы вернули его: «сыровато и незавершённо». Раньше такая оценка могла бы убить мотивацию. Но нейросеть — не человек, она не выгорает. Я просто вернулся в ChatGPT и спросил: что улучшить?

ИИ предложил геймификацию: опыт, уровни, красивую систему прогресса, атмосферную графику — почти как в Duolingo. Появился герой‑колокольчик, который сражается с уведомлениями, появился рейтинг, новые режимы. Ещё одна итерация работы с GitHub Agent — и приложение стало ощущаться живым.

Такую иконку предложил ChatGPT

Такую иконку предложил ChatGPT

После этих доработок приложение прошло модерацию на Rustore и опубликовано! Скачать можно тут: https://www.rustore.ru/catalog/app/ru.sitebill.chaosdestroyer

Иногда, наблюдая, как ИИ реализует задачи, вспоминаю «О дивный новый мир». Кажется, мы действительно движемся к эпохе, где от человека требуется одно — хотеть, а нейросеть делает остальное. Куда это приведёт — отдельный философский вопрос.

А пока я хочу пригласить вас испытать то, что получилось. Возможно, это приложение даст вам лёгкое чувство завершённости — ощущение, что всё прочитано, всё под контролем, всё на своих местах. Иногда именно этого не хватает.

Скачайте, попробуйте, напишите, что думаете

Показать полностью 1
11

Пикабу выручай или программист ищет работу. Без рейтинга

Здравствуйте, несколько месяцев не могу найти работу. Почти отчаялся и прошу помощи у нашего сообщества!
Перед тем, как писать сюда, прошел кучу собесов, сходил на интервью к блоггеру, написал помощника для интервью, сделал с десяток тестовых и прочее-прочее.

Я потратил много времени на освоение знаний и не хочу покидать профессию, которая мне полюбилась(ранее работал в другой сфере).

Стек: Python3(Django/FastAPI), TS(React).
Опыт программистом официальный: 2 года
Ссылка на гитхаб

Могу работать в офисе в Питере или удалённо. По зп рассмотрю все варианты.
Готов к освоению новых языков/технологий.

Если получится найти работу с Вашей помощью, весь следующий год буду направлять 10% своей зарплаты на благотворительность от имени Пикабу, о чём напишу посты с пруфами.

Спасибо!


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

1. Работодатель 1(около года стаж)

Ключевые навыки:
Frontend: HTML, CSS, TailwindCSS, JavaScript, TypeScript, React, ReduxToolkit.
Backend: Python, Django, PostgreSQL, RabbitMQ, Docker, Git.

Обязанности:
— Полный цикл разработки веб-приложений для клиентов телекоммуникационной компании: от проектирования архитектуры до deployment и поддержки;
— Разработка и оптимизация пользовательского интерфейса с использованием React и TypeScript;
— Проектирование и реализация REST API и баз данных;
— Реализация бизнес-логики на бэкенде, работа с асинхронными задачами через RabbitMQ;
— Проведение код-ревью, менторство junior-разработчиков, участие в планировании спринтов;

2. Работодатель 2(около года стаж)

Ключевые навыки:
Frontend: HTML, CSS, JS, TS, React, ReduxToolkit.
Backend: Python, Django, PostgreSQL, Docker, Git.

Обязанности:
— Fullstack-разработка приложения складского учета на Django + React
— Рефакторинг legacy-кода, улучшение производительности и поддерживаемости системы
— Проектирование и реализация нового функционала, участие в архитектурных решениях
— Написание unit-тестов, интеграция CI/CD процессов
— Оценка сроков выполнения задач и участие в планировании спринтов.

Показать полностью
4
Вопрос из ленты «Эксперты»

Вопрос по API Юmoney

Вопрос конечно скорее к @YooMoney , но а вдруг и у вас опыт есть.

У меня на сайте есть форма для сбора средств в мой кошелек. Всё работает, но хотелось бы как-то идентифицировать перевод, чтобы знать от кого пришла "соточка" ;), а то там только неполный номер карты, а он мне ничего не говорит.

Читаю документацию на сайте юмоней

https://yoomoney.ru/docs/payment-buttons/using-api/forms

там есть

Необязательные параметры

label - string,
до 64 символов Метка, которую сайт или приложение присваивает конкретному переводу. Например, в качестве метки можно указывать код или идентификатор заказа.

делаю

<input type="hidden" name="label" value="Vasy Pupkin"/>

Платеж проходит, но потом нигде ни в чеке ни в "деталях платежа" я этого Vasy Pupkin не вижу, а хотелось бы. Или я неправильно понял назначение этого поля "label"?

Показать полностью
Отличная работа, все прочитано!