В следващите 10+ поста ще направим един обзор на технологиите, които използваме в Officernd. Ще се опитаме да разгледаме някой по-интересни имплементационни детайли или поне да предоставим достатъчно материали за четене по темата. За тези, които не знаят какво е Officernd – може да прочетете тук:
Officernd е online Платформа за планиране и мениджмънт на офис пространство.
Може да пробвате демо стаята – 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, като модел за стартиране на софтуерна услуга – технологичен стартъп.
Теми
Това е списъкът с теми, които ще разгледаме в следващите постове. Ако се сетите за нещо друго, пишете в коментарите.
- Избор на Технологичен стек – MEAN;
- Web сървър с nodejs и express;
- A = Angular. Плюсове и минуси на SPA;
- Front-end – Bootstrap на макс и други полезни библиотеки;
- M = Mongodb и Mongoose;
- Чертане в web – Drawing APIs;
- Интеграции с други услуги – UserVoice, Analytics, Intercom, WordPress, Github pages и други;
- Инфраструктура – Source Control система, Deployment (Amazon), Автоматизация, Continuis Integration, Domain names, Mail setup;
- Performance – на сървъра, на клиента и помежду им; :)
- SEO;
- Други интересни теми – Export на картинка (не е толкова лесно, колкото звучи :) ).
По всички теми ще се опитаме да влезем в детайли – защо е направен даден избор, плюсове и минуси на различни опции и т.н.
Но преди кода!
Писането на код и създаването на продукт е лесната част за всеки програмист.
Но! Голямо НО. Ако правите стартъп, имащ за цел да създаде продукт, който да се ползва от хора – забравете за програмирането на първо време. Валидирайте идеята си първо. Разберете какво искат хората и тогава създайте това, което искат. Прочете малко повече за Lean Startup и Agile Engineering. Може да също да разгледате Стартъп академията за повече информация по темата.
Ако все пак сте на етап да разработвате продукта вече – Всяко парче код трябва да решава реален проблем. Всяка интеграция, която правите, всяка нова функционалност трябва да има реална причина защо я правите. Всеки избор на технология трябва да има реална причина. Много често програмистите правят каквото им е интересно, каквото е модерно в момента, каквото e hip, cool, trendy… Но това не винаги решава проблеми, даже най-често създава нови. :)