Pull to refresh
38
0
Михаил Денисов@monzdrpower

User

Send message
Если мне надо куда-то поехать — я сажусь в автомобиль и еду.
Жму газ — он разгоняется, томоз — тормозит, кручу руль — он поворачивает.
Пока все это происходит — мне все равно, что у него там внутри. Вот честно.
Дизель там или бензин, инжектор или карбюратор — зачем мне это знать?
Ну что-то я знаю, конечно. Омывайку там залить, колеса подкачать :)
Но это необходимый мне минимум.
Начинаются проблемы посерьезнее — я не лезу под капот, а везу его на сервис.
Где знающие люди его починят. А я пока буду заниматься тем, что мне интересно. И ездить при этом на метро, да.

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

программисты — лирики, они не хотят планировать, они хотят весело программировать, пробуя прикольные фичи, новые фреймворки, на каждом углу рассказывая, что им для работы нужно вдохновение и «печеньки». Продолжая аналогию с шахматами — «они же умеют играть» (С) и поэтому им скучно играть похожие партии. Они могут «для лулзов» взять и пожертвовать пару пешек. Или ферзя. Или могут бесконечно выстраивать фигуры на доске красивыми рядами, называя это «рефакторингом» или «реализацией паттерна». И очень редко задаются вопросом — «А кто оплачивает банкет?» (С)

А оплачивают его серьезные дяди, которые прежде всего считают деньги и время. И им дела нет до веселых программистов, им надо знать «когда?». И они постоянно задают этот вопрос физику-ПМу. И ответ «месяца через два» или даже «скоро» их не устраивает. Им нужны цифры и проценты. Поэтому ПМ и рисует планы, схемы и графики. Переводя вдохновение программистов в скупой язык цифр. И дяди дают программистам новую банку варенья и коробку печенья.

А если не будет никакого плана — то будет не работа и результат, а анархия, все весело проведут время, завалят проект и дружно пойдут искать новую работу.
Последний проект: ЭДО для сети гипермаркетов. Начало — декабрь, плановое окончание — апрель, срок определен бизнесом — под начало договорной кампании. Начальной оценки как таковой не было, делали на основе расплывчатого ТЗ с постоянными уточнениями по ходу дела. Прототип показали в середине февраля. Сдали первую версию в мае и сразу стали делать вторую.
Вторую версию оценивали тимлид + пара ведущих программистов на основе имеющейся кодовой базы, формальные методики не использовались, расписали на 2 части, конечный срок был определён ноябрем. В основе переделок — редактирование Экселя через вебдав. С этим было очень много проблем, технических и постановочных, поэтому первую часть сдали в марте, а вторую — только в августе.
Я рад, что мы понимаем друг друга :)

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

Если ПМ не из «бывших», то он спрашивает реальную оценку у тимлида. А потом уже её «согласовывает» по инстанциям. Желательно в интересах команды.
"Тут вообще нечего обсуждать, производительность должна быть константой, основная задача руководителя – следить за этим"

И в чем же мерять эту самую «производительность»? Лучшие умы годами бьются над этим, изобретают всевозможные метрики, а воз и ныне там. Проблема разработки ПО как «инженерной науки» как раз и состоит в том, что тут нет прямого аналога «скорость * время = расстояние». Токарь третьего разряда выточит штуцер за час, а второго — за полтора. А что является «штуцером» для программиста? Сортировка пузырьком? Но никому не нужны 1000 одинаковых процедур сортировки (в отличие от 1000 штуцеров). Каждая строчка каждого программиста — уникальна (даже копи-паста не помогает, а вредит). И каждая система в конечном итоге уникальна, пусть даже многие из них называются похоже.

Перед началом стройки мы можем представить себе мост, или здание, спроектировать его с хорошей точностью, разбить на узлы, посчитать кол-во кирпича, песка и ж/б свай и получить примерную смету по времени и цене. А кто может себе с подобной детализацией представить программный продукт до начала его разработки? Тут я прежде всего говорю не о функциональности, а о собственно создаваемом программистами артефакте — программном коде. Сколько там будет строк, классов, этих самых функциональных точек?

«Проклятая неизвестность». Перед которой пасуют все методики.
Поэтому мы нанимаем опытных программистов — и всё равно идем по большей части наугад, постоянно корректируя начальную оценку.
в профиле:
«наличный рассчет» — должно быть «наличный расчёт»
«базналичный рассчет» — должно быть «безналичный расчёт»
недавно только писали про «оранжевый цвет» habrahabr.ru/post/156451/ и тут бабах! такое лого… или такой?
Роберт Мартин «Чистый код»

вообще я считаю, что в любой книге можно найти что-то полезное.
причем — даже не в первом прочтении.
второй, третий раз читаешь — ещё что-то новое, какое-то другое понимание.
плюс разные книги на смежные темы дают более полную картину.
я представляюсь как java-программист, а потом прихожу и начинаю писать на groovy и всех на него переучивать :)
Эх, все это замечательно, но всю малину обычно портит вопрос, который тебе задают в самом начале: «За сколько времени вы это сделаете и какими ресурсами?»
Очень сомневаюсь, что у господина Каца Марца изначально имелся на него ответ. Хоть сколько-нибудь достоверный.
это только кажется что «лететь 8 часов — это долго». программисты ж привыкли подолгу сидеть. пару раз покормят, туда сюда — и уже на месте :)
groovy выдает ошибку и спасибо ему за это (С)
Есть такая поговорка, что классный бильярдист не делает сложных ударов. Все его удары довольно простые. Но конечно тут есть определенная доля лукавства, потому что, чтобы следующий удар был простой — нужен хороший «выход битка» после предыдущего удара. В этом собственно и заключается сложность бильярда, не в «кладке», а в «выходе» и построении серии.
Так и в программировании — джедаем нужно быть не для того, чтобы «решать сложные случаи», а для того, чтобы предвидеть и избегать их, выбирая простые и эффективные способы решения задач.

Это был псто в защиту Хибернейта :)
Мы делали документооборот для сети гипермаркетов с филиалами по всей стране. Ни на какой анализ время никто не выделял, экономили на всем, велено было сделать на опен-сорс продуктах за полгода, ибо «в апреле начало годовой договорной кампании». Сделали к маю.
Им не нужно открывать исследовательскую лабораторию, им деньги надо зарабатывать.
Тут вкралась неточность. Деньги платят все-таки НЕ за «говнокод и костыли», а за «хорошую систему». Просто заказчик редко понимает, что же именно он получил. И даже если понимает — деньги-то уже потрачены.
Развитие прототипа в production — не прихоть ленивых программистов, а требование заказчика. Они видят работающую программу, которую чуть-чуть надо подкрутить. «Что? Какой ещё прототип, все же работает? Вы собираетесь всё переписывать?! Давайте без глупостей, мы не собираемся 2 раза оплачивать одну работу». Как-то так.
Разработка метамодели для последующего обощения функционала требует гораздо большего времени и анализа, чем собственно реализация бизнес логики. а бизнес, который платит деньги, требует, чтобы было готово «вчера», в лучшем случае — «завтра». Поэтому в своих проектах мне практически не удается выделить и использовать метаданные. Когда приходит понимание, что можно было обобщить и какие метаданные были бы полезны — проект уже закрыт, а впереди новый.

но тема очень интересная, жду продолжения :)
50 лет — ну и что? Ложиться и помирать что ли?
За здоровьем просто надо следить, спортом каким-никаким заниматься.
А что фреймворки глючат — так это от возраста не зависит.

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity