Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- "Code Fiction" adlı programın bu bölümünde, Milli Emlak'ta yazılım mimarı olarak çalışan İbrahim Gündüz ile Fırat, Deniz, Barış, Uğur ve Serdar gibi teknoloji uzmanları arasında geçen bir sohbet sunulmaktadır.
- Video, yazılım mimarlığı mesleği, Docker ve konteyner yönetimi, farklı programlama dilleri (PHP, Python, .NET, Java, JavaScript, Node.js), yazılım mülakatları ve iş görüşmeleri gibi konuları ele almaktadır. Konuşmacılar, 16 yıllık sektör tecrübelerinden yola çıkarak teknik bilgiler paylaşmakta ve pratik deneyimlerini aktarmaktadır.
- Programda ayrıca yazılım mimarlığının günlük işleri, yüksek trafikli sitelerde performans sağlama, konteyner yönetimi için Swarm ve Compose gibi araçların özellikleri, mülakatlarda sorulan sorular ve aranan yetkinlikler, iş görüşmelerinde kod örneği isteme süreci gibi konular da tartışılmaktadır. Video, yakın zamanda Angular 2 bootcamp düzenleneceği ve JetBrains lisanslarının dinleyicilere dağıtılacağı duyurusuyla sonlanmaktadır.
- Programın Tanıtımı ve Konuk Tanıtımı
- Code Fiction'ın henüz isim bulamadığı bir programında haftalık olarak her hafta bir kişi ağırlanacak.
- Bu hafta konuk İbrahim Gündüz, Milli Emlak'ta yazılım mimarı olarak çalışıyor.
- İbrahim, yaklaşık 10-16 senedir sektörde çalışmakta ve ağırlıklı olarak PHP ve Python ile uğraşmış, son dönemde kurumsal dünyanın getirdiği DOTNET ve Java tarafıyla ilgileniyor.
- 01:25Yazılım Mimarının Görevleri
- İbrahim, Milli Emlak'ta küçük bir ekip içinde DevOps tadında görev alıyor, yeni yazılan yazıların kurulması ve gereksinimlerin belirlenmesi gibi konularda çalışıyor.
- Yazılım ekipleri ve product tarafı ile birlikte çalışarak, cash servisi, search engine gibi altyapı konularında teknik analiz yapıyor.
- İbrahim, 16 sene boyunca sürekli değişik işlerle uğraştığını ve şansının yaver gittiğini belirtiyor.
- 02:52Yazılım Mimarlığı Deneyimi
- İbrahim, yazılım mimarı olduğunda ne yapacağını bilmediğini, Markafoni'ye yazılım mimarı ilanı açıldığında kendini referans ettiğini anlatıyor.
- Öğrenmenin en iyi yolu, bir şeyin kitabını okumak yerine yolunda öğrenmek olduğunu vurguluyor.
- Programın sponsoru Armut.com, Fırat ve Deniz'in çalıştığı bir firma olarak tanıtılıyor.
- 04:28Armut.com'da Çalışma
- Armut.com'da Deniz, Mimarlar Prime'ın yaptıklarına benzer işler yapıyor ve teknik koçluk yapıyor.
- Deniz, altyapının nasıl olacağını, ürün kullanımlarını, sürüklenmelerini ve kod standartlarını belirliyor.
- İbrahim'in önceki çalıştığı yerde yazılım mimarlığı yaparken prototip çıkartıp projeyi başkalarına devretme şeklinde çalışırken, Armut.com'da daha işin içerisinde çalışıyor.
- 06:37Teknik Detaylar
- İbrahim, yüksek trafikli sitelerde Docker konteynırların ayaklandırılması ve taşınabilir hale getirilmesi gibi işlerle uğraşıyor.
- İbrahim, ekibe mentörlük edebilecek bilgisi olmadığını belirtiyor.
- İbrahim, kullandığı tek bir proje olduğunu ve Docker'un production'da kendisini mağdur etmediğini, ayrıca bir B planı olarak AVS'de hazır bir instance bulundurduğunu söylüyor.
- 07:28Docker ve Rancher Kullanımı
- Konuşmacı, Docker kullanımıyla ilgili tecrübesi olmadığını ve internette de bu konuda yeterli bilgi bulamadığını belirtiyor.
- Rancher adlı yazılım kullanarak Docker konteynerlarını yönetiyor ve yeni bir host'u açıp Rancher'a register ettiğinde yaklaşık 1,5 dakika içinde yeni instance hazır hale geliyor.
- Load balancer olarak AWS'nin klasik load balancer'ını kullanıyor ve dışarıdan gelen trafiği karşılamak için AWS bağlantısını kullanıyor.
- 09:43Rancher'ın Avantajları
- Rancher, Docker imajını deploy edip sunucuya çalıştırıyor, portları ayarlıyor ve register ediyor, bu işlem yaklaşık 1,5-2 dakika sürüyor.
- Rancher ile bir konteynerin içinde birden fazla konteyner çalıştırabiliyor veya farklı instance'larda birer konteyner çalıştırabiliyor.
- Rancher ile otomatik ölçeklendirme yapabiliyor, örneğin belirli saatler arasında minimum ve maksimum instance sayısını ayarlayabiliyor.
- 12:51Docker ve Konteyner Yönetimi
- Docker ile tanışmamış olanlar için kesinlikle incelemelerini tavsiye ediyor, çünkü development environment'in taşınabilirliği çok önemli.
- Docker'ın asıl zorluğu konteyneri build etmek değil, çok sayıda konteyneri yönetebilmek ve swarm gibi araçlarda aynı anda birden fazla instance üzerinde otomatik işlemler çalıştırabilmek.
- Docker konteynerleri sadece uygulamanın çalışmasına olanak sağlayacak environment içeriyor, kaynak kodlar ve medya direktleri konteyner içinde değil.
- 15:37Compose Kullanımı
- Compose, Docker'ın güçlü bir aracı olarak tanımlanıyor ve karmaşık ortamları kolayca ayağa kaldırabiliyor.
- Compose ile bir environment'ın ayağa kalkması için developer'ın makinesinde sadece bir Compose dosyası çalıştırması yeterli, böylece production'da ne varsa developer makinesinde de aynı ortam oluşuyor.
- Database seviyesinde değişiklik olduğunda canlıya geçerken ideal bir yöntem olmadığı, genellikle tek ellerin olsun diye sistem yöneticisine database'in benzetilmesi gibi yöntemler kullanılıyor.
- 18:19Teknoloji Kullanımı Hakkında Düşünceler
- Teknolojinin her parçası güzeldir, ancak tamamen teknolojiye sarılmak akıllıca gelmez.
- Hype driven development (hype odaklı geliştirme) olarak adlandırılan, yeni teknolojileri hemen entegre etmeye çalışmak ve sonra başarısız olunca hikaye anlatmak yaygın bir durumdur.
- Starbucks gibi yerlerde hemen yeni teknolojileri kullanmaya çalışanlar vardır.
- 19:52JavaScript ve Node.js Hakkında
- JavaScript servislerde gerçekten güçlü olsa da, doğru dürüst standartları olmadığı için kötü ellerde kötü sonuçlar verebilir.
- Bir şirketin tüm sitesini tek bir dile yıkmak yerine, mikro servis veya Node.js gibi daha küçük sorumluluk alanları bırakmak daha mantıklıdır.
- Node.js, soket konuşması gereken yerlerde çok geçerli bir teknolojidir.
- 21:14Node.js'in Sorunları
- Node.js'te PHP gibi tek life cycle'da çalışan uygulamalar değil, sürekli çalışan uygulamalardır.
- Execution handling'i düzgün yapılmadığında, ilk alınan hata sonraki hatalara neden olabilir ve kronik memory problemlerine yol açabilir.
- Garbage collector, bazı exception'ları temizleyemeyebilir ve bu durum sunucunun aniden çökmesine neden olabilir.
- 23:02JavaScript'in Zorlukları
- JavaScript'in en güçlü ama aynı zamanda en sıkıntılı özelliği close hikayesidir.
- İçteki bir fonksiyonun dışarıdaki bir değişkene erişebilmesi veya içerideki bir değişkenin dışarı açılabilmesi, özellikle promise veya observable kullanılmadığında sorunlara yol açabilir.
- JavaScript'in standartlarının olmayışı, PHP veya Python gibi dillere göre dezavantaj oluşturabilir.
- 25:12Teknoloji Seçimi ve İş Gücü Sorunu
- Bir platforma geçmeden önce nasıl çalıştığını öğrenmek ve ihtiyaçlarını belirlemek önemlidir.
- Bilinmeyen bir teknolojiye sarılmak yerine, mevcut teknolojileri doğru kullanmak daha mantıklıdır.
- Bazı programlama dillerinde (örneğin Node.js, Python) yeterli sayıda geliştirici bulmak zor olabilir.
- 26:48Yazılım Geliştirme ve Mülakat Süreci
- Mülakatlarda "interface ile ilgili bir şey sormuyor ya bu gerçek dünyada kullanıyor mu?" gibi sorularla karşılaşılıyor.
- Yazılım geliştirme bir zanaat olduğu için saygın olmak ve best practisleri öğrenmek gerekiyor.
- Şirketlerde yeterli kaynak varsa, çalışanların şirketin kültürüne uygun bir oryantasyon alması gerekiyor.
- 28:49Mülakat Soruları ve Beklentiler
- Mülakatlarda backend yazacak bir yazılımcı için web servisi, API geliştirme ve Spring gemisi kullanabilen kişiler aranıyor.
- Mülakatlarda genellikle HTTP life cycle, nesne programlama ve API implementasyonu gibi konular soruluyor.
- Metot isimlendirmesi konusunda farklı yaklaşımlar görülebiliyor, bazıları Türkçe isimler kullanırken bazıları İngilizce isimler tercih ediyor.
- 32:40Mülakat Sürecindeki Sorunlar
- Mülakatlarda HTTP word'leri (GET, POST, PUT, DELETE) ve bunların işlevleri hakkında sorular soruluyor.
- Bazı geliştiriciler sadece JSON dönen API'leri resful API olarak algılamakta ve bu konuda yetersiz kalıyor.
- Mülakatlarda tasarım kalıpları (factory pattern, SOLID prensipleri) gibi konular sorulsa da, gerçek hayat senaryolarında takılıp kalan geliştiriciler görülebiliyor.
- 37:12İş Görüşmelerinde Kod Örneği İsteme
- İş görüşmelerinde adayın verdiği kod örneği önemli olduğu için ufak bir kod örneği isteniyor.
- İşyerinde kod yazma deneyimi verimli olmayabilir çünkü görüşmenin heyecanı var ve iyi akademik eğitime sahip kişilerin bile kod yazamadığı durumlar yaşanabilir.
- Git reposu açma gibi bir kurgu daha faydalı olabilir, işyerinde ise maksimum üç saat harcama süresi belirlenebilir.
- 38:49Geliştiricilerin GitHub Deposu
- Geliştiricilerin mutlaka bir GitHub deposu olmalı, iyi veya kötü demeden ufak tefek şeyler yazıp oraya koymak gerekir.
- Bir geliştiricinin GitHub deposu, grafik sanatçısının portfolyosu gibi bir gösterge olarak değerlendirilir.
- İş başvurusunda kişinin GitHub deposuna bakılarak ne kadar ulaşabildiği ve katıldığı projeler incelenir.
- 41:03Gelecek Programlar
- Yakın zamanda internet üzerinden Angular 2 bootcamp yapılacak, yaklaşık bir buçuk saat sürecek ve en az on kişi bekleniyor.
- Bootcamp'te sıfırdan testler ile birlikte basit bir uygulama yazılacak, TypeScript odaklı olacak ve Angular 2'de neler geldi, ne gibi özellikler var gibi konular ele alınacak.
- JetBrains'ten gelen lisanslar dinleyicilere dağıtılacak, rastgele birine verilecek ve bu işlem için bir algoritma yazılacak.