Kada izmišljati 'toplu vodu', a kada koristiti tuđa rješenja?

Developeri, znate li ocijeniti kada izmišljati ‘toplu vodu’, a kada koristiti tuđa rješenja?

Developeri se tijekom rada često susreću s jednom velikom dilemom: Kako ocijeniti kada neku funkcionalnost razvijati sami, a kada koristiti tuđu pamet? Upravo je to bio glavni fokus predavanja Alana Pavičića, održanog u sklopu konferencije Change koja je u prošlu subotu, u prostorima zagrebačke tvornice čokolade Kraš, okupila više od 300 sudionika.

alan_pavicic_cover
Kako ocijeniti kada neku funkcionalnost razvijati sam, a kada koristiti tuđa rješenja? Upravo je to bila glavna tema predavanja Alana Pavičića, održanog u subotu na konferenciji Change.

Na konferenciji Change, u organizaciji tvrtke King ICT, održana su 22 predavanja podijeljena u dva tracka, a bila su namijenjena developerima koji se bave razvojem enterprise softvera. Tematika na konferenciji fokusirala se većinom na Java i .NET enterprise development, uz pokoje predavanje o tuningu baza podataka ili performansama.

Koristiti tuđe rješenje ili razvijati vlastito

U mnoštvu specijaliziranih predavanja, izdvojilo se jedno koje nije bilo toliko usmjereno na tehnologiju, već više na filozofiju samog razvoja. Riječ je o onome Alana Pavičića na temu Custom vs. Modular Software Development.

Većina nas developera barem se jednom susrela s dilemom: Koristiti tuđe rješenje koje je već dostupno ili krenuti u razvoj vlastitoga? Postoje brojni razlozi i za jednu i za drugu opciju. Kako je Alan Pavičić rekao na predavanju, velik dio developmenta danas se svodi na pisanje Turing kompletnih konfiguracijskih fileova. Malo toga je danas potrebno ‘programirati’ ručno. Za skoro sve postoji library. Rijetko koji developer se susreće s Big O notacijom i sličnim pojmovima.

Stoga se velik postotak developmenta danas svodi na povezivanje tuđe pameti u jednu funkcionalnu cjelinu i stvaranje neke dodatne vrijednosti u takvoj cjelini.

Not Invented Here (NIH) sindrom

Velik broj organizacija pati od takozvanog NIH sindroma. Wikipedia ga opisuje kao tendenciju prema izmišljanju “tople vode”, odnosno razvoju nečega što je već dostupno, zasnovanome na vjerovanju kako je in-house development brži, bolji, sigurniji i jeftiniji nego korištenje već gotovih rješenja.

Naravno, time organizacije često same sebi stvore dodatne probleme. Kako je istaknuo Pavičić, NIH sindrom se često manifestira dužim vremenom razvoja neke funkcionalnosti, nedostatkom standardizacije te puno težim pronalaskom bugova i duljim vremenom potrebnim za debuggiranje. Što je zapravo i logično. Naime, ukoliko postoji zajednica koja razvija, koristi i održava neku funkcionalnost, utoliko je veća vjerojatnost da će bugove pronaći i ukloniti brže od vaše organizacije. Naravno, osim ako vaša organizacija nije veličine Microsofta ili Oraclea. Neke od prednosti korištenja tuđih modula su brže vrijeme izlaska na tržište, kraće vrijeme razvoja te korištenje funkcionalnosti koje nisu trivijalne za implementaciju (kriptografija je jako dobar primjer).

Ovakvi su primjeri vidljivi čak i kod organizacija koje su stručnjaci u sigurnosti. Theo de Raadt, osnivač i vođa projekata OpenBSD i OpenSSH, kritizirao je OpenSSL zbog razvoja rutina za upravljanje memorijom umjesto korištenja onih iz standardne C biblioteke te je prema njemu to glavni razlog za popularni OpenSSL Heartbleed bug koji je zahvatio većinu svjetskih Linux servera.

Proudly Found Elsewhere (PFE) sindrom

bakic_change_king_ict
Nenad Bakić, poznati investitor i poduzetnik posvetio je svoje predavanje društvenim promjenama, ali i kako tehnologija može smanjiti jaz između svijeta i Hrvatske.

Ipak, postoji i suprotni slučaj od NIH sindroma, a naziva se PFE sindrom. Korištenje eksternih modula za gotovo svaku funkcionalnost u vlastitom rješenju nije uvijek najpametnija ideja. Više od svih ostalih grana developmenta, današnji web development je posebno podložan ovom sindromu. Sjetimo se samo left-pad fijaska kada su React, Babel i hrpa ostalih high-profile paketa na NPM-u popucali jer su kao dependency imali modul čija je jedina svrha bila popunjavanje stringa s lijeve strane nekim znakom. Posao za koji je bilo kojem developeru potrebno svega par minuta izbjegnut je korištenjem modula koji se sastoji od čak 11 linija koda! 

Cijela saga oko povlačenja left-pada iz NPM-a je vrlo zanimljiva te ako niste čuli za nju definitivno preporučujem kao zanimljivo štivo.

Left-pad fijasko nam je pokazao kako ne treba slijepo koristiti tuđe module jer se dovodimo u situaciju kako previše ovisimo o nekom drugom. Sve ovakve trivijalne implementacije trebali bismo odraditi sami.

Kada koristiti ‘custom’ module

Pavičić je na predavanju naveo nekoliko situacija kada smatra kako je kritično koristiti in-house razvoj:

  • DSL – Domain Specific Language

Ako vaša aplikacija zahtijeva korištenje nekog DSL-a, gotovo uvijek je bolje razvijati svoj DSL te prilagoditi ga svojim potrebama, nego pokušavati prilagođavati neki general purpose jezik.

  • Core Business

Bilo koja funkcionalnost vašeg proizvoda koja predstavlja vaš core business mora se razvijati interno. Nikada nije pametno dovesti se u situaciju da vaša glavna funkcionalnost, ona koja vaš proizvod odvaja od konkurencije, ovisi o hrpi vanjskih modula i da može puknuti zbog nečijeg bunta (opet left-pad!) 😉

  • Specijalizirani algoritmi

Svi jednostavni problemi u startup svijetu već su riješeni. Nećete napraviti novi Facebook ili novu tražilicu, nećete se obogatiti nekom jednostavnom stranicom. Ono što preostaje su specijalizirane usluge koje odrađuju neke zadaće koje obični korisnici ne mogu ili ne žele rješavati. Takve usluge zahtijevaju i specijalizirane algoritme, koje ćete jednostavno morati razvijati in-house.

  • Smanjivanje dependencyja

Ponekad je pametno da neku funkcionalnost implementiramo sami ako želimo da naš proizvod ovisi o što je manje vanjskih utjecaja. Vrlo čest razlog za ovo je i rješavanje problema oko licenciranja.

  • Egzotičan hardver

Ako koristite egzotičan hardver, vrlo često nemate izbora i morate se okrenuti custom developmentu.

Rješenja iz ‘crne kutije’

change_konf_panel
Konferencija je završila panel raspravom na temu Softver i društvo, na kojoj su sudjelovali Nenad Bakić, Aleksander Radovan (King ICT), Geertjan Wielenga (Oracle) i Netokracijin Ivan Brezak Brkan.

Ovo nipošto nisu sve situacije u kojima bi trebali koristiti in-house razvoj. Kako se razvojni ekosustavi sve više šire, modularno je riječ sve zastupljenija u svim sferama developmenta. Web frameworkovi imaju tendenciju sve više funkcionalnosti izdvojiti u zasebne module.

Za sve više primjena, uz frameworke dolaze out-of-the-box rješenja koja ih rješavaju, a vrlo često funkcioniraju na principu crne kutije. Možda ih i mi developeri jednostavno tako koristimo. Često ih uzimamo zdravo za gotovo i sve se manje trudimo razumjeti što se stvarno u pozadini događa. Možemo reći kako imamo dobar izgovor za to, kako je time-to-market sve kraći i jednostavno nemamo vremena raditi sve sami.

Mislim kako će se u budućnosti uspješni od neuspješnih razlikovati upravo u sposobnosti procjene što da naprave sami, a što da koriste od drugih.

Pravila ponašanja

Na Netokraciji za vas stvaramo kvalitetan, autorski potpisan sadržaj i zaista se veselimo vašim kvalitetnim, kontruktivnim komentarima. Poštujmo stoga jedni druge prilikom komentiranja držeći se sljedećih pravila ponašanja:

  • Ne budite 💩: Nema vrijeđanja, diskriminiranja, ni psovanja (osim ako nije osobni izričaj, ali onda neka psovka bude općenita, a ne usmjerena prema nekome)
  • Samo kvalitetna rasprava, manje trolanja: Ne morate se ni sa kim slagati, ali budite konstruktivni i doprinesite raspravi! Svako trolanje, flameanje, koliko god "plesalo" na granici, leti van.
  • Imenom i prezimenom, nismo Anonymous 👤: Autor sadržaja stoji iza svog sadržaja, stoga stojite i vi iza svog komentara. Koristimo ime i prezime (Hrvoje Lončar) ili barem ime i inicijala (Hrvoje L.) te pravu email adresu. Kako koristimo podatke koje tamo ostavljate? Bacite oko na našu izjavu o privatnosti.

Sve ostale komentare ćemo s guštom spaliti, jer ne zaslužuju svoje mjesto na internetu.

Odgovori

Tvoja e-mail adresa neće biti objavljena.

Popularno

Analiza

2014. imala sam 10.000 Dogecoina. Danas, kad im je Elon Musk “napumpao” vrijednost, više ih nemam

Možda sam imala i više od 11.000. Možda sam i dobar dio podijelila, teško se prisjetiti tih opskurnih događaja prije gotovo sedam godina kada nismo više bili sigurni što je kriptovaluta, a što meme. A što oboje istodobno.

Startupi i poslovanje

Hoćete li kupiti rabljeni auto preko interneta, pitali smo osnivača Neostara (s 20 godina iskustva u industriji)

Insajder automobilske industrije, od spinoffa Zubak grupe želi stvoriti platformu koja će nam olakšati kupnju i prodaju rabljenih automobila u kojoj nećemo trebati "prijatelja koji se kuži u aute". Hrvatska im je pilot projekt, ali ambicije puno veće!

Web aplikacije

Osvanuo portal cijepise.zdravlje.hr, za prijavu za cjepivo protiv koronavirusa

A u trenutku pisanja ovog teksta nije izgledao ni približno dovršeno.

Što ste propustili

Intervju

Mirta Stantić nakon Facebooka: “Hrvatske su tvrtke nekonzistentne kod ranih promaknuća mladih žena”

Doktorandica s Oxforda i bivša zaposlenica Facebooka na skorašnjoj Ladies of New Business konfereniciji donosi savjete kako hrvatske korporacije mogu dati potporu za ženski leadership koji je sve samo ne nebitna stavka. Zastupljenost žena na rukovodećim pozicijama utječe na prihode i poslovanje tvrtki za skoro 50%!

Tehnologija

Rimac potvrdio: Porsche uz 70 milijuna eura vlasnik 24% tvrtke!

Njemački proizvođač automobila Porsche produbio je svoje investicije u Rimac Automobile sa dodatnih 70 milijuna eura, a udio Porschea danas iznosi 24%.

Sponzorirano

Digitalne vještine za 2021.: Savladajte AI i ne kradite tuđe vrijeme u radu na daljinu!

Kladarić, Car, Končar i Skender za Netokracija Podcast otkrili su vještine za koje smatraju da će nam svima olakšati daljnji razvoj hrvatske tehnološke industrije.

Digitalni marketing

Što marketing može naučiti od pametnih klupa… zahvaljujući “machine learning” inženjerki!

Pametne klupe - osim što su pametne, izvrstan su način digitalnog vanjskog oglašavanja. Kako strojno učenje i računalni vid pospješuju uspješnost tog segmenta poslovanja? Više nam je otkrila Includeova Nina Erceg.

Kultura 2.0

Bandcamp Friday: zašto baš danas trebate kupiti glazbu na ovoj platformi? Znaju Tomislav Capan, Intek Music i Elemental!

Danas je prvi petak u mjesecu, što znači da možete nabaviti gomilu super glazbe na Bandcampu za super cijene i podržati izvođače u ovom razdoblju bez koncerata... Što sve donosi inicijativa koja je oduševila glazbenika diljem svijeta, otkrivamo:

Digitalni marketing

Interaktivan video stigao u Konzum webshop: Kako su objedinili dobar sadržaj s ecommerceom?

Integraciju prodaje proizvoda unutar foto oglasa već ste sigurno vidjeli po Instagramu, no uglavnom takvi ecommerce trendovi sporo dolaze do nas. A možda i ne... Konzum u svome webshopu ide korak dalje. Za svoje proizvode pripremili su interaktivne video recepte!