Başlangıç > GÜNLÜK > PROJE KABUSU SONA ERDİ

PROJE KABUSU SONA ERDİ

Uzun zamandır beklediğim ve sizleri de beklettiğim bu yazıyı nihayet yazıyorum. Blogumdaki hiçbir yazıyı yazmak için bu kadar sabırsızlanmamıştım. Bir önceki yazımda bitirme projemde yaşadağımız (proje arkadaşım ile birlikte) kabus dolu günlerden bahsetmiştim. Dün yaklaşık 45 dakika süren güzel bir sunumun ardından o günler geride kaldı ve bana miras olarak bir miktar deneyim bıraktı. Şimdi de sıra, bitirme projem sırasında edindiğim denyim ve bilgileri sizlerle paylaşmaya geldi.

Önce genel olarak proje yaparken dikkat edilecek noktalara sonra da kullandığım araçlar ve teknolojiler ile ilgili noktalara değinmek niyetindeyim. Burada yazacaklarım profesyonel olarak yazılım geliştiren , kurumsal projelere imza atan kişilere çok fazla şey katmayabilir (katabilir de ) ama öğrencilik hayatınızda bu işlere bulaştıysanız emin olun bu yazıdan alabileceğiniz güzel şeyler var.

PROJE YAPARKEN:

  • Okul için yapacağınız projede üzerinde severek çalışacağınız, hakim olduğunuz bir konuyu seçmek daima avantajlı olacaktır. Hele de mezuniyetiniz söz konusuysa risk alıp ecel terleri dökmenin lüzumu yok diye düşünüyorum. Bunun için aklınızda daima iyi bir proje konusu bulunmalı aksi halde hocanızın dayatacağı garip bir projeyle muhattap olmak zorunda kalabilirsiniz.
  • Üzerinde çalışacağınız konu veya konular hakkında bilgi sahibi kişileri iletişim ağınızın içinde tutmak faydalı olacaktır. Çok fazla web ve görsellik kültürüm olmadığı için bu noktalarda arkadaşlarımdan hayat kurtarıcı yardımlar aldım. (Teşekkürler Erhan BURHAN ve Mehmet ACA)
  • Uygulamanızı geliştirmeden evvel çok çok iyi bir analiz şart. Aksi halde son anda tabloya ekleyeceğiniz bir kolon sonunuz olabilir. Tüm olasılıkları ve durumları düşünebilmek için kendinize yeterli zamanı tanıyın ve analiz konusunda aceleci davranmayın. Aklına gelen tüm durumları GÜVENLİ bir yere kaydetmekte fayda var.
  • Think Big Start Small yada Keep It Simple Stupid (KISS) gibi öğtülere uymakta dayda var. Hiçbirşeyi bir defada asla iyi yapamazsınız . (Bakın Mcirosoft’a 🙂 nasıl da her gün bir yama çıkarıyor) Projeye vermek istediğiniz son şekil aklınızın bir kenarında daima bulunsun ama doğrudan o noktaya uçmaya kalkmayın. Adım adım ilerleyin. Görsellik , renkler, yanarlı dönerli menüler gibi konular üzerinde kafa yormak yerine öncelikle projenizi çalışabilir hale getirin.
  • Özellikle de okul projelerinde çevik bir süreç izlemek daha faydalı olacaktır. Mesela projenizin bir aşamasında XML dosyasını ayrıştırıp oradan bir kaç veri alacaksanız , bütün vaktinizi uygun ayrıştırıyıcı bulmak için Open-Source siteleri zaplayarak geçirmeyin. Gerekirse düz bir metin dosyasından veya konsoldan okuyun ama bu aşamaya taklıp kalmayın.En kötü ihtimalle sunum günü elinizde eksikleri de olsa çalışan bir proje bulunmalı.
  • Projeyi yapan siz olduğunuza göre , sağlıklı bir proje için kendi sağlığınıza dikkat etmeyi unutmayın. Bilgisayar başında saatlerce oturarak omurganızdan olmayın. Bu durumlarda ufak yürüyüşler sizler için hem fiziskel hemde zihinsel açından faydalı olacaktır.
  • Emeğinizin boşa gitmemesi için projenizi yapacağınız bilgisayarı korumanız gerekecetir. Bilgisayardaki bir sorun yüzünden uygulamanızda hata arayarak sinir krizleri geçirmeyin. O nedenle uygulama geliştreceğiniz bilgisayarın güvenliği ve yedeklenmesi konusuna mutlaka dikkat edin. Eğer yazdığınız uygulamanın çalıştığından eminseniz fakat kendi bilgisayarınızda çalışmamakta direniyorsa mutlaka başka bir bilgisayarda denyin.
  • Geliştirdiğiniz uygulamaya ait kodları ve veritabanını da yedekleniz gerekir. Bunun için farklı fiziksel ortamlar kullanmak (flash disk , cd vb.) faydalı olacaktır. Hatta boyutları gigabyte mertebesindeki e-posta hesaplarınıza da bu kodları göndermekte fayda var diye düşünüyorum. (Mezuniyetiniz söz konusuysa risk almaya gerek yok demiştim)
  • Kaynak kodlarınızı yedeklemekten kastım hepsini rastgele farklı bir ortama aktarmak değil. Ben kodlama yapacağım noktlarda her adımı bir metin dosyasına yazıp , başarıyla geçtiklerimin yanına bir artı işareti koyuyorum (Dikkat ettiyseniz siliyorum demedim). Yedekleme yaptığım noktada da listede geldiğim yeri bir çizgi ile ayırıyırıp tarihi yanına ekliyorum. Bu sayede hangi yedekte ne gibi değişiklikler olduğunu rahatlıkla bilip geri dönüşleri daha kolay yapıyorum . (Bir source control uygulaması kullanmadığınızı farz ederek bu maddeyi yazdım)
  • Yedekleme yapmadan evvel uygulamanın son halini mutlaka test edin. Geçekten çalışıp çalışmadığıdan emin olun. Çalışmayan bir kaynak dosyasına güvenip yapacağınız bir geri dönüş gecelerinize mal olabilir.
  • Test konusunda rehavete kapılıp “TAMAMDIR BU SÜPER ÇALIŞIYOR” havasına girmeyin. Farklı durumlar için sistemin çalışmasını mutlaka gözlemleyin. Eğer bir koşulda çalışıyor diğerinde çalışmıyorsa kontrollü bir deney sürecine girmekte fayda var. Yani diğer tüm faktörleri sabit tutup (Sabit olduğundan da emin olun) her bir faktörü sırayla değiştirin ve uygulamanızın nasıl davrandığını gözlemleyin.
  • Takıldığınız ve bir türlü çözüm üretmediğiniz noktalara saplanıp kalmayın. Bu hem sinirlerinizi yıpratacaktır hem de boş yere vakit kaybetmenize neden olacaktır. Diğer işlere geçip bir süre sonra sakin kafayla (özellikle de sabah vakitlerinde) o noktaya geri dönmekte fayda var diye düşünüyorum.
  • Hata ayıklarken her ne kadar DEBUGGER uygulamalar imdadımıza yetişse de bu noktada kağıt-kalem debugging adını verdiğim yöntem bazen hataları daha kolay fark etmenize yardımcı olacaktır. Hele bir de yanınızda işten anlayan birisi varsa o hatayı daha kolay fark edebilir. Çünkü kodu siz yazdığınız için kendinize olan güveniniz hatayı fark etmenizi zorlaştıracaktır.
  • Proje içerisinde güvenlik işlemleriniz varsa (Authorization, Authentication gibi) mutlaka bu adamlarda çok dikkat edin. Authorization konusu özellikle çok önemli yani vereceğiniz yetkiler birbiriyle çelişmemeli. Bir adımda yasakladığınız bir işlemi başka bir adama yanlışlıkla erişilebilir hale getirmemeye özen gösterin. (Bu tip bir hataya bizzat düştüm)
  • Projenizi belirli aralıklarla danışmanınıza yada müşterinize gösteriyorsanız ve bu zamanlarda sorunlar, hatalar çıktıysa hiçbir şekilde hemen kodunuz açıp neşter vurmaya kalkmayın. Bu, hem düzgün çalışan yerleri bozabilir hem de yaptığınız işi karşınızdakinin gözünde basite indirger. Bu gibi durumlarda not alarak bir sonraki görüşemede düzeltilmiş olacağını belirtmek daha iyi olacaktır.
  • Asla projenizi SON GECE ye bırakmayın. Son gece telaşla yapacağınız çoğu değişiklik faydadan çok zarar getirecektir. (Ben her ne kadar böyle de desem biliyorumki siz yine son geceye bırakacaksınız 🙂 ) Son geceyi test yaparak geçirmek daha hayırlı olacaktır.
  • Projenizi sunmanız gerekiyorsa fazla sıkıcı ve uzun olmayan , hedeflerinizi ve geldiğiniz noktaları ortaya koyan güzel bir sunum hazırlamak faydalı olcaktır. Bu noktada piyasadaki benzer ürünlerle kendi ürününüzü kıyaslamak fizibilite konusunda yeterince zaman harcadığınızı gösterecektir. Bir de projenizin eksik yanlarını objektif olarak ortaya koymayı unutmayın. (Kısmetse bir sonraki sürüme dersiniz 🙂 ) Yani yaptığınız işin bilincinde olduğunuzu göstermeniz yerinde bir hareket olacaktır.

Bu listeyi daha da uzatıp canınız sıkmamak için kullandığım araçlar hakkındaki deneyimlerime geçiyorum.

MICROSOFT SQL SERVER 2005:

Projemizde verilerimiz saklamak için DBMS olarak SQL Server 2005 tercih ettik. SQL Server 2005 ‘in STORAGE ENGINE ‘inin biraz sorunlu olduğundan daha önce bahsetmiştim . Bu olaya bir kere daha şahit oldum. İçerisine 40 satırlık veri girişinin ardından boyutu 3 MB ‘tan 21 MB ‘a çıkan bir veri dosyasıyla karşılaşmak insanı şaşırtabiliyor. (Nvarchar alanlarımız gayet iyi hesaplanmış durumda olmasına rağmen) Benim için Database Development konusunda SQL Server Management Studio yetersiz kaldı. Özellikle de otomatik olarak script oluşturma konusudaa ciddi problemleri var. Bunun yerine Aqua Data Studio ‘yu mutlaka denemenizi tavsiye ederim. Ayrıca Remote bağlantılarda Management Studio’dan çok daha hızlı çalıyor.

Verilerinizi Import/Export yönetmiyle bir veritabaından diğerine aktarırken Schema konusunda çok dikkatli olun. Diğer DBMS üzerindeki bir schema ile ilişkilendirilmiş verilerle kendi DBMS ‘niz üzerinde çalışma konusunda problem yaşabilirisiniz. Bunun için verileri Management Studio’ daki Import /Export wizard ile aktarıyorsanız Edit Mappings (Burada farklı schemalarda yer alan tabloları bind edebilirsiniz) menüsüne mutlaka bir göz atın. Yada benim gibi sonradan bir tabloyu başka bir schema ‘ya taşımanız gerekirse şu komutu çalıştırın:

alter schema hedef_schema transfer onceki_schema:tasinacak_tablo

Management Studio daha çok Administration işlemlerinde tercih edilmeli diye düşünüyorum artık.

ASP.NET:

Visual Studio ile web tabanlı yönetici panelini hazırlarken yaşadığım çilelerin başında tablo boyultarını ayarlamak geliyor. Tam bir felaketti. CSS konusunda da eksik olduğum için tablolardan vazgeçemedim .

Bir diğer sorun da sayfalara eklediğim JavaScript tabanlı confirmation soruları (“Şunu bunu yapmak istediğinizden emin misiniz?” şeklindeki) ASP.NET Validation bileşenlerini yine devre dışı bıraktı.

Ama herşeye rağmen bir yönetici paneli hazırlamak için ASP.NET ‘in doğru bir tercih olduğuna inanıyorum.

ASP.NET AJAX v1.0:

Buradaki yazımda ASP.NET Ajax konusunda yaşanabilecek bazı sıkıntılardan bahsetmiştim. Projem sırasında da ilk partial update işleminden sonra validation bileşenlerinin devre dışı kalması sorunuyla karşılaştım.
Bu noktada karşıma çıkan bir diğer sorun da ChildrenAsTrigger özelliğinin kafasına göre hareket edip bazen çalışıp bazen çalışmamasıydı.

ASP.NET WEB SERVICES:

Bu kısım her ne kadar benim görev tanımımda olmasa da projenin temeli olduğu için beni de yakından ilgilendiriyordu. ASP.NET web servisinize bir Java uygulamanızdan erişecekseniz servisten alacağınız WSDL bazen sinirlerinizi bozabilir. Hele de SOAP Hader ile güvenliği sağlamaya kalktıysanız vay halinize…

JAVA IDE ve GUI:

Java uygulamanızdan bir web servisine bağlanmak için Netbeans işlerinizi kolaylaştıracak bir IDE. Hele de konuya biraz uzaksanız Nebeans ile servise erişemeniz kolay olacaktır. Bunun için şu yazıya da bakmanızı öneririm.

Java uygulamanıza bir arayüz dahil etmeniz gerkiyorsa çok güçlü bir psikolojiye sahip olmanız gerektiğini belirtmeliyim. Oracle JDeveloper arayüz olarak Visual Studio ‘yu çağrıştırdığı için onu kullanmıştım ilk başta. (Çok ciddi sistem kaynağı tüketiyor aman dikkat) fakat kendisine has kullandığı Layout kütüphaneleri ile ecel terleri döktürdü bana. Bu konuda Netbeans yada Window Builder Pro. (Eclipse plugin) tercihiniz olmalı. Netbeans GUI tasarımı için arka planda Matisse adlı bir motor kullanıyor ve bu hızıyla ünlü bir tasarım motoru.

Bitirme projemle ilgili aklımda kalanlar şimdilik bunlar. Zamanla ekleyeceklerim olursa onları da ayrı bir yazı olarak yayınlarım. Yazıma burada nokta koyup Arden Agopyan ‘ın SOA semineri dinlemek için Bilişim Kongresi ‘ne gitmek üzere huzurlarınızdan ayrılıyorum. Bir sonraki yazıya kadar tüm okuyucularıma mutlu günler diliyorum…

Reklamlar
Kategoriler:GÜNLÜK
  1. Haziran 9, 2007, 10:13 am

    geçmiş olsun İbrahim abi, güzel tecrübelerini (tabi bunları öğrenmek sana bir miktar acı çektirmiş olabilir 🙂 )paylaştığın için teşekkürler 🙂 bende genelde web programlama üzerine çalışıyorum ama ortamlar farklı 🙂 linux,php,mysql ‘in daha kolay bir geliştirme ortamı olduğunu düşünüyorum her ne kadar php yazarken asp.net ‘e göre biraz fazla kod yazarak amelelik yapsanda sonuç olarak bir kısıtlama durumu söz konusu değil.. yani yaşadığın bazı bileşenlerin hatalı çalışması gibi sorunlar pek olmuyor (örn : valdiation )…

  2. Haziran 9, 2007, 8:01 pm

    Yazdığın ortamdan ziyade neyi yazdığın asıl önemli olan benim için.

    Yani ben çok sıkı sıkıya metodolojilere bağlı ve işten çok yöntemi ön plana çıkaran süreçleri sevmiyorum.

    Linux,php,mysql,asp.net,windows platformu,.net,java vs vs vs elimizde bir sürü platform ve bir sürüde uygulama geliştirme aracı var.

    Ama hepsi tek bir amaç için BİR SORUNA YADA SORUNLAR BÜTÜNÜNE ÇÖZÜM üretmek için.

    Bugün ajax-tr’den gelen bir maili cevapladım. Arkadaşımız asp.net ve ajax için proje yapacağım diyor. Bir dil için proje nasıl yapılır ki????

    Ancak bir sorunu çözmek için bir proje yapılır ve bu sırada da asp.net+ajax kullanılabilir.

    Hangi platformda hangi domainde uygulama geliştirirseniz geliştirin stabilite,performans ve kullanım kolaylığı sağladıktan sonra kalanı pek de önemli değil.

    Performans konusu da bu projemde özellikle dikkat ettiğim nokta oldu. Hele webde kaynaklar kısıtlı olduğu için ne kadar az işlem o kadar çok başarım.
    Kullanacağınız her bir koşul ifadesinin sistemde ciddi bir yğk getirdiğini unutmayın. Testi 1 kişi yaparsınız ama sitenizi binlerce kişi kullanabilir. Asıl sorun da o zaman olur.

    Neyse konu dağılmaya başladı. Özetle faydalı bir proje süreci oldu benim için.

  3. Haziran 9, 2007, 9:22 pm

    bu arada bugünkü seminer nasıldı ?

  4. Haziran 10, 2007, 10:17 am

    Geçmiş olsun İbrahim,

    Artık iş hayatında olacak bol bol projelerin 🙂

    Hatırlarsan lise yıllarında edebiyat derslerinde “Sanat için Sanat”, “Toplum için Sanat” diye tartışmalar dönerdi.

    Yazılım dünyasında da benzer bir durum sözkonusu. “Müşteri için Yazılım” vs. “Yazılımcı için Yazılım” durumu var şu anda. Maalesef her kod yazana “Developer”, her diplomayı alana da “Engineer” diyoruz. Halbuki çoğu arkadaşımız “Coder” olmaktan öte geçemiyor.

    Kendileri için kod yazıyorlar bu arkadaşlar; “Tamam artık Hibernate’i öğrendim ve sıkıldım şimdi başka bir araçla yazayım”. Maymun iştahlıdan ne “Engineer” olur ne de “Developer”. Tabii Devekuşundan da olmaz 🙂 Ortasını bulmak lazım.

  5. Haziran 10, 2007, 4:47 pm

    @Mustafa Tan: Abi çok teşekkürler.

    Bu yazılımcı için yazılım ve müşteri için yazılım konusu şu anda en çok gündemimizi meşgul eden konulardan birisi. Belki de bu noktadaki bu karmaşa sürekli yeni teknikleri yeni terimleri gündemimize sokmuyor.

    Bazen müşteriler yapılan işlerden memnun olmuyor bazen de bizlerr işi yapış şeklimizden.

    Eğer kendimizi de tatmin etme derdi varsa o zaman sürekli kullandığımız yöntemi,araçları vs. gözden geçirip ,”Yaa bir yerlerde aksaklık var ama nerde diye sorup duruyoruz.”

    Ama derdimiz müşteriyi memnun etmekse ve aradıkları çözümü en hızlı şekilde sunmaksa bu defa yol yordam dendini bir kenra bırakıp bir an evvel çalışır birşeyler ortaya koyma derdine düşüyoruz.

    Sanırım teknolojiyi hayatımızı ve işlerimizi kolaylaştırmak için kullanmak ve kontrol altında tutmak lazım. Her yeni gelen teknolojinin peşinden koşup açlığımızı yatıştırma derdine düşersek ortaya kocaman bir 0 çıkar.

    @Grkn: Dün ben özellikle IBM’den Arden’in SOA sunumunu dinlemeye gitmiştim.

    http://www.ardenagopyan.com/downloads/sunumlar/tbk-soaprensipleri.pdf

    adresinden sunumu indirebilirsiniz.

    Yazılım Müh. Türkiye mail grubundan tanıdığım Oktay Özgün ‘de Intel adına konuştu ve kon uolarak çok çekirdikli yapıya uygun uygulama geliştirmekten bahsetti. Açıkcası tesadüfen katıldığım o sunumdan da çok keyif aldığımı belirtmeliyim. Belki bu konu üzerine ileride bir kaçs atır birşeyler yazarım.

    Selamlar..

  6. Haziran 10, 2007, 11:14 pm

    Geçmiş olsun İbrahim
    artık iş hayatın da nice projelere

    Mutlu Günler

  7. Haziran 11, 2007, 1:08 pm

    Büyük geçmiş olsun ibrahim 🙂 Umarım istediğin gibi gitmiştir herşey.

  1. Haziran 9, 2007, 9:39 am
  2. Ocak 1, 2008, 1:49 am

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: