Percaya tak bahawa 90% application/system adalah berkaitan simple CRUD (Create,Read,Update and Delete).
Thursday, April 30, 2009
Simple Design
Aku masih tak dapat lari dari bila design memasukkan element mistik dalam design aku? Apa design ada element mistik dan seram?..(Terpengaruh dengan cerita seram yang kerap ditayangkan di TV). Tak lah sebenarnya apa yang aku nak cakapkan ialah bila design result akhirnya akan menjadi komplex kerana menjadi kebiasaan aku macam tu.
Ntah kali keberapa aku pasang niat untuk cuba design menggunakan konsep KISS dan YAGNI, walau aku faham kedua-dua konsep nie, tapi bila masa aku design atau menulis code sering aku terlupa akan guideline ini. Design kalau terlalu syok sendiri akan menyusahkan orang lain aku cukup setuju pendapat ini. Salah seorang teammate aku pernah tegur, kenapa aku bila design fikirkan benda yang complex?.. Jawapannya ialah kerana aku adalah student graduated in Electrical Engineering yang dah terbiasa dengan complex formula hehehe boleh ke bagi reason macam tu?? Kaukan dah grade 11 thn lepas maner ingat lagi formula tu semua..tipu je tu..hehehe ....habis tu Mr H tu pun sama grade dalam EE kenapa dia design ok je?Sebab dia grade zaman tu IC memory baru berapa je/conductor/Circuit board layer baru ada selapis je zaman tu, zaman aku dah berlapis-lapis macam kuih lapis so nak kira current masuk dan current keluar sampai air liur yang terkeluar tau, tu belum nak kira voltage, yang tak betul pun ramai sebab salah calculate voltage.. pergh , so tu lah reason kuat yang aku boleh bagi untuk mempertahankan diri :)
Teguran yang membina dan aku akui kebenaran tersebut...sebab itu bagus jika ada orang lain yang review code dan design kita, kita jangan mengharapkan orang akan setuju dengan design kita kerana kita tidak akan banyak belajar jika tiada kritikan kecuali memang Allah dah bagi ilmu laduni (ilmu yang dapat tanpa belajar dari mana-mana sumber, ilmu nie untuk semua bidang atau bidang agama sahaja?) kena tanya member-member yang expert bidang kerohanian.
Jadi majulah simple domain design untuk kesihatan anda, rakan-rakan anda dan alam sekitar..
Posted by ryzam at 12:50 AM 0 comments
Wednesday, April 29, 2009
Muhammad 'Umar Hafiy

Yaya hero sudah datang sekali dia tarik dua-dua kakak dia tumbang daaa...... :)Tak boleh tengok kakak dia minum air yougurt sure nak... sampai habis dia minum manalah si kakak tu tak menangis..
Posted by ryzam at 4:26 PM 2 comments
Deeni Husna
Masa baru-baru pandai nak berjalan

Posted by ryzam at 4:14 PM 0 comments
Damia Bisyri
Masa pagi raya
Dalam walker
Bergaya di sofa baru
Anak sulong aku, berumur hampir 4 tahun. Banyak celoteh dan banyak sangat pertanyaan,suruh aku beli kereta baru yang ada gelungsor dan peti ais dan dalam peti ais tu ada air yogurt and vitagen anggur... Selalu tanya hari nie pergi sekolah ke tidak..kalau aku atau wife aku kata tak gi sekolah perasaan dia "Bahagianya Hidup".
Posted by ryzam at 3:42 PM 0 comments
Friday, April 24, 2009
Peraturan TDD yang kedua
Peraturan pertama ada di sini
Setiap perbuatan akan dipertanggungjawabkan. Apabila object tersebut melakukan sesuatu tugas mesti ada kesan samaada perbuatan itu merupakan arahan(command) atau juga permintaan(query). Kejayaannya bila anda ada kawalan penuh dan anda memang sudah menjangkakan kesan yang terjadi dari perbuatan tersebut.
Maka peraturannya ialah check semua kesan gegaran berapa skala richter.
Kalau aku tolak kau dari bangunan nie ke bawah: Kesannya dengan izan Allah.
1. Kau mati
2. Aku suka hati (kejam betul..)
3. Harta kau aku yang punya
4. Aku kena dakwa (bersalah atau tidak tengok cable aku macam mana..:)
Ini ialah kesan dan memang tu jangkaan pada keadaan normal atau dipanggil Assert.
Labels: TDD
Posted by ryzam at 2:23 PM 0 comments
Single Responsibility Principle berguna dalam design Interface
Ada satu lagi pattern/principal yang insyAllah dilain masa aku akan cerita iaitu Interface Segregation Principle. Cuma apa yang aku nak cerita ada sedikit kena mengena dengan Interface Segregation Principle tapi dari sudut Single Responsility Principle.
Sebelum nie aku ada menulis Transformasi kepada Single Responsibility Principle dimana pada pendapat aku untuk mencapai konsep pattern tersebut groupkan tugas-tugas yang related/berkaitan kepada satu class. Cara yang sama boleh digunakan juga pada class yang baru kita asingkan.
Konsep mengroupkan tugas yang berkaitan kedalam class yang lain diguna pakai juga kepada Interface.
Posted by ryzam at 9:26 AM 0 comments
Istiqamah dalam memboikot
Aku dan family aku dah lama tak makan-makan di McDonalds atau KFC, dah hampir 5 bulan kami sekeluarga pertahankan diri dari membeli makananan di kedua-dua company ini. Aku percaya pada konsep boikot walau satu product impactnya tetap ada kalau semua umat Islam ada matlamat yang sama. Cuma ntah macam mana semalam masa bawa anak-anak aku jalan, kami lalu di depan kedai KFC, agaknya baunya manarik kot, so anak aku kata kat aku.. "Abah nak makan KFC", aku bagi tahu dia untuk cari makan dikedai lain je.. anak aku baru berusia hampir 4 tahun, dia merengek nak makan ayam KFC gak. Aku tak sampai hatilak tengok dia dah menangis.. so wife aku kata jom cari yang drive thru je. Pada aku ada juga kejayaan dalam memboikot selama hampir 5 bulan, aku kena realistik dan cuba didik anak aku sedikit-sedikit, cuma yang pasti McDonalds anak-anak aku memang dah tak nak, sebab aku pernah bagi tahu tu orang jahat punya company:), KFC aku tak cakap cam tu pulak :).. salah ke aku cakap macam tu?
Barang-barang keperluan lain yang boleh diganti dgn product Malaysia atau Muslim, kami cuba sikit-sikit, contohnya ubat gigi aku replace dengan ubat gigi mukmin junior dan yang kayu sugi, Nescafe aku dah stop terus beli, sebab tak berapa minat dan sebelum-sebelum nie kalau beli Nescafe memang boleh tahan lebih dari 3 bulan.
Ada yang boleh direplace dengan product yang lebih kurang sama quality dan ada juga product yang orang Muslim belum keluarkan lagi, dan keperluan tu penting yang tidak dapat tidak kena terus membeli.
Cuma satu kalau boleh teruskanlah memboikot apa-apa yang boleh. Satu product pun cukup memadai sebenarnya atleast ada juga sumbangan kearah kekuatan permintaan umat Islam dalam jual beli.
Posted by ryzam at 8:40 AM 0 comments
Thursday, April 23, 2009
Aku mula menyukai AAA
AAA (Arrange-Act-Assert), baru je menceburkan diri dan membiasakan diri dengan cara AAA, tak pasti sejauh mana kebagusan dan resultnya nanti, masih awal untuk mengatakan cara ini yang terbaik, cuma lebih clear sedikit dari cara yang lama.
AAA masih tergolong dalam golongan pemikiran BDD. Sebelum ini aku guna BDD cuma dengan different cara, dimana setiap method (When,Because,Act) akan diberi class sendiri dan apabila penggunaan terhadap sesuatu function berlaku akan adalah beberapa Assert yang terjadi.
Posted by ryzam at 2:12 AM 0 comments
Iman & Hidayah
Baca entry dari 1kHz berkaitan Hidayah , terasa mereka yang convert ke Islam kerana Allah nie iman dia orang lagi tinggi dari kita, ujian yang mereka hadapi memang berat yang kalau kita Islam sejak lahir mungkin tak mampu hendak hadapi.
Perbezaan ketara antara orang yang diberi dengan orang yang mencari.
Posted by ryzam at 1:40 AM 0 comments
Wednesday, April 22, 2009
Transaformasi kepada Single Responsibility Principal
Post aku sebelum nie ada menyentuh tentang kepentingan pattern SRP dan OCP dalam mencorakkan design domain dan sewaktu coding. Tapi bila aku bercerita tentang kepentingan pattern jika tidak diterjemahkan kedalam code dan real implemantation agak payah hendak mendapat gambaran yang jelas dan kebaikan pattern tersebut. Aku ada berbincang dengan kawan seangkatan berkaitan kedua-dua pattern dan apa yang pasti SRP merupakan pattern yang agak tricky. Jadi aku cuba terangkan dengan layman word dan code.
Aku tiada banyak idea nak bagi contoh dan aku pun tak pasti contoh yang aku bawa ini bagus atau tidak, ini juga menjadi kayu pengukur untuk aku mengetahui kefahaman aku dalam pattern2 ini.
Apa dia SRP?..
Single Responsibility Principle
Mengikut tuan empunya diri yang memperkenalkan pattern ini, SRP ialah
Sesuatu class/object hanya ada satu sebab sahaja untuk diubah..
Aku bawah contoh code dibawah :
public class Report
{
public void Print()
{
//
}
public IList GetData()
{
return null;
}
public void FormatReport()
{
//
}
}
Kenapa code ini melanggar principle SRP. Kalau dilihat code tersebut ada berapa kerja code Report itu boleh buat? Ada 3, iaitu dia boleh melakukan tugas Print(), tugas untuk Formatting FormatReport() dan tugas untuk mendapatkan data GetData(). Oleh kerana itu code tersebut ada 3 sebab utama jika kita hendak buat perubahan.
Jadi adakah setiap class/object hanya boleh melakukan satu tugas sahaja bagi memenuhi SRP? Jawapannya sudah tentulah tidak. Kena faham maksud responsibility (tanggungjawab). Ok seorang bapa mempunyai banyak tanggungjawab, salah satu ialah menyara anak-anak. Jika beliau mempunyai 3 orang anak adakah perlu diwujudkan 3 class berkaitan saraan? Jawapan ialah tidak. Object saraan hanyalah satu tapi tugasnya boleh ada banyak selagi mana ianya berada dalam lingkungan makna saraan.
Caranya ialah dengan groupkan mana-mana tugas yang related dengan responsibility class tersebut dan refactorkan.
Contoh:
public class Bapa
{
public void Bekerja()
{
}
public void SaraanAnak1()
{
}
public void SaraanAnak2()
{
}
public void SaraanAnak3()
{
}
public void SaraanIbuBapa()
{
}
}
Jadi berdasarkan code diatas ini class bapa coupling direct dengan tugas-tugas tersebut, aku boleh bahagikan kepada 3 responsiblity disini seperti berikut.
1. Bekerja
2. Saraan Anak
3. Saraan IbuBapa (Bapa/Ibu kepada bapa tersebut)
Jadi bila refactor dia akan menjadi:
public class Bapa
{
public void Tugas()
{
new SaraanIbuBapa();
new SaraanAnak();
new Kerja();
}
}
public class Kerja
{
public Kerja()
{
Bekerja();
}
public void Bekerja()
{
}
}
public class SaraanAnak
{
public SaraanAnak()
{
SaraanAnak1();
SaraanAnak2();
SaraanAnak3();
}
public void SaraanAnak1()
{
}
public void SaraanAnak2()
{
}
public void SaraanAnak3()
{
}
}
public class SaraanIbuBapa
{
public SaraanIbuBapa()
{
SaraanIbuBapaSendiri();
SaraanIbuBapaMertua();
}
public void SaraanIbuBapaSendiri()
{
}
public void SaraanIbuBapaMertua()
{
}
}
So dari class Bapa yang sarat dgn tugas kita dah menjadikan class Bapa untuk follow SRP. Ini adalah secara basic, class SaraanAnak sendiri adalah grouping tugas secara highlevel kemungkinan juga akan ada refactor di class tersebut tetap ada. Aku cuba buat sesimple yang boleh
Cuba-cubalah memahami, ada yang nak bagi comment dipersilakan.
Labels: Refactoring, SOLID, SRP
Posted by ryzam at 1:50 PM 0 comments
Tuesday, April 21, 2009
2 pattern yang penting bila start design and coding
Ada dua pattern yang insyAllah boleh membantu mempertingkatkan kualiti code pada tahap dimana code tersebut mudah untuk di refactor kemudian hari.
1. Single Responsibility Principal
2. Open Closed Principal
Jika pemahaman yang mendalam untuk 2 pattern ini diberi perhatian insyAllah sudah cukup untuk refactor dan apabila perlu boleh ditambah dengan pattern-patern yang lain.
Posted by ryzam at 9:12 AM 0 comments
Monday, April 20, 2009
Design API, kebebasan atau guideline
Soalan ini timbul selepas aku dalam process buat Repository API. Menjadi kebiasaan sekarang ini dalam repository aku ada support nhibernate linq, jadi ada method yang return IQueryable
Bila aku expose method ini yang return IQueryable
Ada apa-apa pendapat?.
Posted by ryzam at 9:25 AM 0 comments
Friday, April 17, 2009
Peraturan sekolah TDD yang pertama - check not null
Ini ialah sekolah TDD, peraturan pertama apabila buat test sematkan dalam otak, bahawa apabila menulis test yang pertama perkara penting ialah test not null value pada mana-mana object yang memangg tidak sepatutnya ada null value apabila berfungsi. Antara main bugs dalam software yang pertama sekali bila dapat message yang ini.
"Object reference not set to an instance of reference".
Jadi rajin-rajin lah test ShouldNotNull()
Labels: TDD
Posted by ryzam at 6:39 AM 2 comments
Thursday, April 16, 2009
Aku ada banyak masa?
Aku pun tak pasti cuma akhir-akhir nie aku macam bersemangat sahaja nak menulis, ialah dulu aku tak de kesempatan nak luahkan, nak share apa yang aku tahu dan tak ade juga kesempatan nak mengutarakan kemusykilan.
Sibuk tetap sibuk, cuma aku rasa kalau aku tak menulis aku sibuk juga, cuma aku cuba ambil masa dalam 15 min untuk menulis apa-apa yang aku rasa baik dan bagus untuk aku (mungkin tidak untuk orang lain) Wallahu'alam..
Posted by ryzam at 9:24 AM 1 comments
Tanda-tanda rosak akhlak
Tanda-tanda rosak akhlak, maaf bukan nak cerita pasal rosak akhlak, kalau nak tahu pasal akhlak seorang geek refer kat sini "Akhlak seorang Geek" .
Aku nak cerita tanda-tanda rosak design
1. salah satunya ialah susah nak refactor.
2. keakraban dengan database design.
Posted by ryzam at 9:07 AM 0 comments
Wednesday, April 15, 2009
Pedih tapi ok sahaja
Aku walaupun dikritik sebagai bos yang tak boleh nak bawa perubahan kepada team dan cara pembawakan software development yang jumud dimana tidak ada perkembangan yang positif. Kesanya banyak yang merasa demotivated dan berhenti, insyAllah aku boleh terima kerana aku juga dalam prosess belajar walaupun aku dah involve dalam dunia IT hampir 12 tahun, tapi aku akui part management aku agak kurang memberangsangkan.Aku boleh terima sebab aku juga kritik orang dan tidak setuju dengan cara seseorang yang aku fikirkan tidak bijaksana. Aku ambil segala kritikan terbuka dan kritikan body language sebagai panduan untuk bina team yang lebih bagus insyAllah. Penolakan orang untuk berubah hanyalah persepsi kita kerana cara approach kita yang orang lain tidak boleh hendak terima. Kita tidak boleh ambil bulat-bulat apa yang dibaca dan cuba apply sebiji, kena perhati tahap mana knowledge seseorang.
Aku pernah tulis dahulu lama sebelum aku jadi lead dalam company ini, keberkesanan dan berjaya sesuatu team bukan kerana expertnya seseorang dalam team tersebut tapi bagaimana dia boleh bekerja dengan orang yang tidak sama level dengan dia.
Posted by ryzam at 9:17 AM 4 comments
Tuesday, April 14, 2009
Mana satu idaman kalbu
Ini ialah basic design tapi kadang-kadang susah juga nak dapat yang betul. Aku bawa contoh seorang bapa mempunyai ramai anak. Bila bapa itu sudah sampai masa mengadap Allah , anak-anak didunia ini hanya boleh membantu dengan berdoa, anak masih hidup bapa dah pergi ke alam fana. Ok yang itu ialah cerita je..yang sebenar-benarnya aku nak design konsep parent child dalam domain model. Macam mana nak design macam inikah?
A
atau
B
macam inikah?
C
D
atau ketiga-tiga betul???
Posted by ryzam at 12:36 PM 1 comments
Sunday, April 12, 2009
Kerja kosong
Aku cuma nak sampaikan ada kekosongan kerja sebagai "Analyst Programmer" untuk .Net dan PHP dekat company tempat aku pagi-pagi pergi kerja selepas hantar anak aku pergi tadika :) nak jadi guru tadika pun ada kalau tak silap aku, ada memo tampal depan pintu gate tadika sekolah anak aku tu, sila nyatakan hendak berkerja dengan sekolah tadika tersebut atau sebaliknya.
Ok company yang sekarang nie bayar gaji bulanan pada aku selalunya 26 haribulan dan ada dalam bank, cuma company nie tak berapa glamour tapi Alhamdulillah aircond sejuk, kedai makan pun senang. Kerja dia sama je macam kerja kat tempat lain juga tak de apa-apa special, kena tulis code, kena masuk discussion, kelayakan kalau dah pernah bekerja kat mana-mana company IT dalam dunia nie dan terlibat dalam salah satu language seperti C# atau PHP atau Java maka secara automatik level satu nyer filtering lepas. Kelayakan yang lain ialah anda lepas kelayakan yang pertama. Untuk hantar resume anda sila hantar ke email budak nie irwan.azam@mediu.edu.my.
Soalan interview dia senang je, antaranya: Kenapa agaknya anda berminat hendak join company nie??.. Contoh jawapan yang mungkin diberi
- kawan saya kerja kat sini, nampak macam best,
- saja hantar resume, ada orang call ntah saper tah, lagi pun hari yang disetkan interview nie saya free so saya datang jelah
- mencari pengalaman dari tempat kerja lama (orang yang bagi jawapan nie selalunya menerima nasib ngeri, otak akan menjadi separa sedar dan akan mengalami penyesalan)
- nak bekerja berdedikasi, nak berjaya macam encik, jadi bos nampak macam senang je..ada orang cakap encik rileks je kat ofiss ek :) ..kalau jawapan dia nak berjaya macam encik, aku rase belum habis interview confirm dah dapat tapi sambungan ayat selepas tu sure kena baling keluar.
- nak gantikan tempat encik, encik nampak macam terror, teknology yang encik cerita tu pun saya tak pernah dengar, ada unsur mistik, penipuan dan kelakar saya memang cari kalau dapat bos yang macam tu ..emmmmmmmmm kalau jawapan nie susah sikit tu kecualilah yang tukang interview tu memang dah ada kerje lain sebagai cleaner ke..
- saya dipaksa untuk datang interview .........dusshhhhhhhhhhhh!!!!!
Posted by ryzam at 3:06 AM 4 comments
Friday, April 10, 2009
Make Role Explicit
Aku baru je habis habis tengok presentation Udi Dahan berkaitan Make Role Explicit . Macam menarik untuk dicuba dalam design. Setiap object perlulah clear apa yang boleh dibuat dan apa yang patut dibuat.
Posted by ryzam at 4:06 PM 0 comments