Страницы

Поиск по вопросам

Показаны сообщения с ярлыком scrum. Показать все сообщения
Показаны сообщения с ярлыком scrum. Показать все сообщения

вторник, 31 декабря 2019 г.

С чего начать большой веб-проект?

#agile #scrum


Тематика e-commerce.
Проект достаточно большой, но согласно методикам "гибкой разработки", надо разбить
проект на спринты в 1-2 недели каждый.  

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

Но что-то я застопорился с началом. Как начинаю расписывать задачу для спринта по
функционалу, так сразу понимаю, что двумя неделями тут даже и не пахнет. Минимум месяц,
а то и два!  

Как обычно поступают в студиях, работающих по такой методике?
Быть может накидать интерфейс на "бумажке" и начать с этого(с front-end)?
Или с головой окунуться в самое сложное из функционала - и реализовывать это?
Или сразу сесть и начать продумывать структуру БД? (но есть опасность, что что-нибудь
важно упущу, а потом всю структуру переделывать заного).
Как же выстроить канбан?
    


Ответы

Ответ 1



Основная суть скрама - максимизировать обратную связь, не слишком отвлекая при этом разработчиков. Ради этого вводят итерации. Суть итерации - получение инкремента - пригодного к использованию приращения продукта. Пригодность к использованию (готовность) - это основной критерий. Потому что только то, что можно использовать, может дать настоящую, качественную обратную связь. Прототип - дает обратную связь. Схема базы - вообще никак. Учтите, что скрам - это методология для команд от 5 до 9 человек. Целиком он вам он не нужен. Для команд из одного человека готовых методологий нет. Делайте в том порядке, в котором вам удобнее. Единственное, что я бы вам посоветовал (раз совсем не знаете, за что схватиться) - начинать не с интерфейса или базы. А с расписывания основных user story. Выберите из них самые важные, и реализуйте одну за одной (дописывая по необходимости тесты, базу и код).

Ответ 2



По своему опыту могу сказать, что создание проекта начинается с дня х. В этот день запускаешь yEd и прорисовываешь в нём всё что ты будешь делать буквально до мелочей. Сразу же увидите какие задачи перед вами стоят. Не только визуализируете цель, но и сразу увидите все дырявые места и на что уйдёт время. Зачастую случалось даже так, что либо находились иные решения, либо менялм структуру или логику работы проекта. Главное всё продумать, ровно на столько на сколько возможно, так как переделывать что-то потом стоит огромного времени и денег. Считай это как запуск ракеты, а ты инженер. Вроде и просчитать нужно а вроде и спешить не надо, так как ошибёшься не взлетит. Но главное на самом деле - это тест и полёт. Опыт полученный в процессе создания проекта даже лучше открывает на всё глаза нежели многонедельные обдумывания. По поводу с чего начать? Всегда необходимо начинать с сердцевины. Просто спрашиваешь себя будет ли Х работать без У? Если нет пишешь У. Потом будет ли Н работать без Z если нет то пишешь Z и наоборот. Таким способом найдёшь то с чего нужно начать. Бери в пример вконтакте. Написали соц сеть, написали страницы вход выход, регистрация, забыли пароль. запустились. прикрутили фотографии. прикрутили новости. в процессе работы поняли каким должен быть софт и написали KPHP. Удачи в проекте.

Ответ 3



Если проект большой, то может и не получиться на первых этапах создавать прототипы. Следует помнить, что чем позже после начала реализации проекта вносится изменение, тем оно дороже по трудозатратам. Поэтому имеет смысл вначале углубиться в проектирование - расписать все варианты использования по пунктам (что куда нажимает пользователь, что делает система в ответ на его действия). Это муторно и долго, но чем подробнее будет расписано, тем проще потом будет составить по всему этому правильную структуру БД и всего приложения в целом. Станет понятна вся логика работы приложения. После этого этапа проектирования выбираешь любой (ну или наиболее приоритетный/интересный/базовый) вариант работы с системой (к примеру авторизацию) и делаешь ее. Потом выбираешь и делаешь следующий. У тебя как раз будут получаться работающие прототипы, которые урезаны по функционалу, а так же список "кусочков" программы, которые еще осталось сделать. Каюсь, я лично не работал в крупных студиях, но в общем и целом порядок разработки чего-либо такой - сперва все спроектировать, чтобы не упустить важных деталей, а потом поочередная реализация сценариев использования. И по рассказам знакомых, в крупных компаниях делают так же, причем проектирование занимает не один месяц. А пока не спроектируют более-менее до конца - прототипы делать не пытаются ибо себе дороже.

среда, 18 декабря 2019 г.

Использование при создании и реализации проекта методологии управления agile scrum

#agile #scrum


Кто нибудь использовал при создании и реализации проекта методологию управления agile
scrum?
Интересует то, как приживается данная методология на русских программистах? 
Много ли времени уходит на разработку документа по функциональности проекта и разбиение
на спринты?
Можно ли действительно рассчитать очень точно индивидуальные человеко часы на разработку?
P.S.: Интересует русская аудитория.     


Ответы

Ответ 1



В нашем проекте уже более года используется Agile Scrum. Сначала все было достаточно строго, в соответствии с рекомендациями. Времени на разбиение работы по спринтам уходило совсем не много, и если задачи были очень хорошо знакомы разработчикам и они реально могли оценить сложность, то, да, получалось оценить по часам, а если нет, то нет. Но в конечном счете разбиение по спринтам и оценка по часам превратились в формальность, сейчас просто создаются номинальные задачи ("исправление дефектов"), на них навешивается достаточно грубая оценка ("неделя"), а реально сколько получится, столько получится.

Ответ 2



Время точно рассчитать нельзя. Более того, современные Agile / Scrum / Kanban эксперты придерживаются идеи, что время и не нужно рассчитывать - 5 Reasons Why You Should Stop Estimating User Stories. Очень рекомендую пост Наш процесс разработки: 50 месяцев эволюции. Общий смысл примерно в том, что при наличии адекватной команды и должной мотивации любой Agile-like подход все равно будет модифицирован, исходя из особенностей и места его применения. Главное здесь - не зацикливаться на четком следовании всем правилам Agile и Scrum и на вторичных вещах типа оптимизации push / pull на Kanban доске. Все-таки вы делаете продукт, а не стремитесь к самому "труъ 100% аджайльно-скрамовому" процессу разработки.

Ответ 3



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

воскресенье, 8 декабря 2019 г.

Как реализовать подход Agile чтобы качество организации кода было приемлемым?

#архитектура #проектирование #agile #scrum #project_management


Введение

Недавно задал вопрос:


  Agile - это зло? Или при каких условиях это выигрышный подход?


Ближайшие 2 ответа были примерно следующими:


"Аджайл работает только если заказчик готов таким образом работать. ... Но если заказчик
так работать не готов, то лучше и не связываться." (ответ от @Qwertiy)
Наиболее часто требования меняются. "Во всех более-менее крупных разработках я только
пару раз работал не с Agile ..., когда заказчик выдавал действительно законченные ТЗ.
... Во всех остальных работах что-то постоянно менялось (иногда сильно, ... иногда
слабо ...)..." (ответ от @avp)


С учетом заголовка этого моего вопроса, ответы очень в тему и очень полезные. Но
задавая вопрос, мне хотелось узнать еще больше. То есть, как организовать проект, чтобы
из продукта не получился "крокодил"?


  Не получается ли так, что: сначала реализуются одни требования -> потом приходят
новые -> ломается часть сделанного -> на этой уже кривой основе строится что-то новое
-> и в итоге получается "крокодил"? 


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



Вопрос

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



Уточнение вопроса


Как инициировать структуру проекта, как должен выглядеть фреймворк проекта, включая
БД? Ведь обычно у проекта есть БД!!. Как быть с БД при меняющихся требованиях? То есть,
как сделать гибкую рамку системы, чтобы потом наращивать фукционал (выкидывать, менять,
добавлять) но при этом не делать все заново каждый раз?


Интересны любые советы, мысли, наблюдения, выводы из опыта.



Update:

Очень интересны краткие описания технических решений. Например, из имеющихся ответов:
скрывать старый функционал за Фасадами. Или использовать Агрегаты в БД по принципам DDD.

Спасибо!



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


Как сделать, чтобы продукт имел такую организацию кода, чтобы в будущем оставаться
достаточно "живым" на долгое время и служить пользой? Чтобы отвечать новым адекватным
вызовам и в приемлемой степени подстраиваться под реальность? Чтобы не было такого,
что реальность должна подстраиваться под программу из-за структуры кода, потому что
программа делает не совсем то, что нужно, а изменить этого нет никакой возможности
(только сделать новый продукт почти сначала)?

Понятно, что ничего идеального нет. Речь идет скорее о том, чтобы проект не оказался
провальным в долгосрочной перспективе.
Всплывают в уме термины TDD, BDD... Какое им место при проектировании и реализации?
Мне кажется, есть две крайности. Перфекционизм и вылизывание кода, когда это никому
не надо (с одной стороны). И "работает - не трогай", когда все внутри запутанно, но
наращивать функционал надо и это уже почти невозможно (с другой стороны). Мне кажется,
что для успеха надо избегать и той и другой крайности. Где золотая середина? Как при
этой золотой середине выглядит код?
Даже если вначале понятно, что требования нечеткие, и заказчик готов работать по
принципу периодических спринтов, то это, как я понял только необходимые условия, но
не достаточные. Может ли тут быть такое, что если не находится красивое/хорошее решение
по проектированию базовой основы будущего приложения (то, что я называл рамкой, включая
БД), то следует отказаться от ведения проекта по принципу Agile, или отложить начало
проекта (если возможно) до уточнения требований или до нахождения нужного проектного
решения?
Расширенная форма предыдущего пункта. Допустим, есть уже основа из старого ПО, над
которым надо делать новый функционал. Как часто бывает, по хорошему, старое надо конкретно,
структурно модифицировать, прежде чем надстраивать новое (или вообще выкинуть старое).
Старое уже как бы мертвое, но пока используется. Единственная возможность, как мне
кажется, как ботаники делают, к старому стволу прилепить маленькую веточку нового,
чтобы она прижилась и выросла в новое дерево. То есть с помощью какого-нибудь технического
приема использовать старую систему, как черный ящик или как ресурс новой системы. Если
не находится красивых/хороших проектных решений по модификации или по таким выходам
из ситуации, как ботаники делают, то не является ли это ранним признаком провала проекта
в долгосрочной перспективе?
Понимаю, что это все теория. На практике все сложнее. Так же, понимаю, что у каждого
проекта своя ситуация. Какой-то проект будет выигрышным даже если организация кода
запутанная, какой-то наоборот, только если не запутанная.

    


Ответы

Ответ 1



Краткое изложение моего опыта. Я Proxy Product Owner / техдиректор на SaaS проекте, который разрабатывается по SCRUM. Я же и занимался внедрением SCRUM на проект около 6-7 лет назад. Проект с историей (живет больше 12 лет), с несколькими сменами целевых ниш, 2 попытками переписать с нуля. Основной принцип при внедрении любой вещи / фичи / технологии (тестов, agile, вообще чего угодно) - все заинтересованные люди (включая заказчика/PO) должны четко понимать, что и зачем внедряется. Заказчик должен понимать, что команда пишет тесты не просто так, а ради снижения регрессии Заказчик должен понимать, чем именно череваты конкретные технические долги (не вообще факт наличия техдолга, а вот каждый конкретный оставшийся долг). Команда должна понимать мотивацию заказчика и пользователей. Должна наступить себе на горло, и, если нужно, релизить с багами. Заказчик должен понимать цену каждого измения (причем не только $, а в импакте изменения на ту же самую поддерживаемость продукта) Собственно, основная проблема - это донести точку зрения каждой из сторон до остальных. Иначе не взлетит. Выбор инструментов / подхода / момента для размышлений над архитектурой - вторичен. БД - это кусок кода. Есть системы для отслеживания изменений, есть стандартные подходы для миграции базы на новую версию. Используйте их. В своем вопросе вы пытаетесь охватить сразу все. К сожалению, вещи, о который вы спрашиваете: процесс разработки (анализ требований, планирование, взаимодействие людей) абстрактный подход к архитектуре (TDD/BDD/DDD и прочие DD) какие-то конкретные технические решения конкретно вашей проблемы (старый проект, черный ящик и все такое) это ортогональные понятия. Можно работать по Водопаду и при этом использовать вообще какие угодно решения в коде. Можно работать по Agile и при этом использовать вообще какие угодно решения в коде. Продумывание архитектуры не привязано к процессу разработки. Сам по себе Agile, грубо говоря, это даже не процесс. Это группа процессов, каждый из которых в какой-то мере подходит под манифест Agile. Individuals and interactions over Processes and tools Working software over Comprehensive documentation Customer collaboration over Contract negotiation Responding to change over Following a plan. Проблема с этим манифестом в том, что он просто озвучивает здравые мысли. Вполне применимые в том же водопаде. Как этот манифест контролирует, в какой момент вам надо "делать базу" и как "работать с заказчиком"? Да вообще никак. Разработка ПО - это выбор подходящего процесс + подходящего технического решения + подходящих инструментов + подходящих людей. Серебряной пули нет. Золотой средины, кстати, тоже нет.

Ответ 2



Добрый день. Судя по размеру вопроса проблема является наболевшей. К сожалению, Agile это про людей. Т.е. ваш вопрос немного не корректен. Вам нужен архитектор. Который разработает и зафиксирует архитектурные решения, ограничения системы и т.д. Процесс этот сложный и трудоемкий, но именно правильная архитектура позволяет в дальнейшем систему модифицировать и изменять. Причем, даже самая замечательная в мире архитектура не позволит вам из прогулочного катера сделать авианосец. Из вертолотоносца сделать авианосец - да, а из катера - нет. Тут самое главное это ограничение. Agile тоже про это говорит, просто надо слышать. Например, в Agile есть пункт, что нужно откладывать принятие решений на максимально поздний срок, насколько это возможно. Но не позже. Если вы приняли решение делаем катер, то при пожелании заказчика - авианосец, вам придется начинать с нуля. Ну а дальше, когда у вас определены основные ограничения вы начинаете смотреть в сторону SOLID, паттернов и т.д. Адекватная архитектура позволит вносить изменения в существующее решение при небольших затратах, но если вы промахнулись в архитектурном решении, то вы опять в начале пути. Ну и по конкретике. Ваш последний пункт про старую систему. Если там SOLID соблюдается, то вы многие части старой системы можете адекватно перенести в новую. Если нет, то как вариант сделать адекватные фасады (паттерн проектирования), через которые использовать старый функционал, постепенно заменяя его на свои реализации. Сложно отвечать на такой большой крик души. Если есть что-то по конкретике, уточните, давайте попробую помочь.

Ответ 3



Попробую написать своё видение, но оно очень субъективно. Посоветуйте (варианты/мудрость/набитые_шишки), как построить процесс организации кода при подходе Agile, чтобы согласовываться с рамками подхода с т.з. менеджмента (спринты, сроки, требования, заказчики, руководство), но и чтобы продукт после сдачи можно было развивать и поддерживать. От кода тут практически ничего не зависит. Главное условие - код не должен быть страшной лапшой без признаков ООП. Всё остальное вполне исправимо. Максимально используйте основной плюс - обратную связь. Всё, что делается, должно быть как можно раньше показано если не пользователям, то хотя бы аналитику\PO\заказчику. Все их отзывы - обрабатывайте, решая какие из них важны для продукта, а какие - блажь и не нужны. Ну и, кто-то главный (PO обычно) должен держать в голове всегда виденье продукта целиком. Не каждой отдельной частицы, а именно всего продукта. Чтобы добавление новой плюшки не выглядело костылем. Чтобы изменение какой-нибудь мелочи не выбивалось из общего "стиля" программы. Или как сделать, чтобы продукт имел такую организацию кода, чтобы в будущем оставаться достаточно "живым" на долгое время и служить пользой? Чтобы отвечать новым адекватным вызовам и в приемлемой степени подстраиваться под реальность? Чтобы не было такого, что реальность должна подстраиваться под программу из-за структуры кода, потому что программа делает не совсем то, что нужно, а изменить этого нет никакой возможности (только сделать новый продукт почти сначала)? Я не понял, в чем конкретно проблема. Почитайте DDD, он довольно толково объяснит, как разрабатывать программы, чтобы они не оказались "от программистов для программистов", а были разработаны с учетом потребностей пользователей и для пользователей. Самое для меня интересное! Как инициировать структуру проекта, как должен выглядеть фреймворк проекта? Ведь обычно у проекта есть БД!!. Как быть с БД при меняющихся требованиях? Как сделать гибкую рамку системы, чтобы потом наращивать фукционал (выкидывать, менять, добавлять) но при этом не делать все заново каждый раз? БД всегда можно конвертировать. В БД должны быть "агрегаты" в понимании DDD, чтобы принципиально их переделывать никогда не пришлось. Агрегат всегда существует в этом мире, а потому понятен пользователям. Более того, сам агрегат должен быть навязан вам пользователями, а не наоборот,тогда он скорее будет расширяться, а не переписываться. По поводу переписывания старого и всего остального: Для того чтобы начать писать проект или начать переписывать проект - вам нужны специалисты, которые смогут это спланировать\спроектировать и будут при этом понимать предметную область хотя бы по крупному. Опытный архитектор как минимум на начальной стадии - необходим. Разбить крупную тему "продукта" на таймлайне критически необходимо как можно раньше, согласовать её с заказчиком - тем более. Таймлайн поможет идти по аджайлу - выпустили сырой продукт, показали аналитику\PO\заказчику, получили фидбэк, переделали. Пара-тройка прототипов до всего этого - тоже вполне хороший вариант. Если вам нужна какая то другая информация - то либо формулируйте конкретные вопросы, либо читайте литературу. По аджайлу её достаточно.

Ответ 4



По моему опыту, в любом случае нужен грамотный архитектор/тимлид/"волшебник". То есть, человек, который, будет держать в голове проект и принимать решения. У него должно быть достаточно опыта и интуиции. Все вопросы по поводу "как создать правильно базу" или "как организовать структуру проекта" отправляются подобному человеку. Каждый проект более-менее уникальный и универсального решения нет и не может быть. Но в любом случае есть "заготовки". используйте системы контроля версий. Если что то сломается, то можно найти когда и почему. используйте тесты. Хотя бы для критических участков. Если нужно модифицировать старый код - обложите тестами и вперед. сделайте сборку "одной кнопкой". да, да, должен быть либо Jenkins (или любая другая система), либо, хотя бы один скрипт, который может полностью собрать и проверить проект. Используйте миграции для базы данных. Как при этой золотой середине выглядит код? а код выглядит так, что бы решать задачу заказчика. Может ли тут быть такое, что если не находится красивое/хорошее решение по проектированию базовой основы будущего приложения (то, что я называл рамкой, включая БД), то следует отказаться от ведения проекта по принципу Agile, или отложить начало проекта (если возможно) до уточнения требований или до нахождения нужного проектного решения? А почему поиск решения не может быть частью спринтов? вполне можно разбить команду на группы и каждая пилит минимальный прототип. Менеджеры также могут работать по спринтам. В целом, все Ваши вопросы возникают потому, что Вы пытаетесь взять на себя роботу архитектора, а опыта нет.

четверг, 5 декабря 2019 г.

Agile - это зло? Или при каких условиях это выигрышный подход?

#проектирование #agile #scrum #project_management


Один участник нашего Стэк Оверфлоуа в комментарии сказал такую фразу:


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


Заинтересовал этот вопрос.

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

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


Понятно, что если речь идет о чем-то совсем не сложном по своему строению, то можно
без проблем выкинуть какой-нибудь модуль и написать другой. Но если проект комплексный,
сложный, со взаимосвязанными частями... Не получается ли так, что: сначала реализуются
одни требования -> потом приходят новые -> ломается часть сделанного -> на этой уже
кривой основе строится что-то новое -> и в итоге получается "крокодил"? 

Еще, при Agile наверняка необходим "начальный капитал", то есть какой-то уже готовый
фреймворк, в который остается только добавлять функционал. Так?


Вопрос. При каких условиях (тип проекта, окружающая среда ведения проекта, вовлеченные
участники разработки, и т.д.) подход Agile имеет преимущества над классическими или
другими подходами? 

Интересны мнения людей с опытом участия в различных проектах. 



Update:

Вытекающий/дополняющий вопрос: Как реализовать подход Agile чтобы качество организации
кода было приемлемым?
    


Ответы

Ответ 1



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

Ответ 2



Во всех более-менее крупных разработках я только пару раз работал не с Agile (хотя, фактически этот термин нигде ни разу не применялся), когда заказчик выдавал действительно законченные ТЗ. Один раз с Honeywell (FVS File Versioning System) -- требовалось сделать аналог DEC CMS (Code Management System) для работы в сети из разных компов (Ultrix, SunOS, NT, VAX/VMS). И второй раз для Mentor Graphics нужно было сконвертировать форматы файлов с одних станков печатных плат для других. Во всех остальные работах что-то постоянно менялись (иногда сильно, вплоть до смены архитектуры управляющей машины комплекса, иногда слабо и в лучшую сторону -- выбросили поддержку Х.400 при разработке шлюза почты ЦБ РФ) в ходе работы с непосредственным заказчиком.

суббота, 29 декабря 2018 г.

С чего начать большой веб-проект?

Тематика e-commerce. Проект достаточно большой, но согласно методикам "гибкой разработки", надо разбить проект на спринты в 1-2 недели каждый.
Каждый спринт должен заканчиваться вполне рабочей версией продукта, пусть и с очень ограниченным функционалом. После каждого спринта этот функционал будет становиться шире. Вроде бы все понятно.
Но что-то я застопорился с началом. Как начинаю расписывать задачу для спринта по функционалу, так сразу понимаю, что двумя неделями тут даже и не пахнет. Минимум месяц, а то и два!
Как обычно поступают в студиях, работающих по такой методике? Быть может накидать интерфейс на "бумажке" и начать с этого(с front-end)? Или с головой окунуться в самое сложное из функционала - и реализовывать это? Или сразу сесть и начать продумывать структуру БД? (но есть опасность, что что-нибудь важно упущу, а потом всю структуру переделывать заного). Как же выстроить канбан?


Ответ

Основная суть скрама - максимизировать обратную связь, не слишком отвлекая при этом разработчиков. Ради этого вводят итерации. Суть итерации - получение инкремента - пригодного к использованию приращения продукта. Пригодность к использованию (готовность) - это основной критерий. Потому что только то, что можно использовать, может дать настоящую, качественную обратную связь.
Прототип - дает обратную связь. Схема базы - вообще никак.
Учтите, что скрам - это методология для команд от 5 до 9 человек. Целиком он вам он не нужен.
Для команд из одного человека готовых методологий нет. Делайте в том порядке, в котором вам удобнее.
Единственное, что я бы вам посоветовал (раз совсем не знаете, за что схватиться) - начинать не с интерфейса или базы. А с расписывания основных user story. Выберите из них самые важные, и реализуйте одну за одной (дописывая по необходимости тесты, базу и код).