понедельник, 25 сентября 2023 г.

[work] Вроде бы "проект мечты", но что-то пошло не так...

Проект с текущим заказчиком подходит к концу и оставляет весьма странные ощущения...

Начиналось все весной 2021-го года, когда после короновирусного 2020-го дела у нас шли весьма не радужно. Первоначально вообще никаких заказов не предвиделось. Потом, к апрелю-маю, на горизонте вроде бы замаячила пара потенциальных проектов, но все что-то откладывалось и не складывалось (да и не сложилось в итоге). А тут на нас выходит человек, который говорит что-то вроде "Мне нравятся ваши SObjectizer и RESTinio, и мне кажется, что на их основе вы могли бы для меня сделать прототип нового продукта..."

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

При этом изначально предполагалось, что я буду на вторых ролях, что моя задача будет заниматься какими-то околосистемными и инфраструктурными вещами, вроде обмена BLOB-ами между процессами посредством shared memory. Ну и сперва никто не предполагал, что затянется все это не на один год.

Но что-то пошло не так :(

И с начала 2022-го года проектом занимался уже я один.

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

Временами напрягало, временами отпускало.

Вот этим летом напрягло очень уж сильно. Сдерживало же то, что мы вписались в проект, сделали большой объем работы, но до логического завершения пока еще не довели. А бросать начатое не доделав мне нравится еще меньше, чем писать GUI-приложения для конечного пользователя.

Но тут до нас долетело очередное эхо войны (войны, которую соседняя страна скрывает за эвфемизмом СВО) и Atlassian "порадовал" новостью о грядущей блокировке моего аккаунта. При том, что разработка как раз ведется на Atlassian-овском bitbucket-е.

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

Такая вот неоднозначная история получилась. Ведь вроде бы должен был быть "проект мечты", который и дает нам возможность погрузиться в новую тему, и оставляет время на развитие собственных проектов, и базируется на SObjectizer-е (RESTinio там не удалось применить из-за отсутствия в RESTinio HTTP-клиента), и мы в очередной раз оказались у самых истоков и начали с нуля, не имея багажа чужого легаси...

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

Так что, потенциально, все должно было бы быть хорошо.

Но что-то пошло не так.

Печально. Хотя есть и облегчение от того, что я перестану писать код, который мне не очень интересен.


Обычно стараюсь не распространяться о проектах и заказчиках, т.к. их у нас и не так много (мы все-таки пытались развиваться как продуктовая компания, а не аутсорсинговая, поэтому за заказы брались по необходимости "для поддержания штанов"), и не нравится выставлять кухню напоказ. Но что-то как-то... неоднозначненько, сильно двойственные ощущения. Вот и не удержался.

7 комментариев:

Yury Schkatula комментирует...

Если Заказчик адекватный, то оглядываясь на свой outsourcing-опыт, я бы попросил ввести полу-дизайнера, полу-программиста для GUI. Тут не нужен убер-эксперт, любой толковый middle будет выше крыши (соответственно, бюджет не так нагружаем). Ну и переехать на любой другой репозиторий/трекер. Плюсы: перестаём заниматься тем что не нравится, сохраняем проект и счастье Заказчика.
А уж решать что делать со своим прерсональным счастьем - тут только один человек поможет, из Зазеркалья.

Stanislav Mischenko комментирует...

А мне как раз GUI был бы интересен. Пожалуй единственное, что может доставить мне боль, это фронтенд на Джава скрипте ;)

eao197 комментирует...

@Stanislav Mischenko:

GUI бывают разные. Например, на Dear ImGui. Там своя специфика, сильно отличающаяся от привычного GUI на виджетах/контролах.

Stanislav Mischenko комментирует...

У меня опыт с GUI по большей части в мобильной разработке. Из плюсовых фреймворков только MFC, и то очень давно. Моё мнение, что виджеты/контролы это прошлый век. Мне куда интереснее эпловский SwiftUI или гугловый Flutter. Поэтому думаю, что с Dear ImGui я бы смог подружиться. Наверное при условии, что он не времён диназавров.

eao197 комментирует...

> Из плюсовых фреймворков только MFC

ИМХО, MFC был одним из самых неудобных и примитивных. С Qt все было гораздо приятнее.

> Поэтому думаю, что с Dear ImGui я бы смог подружиться

Да там ничего сложного и нет. Просто совсем другой принцип.

А какую ссылку посоветуете, чтобы можно было за 10-15 минут понять в чем суть гуглового Flutter?

Stanislav Mischenko комментирует...

К сожалению не посоветую. Я лично смотрел видео на ютубе и там долго и нудно и сильно больше, чем 10-15 минут. Суть на самом деле очень проста, и, я так понимаю, Dear ImGui построен по той же концепции. Каждый кадр строится модель виджитов, которая потом рендерится и уничтожается. Следующий кадр всё заново. Таким образом можно писать код в стиле:

List {
Items(dataSource)
if {
Button "Exit"
} else {
Button "More..."
}
}

eao197 комментирует...

Любопытно, что immediate mode GUI в Web заехала. Нужно будет поинтересоваться.