Блог им. maklaud
День добрый Уважаемые господа
Хочу рассказать небольшую историю про то как мы писали софт для сферы трейдинга.
Это история покажет какие ошибки могут возникнуть.
Уверен кому-то будет полезно!
Я не писатель и не могу описать все детали по, этому буду предельно краток
Мы небольшой компанией решили как- то написать софт, для торговли на рынке американских фьючерсов. Дело было где-то в начале 2013 года, в тот момент уже была куча решений по типу TS-Lab и прочей лабуды, но если подумать, то приходит понимание того, что ты зависишь от компании, которая написала платформу для алготрейдинга и их техподдержки, которая нех…я не хочет работать.
И от тех идей, которые в принципе эта платформа позволит реализовать, ведь сначала кажется, что можно все, но наделе серьезную вещь там не реализуешь.
Поэтому, на ум приходит только нанимать программиста и писать свой софт с нуля. Только так ты будешь уверен в софте и безотказной работе, и если будут ошибки, то в этом виноват будешь ты сам.
Вопрос, но где искать программистов?! Да еще тех, которые понимают в торговле, ведь это важно! Чел должен быть в теме, хотя бы на уровне базиса, иначе все это просто будет писаться годами!
Поискав, ты натыкаешься сначала на компании, которые торгуют и предоставляют софт для клиентов, и ты понимаешь: «Да, вроде софт писать умеют, где-то криво, но, да бог с ним! Все решаемо!»
Ты пробуешь обратиться к таким компаниям и понимаешь, что ценник просто заоблачный!!! Сам понимая, что подобные вещи не стоят того, а дело все в том, что компания тебе ставить ценник как за грааль, который отработает еще 100500 раз, хотя тех задание простое и это всего лишь идея, которую надо протестировать, а не полноценный софт, который будет качать дату, анализировать котировку и выставлять ордера.
Дело вот в чем, все компании, которые пишут софт, уже в начале дерут с тебя последнее, по той причине, что ты пишешь софт для рынка, значит ты будешь грести лопатой бабло ну так плати)))
Хотя, по сложности этот софт на уровне калькулятора! Тут вспоминаешь хуелиус с их торговыми роботами для NinjaTrader или MetaTrader, то есть робот, написанный в самой платформе, где есть массу ограничений по коду и библиотекам которые просто не позволяют написать серьезную вещь, а дерут как за супер-пупер мега ахтунг робот! ну хз друзья!
При этом, каждая компания обещает все сделать по золотому стандарту (написать и протестить)
В реальности, все получается по -другому, те вещи, которые ты описывал в тех задании, они выполняют, но как только касается таких вещей как качество этого софта — не кто не ручается!!!
К примеру, мы написали софт, он постоянно вылетал из-за плохого интернета, так как тестировали в свободное время- на ходу). Так у разработчика просто не хватило ума сделать авто пере-подключение, этого же не-было в тех задании!? И тут просто матом его хочется крыть. (да ты мудила делаешь софт, который работает с передачей пакетов данных, и ты не понимаешь, что такие вещи сами по себе разумеющиеся, они должны быть по умолчанию), Работа переходит из стадии заплатил — получил в стадию заплатил и контролируй каждый шаг!!!! Забегая в перед, так и будет в любом случае иначе не как! В итоге, доходят случаи, когда софт работает, но по каким-либо причинам не работает на другом компе или на другой Windows! И ты, обратившись с проблемой, послан на…й, а ведь ты заплатил бабки и думал, что ты все учел в тех задании, попадаешь в хитрую ловушку все то, что ты не смог предусмотреть в тз, программист предлагает тебе доделать уже на половине сделанной работы, причем это сущая мелочь без, которой тебе не как, будет уже стоить втрое дороже, чем если бы ты описал ее заранее в тз они любят этот прием!!! Программист всегда знает на чем он высушит твой карман до конца, как с моментом срочности они всегда свободны, но будут утверждать, что заняты и смогут приступить только через недельку, но за срочность могут все подвинуть на второй план! Иногда бывает так что, именно тебя двигают на второй план, когда появился новый заказ!
Ты лезешь на форум программистов и узнаешь, что сейчас, твой программист занимается поиском ошибок и просит помощи у сообщества не по твоему проекту)). А ты ждешь!!! И тебе уже не важно, был у вас в договоре указан срок или нет, потому что по сути это херня, а не договор! Подтереться и выкинуть! Ну не поедешь же ты судиться в другой город из-за копеек с программистом!?
В итоге, получаешь не рабочий софт, и идешь с этим софтом к другому программисту, который тебе с 100% УВЕРЕНОСТЬЮ СКАЖИТ НЕТ!!! «Я не буду ковыряться в чужом коде, это просто долго и дорого, легче написать новый и ты заново пишешь тех задание пытаешься учесть прошлый опыт….
Встречаются случаи, когда реализуешь простой индикатор, тебе программист пообещал, что все будет сделано, но индюк работает не корректно. Программист тебе говорит, что проблема в софте и нечего не поделать!!! Вот снова выкинутые деньги и нет продукта…
Бывают случаи, когда некоторые программисты подрабатывают после основной работы, вечером или даже ночами, иногда это хорошо так как он ночью пишет, а днем ты тестируешь, но сложно списаться и обсудить детали и недочеты.
В итоге, очень сложно найти программиста, который будет честен и будет действительно разбираться, и не бросать до последнего конца разработку, даже если он не может найти сразу причину.
Я всегда велся на репутацию программистов, думая «- ну этот точно не обманет, он дорожит своей репутацией! В итоге, всем плевать, потому, что индикаторы, которые писал этот программист будет иметь кучу положительных отзывов, которые с лихвой перекроют мой отрицательный.
По мне, программист может действительно считаться специалистом, когда он решает проблемы, ищет варианты, не бросает разработку в трудных ситуациях.
В Итоге, мы написали свою разработку спустя два года, когда работы было максимум на пару месяцев! Помимо денег, ушло очень много нервов, бессонных ночей на бектесты и массу негатива и не доверия к программистам! За этот срок мы умудрились перелопатить десяток программистов и несколько компаний, которые предлагали нам свои услуги. Мучения закончились! Ура!!!!
Будьте внимательны пишете тз очень обдуманно думайте долго пока всех мелочей не учтете
Это важно! Я был уверен, что учел абсолютно каждую деталь в тех задании но по ходу работы выяснялось что программисту нужно добавить ту или иную часть кода или библиотеки, что бы все это работало в связке
На ранних стадиях нужно что бы программист выяснил все подводные камни такого проекта (иногда они сами не знают, что невозможно реализовать ту или иную часть кода а уже обещают тебе сто процентное решение твоей проблемы)
Я очень долго искал и нашел разработчика, который добросовестно выполнил свою работу и даже больше чем обговаривалось при этом без тех задания, без лишних вопросов, он устранял все недочеты мои и свои и я хочу подытожить свой рассказ отзывом о таком программисте. Это не проплаченный, а честный отзыв в знак благодарности за ту работу которую мы проделали с ним!
Я на sMart-Lab давно писал о недобросовестных людях, которые разводят людей на деньги, и вот мой первый положительный опыт работы с человеком, который сделал свою работу до конца, и я получил то, что я хочу в полной мере и даже больше!
Именно его старанья заставили меня сесть и написать этот пост хотя я не писал на sMart-Lab очень давно
В начале разработки он рассказал обо всех подводных камнях, с которыми мы столкнемся!
Искал решения у сторонних техподдержек, когда столкнулись с трудностями, он не бросил, а искал причину и решение!
По его стараниям видно, что он любит работать и не боится проблем!
Человек может писать сложные продукты а не херачить на TS-lab из готовых блоков и брать за это большое бабло как многие сейчас делают!
Человек берется за работу с нормальным ценником при том, что ценник не меняется по каким- либо выдуманным причинам !!!
Я с честной душой могу рекомендовать такого человека и знаю мне не будет стыдно за мой отзыв
Для меня важно, чтобы люди в нашей сфере знали кому можно обратиться за помощью и не будут бояться, что их кинут на бабки
Прошу подержать это пост плюсами стариков и новеньких так как добросовестных людей очень мало в нашей сфере
Ниже оставляю контакты для связи с Дмитрием
http://smart-lab.ru/profile/Dzam/
plus.google.com/+DmitryMineev/posts
Кому-то пригодиться
обычно тянут время и получают за проект который делать час по времени а ни неделю )))
Вы сначала приходите к опытному спецу и даете свое ТЗ — он видит сколько там всего не учтено, понимает, что без дополнительной работы продукт использовать будет невозможно, добавляет в расчеты соответствующую работу и озвучивает вам смету. Вы в ужасе идете на форум и пишете, ничего себе, за два месяца работы столько заломил.
Потом вы находите какого-то недопрограммиста, который берется за ТЗ лишь потому, что ему никто ничего сложного в жизни не доверял, без анализа, на обум. В итоге вы в шоке — на выходе продукт полная лажа, программист сам не доделывает то, что вы не указали в ТЗ и т.п. Вы мечетесь от одного такого «спеца» к другому 1.5 года и наконец случайно находите опытного альтруиста, который за оставшиеся пол года делает вам то, что изначально вы рассчитывали получить за 2 месяца, по бросовым ценам.
Как делают опытные разработчики — они озвучат вам свою почасовую ставку и она будет не маленькой. Чтобы вам было проще прикинуть затраты на проект, они озвучат ориентировочные сроки работ. При этом вас предупредят, что фактические сроки могут плавать в определенных пределах, т.к. это не стройка, а интеллектуальная работа, в которой многие факторы сразу учесть невозможно, а в своей оценке они полагаются на свой многолетний опыт. Более того, вас предупредят, что сроки однозначно сдвинутся, если вы что-то не учли в своем ТЗ и потребуете доп. функционал или изменения ТЗ уже в процессе работы (а это происходит в 80% случаев). При этом почасовая оплата гарантирует вам, что разработчик будет также заинтересован в реализации любых дополнений как и основного ТЗ, т.к. он не теряет деньги, реализуя ваши новые требования (как это было в описанном вами варианте), поэтому он не будет тянуть или встречать ваши дополнительные пожелания в штыки.
<При этом почасовая оплата гарантирует вам, что разработчик будет также заинтересован в реализации любых дополнений как и основного ТЗ, т.к. он не теряет деньги, реализуя ваши новые требования (как это было в описанном вами варианте), поэтому он не будет тянуть или встречать ваши дополнительные пожелания в штыки>
Когда ты уже столько поработал с программистами ты уже можешь орентироватся в сложностях задачи и ее сроках!
И видишь что очередной мудила тянет потому, что ему выгодно!
Например «спец» отчитался в отчете: «Проделал невероятно сложную работу по расчету линии тренда, но это чистый код конечно, который не увидеть пока весь торговый робот не будет в работе». А вы ему: «Пришли мне завтра утилитку test-trend <время1> <цена1> <время2> <цена2> <время3>, которая выдает значение цены на линии тренда в момент „время3“, я проверю, сходится ли с моими расчетами.» И завтра все станет ясно. Я конечно утрирую, но принцип должен быть понятен.
Меня удивляют такие товарищи!!!
Вам никто не запрещал указать что бы был учтен разрыв связи, или плавающий интернет, или еще что то.
По сути как в любом ТЗ на разработку робота, крана, машины, электроплиты и т.д. исполнитель читает ТЗ и выполняет условия которые там прописаны и не более.
Но если в вашем терминале(регионе, районе, городе, области, государстве) бывают проблемы с интернетом(электричеством, компьютерами, рабочими, дорогами и т.д.) то почему исполнитель должен догадываться о ваших возможных проблемах? Если данные проблемы есть то о них необходимо объявлять сразу, а не требовать выяснения этих проблем от исполнителя.
И я вам скажу одно, сделанное своими руками работает на 99% и даже в этом случаи встречаются ситуации которые отгибают убытки, пример недавний сбой на бирже! Поэтому с косячными программистами в России проблемы будут всегда, если даже крупные компании такое рукоблудие в программировании позволяют.
Сейчас в основном все С++ Cи (win & lunix), C#, Java используют, исключая прочие интерпритаторы.
И я не о том, просто программной архитектуру не кто не берёт во внимание при общении с программистами, поэтому так просто тяп-лят соплями под текущее Т.З. сделали и всё, нужно дожимать этот момент. Хороших программистов очень мало у нас иногда просто диву даёшься как вообще они работают.
-----
Выход из ситуации простой — изучить программирование и писать самому.
Пригодится на будущее и съэкономит кучу денег и нервов.
К индусам не пробовали обращаться?
ИМХО, при планировании работы следовало выделить премиальную морковку для зайца-программиста (что-то типа участия в прибылях или что-нибудь еще), а потом махать ею перед его носом, не давая съесть.
Не забываем, что отладка программы занимает до половины всего времени разработки.
Но это Вам просто повезло, как кошелек найти.
1. Помимо программиста обязательно нужен тестировщик, который примет участие в написании ТЗ и по завершении этапа будет тестировать программу, и просто не перешлет дальше заказчику глючный софт.
2. Также нужен консультант, который не даст программисту вешать вам лапшу про «недостатки фреймворка» или «отсутствующие биты у вашего процессора».
Но большая часть программерской шушеры откажется работать при таких условиях, потому что хорошо работать они не обучены и в книжках про «с# за 2 недели» такого нет.
А поэтому, фундаментально обученный программист стоит не дорого, а очень дорого. Иначе он самому себе не сможет объяснить, почему он тратит свою жизнь на нищебродов-заказчиков, которые сами не знают, чего хотят — а не на работу в центре разработки дойчебанка с прикидкой уйти в сеньоры в блекрок. Когда у тех деньги появятся...
Согласен но я говорю о нормальном ценнике за калькулятор а не по 100500 мил руб
После мы уже понимали, что стоит на самом деле наше детище!
Я не говорил, что Дима делал за копейки!
Я описываю ситуацию в этом посте где я получил очень хорошее качество по разумной цене
А так если смотреть по трудоемкости и как все считать то надо смотреть вот этого товарища -> www.twirpx.com/file/298643/ есть более свежая метода с новыми цифрами от 2000 года — можно по гуглить.
В книге известного американского специалиста обобщен многолетний опыт оценки и анализа затрат на создание и эксплуатацию сложных комплексов программ. Предложен подход к проблеме оценивания труда коллективов программистов, поставлена реальная задача построения систем управления разработками программ. Рассмотрены стоимостные модели проектирования программ и распределение затрат на работы по фазам их жизненного цикла. Проведено сравнение различных методов оценивания стоимости конкретного программного обеспечения (ПО).
Для инженерно-технических работников, занимающихся проектированием и эксплуатацией ПО, для студентов и преподавателей вузов соответствующих специальностей.
Содержание
Примеры и цели инженерного программирования
Количественная модель жизненного цикла ПО (фазы и работы)
Основы инженерной экономики ПО
Анализ стоимость — эффективность затрат
Модели производительности
Анализ многоцелевых решений
Предельный анализ чистой стоимости
Показатели качества
Учет неопределенности, риска и важности информации
Искусство оценивания стоимости ПО
Методы и процедуры оценивания стоимости ПО
Оценивание стоимости и управление жизненным циклом ПО
+ русская википедия — ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%80%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C
вот его сама модель — en.wikipedia.org/wiki/COCOMO
Все дело в недопонимании.
Поэтому и существуют такая профессия как постановщик задач. А еще есть бета-тестер и руководитель проекта.
Предполагаю что Вам в фирмах говорил как раз правильную цену.
Просто вместо того чтобы заплатить сразу вы заплатили временем.
И хочу уверить, что в компаниях сидят такие же программисты с таким же опытом!
Потому как каждый проект индивидуален! и сроки озвученные фирмой гораздо больше чем у меня вышло в случае Дмитрием
Из плюсов: он очень хорошо общается и располагает к себе, довольно быстро вникает в задачу, что-то умеет программировать.
Из минусов: не смог выполнить задание и отказался вернуть 100% предоплату (да, я лоханулся и все оплатил повевшись на его адекватное общение).
Детальнее. Сделал советник, который у меня на компьютере просто не работал. На его компьютере работает (с его слов). Переделать не отказывался, но пропадал неделями на протяжении 2-х месяцев ссылаясь на другие заказы и то, что ему нужно подумать. Б… ть, ты взял работу и получил 100% оплату, какие другие заказы??? Сиди доделывай мой. Потом начал рассказывать, что дистанционно ему сложно понять в чем проблема и я должен дать ему доступ к своему ПК. Э… я торгую, у меня там пароли и явки, давай уж как-нибудь по скайп с демонстрацией я тебе понажимаю все что нужно. Не подходит ему. В конце концов нашел другого программиста, который все сделал. прошу этого Дмитрия вернуть деньги за невыполненную работу. Отказался, оказывается то, что у меня на ПК не работает его программа не является ошибкой. Предлагаю проверить на стороннем оборудовании. Ожидаемо пропал из скайп. Вот такой классный и честный программист:)