folder Tahribat.com Forumları
linefolder Programlama Genel
linefolder Nasil Daha Iyi Bir Yazilimci Olabilirim



Nasil Daha Iyi Bir Yazilimci Olabilirim

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    Selamlar arkadaslar

    Aranizda yazilimla ilgilenen bir grup arkadasimiz var, tecrübeli-tecrübesiz herkes bir seyler yapmaya calisiyor ve herkese saygi duyuyorum. Bu konuda bazi eksik gördügüm seyleri ve kendi tecrübelerimi paylasmak istiyorum. Böylece basliktaki "Nasil Daha Iyi Yazilimci Olabilirim" sorusuna cevap vermeye calisalim

    -Konu biraz uzun olacak, ilgisi olmayan arkadaslar zaten okumayacaktir

    Oncelikle böyle bir konu acmamin sebebi, youtube' da takip ettigim birinin su videosu

    https://www.youtube.com/watch?v=VIPEYBdFdcQ

     

     Artik, sadece kodlamada iyi olmanin yeterli olmadigindan bahsediyor. Onerdigi iki konferans var (aciklamalar kisminda mevcut, onlari izleyebilirsiniz ki birisi Clean Code ve Clean Architecture kitaplarinin yazaridir)

    Konuya dönersek:

    1- Kodlari Okumak

    Binlerce kisiye yazilim konusunda öyle ya da böyle yardim etmisimdir ve sayisini hatirlamadigim kadar baskalarinin kodunu okumusumdur, projelerini düzeltmisimdir. O yüzden komplex bir sistem olsa dahi, projenin tamamini anlamaya gerek kalmadan hatayi cok cabuk bulabiliyorum, hatanin nerede olabilecegini kestirebiliyorum. Bu özellik baskalarinin yazdigi "kodlari okuyarak" elde edilen bir özellik olduguna inaniyorum.

     

    2- Yazilim Desenleri - Temiz Kodlama

    Görmüs oldugum bir eksik ise, inceledigim hemen hemen tüm projeler genellikle sikintili projeler. Yani ortada hic düzgün bir yapi yok, her sey karman corman halde.. Coook nadir olarak bir kac iyi kodlanmis projeye rasladim ancak kendisine amatör diyen den uzman diyene kadar herkesin kodlamasi cok kötü. Bunun sebebi aldiklari egitimin yetersiz olmasi, design-software patternleri sadece teorik olarak bilmeleri ve projelerde kullanmamalari ya da kullanamamalari.

    Elbette projesine göre benim de kullanmadigim zamanlar oluyor ancak büyüme ihitmali olan projeler icin cok dikkat etmeye calisiyorum. Eger projenizde cesitli tasarim desenleri kullanirsaniz, hem (genelde) cok daha az kod yazmis olursunuz hem de ilerde sorun yasandiginda cok daha kolay müdahale etme sansiniz olur. 

    O sebeple lütfen kendinizi bu alanda gelistirmeye gayret edin. Kücük projeler yapsaniz da desenleri uygulamaya calisin. Kendigi okudugum ve okuma listemde olan bir kac kitap upload ettim bunlara bakabilirsiniz

    https://drive.google.com/drive/folders/1FwEBVO6lCy6ysLwPiGCnbRcgw2ygtGvf

    Design Patterns kitabi ciddi bir bicimde yazilmis, biraz daha eglenceli, görsel seyler istiyorsaniz Head First Design Patterns'i kesinlikle tavsiye ederim, basucu kitabiniz olmasi lazim :) 

     

    3- Test - Kalite

    Freelance olarak calistigim dönemde, biraktigim dönemde de sürekli bana gelen sikayet suydu "ya programi X kisine yazdirdik, mundar etti programi, ben de sinirlendim cöpe attim" hemen hemen tüm sikayetler böyleydi. Yapan kisi programi öyle yapmis ki sadece belirli sartlar altinda yarim yamalak seklinde calisiyor. Yazilimciya karsi iyi niyet göstererek: "yeteri kadar test" yapmamis herhalde diye düsünmek istiyorum.

    Calistigim firma'nin bir ayagi fransa'da (bir süre önce fransiz sirket ile birlesildi) ve cihaz üretimleri de tunus'da yapiliyor. Fransizlar firmware'ini gelistiriyorlar vs sonra cinden elektronik devreler geliyor, tunus'daki yerde montajlaniyor ve firmware yazilip isvicre'ye yollaniyor. Sistem böyle. Suana kadar 3-5 kez bu sekilde seri mallar geldi. Kac kere geldiyse hep bir sikinti hep bir sikinti, ya firmware'i düzgün yazmamislar, ya yazilirken seri numarasi, üretim tarihi gibi bilgiler silinmis, ya firmware'de hatalar.. Hep bir sey cikti ve hala cikiyor. Benim isim gücük yok bu modüllere fix toolar yazip yazip düzeltiyorum.. 

    Peki bu neden oluyor? Hem fransa'dakiler hem tunus'dakiler test nedir anlamiyorlar, bilmiyorlar.. Kendi kafalarinda bir test konsepti var onu uyguluyorlar. Anlatiyoruz, siz test yapmiyorsunuz diyoruz, nasil olur bizim testbenchlerimiz var, ee madem test yapiyorsunuz bu hatalari nasil bizim testerlarimiz buluyor? 

    Peki bu neyi gösteriyor? Bu adamlarin "is kalitesini", daha dogrusu olmayan is kalitesini gösteriyor. Ve firmayi zarara ugratiyorlar. Cünkü gönderilmis modülleri tekrar geri göndermek masrafli oldugu icin, biz burda tool'lar yazip fixliyoruz. Cünkü bizim icin bir bitmis ürün demek, neredeyse hatasiz olmali. En kücük ayrintisina kadar gerek fiziki gerek bilgisayar ortaminda test edilir. Cünkü sattigin üründen sen sorumlusun ve "kaliteyi" gercek manada prensibin olarak görmüssen, müsterine ayipli ürün satmazsin, zaten müsteri de bilincli oldugu icin o ürünü kabul etmez, bir daha da seninle iletisime gecmez.

    Yani bir isi yaparken, gereken testleri dikkatlice yapin. Yazilim tarafinda ise unit testleri büyük önem arzediyor. Ozellikle büyük projelerde. Test-Driven-Development kavramiyla ilgili cesitli videolar izleyip, cesitli seyler ögrenebilirsiniz.

     

    4- Yabanci Dil - Ingilizce

    Yabanci dil bilmeyen bir yazilimciya ne kadar "yazilimci" denilir tartisilir? Cünkü yazilimci demek, kendini yeni teknolojilere hemen adapte edebilen demek, sorunlarla karsilastiginda kolay ve temiz sekilde cözüm getirebilen demektir. Bu yüzünden konusma olmsasada okudugunu anlama, yazmada iyi derecede ingilizce bilmesi gerekmekte. Cünkü hemen hemen yeni cikan tüm teknolojilerde kullanilan dil ingilizcedir ve belki cok uzun bir süre belki hic bir zaman türkce kaynak temin edilemiyor. O yüzden ingilizce bilmiyorsaniz ögrenin!

    Ozellikle profesyonel sekilde is yapiyorsaniz, ingilizce bilmemek gibi bir mazeretinizin olmamasi gerek. Kendinizi gelistirirken günde yarim saat, bir saat ingilizceye ayirin. Kimse sizden advanced seviye ingilizce beklemiyor ancak okudugunuzu anlayabilmeniz, arastirabilmeniz, bazen soru sorabilmeniz gerekmekte. O yüzden bu konuya önem vermek gerekiyor.

     

    5- Yeni Programlama Dilleri - Yeni Teknolojiler (Edit 1)

    En önemli kisimlardan birini atlamisim :) Evet yazilim almis basini gidiyor, her gün yeni bir seyler cikiyor. Cok sey kacirdik, kaciriyoruz.. O yüzden mümkün mertebe kendimizi güncel tutmamiz gerekiyor. Ben bu dili cok iyi biliyorum bana baska bir seye gerek yok diyenler hala vb 6.0 ile kod yazmaya calisanlardir, artik onlara neredeyse hic ihtiyac kalmamistir.

    Bu duruma düsmemek icin alaninizla ilgili yeni teknolojileri takip edin, kendinizi sürekli gelistirin, yeni diller ya da teknolojiler ögrenin. Kendimden örnek verecek olursam, normalde desktop-mobile-elektronik (IoT) yazilimcisiyim ancak is geregi farkli alanlara da yönelme durumu olustu ki ben bundan mutsuz degilim.

    Web'ci olmamama ragmen hatta nefret etmeme ragmen bu yolculuga nodejs ile MhmdAlmz sayesinde basladim :) Aslinda o kadar da zor olmayan, sikintili olmayan bir seyle karsilastim (ki asp.net forms/mvc tecrübem vardi). Ancak üstte elestirdigim 'temiz kod yazmama' olayini yasadim. Proje büyüdükce cok karmasiklasti, bazen sikintiya düsüyorum bulmak icin :) Bilgim sinirli oldugu icin belki yapiyi ilk basta iyi kuramamanin sikintisini yasadim :) 

    Daha sonra vuejs ile tanistim (baya bir arastirma yaptim tabi). Harika bir front-end sistem olduguna karar verip iyi ögrenmye gayret ettim. Ne kadar iyiyim tartisilir ancak bir cok seyi rahatlikla yapabiliyorum, vuejs'in güzel imkanlarindan yararlaniyorum. Elbette nuxt.js e de gecme planim var :) 

    Mobil tarafinda ise ilk baslarda java kullandim, daha sonra objective-c ve zorunluluktan Xamarin (xamarin.android, xamarin.ios ve xamarin.forms) kullandim ve hala kullaniyorum. Ancak xamarin, gelisen teknolojilere ne kadar uygun? Firmalarin xamarin bilen birini aramalarinin sebebi xamarin'de c# ile yazilim gelistirildigi icindir. Ancak xamarin'in yeni tip diller ve teknolojilerle karsilastirdigimizda bir cok sikintisi cikiyor. O yüzden 'kendini gelistirmeye calisan' biri olarak, bu alanda yine baya bir arastirma yaptim, karsilastirma videolari izledim ve en sonunda flutter ögrenmeye karar verdim. Ogrenme sürecim biraz uzun sürse de, flutter'in gelecekte cok daha yaygin kullanilacagini düsünüyorum. Yine bu sürecte Azure'u iyi sekilde kullanmayi ögrendim vs vs

    Kisaca, bilginiz, egitim seviyeniz, yasiniz, pozisyonunuz ne olursa olsun sürekli kendinizi gelistirmek ve yenilemek zorundasiniz. Diger türlü hep arkaplanda kalirsiniz ve gerekli kariyer yükselmelerini yakalayamazsiniz ya da zevk almazsiniz isinizden.. Is arkadasimin durumu öyle.. Robot gibi is yapiyor. Ben ise olayin 'yeni seyler ögrenme' safhasindayim. Umarim bu hevesimiz hic kaybetmem  :)

     

    Saat bi hayli gec oldu, aklima suan bu kadar geldi. Yeni seyler gelirse, bu mesaji güncellerim. Yazimda eksik ve hata gördügünüz yerleri bildirirseniz düzelteyim. Ayrica katki sunma amacinda da paylasim yapabilirsiniz tabi ki. 

    Kendi gözlemlerime ve tecrübelerime dayanarak, bir cok yazilimcida eksik gördügüm kisimlari anlatmaya calistim ve cesitli önerilerde bulundum.

    Umarim birilerine faydasi olur

    unbalanced tarafından 24/Haz/20 02:55 tarihinde düzenlenmiştir
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wert
    wert's avatar
    Kayıt Tarihi: 19/Eylül/2005
    Erkek
    unbalanced bunu yazdı

    En önemli kisimlardan birini atlamisim :) Evet yazilim almis basini gidiyor, her gün yeni bir seyler cikiyor. Cok sey kacirdik, kaciriyoruz..

    yazı için sağol 

    bu kalın yaptığım kısma gelirsek

    IT sektörünün amk hergün pokemon adı gibi yeni birşey çıkıyor :| 

    :D

     

    wert tarafından 24/Haz/20 03:03 tarihinde düzenlenmiştir

    |sadece aptalların başarısı ders notu ile ölçülür|
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    frekaze
    frekaze's avatar
    Kayıt Tarihi: 28/Haziran/2015
    Erkek

    Bu konu değerlenir favorileri atayım. 

    Javayi bıraktım yeniden başlasam mı. Temiz kod olayı Türkiyede yeni yeni çıkıyor. 

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Yazilimci
    Yazilimci's avatar
    Kayıt Tarihi: 01/Şubat/2014
    Erkek

    İyi okuyun bu yazıyı müsebbibi benim bu yazının :)))


    Titanyumun gücü adına!!!
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    siyahbereli
    siyahbereli's avatar
    Kayıt Tarihi: 03/Ocak/2006
    Erkek

    Teşekkür ederim. Her işin iki çözümü vardır. Birincisi çözer ikincisi doğru yoldan anlamlı ve kaliteli iş yaparak çözer. İkincisi olmak birazda kişilikle ilgilidir. Yapılan iş içine sinmeli başkalarının gözünden de bakabilen insanların yaptığı kaliteli işlerdir. 

    Kaliteli okunaklı, temiz iş yapan adamla yarım saat sohbet ederek tanıyabilirim. Zor yolu seçerler her ihtimali düşünürler kendilerinden birşeyler katarlar döküman tutarlar gibi gibi... 

    Paylaştığın yazıyı gece sindireceğim teşkr


    Yapmadıklarınıza pişman olmaktansa, Yaptıklarınıza pişman olun...Yapın pişman olun, yada yapmayın yine pişman olun.
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nurulmac11
    nurulmac11's avatar
    Kayıt Tarihi: 04/Ağustos/2012
    Erkek

    eyv hocam. kitaplari okumayi dusunuyorum. her mulakatta bu design patternlari soruyorlar, bazilarini biliyorum da ama kacini gercekten kullandin desem max 2 falandir. kitabini okuyup ornek kullanimi gercekten buyuk projelerde gormek lazim aslinda


    black implies white, self implies other, life implies death.
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    makets
    makets's avatar
    Kayıt Tarihi: 17/Ocak/2010
    Erkek

    Eyvallah hocam, şu testler yok mu (:

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    @Yazilimci yok hocam neden öyle olsun :) Gece öyle birden esti yazi yazmak, yari uykulu olarak yazdim, o videolardan Robert Martin'in videosunu izlerken yazayim dedim :)

    @siyahbereli kalite olgusu biraz kültürle de ilgisi hocam. Bizim insanimiz "kalitesiz ürünler" tüketmeye, "kalitesiz isleri" kabul etmeye alisti. Yani adam ev yapiyor, bir sürü sikintisi var ama normal olarak kabul ediliyor. 5-6 yil önce bizimkiler bir ev almis, sicak-soguk su acma aparati musluga takiliyor yani saga sola istedigi gibi dönmüyor, bir süre gecti musluk sallanmaya basladi,  prizler yerlerinden cikmis, üst katindaki banyoda boya yapilmis ama hep fayanslara sicramis vs. Sen böyle bir evi "kalite kültürü" yerlesmis bir millete satamazsin.. Isimizi düzgün yapmiyoruz, cünkü kisa sürede yapalim bitsin mantigi güdülüyor, kalitesine kimse önem vermiyor. Sonuc odakliyiz sadece. Ayrica emegin karsiligi alinmiyor, haliyle ucuz is gücü haline geliyoruz.. Bunlar temel sorunlar

    @nurulmac11 evet hocam ögrenip kullanmak gerekiyor. Zaten hepsini ögrenmene gerek yok. Neyi nerede kullanacagini bilmen yeterli, hangi pattern'in nerede ise yarayacagini tahmin edebiliyorsan, örnekleri bulman kolay olur. Cok popüler olan design patternlerden bir kac tanesi bilmek iyi olur.

    Ayrica SOLID prensiplerini de ögrenmek ve yazilimi bu temel üzerine insa etmek gerekiyor. SOLID ile ilgili güzel bir kaynak bulursam ekleyecegim.

    @makets testler önemli yer tutuyor ama tabi zaman olarak da cok fazla zaman harcamak gerekiyor. Ancak büyük bir projede testlerin eksikliginden dolayi cok daha fazla zaman ve para kaybedilebiliyor. Ornek olarak bizim is böyle.. Iyi test edilmemis ürünlerle cok zaman kaybediyoruz maalesef.

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    BerkayCit
    BerkayCit's avatar
    Kayıt Tarihi: 25/Şubat/2011
    Erkek

    Head design patterns kitabı çok iyi, bizim hocamız kullanıyordu.

    Ben de kitabı daha iyi anlayabilmek için başkalarına anlatma tekniğini kullanacağım. Videolar çekmeyi düşünüyorum. Ama herkesin anlayabileceği gibi anlatmak istiyorum biraz şenol hoca gibi.

    Öyle bir hevesim var... 


    the programmers of tomorrow are the wizards of the future Gabe Newell
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ilteris
    ilteris's avatar
    Kayıt Tarihi: 05/Nisan/2017
    Erkek
    BerkayCit bunu yazdı

    Head design patterns kitabı çok iyi, bizim hocamız kullanıyordu.

    Ben de kitabı daha iyi anlayabilmek için başkalarına anlatma tekniğini kullanacağım. Videolar çekmeyi düşünüyorum. Ama herkesin anlayabileceği gibi anlatmak istiyorum biraz şenol hoca gibi.

    Öyle bir hevesim var... 

    Kitabın TR çevirisini baya aradım da bulamadım. Bilen eden varsa alırım bir dal.


    #FAA
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    BerkayCit
    BerkayCit's avatar
    Kayıt Tarihi: 25/Şubat/2011
    Erkek
    ilteris bunu yazdı
    BerkayCit bunu yazdı

    Head design patterns kitabı çok iyi, bizim hocamız kullanıyordu.

    Ben de kitabı daha iyi anlayabilmek için başkalarına anlatma tekniğini kullanacağım. Videolar çekmeyi düşünüyorum. Ama herkesin anlayabileceği gibi anlatmak istiyorum biraz şenol hoca gibi.

    Öyle bir hevesim var... 

    Kitabın TR çevirisini baya aradım da bulamadım. Bilen eden varsa alırım bir dal.

    Hocam bildiğim kadarıyla yok ama benimde ingilizcem çok iyi değil, o yüzden yavaş okuyabiliyordum mesela 1chapter ı 3-4 saat de bitirebiliyordum anlayarak


    the programmers of tomorrow are the wizards of the future Gabe Newell