Я решил запустить онлайн-челлендж 100 days of code (https://www.100daysofcode.com), созданный Александром Каллауэем (https://medium.freecodecamp.org/join-the-100daysofcode-556ddb4579e4) .

Я не кодер и не хочу быть профессиональным кодером (по крайней мере, сейчас), но….

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

Итак, я начинаю в духе вызова, но с некоторыми изменениями здесь и там:

  1. Я хочу, чтобы мои истории были о разработке и разрушении вещей
  2. Я хочу увидеть, что нужно, чтобы что-то закончить, и начать думать об улучшениях (а не о учебниках по программированию или фрагментах примеров).
  3. Я хочу быть очень неправым, принимать неправильные решения и учиться на собственном опыте.
  4. Я хочу, чтобы люди реагировали, критиковали и вносили предложения.

Таким образом, эта задача будет в основном заключаться в том, что я попытаюсь создать что-то лучше или хуже, чем приложение, которое я использовал на работе. Посмотрим, что будет в следующие 100 дней…

Ах, эти 100 дней не будут идти подряд, так что, может быть, давайте назовем это 1 годом боли? :)

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

Что такое список недостатков? «Перечень недостатков — это документ, подготовленный ближе к концу строительного проекта, список работ, не соответствующих спецификациям контракта, который подрядчик должен выполнить до окончательной оплаты. Работы могут включать неполную или неправильную установку или случайное повреждение существующей отделки, материалов и конструкций».

Уже скучно? Бьюсь об заклад. Обещаю, будет лучше!

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

Лучший известный мне способ начать — создать базовое пользовательское требование или список историй/функций. Вот что я получил до сих пор:

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

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

Это приблизительное представление о том, с чего я хочу начать. Я должен принять некоторые решения, основанные на том, что я хочу узнать, и что может быть лучшим решением в сочетании. Я уверен, что скоро попаду в ловушку… следите за обновлениями!

В качестве сервера базы данных моей первой идеей было реализовать сервер наподобие MySQL или PostgreSQL, но, возможно, приложение на основе SQLite (https://en.wikipedia.org/wiki/SQLite) было бы проще написать в начале.

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

Я надеюсь, что это будет хорошее и долгое путешествие!

Продолжение следует на https://medium.com/@magyar1886/100-days-of-pain-day-2-databases-f869cc15a040