Pull to refresh

Принцип YAGNI в управлении проектами

Website development *
Sandbox
Наша компания занимается разработкой web-приложений на заказ. Не сайтов-визиток, а именно приложений. Чаще всего — для внутрикорпоративного использования.

Один из острейших вопросов заказной разработки — правильная оценка сроков и бюджета проекта, чтобы и работа была выполнена, и заказчик доволен, и прибыль была адекватной. В течение 3-х лет мы перепробовали разные способы работы и подходы к решению проблемы сроков и бюджета. Перечитали кучу книг, побывали на десятках конференций, вебинарах и т.д. Под катом описание решения, которое мы сейчас нашли для нанесения максимальной пользы заказчику за интересный для нас бюджет.
Читать дальше →
Total votes 48: ↑42 and ↓6 +36
Views 22K
Comments 19

Как быстро и точно оценить проект без ТЗ

System Analysis and Design *
Sandbox
При таком сочетании – быстро, точно, без ТЗ – кажется, что задача не имеет решения. Однако в работе фрилансера такие задачи возникают постоянно, поэтому в борьбе за выживание заказы приходится учиться их решать. Для начала поясню, что означают вынесенные в заголовок слова.

Быстро – значит, раньше, чем заказчик примет решение о выборе исполнителя (другого исполнителя, раз вы еще не готовы ответить ему на самый главный вопрос).
Точно – значит, достаточно близко к реальной стоимости проекта, которую можно было бы озвучить после согласования ТЗ (а еще лучше после выполнения проекта, когда уже известно точное количество потраченного на разработку времени).
Ну и, наконец, что значит Без ТЗ? Понятно, что проектов совсем без ТЗ (в стиле «пойди туда, не знаю куда, принеси то, не знаю что») практически не бывает. Другое дело, в каком виде заказчик предоставляет вам это самое ТЗ.
Читать дальше →
Total votes 41: ↑29 and ↓12 +17
Views 38K
Comments 11

Команда PVS-Studio расширяет кругозор, выполняя разработку на заказ

PVS-Studio corporate blog Website development *C++ *
Outsourcing
Как вы знаете, основная наша деятельность – это разработка анализатора кода PVS-Studio. И хотя мы давно и, как нам кажется, успешно этим занимаемся, недавно у нас появилась необычная мысль. Все-таки мы не пользуемся своим инструментам в том режиме, что и наши клиенты. Нет, конечно, мы проверяем код PVS-Studio с помощью PVS-Studio. Но откровенно говоря, проект PVS-Studio не такой уж большой. И работа с кодом PVS-Studio по стилю и характеру отличается от, к примеру, работы с кодом Chromium или LLVM.

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

Ну да ладно, к чему это все? Наши теоретические желания попробовать себя в других проектах совпали с практическими предложениями, которые постепенно стали к нам поступать. В прошлом году мы решили выделить у нас в компании команду, которая бы занималась – о ужас! – разработкой на заказ. То есть участвовала в сторонних проектах в качестве программистов. Причем нам было интересно участвовать в долгосрочных и довольно крупных проектах, т.е. не менее 2-3 разработчиков и не менее 6 месяцев разработки. У нас было две цели:
  • попробовать альтернативный тип бизнеса (заказную разработку помимо продуктовой разработки);
  • самим посмотреть на использование PVS-Studio в долгосрочных проектах.

И первая, и вторая задача оказались удачными. Но эта статья не про бизнес по заказной разработке, а про наш опыт. Имеется в виду не организационный опыт. Про это и так много статей. Про опыт работы с кодом чужих проектов. Про это мы и хотим рассказать.
Читать дальше →
Total votes 46: ↑34 and ↓12 +22
Views 7.4K
Comments 19

Плюсы и минусы заказной разработки без ТЗ

Website development *System Analysis and Design *


В конце прошлого года к нам в компанию пришел заказ на небольшую автоматизацию. Товарищ моего шефа, предприниматель, уставший от обилия ошибок из-за человеческого фактора, захотел автоматизировать процесс подготовки макетов для последующей машинной обработки. Макеты выполнялись в Автокаде и Фотошопе. Задача показалась решаемой и интересной. Предприниматель получил положительный ответ. А что из этого вышло, читайте далее.
Читать дальше →
Total votes 25: ↑18 and ↓7 +11
Views 34K
Comments 42

Обзор процесса разработки программного обеспечения

Website development *
Sandbox

Введение


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

Я работаю в IT последние 15 лет, хотя программированием начал заниматься значительно раньше. Основное направление моей деятельности как системного архитектора была организация разработки программ, разработка концепций и верхнеуровневой архитектуры и контроль выполнения концепции на протяжении проекта. Кроме управления разработкой ПО и создания архитектуры, я время от времени занимаюсь решением сложных технических проблем и написанием некоторых критически важных участков кода, где необходимо не только знание самого языка и среды разработки, но и их внутренней организации, иногда преподносящей неприятные сюрпризы.

Проекты, над которыми я работаю, чаще всего связаны с разработкой заказного или инвестиционного программного обеспечения. Также мне приходилось работать с встроенным ПО и программами, ориентированными на выпуск «хитов» (что, с лёгкой руки Джоэля Спольски, я называю далее игровым ПО, хотя на самом деле некоторые игровые проекты ближе к инвестиционным).

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

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

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

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

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

Другая сторона наших заказных проектов – высокие требования к функциональности. Это и высокая нагрузка на все системы, и большая географическая распределённость, и высокие требования к точности вычислений при очень ограниченных временных рамках. Часто в наших проектах появляются элементы исследовательской работы и творческого поиска, направленного на решение нетривиальных проектных задач. Иногда нам приходится комбинировать в рамках одного процесса разработки разные методологии, например, вставляя в общий процесс, близкий к RUP, один или несколько этапов почти чистого scrum, порождая что-то вроде проекта в проекте. Это позволяет нам сохранять невысокий уровень вовлеченности пользователей, связанный с природой проекта, с гибкостью разработки в условиях высокой неопределённости требований. В этом плане для меня важен именно подготовительный этап, во время которого можно выбрать необходимую методологию и выстроить оптимальный процесс разработки. Один из примеров применения гибкой методологии я описал в статье «Применение agile при разработке проекта для государственного заказчика».

В качестве примера работы над инвестиционным проектом я могу привести разработку комплексной системы безопасности, которую мы создавали как «коробочный» продукт. Под моим руководством было выпущено последовательно четыре версии этой системы, пользователями которой стали самые разные коммерческие и государственные организации, включая мэрию Москвы, АФК «Система», банки, бизнес-центры и, конечно, наш собственный офис. Первая версия была не очень успешной, но у нас была стратегия развития, которая позволила нам успешно захватить рынок и пережить сложные времена кризиса. Опыт работы над этим и ещё несколькими инвестиционными проектами тоже был учтён при формировании используемого мной процесса разработки.

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

Важно понимать, что переход процесса от одного этапа к другому не имеет чёткой границы. Как правило, работы следующего этапа начинаются по мере выполнения 80-90% работ по предыдущему этапу. Особенно это касается разработки требований, когда в ряде случаев снятие неопределённости происходит лишь к концу проекта. Безусловно, наличие такой неопределённости в проекте является существенным риском и должно находиться под постоянным контролем.
Читать дальше →
Total votes 19: ↑13 and ↓6 +7
Views 169K
Comments 45

Как заказать мобильное приложение?

ANT corporate blog Mobile App Analytics *
image


Каждому бизнесу рано или поздно нужно мобильное приложение. Как его заказывать? В этом случае вам помогут 5 вопросов, на которые вы, ответив, легко закажете мобильное приложение.
Читать дальше →
Total votes 6: ↑5 and ↓1 +4
Views 1.6K
Comments 0

Сказ о том, как сделать Гаусс пушку за семь дней

Robotics development *
image

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

Читать дальше →
Total votes 33: ↑26 and ↓7 +19
Views 55K
Comments 40

Разработка требований для противоречащих законодательств

System Analysis and Design *
Многие продукты, ориентированные на международный рынок, нацелены на обслуживание клиентов, находящихся под действием разных, часто даже противоречащих финансовых регуляций и государственных законов.

На примере нашего проекта я расскажу как мы отлично с этим справились и какие практики выработали.

С докладом на эту тему я выступил на SECR-2016, слайды приложены в конце статьи.

Суть проблемы


В нашей ситуации, общий функционал, востребованный всеми клиентами, для каждого из них имел собственные правила, навязанные финансовым и юридическим регулированием. В таком случае самое важное не растерять все эти тонкости по дороге от выявления этих требований до удовлетворения клиентских потребностей.
Total votes 10: ↑10 and ↓0 +10
Views 4.7K
Comments 7

Как построить эффективный управленческий учёт и получать сверхприбыль

AGIMA corporate blog Project management *Business Models *
🔥 Technotext 2020
image

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

Основная задача управленческого учёта — показать план и факт по финансовой модели организации для принятия управленческих решений. Но как учесть все факторы и риски для построения финансовой моделей?
Читать дальше →
Total votes 14: ↑10 and ↓4 +6
Views 8.1K
Comments 11

Еще раз про усложненность архитектуры и порог входа

Development of mobile applications *Designing and refactoring *Development for Android *
Sandbox

В данной статье я коснусь вопроса порога входа в проект с устоявшейся архитектурой и дам несколько вариантов ответа на очень часто возникающий вопрос: почему так сложно?


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

Читать дальше →
Total votes 8: ↑5 and ↓3 +2
Views 7.9K
Comments 13

Как сделать заказной веб- или mobile-проект с нуля: процессы, правила и немного крови

Development Management *Project management *
Sandbox
В интернете и книгах полным-полно best practices, которые освещают те или иные моменты в работе над ИТ-проектом. Однако best practices не позволяют увидеть всю картинку, на которой был бы виден весь путь реализации проекта с нуля.

Мне не удалось найти такой «мануал», который бы разложил четко и по полочкам весь объем и порядок работ в заказном проекте. Поэтому идея поделиться своим опытом в разработке «внешних проектов» показалась мне неплохой — быть может, вы узнаете здесь себя.
Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Views 6.1K
Comments 4

Заказная разработка контроллеров для IIoT

Synergy Team corporate blog SCADA *Development for IOT *Manufacture and development of electronics *IOT
В большинстве проектов промышленного Интернета вещей (IIoT) заказчики используют контроллеры, с которыми работали раньше или рекомендованные поставщиками систем верхнего уровня. При этом счет IIoT контроллеров на рынке, из которых можно выбирать, идет на тысячи.


Не всем известна опция разработки оборудования на заказ. Для большинства промышленных контроллеров не нужен «дальний космос» в виде уникального функционала или дизайнерского корпуса. При удачном выборе подрядчика, имеющего необходимые наработки, за 2-3 месяца можно сделать опытные образцы, а еще через пару месяцев — начать серийное производство. Разработка может окупиться за счет использования недорогой элементной базы и реализации нужного количества функций под конкретный проект. Комплекс оборудования на объекте будет состоять из минимального количества устройств (часто одного), а значит будет меньше работ по сборке, установке и пуско-наладке.

Заказная разработка «железа» давно не является уделом избранных заказчиков с огромными бюджетами. Однако, имеется ряд особенностей, с которыми лучше ознакомиться на собственном чужом опыте до начала проекта.
Любопытно
Total votes 9: ↑9 and ↓0 +9
Views 4.8K
Comments 8

Стратегия тестирования краткосрочного проекта

Arcadia corporate blog IT systems testing *Web services testing *Mobile applications testing *

За пять лет работы в «Аркадии» — компании-разработчике программного обеспечения на заказ, где я работаю тестировщиком, — мне довелось поучаствовать в самых разных проектах. Большая часть из них была связана с веб-разработкой, меньшая — с мобильной. Некоторые проекты длились более года, другие были краткосрочными (полгода или даже пару месяцев). Менялся и размер команд: от трёх до трёх десятков человек.  

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

Читать далее
Total votes 12: ↑11 and ↓1 +10
Views 8.9K
Comments 0

Стоит ли инженерной команде с продуктовыми амбициями заниматься аутсорсингом?

Venture investment Start-up development IT career Business Models *Manufacture and development of electronics *

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

Когда я только начинал работать в отрасли электроники в начале 2000-х и мечтал создавать серийные устройства на острие технологий, то мог рассчитывать только на собственные ресурсы. Не было доступа к западным рынкам свободного капитала, менторов, хабов и акселераторов — всего того, что сейчас формирует hardware-экосистему, да и доступ в интернет в те времена только недавно заработал без Dial-Up. Самым логичным выходом из ситуации для меня было такое решение:

Чем всё это закончилось?
Total votes 5: ↑5 and ↓0 +5
Views 2.6K
Comments 2

12 визуализаций данных, которые иллюстрируют самые большие проблемы бедности

OTUS corporate blog
Translation

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

Читать далее
Total votes 11: ↑9 and ↓2 +7
Views 5.1K
Comments 1

Как планировать разработку digital-проектов с учетом возможных изменений, сохранить прибыль и избежать убытков

Development Management *Project management *Product Management *

Рассказываю, как наша компания адаптируется к изменениям требований при планировании проектов. Материал поможет руководителям веб-студий всегда делать проекты прибыльными. Клиенты digital-компаний смогут лучше ориентироваться на рынке услуг и понимать, в каких случаях можно все починить «по гарантии», и где лучше не экономить на незаменимом.

Читать далее
Total votes 18: ↑17 and ↓1 +16
Views 1.5K
Comments 2

Как не потерять собственное приложение

Development of mobile applications *Project management *

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

Уверены, что это действительно так?

Могут ли разработчики удерживать или претендовать на продукт?

Если возникнут конфликты, кто будет прав и как обезопасить себя и свои права?

Об этом говорим в статье.

Читать далее
Total votes 3: ↑3 and ↓0 +3
Views 1.9K
Comments 15