My Favorite Stacks for Web, Mobile, Desktop &DAPP App development

My Favorite Stacks for Web, Mobile, Desktop &DAPP App development

Kama ukiweza, na jinsi nilishauri kwenye andiko langu hapo mwanzo, tengeeza system ambayo ni framework agnostic, maana kwamba business logics hazitegemei framework, tumia concept ya Domain Driven Dvelopment (DDD), na pia SOLID itakuchukua muda kuielewa ila ikikukaa, utashukuru sana.

DDD inakuewezesha uhamishe shughuli yako kutoka kwa Laravel kuja kwa Yii au framework yoyote bila mahangaiko, inakuwezesha kufanya upgrade ya framework yako bila kuvuruga business logics zako maana umezintenganisha na kuzilinda.
Pia inakuewezesha kubadilisha DBMS kama vile MYSQL kwenda hata MS SQL au Postgres bila shida, system yako inabaki wima licha ya misukosuko ya frameworks na vita vyao.

Kuna kipindi nilipoteza mradi wa hela ndefu kwenye taasisi moja ya kiserikali, yaani nimepiga mzigo ulioshikamana na kutegemea framework fulani, kisha taasisi ikaajiri vijana kutokea chuo ambao walikua wameiva Laravel, wakapiga siasa humo ndani kwamba system yangu iko based on old technology ambayo kwa maoni yao na ushauri kwa mabosi wa taasisi ni kuwa kwa vile sio Laravel, basi ni old technology.

Siasa kama hizi hauwezi kuziweza maana madogo kama hao huwa wamewekwa humo kwa connections za wakubwa, chochote wanachokisema kinachukuliwa kuwa kweli na ndio basi, ukizingatia wakurugenzi kwenye hizi taasisi hawajui mambo ya teknolojia.
Nililazimika kupoteza mradi, ila kama enzi hizo ningekua nimejilinda na concept ya DDD, mbona ningehamisha kwenda kwa Laravel na kuendelea kutafuna hela
Napenda kusoma vitabu kuliko kuangalia video ikiwa una kitabu kinachozungumzia DDD naomba share Hapa bro
 
Napenda kusoma vitabu kuliko kuangalia video ikiwa una kitabu kinachozungumzia DDD naomba share Hapa bro

Nitashare humu kitabu ila baadaye kidogo, sema DDD ni kitu cha kutafuta Google fasta.
Kuna hii link jamaa ameweka mfano wa DDD anayoitumia kwa Laravel na Symphony, anaihamisha kwenye frameworks bila kupoteza chochote How to create a framework-agnostic application in PHP
 
Kuna kipindi nilipoteza mradi wa hela ndefu kwenye taasisi moja ya kiserikali, yaani nimepiga mzigo ulioshikamana na kutegemea framework fulani, kisha taasisi ikaajiri vijana kutokea chuo ambao walikua wameiva Laravel, wakapiga siasa humo ndani kwamba system yangu iko based on old technology ambayo kwa maoni yao na ushauri kwa mabosi wa taasisi ni kuwa kwa vile sio Laravel, basi ni old technology.
Walikupa nafasi ya kutetea teknolojia husika? Kwa sababu hakuna uwezekano wa kuandika framework Agnostic code. Unachoweza kufanya ni ku encapsulate functionalities kwenye units na kwa kanuni kama Polymorphism. Mfano

Code:
interface PaymentInterface{
    public function pay(int $amount, string $description): bool ;
}

Code:
class LaravelImpl extends PaymentInterface
{
    public function pay(int $amount, string $description): bool
    {
        //Laravel tied implementation
    }
}

$paymentGateway = new new LaravelImpl();
$paymentGateway->pay(100, 'Malipo ya kalamu');

Akija mtu anafikiri labda Symfony ndio new Technology na Laravel ni old then anabadilisha implementation anaweka yake

Code:
class SymfonyImpl extends PaymentInterface
{
    public function pay(int $amount, string $description): bool
    {
        //Symfony tied implementation
    }
}

$paymentGateway = new new SymfonyImpl();
$paymentGateway->pay(100, 'Malipo ya kalamu');


Siasa kama hizi hauwezi kuziweza maana madogo kama hao huwa wamewekwa humo kwa connections za wakubwa, chochote wanachokisema kinachukuliwa kuwa kweli na ndio basi, ukizingatia wakurugenzi kwenye hizi taasisi hawajui mambo ya teknolojia.
Ukikutana na mazingira kama haya huwa ni mabaya sana. Nakuelewa. Huwa nikikutana nayo huwa natafuta tu exit plan, hata kama ni mradi wa Billions. Maana najua mwisho wake ni kuharibu badala ya kujenga!
Nililazimika kupoteza mradi,
Badge of honor!
ila kama enzi hizo ningekua nimejilinda na concept ya DDD, mbona ningehamisha kwenda kwa Laravel na kuendelea kutafuna hela
DDD et al ni kuongeza complications unnecessarily. Kuandika code ukiwaza kuna siku zitahamia technolojia nyingine ni worst way of doing it. Andika code as if zitatumika milele kwenye hiyo platform but so clear kiasi kwamba porting kwenda kwenye another technology isiwe issue.
 
DDD et al ni kuongeza complications unnecessarily. Kuandika code ukiwaza kuna siku zitahamia technolojia nyingine ni worst way of doing it. Andika code as if zitatumika milele kwenye hiyo platform but so clear kiasi kwamba porting kwenda kwenye another technology isiwe issue.

Samahani nimekua busy, sijapata nafasi ya kujibu vizuri, bila shaka utakua haujatulia uelewe hii dhana kabla ya kuiponda, ni kitu kimenichukua muda mrefu sana na kutafiti kwa kina na kufanya lots of practical expriments kabla kuipokea, manufaa yake sio limited kwenye framework independence pekee yake, ni shughuli muhimu sana kama ukiwa open minded uisome na kuielewa, hususan kama umewahi kujkuta kwenye complex multination enterprise project, aina ya systems ambazo zina-husisha multiple technologies.

Ningependa sana tuwe na nyuzi kama hizi ambazo tunajadili mbinu na mifumo tunayotumia kwenye kufanikisha shughuli, na tusiishie tu kwenye kujadili frameworks, ila tujadili full software development lifecycle, huwa unaanzaje kwenye feasibility mpaka mwisho, technlogies zote unazotumia kwenye DevOps yako ni zipi, na changamoto na manufaa yake.

Kuna vijana wengi watajifunza mengi humu.
 
Hello world...

Kwenye dunia ya technology hasa hasa computer programming chaguo sahihi la technologies za kutumia ili kutatua tatizo au kutengeneza kitu fln ni muhimu sana.

Kufanya chaguo hilo kunategemea na skillset ya engineer anaehusika na pia environment ambapo product hio ita-run

Leo napenda kushare stack nnazozitumia kwenye kazi zangu mbalimbali za programming kwa sababu naamini kuna beginners watanufaika na au hata professionals wanaweza kudiscuss na aidha kuadapt hz stack au kufanya mm niadapt suggestion zao. Twende moja kwa moja kwenye mada....

NOTE: Simple things should be done in simple ways

1)WEB & WEB BASED SYSTEMS DEVELOPMENT
Hapa kama ni simple to medium Web system projects huwa natumia ReactJS kwenye front end na php kwenye backend. Ukitokea ulazima sana* ntatumia framework hasahasa laravel. Lkn mara nyingi napendelea kuandika APIs zangu from scratch coz inanipa overall control japo najua inakuja na gharama yake ila inakua ndani ya uwezo wangu.

Kama ni plain content based system eg Blog au News based site huwa natumia WordPress kisha naandika themes na plugins ili kukidhi matakwa yangu na ya mteja endapo kuna ulazima huo. Pia kama mtu anataka simple ecommerce web na bajeti yake sio kubwa sana huwa natumia WooCommerce then naiextend kwa plugins zangu kama hapo kwenye WordPress


2)MOBILE APP (ANDROID)
Kabla ya kuendelea nikubali kwanza napenda android dev ya java coz inakupa real flavor ya AndroidOS na mechanics za lifecycle nzima ya app ambayo ndio kiini cha matumizi ya hio OS. Kama unataka kuielewa kweli AndroidOS basi code Apps in Java. Hivyo stack yangu kwenye hii part inaweza kuwa biased na hio issue.

Kwa simple Apps zisizohitaji Native support kwa wingi natumia React Native. Kwa apps zinazohitaji native support kwa wingi huwa natumia Java na XML kwenye styling.

Ofcourse kotlin na flutter zinakuja kwa kasi lakini bado napendelea Java kwenye android development.

3)DESKTOP APP DEVELOPMENT.
Hapa inategemea kutokana na categories zifuatazo

a)Kama app ni client tu kwa ajili ya webbased system huwa natumia ElectronJS framework. Hapo ntatumia CSS, React na NodeJS

b)Kama app inahitaji local database mfano labda ni business management software huwa natumia stack hiohio kama hapo kwenye (a) lakini database natumia IndexedDb ambayo ipo available kwenye kila browser. Nmeongelea browser coz ElectronJS kiukweli ni browser environment kwa ajili ya desktop app yako, so features zote ambazo ungezipata kwenye browser unazipata pia kwenye ElectronJS. Tofauti ya electron na browser ni kwamba inakupa native access kwenye Operating system kupitia NodeJS integration. So unaweza tengeneza hata adobe photoshop yako kwa kutumia browser based technologies. Na ndio maana ni chaguo kwa desktop apps nyingi kwa sasa ikiwemo Atom IDE.

IndexedDb yenyewe kama yenyewe ni ngumu sana kuitumia so mara nyingi natumia Lovefield.js kama wrapper, lovefield pia inatumiwa na Gmail web version kutunza local data kama opened emails etc.... Tutorials zake ni chache sana lkn inakupa MySql-like database kwenye browser so kuitumia inabidi uwe na tabia ya kusoma directly documentaion husika kwanza. Japo it worth it coz performance yake ni nzr na ina queries zinazoendana na SQL


4)DAPPS (BLOCKCHAIN BASED APPS)
Hapa kuna truffleJS, solidity (kuandika contracts) na front end huwa natumia ReactJs pamoja na bootstrap. Kwa kuwa dapps zote nlizoandika bado hazijawa deployed kwa ajili ya production na kuwa na real user base basi siwezi toa comment khs perfomance na efficiency ya hii stack kwa app inayopaswa kuwepo kwenye market. Japo kwa nisikiavyo hio ndio popular stack kwa sasa kwenye ulimwengu wa Dapps


Conclusion:
Japo market ya tech kwa Tanzania bado ina changamoto ila kama mtu anatafuta beginner guide ya ajifunze stack zipi basi anaweza tumia hio hapo juu kwa kuanzia na kuwa anamodify kadiri anavyopata uzoefu. Mfano ukitumia sana ReactJS utakuja kuona uhitaji wa NextJS kutokana na requirements na mazingira.


Peace
~Kali Linux
On my journey to fullstack
 
Mwenye Google Play Console nanunua bei kuanzia laki 5 , iwe na angalau mwaka mmoja, na app hata moja ndani, ikiwa na keystore itakua poa zaidi, nicheki 0718474600 kama unayo
 
Back
Top Bottom