В следващите 10+ поста ще направим един обзор на технологиите, които използваме в Officernd. Ще се опитаме да разгледаме някой по-интересни имплементационни детайли или поне да предоставим достатъчно материали за четене по темата. За тези, които не знаят какво е Officernd – може да прочетете тук:

Officernd е online Платформа за планиране и мениджмънт на офис пространство.

Officernd Designer

Може да пробвате демо стаята – www.officernd.com/rooms/demo.

Технологичният стек (набор от технологии за създаване на приложение), който ще разгледаме е изцяло web насочен, тъй като Officernd за момента е web/online услуга.

Софтуерна услуга – Software as a Service (SaaS)

Нека думата Платформа в слогана на Officernd не ви заблуждава, че става дума за услуга тип Софтуерна платформа (PaaS).

Officernd е сравнително типична Софтуерна услуга в облака (SaaS, cloud service :) ).

Какво е Софтуерна услуга (SaaS)? Това е софтуер със специфичен модел на разпространение. Често притежава някой от следните характеристики:

  • Централизирана – много често в облака;
  • Достъпна – най-често се достъпва с лек клиент през Browser-а или мобилно приложение, за разлика от традиционния софтуер, където ти трябва инсталация;
  • Плаща се с абонамента такса – subscription fee;
  • Лесно разпространение – компанията, която я разработва може лесно да предоставя нови версии;
  • Колаборация – всички минават през централизиран софтуер, което прави лесна и възможна колаборацията между клиенти;
  • Лесна интеграция с други услуги;
  • Лесна откриваемост – всичко е online;
  • Преизползваемост – по-голямата част от логиката е на сървъра, което прави лесно добавянето на нов клиент – мобилно приложение например;
  • Много често предоставя допълнителни услуги – например API за интеграция.

Няма нужда да коментирам плюсовете на подобен тип софтуер. Мисля че на всички са ясни. Повечето модерни софтуерни приложения и услуги спадат в тази категория по един или друг начин.

Технологичен стартъп

Най-важното за един софтуерен/технологичен стартъп е всичко да се случва супер бързо. Никой не може да си позволи да прави софтуер с години, дори и месеци. Прототип, а и цял софтуер може и трябва да се създава в рамките на дни. Т.е. за целите на стартъп ни трябват:

  • Бързо и лесно създаване на софтуера (писане на код);
  • Максимално използване на готови услуги и продукти (интеграции);
  • Бързо и лесно разпространение;
  • Достъпност;
  • Минимални разходи;
  • Лесна откриваемост.

Именно затова е доста логичен изборът на Software as a Service, като модел за стартиране на софтуерна услуга – технологичен стартъп.

Теми

Това е списъкът с теми, които ще разгледаме в следващите постове. Ако се сетите за нещо друго, пишете в коментарите.

  1. Избор на Технологичен стек – MEAN;
  2. Web сървър с nodejs и express;
  3. A = Angular. Плюсове и минуси на SPA;
  4. Front-end – Bootstrap на макс и други полезни библиотеки;
  5. M = Mongodb и Mongoose;
  6. Чертане в web – Drawing APIs;
  7. Интеграции с други услуги – UserVoice, Analytics, Intercom, WordPressGithub pages и други;
  8. Инфраструктура – Source Control система, Deployment (Amazon), Автоматизация, Continuis Integration, Domain names, Mail setup;
  9. Performance – на сървъра, на клиента и помежду им; :)
  10. SEO;
  11. Други интересни теми – Export на картинка (не е толкова лесно, колкото звучи :) ).

По всички теми ще се опитаме да влезем в детайли – защо е направен даден избор, плюсове и минуси на различни опции и т.н.

MEAN stack

Но преди кода!

Писането на код и създаването на продукт е лесната част за всеки програмист.

Но! Голямо НО. Ако правите стартъп, имащ за цел да създаде продукт, който да се ползва от хора – забравете за програмирането на първо време. Валидирайте идеята си първо. Разберете какво искат хората и тогава създайте това, което искат. Прочете малко повече за Lean Startup и Agile Engineering. Може да също да разгледате Стартъп академията за повече информация по темата.

Ако все пак сте на етап да разработвате продукта вече – Всяко парче код трябва да решава реален проблем. Всяка интеграция, която правите, всяка нова функционалност трябва да има реална причина защо я правите. Всеки избор на технология трябва да има реална причина. Много често програмистите правят каквото им е интересно, каквото е модерно в момента, каквото e hip, cool, trendy… Но това не винаги решава проблеми, даже най-често създава нови. :)