С чего начать создание приложения для майндмэппинга?
======================================================

 Здравствуйте.   
  

В ходе своей профессиональной деятельности столкнулся с необходимостью создания чего-то вроде модели принятия решений, что-то вроде майндмэппинга. Ни один из существующих менеджеров мне не понравился и не подошёл. Хочется сделать всё так, как нужно мне. То есть я **хочу написать своё приложение для майндмэппинга**.  
  

Проблема в том, что о программировании я знаю только то что оно есть (ну может чуть больше). Тем не менее я всегда хотел поближе с ним познакомиться, но постоянно что-то мешало. Так как теперь я могу заняться этим в качестве хобби и не с целью заработка, а из чистого интереса, то решил попробовать реализовать то что мне нужно и заодно научиться программировать.  
  

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

 Разработка приложения начинается с разработки ТЗ, как впрочем и любая другая разработка. Вот с этого и начните. Разработка ТЗ включает в себя такие вещи как:  
* Требования
* Ограничения
* Базовые скелеты интерфейса
* Сценарии использования
* Описание внутреннего функционала
* Описание взаимодействия с внешними системами

  

Затем все вот это расширятся в частное ТЗ, где каждый пункт описывается подробно и в деталях, рисуется полноценный дизайн приложения и как оно должно выглядеть. Это называется этап декомпозиции — большая задача разбивается на множество более мелких, а те в свою очередь еще более мелких. Описывается поведение каждого элемента интерфейса и его функционал. Так же описывается взаимодействие со всеми внешними системами и интерфейсы взаимодействия. Например ОС — используемые АПИ, сервисы, файловая система; сетевые сервисы — описание взаимодействия с их API и описание используемых ими данных. Подробно описываются сценарии использования — как пользователь может решить какую-то задачу, используя данное приложение. Разрабатывается структура приложения, его модули и подсистемы, используемые фреймворки и библиотеки. Создаются тесты приложения — отдельных модулей, бизнес-логики, интерфейса, API и прочего. И так далее. Программирование — это лишь одна из составных частей в разработке ПО. И не всегда самая большая.  

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

 Здравствуйте. Хочу научиться писать поэмы. По русский язык знаю что он есть. Только не предлагайте осваивать прописи, орфографию и грамматику, я хочу писать стихи и на этом учиться. 

 С нуля будет сложно, хотя это не очень сложная задача. Можете оценить объем работы <https://github.com/learn-anything/react-mindmap>  

Нужно отталкиваться от того, какие знания и в какой области у вас есть. Если веб, то идите в сторону VueJS + SVG, это будет быстрее и проще. 

 1. Необходимо осознать что придумывать колесо - пустая трата времени. Лучше взять одно из тех что продается в магазине и научиться им пользоваться (возможно после этого оно Вам понравится).   

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

3. Если интересно программирование, то начинать в любом случае придется с решения задачи "hello world!".  

4. Обучаться лучше всего решая конкретную прикладную ПРОСТУЮ задачку, которую можно сделать в одиночку в обозримом будущем.