С тази публикация, бих искал да споделя предизвикателствата, с които се сблъсках покрай създаването на 0700. Също така, искам да поясня, че публикацията съдържа доста технически термини и може да не е особено интересна на потребители, без технически познания.
Още с раждането на идеята, бях изправен пред избора на технология, с която да започна разработването. Мой тогавашен колега промотираше React Native, и тогава се замислих дали наистина да не тръгна в тази посока. React Native представлява разработена от Facebook библиотека, която предоставя писане на нейтив приложения едновременно за iOS и Android, като ползите от това са, че разработваш само един продукт, с една кодова база. Търсих доста в интернет за плюсовете и минусите, и кое да избера, но така и не успях да попадна на статия, която да отговори на въпросите ми. След това се допитах до Габриела Александрова , тъй като професионалния фокус беше точно мобилни приложения. Въпросът беше следния – React native или Android native. Тя ми обясни, при първата опция, ще имам доста главоболия със настройването (setup) на проекта, и ме посъветва да заложа на Android native. Тъй като имах доста години профисонален опит с Java (Android native може да се пише на Java и наскоро излязлия Kotlin, който също върви на JVM), се чувствах в свои води, и като цяло нямах големи спънки с разработването.
С първата прототипна версия тествах интереса на потребителите. След като видях, че такъв има, реших да я докарам до визията, която имах в своето съзнание. Имайки ясна представа, какво исках да създам и бидейки аз самият разработчик, имах грануларен контрол върху разработването и успях да преведа визията в съзнанието ми едно към едно с продукта, които исках да видя. Ако ми липсваха технически познания или бях делегирал продукта да бъде разработена от друга страна, колкото и описателно да бях направил заданието, винаги щеше да изскочи нещо, което да ми се иска да бъде другояче направено.
Тъй като нямах никакъв опит с разработването на Android приложения, придобивах изключително много нови познания. В интернет има океан от уроци и туториали за най-различни аспекти, като за горния скрийншот, беше нужно да създам нов Adapter към съществуващото ListView (Андроид компонентът, който е използван за визуализирането на контактите). Бях намерил урок, където беше направен музикален плеър с доста сходен визуален интерфейс. Взех вече направеното и го преправих да отрази моите нужди, без да пиша всичко от начало. Преди доста време бях прочел нещо, което ми се гравира в съзнанието – най-добрият код е код, който не съм писал аз. Ставаше въпрос за ползването на библиотеки. Ако има библиотека, която вече решава даден проблем, то по-добре да се използва нея, отколкото да се прави всичко на ново. Ползите от това са, че най-вероятно екип от хора я е разработвал, предвидил е всички “капани”, също така доста вероятно библиотеката да се поддържа с фиксване на бъгове и регулярни ъпдейти. Всичките тези фактори спестяват ужасно много време, което е най-ценният ресурс. Ако трябва да решите n наброй неща и отделяте на всяко изключително много време, ще стигнете до кривата круша. В случая аз гледах да преизползвам каквото мога – било то от библиотеки или уроци.
Създаването на Android нейтив приложение оряза втората по популярност операционна система за мобилни устройства – iOS. Тъй като не исках нито един потребител да бива “изоставен”, разработих уеб приложение, което таргитираше именно iOS потребителите. Тъй като отново не исках да тръгвам да създавам нещо от нулата, търсих нещо създадено, което лесно да мога да адаптирам. Доста добре си спомням деня, тъй като прекарах доста време в търсене и не успях да намеря това което търся. Привечер отново пробвах да намеря – и воала – като на шега се яви точно това, от което се нуждаех. Открих го в W3Schools. Ако разгледате кода на примера и на 0700 уеб версията, ще забележите, доста неща, които не са рефактурирани и носят същите имена – myFunction, myInput итн. Относно адаптацията, успях за има няма час да го докарам до визията и функционалностите които ми трябваха, като единствената функционалност която липсваше е да търсиш по псевдонимите, кръстени от мен aliases. Иначе казано Банка ДСК да може да откривана като се напише и “Banka DSK”. Отново скоростното реализиране беше възможно, тъй като имах доста натрупан опит с разработването на уеб приложения. Дефакто и към тогавашния момент да представляваше само frontend, като всички контакти тогава бяха хардкоднати, колегите, които имат опит с уеб приложения със сигурност знаят, че понякога и най-простото нещо със CSS, би могло да ти убие буквално часове.
След създаването на уеб приложението си вкарах малко или много автогол, тъй като имаше две отделни места, в които да обновявам данните – в уеб версията и в Android приложението. Бих го описал като Support hell – беше изключително трудно за поддържане и добавяне на нови контакти. Повече за този проблем, който сам си създадох и неговото решение, прочетете във втора част.
За мен изключително важно е да обогатявам знанията си, като 0700 успя да ми помогне изключително много с това – придобих познания за разработване на Android и iOS приложения, които тотално ми липсваха. Преди да създам iOS версията на 0700 беше нужно да създам и сървърно решение, което да ни улесни да добавяме нови номера. За десерт от към нови знания създадох и този блог, като преди това нямах кой знае какъв опит с WordPress. От към академично ниво, преследвам докторска степен. В професионален план се занимавам със софтуерно консултиране в сферата на ecommerce решенията. Всичкият този пъстър и богат опит ме прави изключително полезен, щом се опре до консултиране за софтуер. Ще се радвам, ако бих могъл да ви помогна с нещо.
Напишете първия коментар