Google, Facebook, Amazon gibi şirketlerle iş görüşmeleri için hazırlanan Tech Interview Pro'dan çıkardığım özet




Tech Interview Pro'da şimdiye kadar izlediklerim ve anladıklarım. (Yanlış çevirirsem kusura bakmayın)
-Büyük şirketlerin (google,apple,amazon,facebook vb) interviewleri küçük şirketlerindekilere göre daha tahmin edilebilir ve önceden çalışılabilir oluyor.

-Bazen interviewler çalışacağınız şirketin domaini ile iligi sorular içerebiliyor. Bu sebeple bu domainleri öncesinden araştırmanız size görüşmede fayda sağlayacaktır. Örneğin google mülakatı öncesi web search'in nasıl çalıştığı gibi.

-Şirketlerin size assignment vermesi kendileri için bir fayda sağlayabiliyor. Sizden outsorce hizmeti almış gibi oluyorlar. Bunu kafanıza takmayın, bu işin doğasında var.

-Telefon interviewlerinden kişiler ortalama %25 başarı sağlıyorlar. Ardından yerinde görüşmeye çağrılıyorlar. Yerinde görüşmeden (on-site) baarılı bir şekilde geçiş ve işe başlamaya hak kazanma genelde %10 seviyesinde oluyor.

-Telefon interview'inde görüşmeci sizi görüşmenin başında tanımak istiyor ve geçmişte yaptığınız projelerden bahsetmenizi istiyor. Bu safhada görüşmeci sizin bu interview'den geçip geçmeciğini hemen hemen tahmin edebiliyor. Ardından telefonda online kod mülakatı başlıyor.

-Telefonda online mülakattda yazdığınız kod için temel olarak dört kritere bakılıyor:
1-Kodlama
2-Veri yapıları algoritmalar
3-Dizayn(Big o Analiz gibi, OO design gibi)
4-İletişim

-Teknik açıklamalar yaparken sizden, ne çok basit düzeyde ne de çok complex anlaşılmaz İngilizce konuşmamınızı bekliyorlar.

-Juniorlara genelde kodlama sorulurken, senior ve manager seviyesinde olanlara sistem dizayn, software dizayn, management gibi konularda sorular soruluyor.

-On site görüşmler genel sabah 9'da başlıyor ve akşam 5'e kadar devam ediyor. Öğle yemeği de interview'e dahil. Ekip sizinle tanışıyor ve birlikte çalışıp çalışamıyacağına karar veriyor. Telefon interview'inde de yaşanan bu benzer süreç, sizin agresifi utangaçi dengeli gibi, hangi ruh halinizde olduğunuzu ve iletişiminizi ölçüyorlar.




-Görüşmelerde çok iyi performans gösterseniz bile, şımarık bir yapınız varsa sizi eliyorlar.

-Sonuçta kurumsal bir yerle görüşüyorsunuz. Kurumsal bir şirketin kurumsallığınını eleştiriyorsanız sonuçta o görüşmede olmamalısınız. OOyunu kurallarına göre oynamalı ve baştan kuralları kabul etmelisiniz.

-Herbir görüşmecinin genelde tüm adaylara sorduğu birkaç soru oluyor.

-Görüşmeciler bazen sordukları sorunun cevabını kendileri de bilmiyor. Adayların soruya yaklaşımlarını merak ediyorlar.

-;Startup tarzı şirketlergenelde adaylardan belli teknolojilerde uzman olmalarını bekliyorlar ve sorularını bu teknolojiler üzerinden soruyorlar. Büyük teknolji şirketleri ise genel kavramlardan sorular sorup adayın herhangi bir teknolojiye uyum sağlayıp sağlayamayacaklarını ölüçüyorlar.

-Referans işe girmekte çok etkili. Herşeyi kendiniz ispat etmeye çalışmanız biraz daha zor olacaktır. Bir referansınız varsa kapılar size daha hızlı açılacaktır.

-Referans veren kişinin de sizin üzerinizden ödül alabileceğini unutmayın. Ayrıca şirket de uygun çalışan bulmuş olacak. Sonuçta bu kazan-kazan-kazan ilişkisi oluyor.

-Linkedinden recuierterlar bulup işe yerleşmek de ayrı bir çözüm. Burada önyazı önem kazanıyor. Önyazınızı şirketlerin herbirne özel yazarsanız şansınız daha da artacaktır.

-Önceden yapmış olduğunuz projeler de sizi işe alımda şansınızı artırıyor. Open source projeler de önemli fakat, production ortamında çalışan projelere katkı sağlamanız daha fazla önem arzediyor.

-Gelişigüzel öğrendiğiniz ve projelerde kullanmadığınız programlama dilleri size görüşmede çok fazla katkı sağlamıyor. Bir iki hafta typescript, ruby gibi diller öğrenmeniz çok da önemli değil. Sonuçta işe girer ve ihtiyaç duyarsanız bir dili iki haftada öğrenebilirsiniz.

-Mezun olunca ilk hedefiniz google facebook gibi yerler olmasın. Evet başarabilirsiniz ama şansınız az olacaktır. Onun yerine basamak basamak ilerlemeye çalışın. Girilmesi daha kolay yerlere girip projelerden öğrenebileceğiniz kadar öğrenmeye çalışın.




- Bazen problemleri recurisive yönden bazen iterative yönden çözmek isteyebilirsiniz. Recurisve ile çözerken stack problemlerini düşünmelisiniz.

-Problemleri Java gibi dillerle çözmek, sınıflar ve interfaceler yazmak OOP'ye uygun olabilir. Eğer bu yolla soruları çözüyorsanız bazen complex yardımcı sınıfların var olduğunu sayabilir ve bunu görüşmeciye söyleyebilirsiniz. Şöyle bir sınıfım var ve bana şunları sağlıyor diyip esas problemi çözen sınıfın kodlarını bu varsayımsal sınıfın apisiyle yazabilirsiniz.

-Fakat bu gibi soruların çözümlerinde saf OOP kullanmak yerine fonksiyonel bir şekilde Python gibi dillerle yazmak size ekstra zaman kazandıracaktır.

-Problem çözümü sırasında görüşmeci ile olan iletişiminiz önemlidir. Çünkü bu takım içinde kuracağınız iletişim için ipucu verecektir. Tek başınıza analiz yapıp soruyu çözmeniz iyi bir iletişim için kötü bir yoldur.

-Problemlerin çözümünde time ve space complexity arasında bir seçim çoğu zaman vardır. Görüşmeciye sorular sorarak hangisinin yazdığımız sistem için daha önemli olduğunu sormalıyız. Misal bu işlem kaç milyon kayıt üstünde yürütülecek, tepki süresi en fazla ne kadar olabilir gibi.

-Problemleri farklı data structurelarla ve algoritmalarla çözmek farklı time complexity ve space complexity verecektir. Soruları herhangi bir şekilde çözebilirsiniz. Ama tercihleriniz size farklı sonuçlar verecektir.

-Çözdüğünüz problemin O(N)'ini görüşmeci size sorduğunda tahmin edip bir değer vermemelisiniz. Tahmin yerine kendinizden emişn bir şekilde değeri vermeli ve bu değeri nasıl elde ettiğinizi söylemelisiniz.

-Bilgisayar bilimlerinde genel olarak bilinen algoritmaları bilmeniz size görüşmeler için büyük fayda sağlayacaktır. Sıralama, arama, string işleme algoritmaları gibi. Bu algoritma sorularını leetcode, hackerrank gibi sityeler üzerinde bulup çözebilirsiniz. Yaptığınız çözümler size genel bir görüş sağlayacak ve farklı problem çözümlerinde hızlanmanızda etkili olacaktır.


-Herşeyi Array ile çözmeye çalışmayın. Array problemin çözümlerinde çok önemli olsa da Hasmap, queue, stack de bir o kadar önemlidir. Ayrıca String soruların çözümlerinde trie'ler de çok önemlidir.




-Yapacağınız görüşmeyi interviewer ile yaparsınız. Ama ayrıca bir kurul ve alım müdürü mevcuttur. Eğer interviewr ile kötü ilişkiler kurarsanız diğer ikisinde de kötü etki bırakırsınız.


-Görüşmeci ile yaptıuğınız soru çözümlerinde soruyu biliyorsanız, bilmiyormuş gibi acı çekme numarasına, her detayı tekrar tekrar tekrarlamanıza gerek yoktur. Bu bir nevi rol yapmaktır ve anlaşılabilir. Soruyu biliyorsanız hızlıca çözün ve bitirin.


-Soru çözümlerinde çok fazla detaya ve uç case'lere girmemeye çalışın. Görüşmeci zaten uç noktaları ihtiyaç duyarsa size soracaktır. Herşeyi test etmeye çalışmayın.


-Görüşme sonrası görüşmeci size "son bir sorunuz var mı?" dediğinde, "işinizin en zor kısmı nedir?" gibi olumsuz sorular sormayın. Onun yerine şirketin kullandığı veya piyasada var olan yeni teknolojiler hakkında şirketin görüşleri gibi olumlu sorular sorun.


-Yine görüşme sonrası son sorunuz var mı dendiğinde "Çözümüm iyi miydi?" gibi sorular sormayın.


-On-site görüşmelerde tahtada farklı renkli kalemlerle yazınızı düzeltmeye çalışmayın. Bu size vakit kaybettirecektir. Ayrıca tahtada sol üst köşeden başlayın. Bu şekilde tahtada yeterli alanınız olacaktır.


-CV'inize hakim olun ama CV'nin de her zaman çok detaylı incelenmediğini düşünün ve kenndinizi tanıtma kısmına önem verin. Kibrili olmayan bir şekilde kendinizi ve projelerinizi iyi anlatmaya çalışın. Unutmayın ilk etki ve sörüşme sonu son etki önemlidir.


-CV'inizi her zaman güncel tutmaya çalışın. 2-3 aylık eski CV'lerinizi göndermemeye çalışın.


-CV'nizi bir sayfayı geçirmeyeye çalışın. Aslında burada CV diyorum fakat Amerikada CV için genelde akademik insanların yaptığı yayınları listeleyen 10-15 sayfalık metinler olarak kabul ediyorlar. Amerikada resume kullanmayı tercih ediyorlar.


-Grafiker olmadığınız için CV'nizi renkli ve farklı şekillerle yapmanıza gerek yok.


-Ms Office Word gibi sertfaksyonlarınızı CV'nize eklemyin. eğer 5-10 yıllık mühendis iseniz stajınızı, girdiğiniz hacathlonları CV'nizden silin. Önemli projelerinizi ön plana çıkarmaya çalışın.


-Bildiğiniz teknolojilerin yanına expert-advanced gibi derecelemdirmeler koyun.

-Eğer bir interview'den geçemezseniz sonrası için korkak olmayın. Unutmayın yapabileceğiniz birçok görüşme ve girebilieceğiniz birçok şirket var.




Görüşmeler için en çok yapılan 10 hata :


1- Soru çözme pratiklerinizi sadece leetcode gibi platformlarla bilgisayar üzerinde yapmayın. Gerçek görüşmelerdeki gibi ya tahta kullanın ya da kağıt üstünde de kendinizi deneyin.


2-Davranışsal sorularda ezbere gitmeyin. Bu sohbet yerine sanki biryerden okuyormuş hissi verir. Genel bir kalıp aklınızda olsun ama sohbetin akışını bozmayın. Güzel hikayeler biriktirin ve yeri geldikçe kullanın.


3- Arkadaşlarınızla mock interview yapmamak sizi gerçek görüşmelerde antremansız bırakacaktır. Utanmayıın ve üşenmeyin, arkadaşlarınızla sahte görüşmeler yapın ve ustalaşın.


4-Teknik soru tiplerini ezberlemeyin. Binlerce soru olduğunu unutmayın. Temel veri yapılarını ve problem çözme yollarını kavrayın.


5-Problemleri sessizce görüşmeciyle iletişim kurmadan çözmeyin. Görüşmecinin sizin analizlerinize de puan verdiğini unutmayın. Ayrıca çözerken yanlış bir yola girerseniz, görüşmeci size rehberlik edip sizi doğru çözüme yönlendirecektir.


6-Soruları çözerken hızlı olun ama aşırı acele etmeyin. Çok hata yapıp düzeltmeye çalıştığınızda saçma bir çözüm üretmeniz mümkündür.


7-Clean code yazmamakta ayrı bir hatadır. Görüşmecinin sizin kodunuzun fotoğrafını aldığını ve görüşme kuruluna ilettiğini unutmayın. Kodunuz sade ve açıklayıcı olmalıdır.


8- Kodunuzu gözden geçirip hatalarınızı düzeltmemekte bir hatadır.


9-Hatalarınızı düzeltmek için de acele etmeyin. Şöyle bir geri çekilin ve kodunuzu iyice değerlendirin ve hatalarınızı ve clean olmayan kodunuzu bu şekilde düşünerek düzeltmeye çalışın.


10-Zor bir soru geldiğinde vazgeçmeyin. Unutmayın görüşmeci sizi zor sorulara nasıl tepki verdiğinizi ölçmek isteyecektir. Ayrıca vazgeçmezseniz size bazı sinyaller vererek yardımcı olacaktır. Ayrıca bu soru sizin için zor ise herkes için de zordur.




Davranışsal sorular :

-Davranışsal sorularda aklınıza sadece ne kadar istekli, hevesli, takım oyuncusu oludğunuz gibi gibi şeyler aklınıza gelmesin.

-Görüşmecinin asıl merak ettiği zor durumnlarla nasıl başa çıktığınız ve takım içindeki iletişimi nasıl kurduğunuz, aldığınız kararlardan sonra nasıl geri dönüşler aldığınızdır.

-Mesala Netflix ile görüşmeye giriyorsanız web sitesinden çalışanlarına tüm sorumlulupu yükleme ve takımlarda açık iletişim kurma ve geri dönüşler sağlama gibi felsefeleri vardır. Bu özelliklere ne kadar uyuyorsunuz? Bunu görüşmeden önce değerlendirmelisinizdir.

-Başarısızlık yazılım mühendisliği için bir gerçektir. Bu başarısızlık sonucu ne yaptınız, neler öğrendiniz gibi sorular size yöneltilecektir.

-Görüşme öncesi hikayeleriniz hazır olsun. Görüşme sırasında size yöneltilen sorular sonucu bu hikayeleri anlatın. 
-Ayrıca size takım içinde fikir ayrılıklarında nasıl başa çıktığınızı ve iletişimi nasıl sağladığınız sorulacaktır. Askeri bir sistemde çalışsaydınız emirle kendi dediğinizi yaptırabilirdiniz. Ama yazılım dünyasında konuları nasıl tartışarak bir çözüm bulduğunuzu hikayelerinizle anlatmalısınız.

-Ayrıca size varsayımsal durumlar için sorular gelecektir. Bu durumda nasıl davranırdınız gibi. Bu sorulara da hazır olun ve yaşladığınız benzer durumlara göre bu sorunu nasıl ele alabileceğinizi görüşmeciye anlatın.

-Junior mühendisler için öğrenmeye açık olmak konusu daha önemlidir. Size bu tür sorular gelebilir ve yeni konuları öğrenmek için nasıl yollar izlediğinizi görüşmeciye anlatabilirsiniz.

Size gelebilecek bazı soru tipleri :

Başarısızlıklarınızdan neler öğreniyorsunuz?

Size yapılan geri dönüşleri nasıl karşılıyorsunuz ve bunları davranışlarınızı değiştirmede nasıl kullanıyorsunuz?

Öğrenme yollarınız, kaynaklarınız ve isteğiniz nasıl?

İnsanlarla yaşadığınız fikir ayrılıklarını nasıl çözüyorsunuz, bu gibi durumlarda nasıl bir iletişim yolunu seçiyorsunuz?

Bulunduğunuz projelerde teknik olarak ilginç bulduğunuz ve size çok şey öğreten projeniz nedir?

Motivasyonunuzu nasıl sağlığyorsunuz, çalışmayı sadece bir iş ve kazanma aracı olarak mı görüyorsunuz? (Şirket kültürünü benimesemek ve bu doğrultuda katı sağlamak gibi özellikleri duymak hoşlarına gidecektir.)

Gerekli durumlarda insiyatif alıyor musunuz ve liderlik yapıyormusunuz? (Hangi düzeyde yazılımcı olursanız olun sizden bu özellikleri duymak ve hikayelerinizi dinlemek hoşlarına gidecektir.)

Belirsiz duırumlarda nasıl bir yol izliyorsunuz? Sorular sorup belirsizliği nasıl gideriyorsunuz?

-Ama görüşmeciyi çok sıkmayın ve gerçek olmayan veya çok uzun hikayeler anlatmayın.

Şu yolu izleyebilirsiniz :

1-Karşılaştığınız sorun
2-Ne yaptınız(Çözümünüz)
3-Sonuç ne oldu

Bu adımlardan biri eksik olursa çok güçlü bir hikayeniz olmaz. STAR yaklaşımını internetten araştırabilirsiniz. Ayrıca turkninja.com'da davranışsal sorular adlı yazıda bulabilirsiniz.





Coding Interview:

-Bu kısımda leetcode.com'da sorular çözülüyor.

-BigO analizi, space complexity,Array, ArrayList, LinkedList, HashMap, BinaryTree, Heap, Graphs, Deep First Search, Soritngs, Searching gibi yapılar ele alınıyor.

-Bu konular için siz de internette bazı kaynaklar kullanarak kendinizi geliştirebilirsiniz.

Örnek Kaynaklar :

-Cracking the coding interview : Bu kitap çok ünlü. Bazı firmalar(spotify gibi) sadece bu soruların içinden sorular sorup interview süreçlerini ilerletiyor. Kitapta interview süreçleri ve teknik sorular mevcut.







-Veri yapıları ve algoritmalar görüşmeler için kritik öneme sahip. Konuları iyice kavradıktan sonra leetcode tarzı sitelerde bol bol soru çözmek gerekiyor. Arkadaşı 'ın tavsiyesiyle başladığım Scott Barrett'in https://www.udemy.com/user/scott-barrett-16/ Data Structures and Algorithms kursları. Ben Java versiyonunu seçtim. Eğitmen görseller için 1 sene uğraşmış. Veri yapıları ve algoritmaları görseller sayesinde çok daha hızlı kavrıyorsunuz.


-Eğer Java Developersanız, veri yapıları ve algoritmalar için bu kitap da sizin için uygun olabilir.


- Ayrıca Mosh'un data structure and algorithms kursu da iyi. https://codewithmosh.com/p/data-structures-algorithms




-Bu kaynaklara çalışırken leetcode.com uygulamasından sorular çözerek görüşmelere hazırlanabilirsiniz.

System Design :





-Bu bölümde özellikle senior mühendislere sorulan sistem dizayn soruları ele alınıyor.

-Mobil ve web gibi farklı teknolojilerin sistem dizaynı farklı oluyor.

-Eğer web dizayn ediyorsanız:

Load Balancing
Caching
Content Delivery Networks (CDN)
Databases and Indexing
Redundancy and Replication
Database Sharding
SQL vs NoSQL
API design
Mobile systems design

gibi konuları bilmenizi bekliyorlar.

-Bu konuyla iligili de yazılmış güzel kitaplar mevcut.

-Sistemin darboğazları,kısıtlar gibi konular da sistem dizayn için önemli.

-Görüşmeler de genel sorulan sorulardan olan twitter gibi bir sistemi nasıl dizayn edersiniz sorusu. Elbetteki sizden bir saat de böyle bir sistemi dizayn etmenizi beklemiyorlar ama yukarıda bahsettiğim konularda genel olarak bir resim ortaya çıkarmanızı bekliyorlar. Bu noktada sizin bakış açınızı ve bilginizi merak ediyorlar. Bunu bir hackathon gibi düşünebilirsiniz.

-Sistemi tasarlarken görüşmeciye esas amacın neler olduğunu sormalııınız. Düşük respose time'mı, availablity mi, consistency mi, security mi. bu özelliklerin önceliği sistemden sisteme farklılık gösteririr.

-bit.ly sitesini deziayn etme de populer sorulardandır.

-Junior mühendislere api design gibi daha basit disign soruları geliyor.

-Load Balancer : Yatay ölççekli bir mimaride, isteklere cevap veren web server'ların önünde yükü dağıtan, istekleri bu web serverlara yönlendiren bir bilgisaar vardır. Bu bilgisayar çeşitli algoritmalar kullanarak bu istekleri bu web serverlara iletirler. Bu algorştamalar gelen istekleri sırayla dağıtan veya web servlerdaki yüke göre dağıtan veya farklı scriptler çalıştıran alfgoritamalar olabilir Bu şekilde yatay ölçeklendirmeyle scaling ve availability mümkün olur. Load balancerların singe of failure dezavantajı vardır. Bunu aşmak için dns serverlarda tanımlı uygulamanın birden fazla load balancerıın ip adresi tutulabilir.Aslında dns serverlar da bir load balancer'dır. Load balancerlar ayrıca bir cache yapısı ile birlikte gelen aynı isteklere web server'lara gitmeden cache'den cevap verebilirler. Load balancer'ın bir dezavtajı sisteme ekstra bir karmaşıklık getirmesidir. Bazı firmalar bu sebep dikey ölçeklendirmeyi tercih ederler. Ayrıca microservice mimarileri dooğası gereği kendi load balancingini kendi içlerinde hallederler, bu durumda da load balancing makinalarını ihtiyaç olmaz.Load balancingi web serverlaın önüne kyabildiğiniz gibi DB'lerin önüne de koyup yükü paylaştırabilirsiniz. Load balancing görüşmelerde sorulan kolay kavramlardan biridir.

-Caching: Eğer uygulama serverından daha önce hesaplattığımız kompleks, db query gerektirebilen bir işlemi tekrar tekrar istiyorsak, bu durumda tekrar hesaplatma yerine cache yapılarını kullanırız. Bu şekilde response zamanını ve işlem zamanını büyük ölçüde düşürebiliriz. Burada frontend cachelerinden bahsetmiyoruz. Cache server bir makinada olabileceği gibi, dağıtık bir şekilde scaleable de olabilir. Bazı bilindik cache sağlııyıcıları memcache, redis ve cassandradır. Cache değerleri memory'de tutarak DB'nin birçok yükünü alabilir. Data memory'de tutulduğu için kalıcı değildir fakat okuma ve yazma diske göre çok hızlıdır. Bir sorgu yaptığınızı ve bunun DB serverda birden fazla join yaparak hesaplandığını düşünün. Ve bu isteği sürekli yaptığınızı düşünün. Bu işlemler yerine ilk sorgu çalıştırıldıktan sonra sonuç cache'e yazılır ve gelen yeni istekte bu hesaplanma tekrar yapılmaz ve cache'den dönülür. Ayrıca anlık geçici değer tutmalarda da cache DB'ye göre avantajlıdır. Örneğin sitenizin anlık ziyaretçi sayısını tutut-yorsanız, DB'ye yazıp DB'yi sürekli lock'lamak yerine cache'e yazarak increment işlemi hızlı bir şekilde gerçekleştirebilirsiniz. Cache'ler (key,value) şeklinde değerler tutarlar. API'si çok basittir. get(key) ve set(key,value) şeklindedir. Gayet basit bir yapıları vardır. Cache'lerde değerler kalıcı değildir. Bu sebeple değerli datalarınızı sadece cache'de tutamazsınız. DB'ye de kaydeytmeniz gerekmektedir.(perisistence). Mesela uygulama kullanıcısının kendi uygulama ayarlarını değiştirdiğini düşünelim. Sadece cache'i güncellemek kullanıcının ayarlarını daha sonralar için kaybetmesine neden olacaktır. Consistency için cache'inizi DB ile validate etmelisiniz.Misal yeni değerler insert edildiğinde önce cache ardından db güncellenelir. Bu işlemi önce cache'i güncelleyip response dönüp cron job veya kuyruk ile DB'yi asenkron olarak da güncelleyebiliriz. Ama asenkron yöntemde consistency'i garanti edemeyiz. Senkron yöntemde ise update işlemi daha yavaştır.Cache invalidaiton için birçok yöntem vardır. Detaylar için buraya bakabilirisiniz. 

CDN: Content Distrubition Network'ün kıslatmasıdır. Uygulamanın statik dosyalarını farklı bölgelerde bulunan serverlarda tutarak, kullanıcının hangisine yakın olmasına bağlı olamasına bağlı olarak hizmet verirler. Bu statik dosyalar resim, js dosyası, css dosyası, video ve hatta html bile olabilir. Misal Türkiye'den amazon.com'a istek atıyorsunuz, amazon uygulamasının statik dosyalarının bulunduğu Türkiye'ye en yakın olduğu CDN server'ından size bu dosyalar iletilir. CDN bir cache gibi çalışır. CDN için iki farklı yöntem vardır. Push ve Pull based. Pull based'de bir dosyaya ilk istek yapılana kadar CDN'e dosya gönderilmez ve gönderildikten sonra sonraki isteklerde bu dosyalar cache'de tutulur. Push based'de ise uygulama geliştiriceilerin dosyaları manuel olarak bu serverlara göndermeleri gerekir. CDN'de js gibi dosyaların versiyonları tutulur ve bu şekilde güncel olmayan dosyaların kullanıcıya gönderilmeleri engellenir. Amazon cloud'da CDN servisine CloudFront denir.

Databases : Verileri sakladığımız yapılara db deriz. Farklı DB çeşitleri vardır Relational ve NOSQL databaseler. Genel olarak relationallar üzerine konuşacağız. DB'de hızlı sorgular yapma istiyorsak index yapsını kullanırız. Bu sorgu yaptığımız db alanının binary tree gibi yapılara kaydedilmesi işlemidir. Bu şekilde log n zamanında sorgular gerçekleştirebiliriz. Indexler read işlemini hızlandırı fakat insert ve update işlemlerinde index yaopsısın her defasında güncellenmesi gerekitiğinden read işlemleri sık olan yapılar için daha uygundur. Bir tabloda bir alan indexlendiği gibi birden fazla alan da composite olarak indexlenebilirler.


Devam edecek....

Softtech 2022 Teknoloji Raporu

 


PDF olarak buradan indirebilirsiniz.

Siteyi buradan ziyaret edebilirsiniz

#blockchain #fintech #yapayzeka #teknoloji #enerji #5g #girişimcilik

ÖNSÖZ M. Murat Ertem.6

TEKNOLOJİLERİN GELECEĞİ Teknoloji Radarı..10

Web3’ün Kazananı Kimler Olacak? - Burak Arık 22

Madem Toplayacaktık, Neden Dağıttık? Blockchain As A Service (BaaS) Salih Cemil Çetin 30

Türkiye’de Dijital Kimlik Uygulama İhtiyacı Nedir? Dr. Oktay Adalıer 34

Dijital Mülkiyet, Fiziksel Mülksüzlük mü? - Fatih Günaydın 38

P2P Dağıtık Depolama Sistemleri - Yücel Karaman 42

Türkiye Yapay Zeka Stratejisi - Ertan Barut 46

AutoML Yapay Zekayı Nasıl Demokratikleştiriyor? - Sri Ambati 50 Yapay Zeka Temelli Akıllı Süreç Keşif Teknolojileri - Tuğrul Cora 54 Kuantum Bilgisayarların Geleceği - Zeki Can Seskir 57

Kuantum Bilgisayarların Ticari Uygulama Alanları - Jale İpekoğlu 62 Low-Code Platformlar - Serkan Kantarcıoğlu 71

Kurumsalların Merkezi Sinir Sistemleri - Çetin Yalçın Güleç 75

5G: Pandemi Sonrası Yeni Hayat - Metin Aslantaş 79

Giyilebilir Teknolojilerin Yakın Geleceği - Erdem Çolak 82 Biyoteknoloji Nereye Gidiyor? - Prof. Dr. Işıl Aksan Kurnaz 86 FİNANSAL TEKNOLOJİLER Fintech Radarı 90

Kripto Finans Dünyasındaki Gelişmelerin Bankacılığın Geleceğine Etkisi Sabri Gökmenler 94

Yaklaşmakta Olan Finans 3.0 Olabilir mi? - Simla Vardı Aşkın 99

Çok Oyunculu Fintek - Umut Esen103

Görünmez Bankacılık - Çiğdem Kılıç109

Açık Bankacılık Geçmişinin Türkiye Yansımaları - Tuğba Kasapbaş 114 Mobil Dünyanın Yeni İş Modeli: Süper Uygulamalar (Super App) Soner Canko118

Yeni Nesil Yatırım Uygulamaları - Kenan Ayvacı121

ÇEVRE, İNSAN VE DİJİTALLEŞME Hayatımızı Dönüştürmeye Aday Teknolojiler - Hakan Aran126

Sürdürülebilir Enerji - İhsan Erbil Bayçöl129

2022’de E-ticaret Dünyasında Bizleri Neler Bekliyor? Ömer Barbaros Yiş133

Micromobility ile Sürdürülebilir Şehirlere Dönüşüm Ahu Büyükkuşoğlu Serter 136

Pandemi Sonrası İş Hayatı - Gülben Gündüz140

Çalışan ve Müşteri Deneyimini Değiştiren Teknolojiler Cavit Yantaç 146

Dijital İş Gücü - Evrim Kuran 150

Eğitimin Dijitalleşmesi - Ahmet Hançer 154

Bugünü ve Geleceği Bir Arada Düşünmenin Yolu: Akıllı İşletme Olmak Erdem Şekeroğlu 163

Teknoloji Çiftçiyi Örümcek Ağından Kurtaracak mı? Mükremin Seçkin Yeniel 166

Geleceğin Deneyimi - Nihal Dayıoğlu 171

Yeşil, Dijital ve Amaç Odaklı Girişimler - Mehtap Özdemir 175 GİRİŞİMCİLİK EKOSİSTEMİ Çin Ekosistemi - Onur Yavuz181

Silikon Vadisi 2022 Trendleri - Ali Işıtman 186

Türkiye Girişimcilik Ekosistemi - Aylin Öztürk 191

Yeni Normalde Girişim Fonlama - Jason Lau 199

Girişimcilik Ekosisteminde “İnsan” - Gizem Eniş 203

Çin Pazarı’ndan Fırsatlar - Tufan Aygüneş 206

Dijital Dönüşümün Sosyal Girişimler Üzerindeki Etkisi Prof. Dr. Itır Erhart 210


Code Review temel ilkeler, en iyi pratikler, nasıl yapılır ile ilgili bazı kaynaklar





Linkedin Learning Programming Foundations: Conducting Code Reviews Eğitimi :


Code review kültürü ve basit kod örnekleriyle github üzerinden örnekler veriliyor.

https://www.linkedin.com/learning/programming-foundations-conducting-code-reviews/write-great-code-reviews-to-advance-your-career


Ücretsiz What to Look for in a Code Review Kitabı :

Jetbrains yayınlarından çıkan kitapta, java dili üzerinden bir code reviewde nelere bakabileceğiniz kategorize edilmiş ve kodlarla bazı örnekler verilmiş. Kitap biraz eski ama genel anlamda temel ilkeler üzerinden ilerliyor.

Table of Contents
JetBrains Technical Series
About this book
About the author
Introduction
What do you look for when reviewing someone else’s code?
What should you look for
Tests
Ask yourself these questions
Reviewers can write tests too
Summary
Performance
Performance Requirements
Calls outside of the service/application are expensive
Using resources efficiently and effectively
Warning signs a reviewer can easily spot
Correctness
Code-level optimisations
Summary
Data Structures
Lists
Maps
Sets
Stacks
Queues
Why select the right data structure?
Summary
SOLID Principles
What is SOLID?
Single Responsibility Principle (SRP)
Open-Closed Principle (OCP)
Liskov Substitution Principle (LSP)
Interface Segregation Principle (ISP)
Mino Dependency Inversion Principle (DIP)
Summary
Security
Automation is your friend
Sometimes “It Depends”
Understand your Dependencies
Summary
Upsource Quick Wins
Navigation
Inspections
Exception Handling Issues
Probable Bugs
Code can be simplified
Unused Code
Summary

Kitap :

https://leanpub.com/whattolookforinacodereview


Code Review Best Practices Videosu:

Yukarıdaki kitabın yazarı Trisha Gee tarafından verilen bir eğitimin videousu. En iyi pratikler konuşuluyor.





Amazing Code Reviews: Creating a Superhero Collective • Alejandro Lujan • GOTO 2019



High-Performance Java Persistence | Vlad Mihalcea - Hikari Connection Pool Nasıl Çalışır?

 High-Performance Java Persistence | Vlad Mihalcea kitabı JDBC Connection Management bölümünden :


1-Çoğu connection pool çözümü, gerçek bir veritabanına özel DataSource veya temeldeki DriverManager yardımcı programını saran bir DataSource uygulaması ile olur. 
Bağlantı havuzu, istemciye fiziksel bağlantıyı döndürmez, bunun yerine bir proxy veya bir tanıtıcı sunar. 
Bir bağlantı kullanımdayken, iki eşzamanlı iş parçacığının aynı veritabanı bağlantısını kullanmasını önlemek için pool durumunu allocated olarak değiştirir. 
Proxy, bağlantı kapatma yöntemi çağrısını durdurur ve havuza bağlantı durumunu unallocated olarak değiştirmesini bildirir. 
Pooling mekanizması, bağlantı edinme süresini kısaltmanın yanı sıra, bir uygulamanın bir kerede kullanabileceği bağlantı sayısını da sınırlayabilir. Connection pool, gelen bağlantı istekleri için sınırlı bir arabellek görevi görür. 
Bir trafik artışı varsa, mevcut tüm veritabanı kaynaklarını doyurmak yerine bağlantı havuzu bunu düzenler. (Kuyruk yapısı kitapta detaylı olarak anlatılmış)






2-Coonection pool'dan connection alma şu şekilde gerçekleşir :

1. Bir bağlantı istendiğinde, havuz ayrılmamış bağlantıları arar.
2. Havuz serbest bir tane bulursa, onu cliente iletir
3. Serbest bağlantı yoksa, havuz izin verilen maksimum boyutuna ulaşmaya çalışır.
4. Havuz zaten maksimum boyutuna ulaştıysa, bir bağlantı edinme hatası istisnasıyla vazgeçmeden önce birkaç kez yeniden deneyecektir.
5. İstemci mantıksal bağlantıyı kapattığında, bağlantı serbest bırakılır ve temeldeki fiziksel bağlantıyı kapatmadan havuza geri döner.


3-Aşağıdaki test, veritabanı bağlantılarını kurma ve kapatmanın toplam ek yükünü görselleştirmek için, dört farklı RDBMS'nin 1000 veritabanı bağlantısını açıp kapatmak için geçen toplam süreyi HikariCP² (Java ekosistemindeki en hızlı bağımsız bağlantı havuzu çözümlerinden biri) ile karşılaştırır.



Codefiction - Yazılım Mimarı Ne iş Yapar?

 Codefiction tarafından canlı yayınlanan, yazılım mimarı ne iş yapar konulu video.

Videoda global şirketlerde yazılım mimarlığı tecrübesi olan katılımcılar, yazılım dünyasındaki architect kavramını ele alıyor. 

Yazılım şirketlerindeki çeşitli yöneticilik pozisyonlarının ne anlama geldiğini, günümüz dünyasında kavramların nasıl değiştiği konuşuluyor.

Atlassian, Amazon, SpaceX gibi firmalarda işlerin nasıl ilerlediği, rollerin nasıl paylaşıldığı anlatılıyor.



"Özellikle kurumsal firmalarda duyduğunuz yazılım mimarı rolü ne iş yapar? Kod yazar mı? Yazmalı mı? Yoksa sadece toplantılara mı girer? Gelin hep beraber iyi yazılım mimarı ve kötü yazılım mimarı arasındaki farkları tartışalım.

Bu sefer konuğumuz Atlassian firmasinda Principle Tech Evangelist olarak çalışan Serhat Can (https://twitter.com/srhtcn). Katılımcılar: Deniz İrgin (https://twitter.com/denizirgin) Deniz Özgen (https://twitter.com/_denolk

Mert Susur (https://twitter.com/MertSusur)" - Codefiction




Codefiction Nasıl Yapılır: Twitter

 Codefiction ekibinin 2 bölümlük Twitter nasıl yapılır serisi.



Video 1 : 




Video 2 :





Akın Kaldıroğlu Hocamızla Yaptığımız Röportaj

Bize biraz kendinizden bahseder misiniz? ( Aslen nerelisiniz? Nerelerde eğitim aldınız? Evli misiniz? )
Öncelikle geç cevap verebildiğim için özür dilerim.
Ben Ayvalık'lıyım. Lise sonrasında 1990 yılında İTÜ'den mezun oldum. İTÜ'de Elektronik okumama rağmen MEB bursuyla gittiğim ABD'de Bilgisayar Mühendisliği'nde (BM) master yapmaya karar verdim. Nitekim önce BM sonra da çalışırken Yazılım Mühendisliği yüksek lisans eğitimleri aldım. Evliyim, 3 çocuğum var.


Amerika'ya gidiş sebebiniz neydi? O yıllarla bu yılları karşılaştırdığınızda ABD'ye gitmek ve orada tecrübe kazanmak hala mantıklı mı?

Aslında taa lisede bile yurt dışında bulunmayı, özellikle orada eğitim almayı çok istiyordum. Aileden zengin değilseniz, okulda da çok başarılı olamamışsanız, geriye sadece devletin bursu kalıyordu o zamanlar, seçenek olarak. Tabi 90lı yılların başından bahsediyorum.  Sadece ABD değil, iyi eğitim veren yurt dışındaki okullarda lisans olmasa bile yüksek lisans eğitimi almak hala çok güzel bir imkan bence. Mesele sadece yabancı dil ya da iyi bir okul diploması değil, dünya görüşünü geliştirmek, envai çeşit tecrübeyi kazanmak; hala benim önem verdiğim şeyler bunlar. Üstüme vazife olmayan bir konuda çıkarım olacak ama toplum olarak bence bu türden tecrübelere çok ihtiyacımız var.

İlk işinizden bahseder misiniz? (İşe giriş hikayeniz, sizden beklentiler..)

Hahaha, ne zamandır ilk işimi pek düşünmemiştim. İlk işim Unix üzerinde firewall geliştiren bir yazılım evindeydi. 40-50 kişilik, çok odaklı iş yapan, ufak bir şirketti. Önce Maryland Rockwille'deydi sonra  Virgina'da Alenxandria'ya taşınmıştık. Yöneticimizi hatırlıyorum, George. İlk işe başladığım gün masamın üzerini mendille silerken koşup tuvaletten bir tomar kağıt havlu getirmişti bana. Bir keresinde de sanırım öğle yemeğinden sonra uyurken masamda yakalamıştı beni 🙂 Bir de yılbaşı yemeğine ben katılmayayım dediğimde, "bak, seni anlıyorum, ben de bu toplumun kıyısındanım, Mormon bir aileden geliyorum, yemek için önceden istediğini ısmarla, yemekte istediğini yap istemediğini yapma, ama birlikte olalım, eğlenelim" dediğini hatırlıyorum. Muhteşem bir adamıdı. Açıkçası böyle tecrübeleri yaşamak, sahip olduğu bilinç ve özellikle de toplumsal alışkanlıklar açısından insana kargadan başka kuş da olduğunu öğretiyor ki bu tecrübenin, yukarıda da bahsettiğim gibi ne yabancı dille ne de yüksek lisans ya da doktora ile kıyaslanması mümkün değil.

Bu işte benden beklenti Java tarafına geçiş ile ilgili alınmış stratejik bir karar doğrultusunda çalışmaktı. Tabi her zaman öyle olmadı, C ile yazılmış devasa firewall kodu üzerinde de çalıştım bayağı. İşe girince ilk öğrendiğim şeyin "firewall" olduğunu hatırlıyorum.

İlk kullandığınız programlama dili neydi? Bu dilin zorlukları nelerdi?

C, biraz da C++'dı. Firewall kodlarında yer yer C++ ile yazılmış kısımlarda vardı ama temelde C koduydu.  Java'nın da ilk günleriydi, yeni release olmuştu. Okuldan çıkıp, üç-beş bin satırlık codebeaselerinden milyonlarca satırlık devasa bir codebasee girmek çok korkutucu. Ufak takımlarda işi biraz da kendin halletmen gerekiyor, yardım almak zorlaşıyor vs.

ABD'de çalıştığınız farklı işlerden bahseder misiniz? Oradaki işler size neler kattı?

Benim çalıştığım yıllar DotCom patlamasının yaşandığı zamanlardı, dolayısıyla ilk işimden sonraki işlerde daha çok web arayüzleri olan projelerde çalıştım ve hep Java kullandım. Mesela satır satır servlet yazdım 😞, ya da Microsoft'un kendine göre değiştirdiği API'ye sahip JDK'sıyla, Visual J++ üzerinde geliştirme yaptım, Swing ile GUI geliştirdim vs. Teknolojik katkılardan ziyade daha organziasyonel ve kişisel ilişkiler bence daha fazla şey katmıştır bana, eğer hakikatten faydalanabilmişsem. 300-400 kişilik orası için küçük teknoloji şirketlerinde de çalıştım, GE'de de çalıştım. Her milletten insanla tnaışmak güzel bir şey. Taa GE'den bir Hintli arkadaş geçenlerde İstanbul'a geldi ve tekrar görüştük mesela.

Java ilk çıktığında Dünya'da nasıl bir etki yarattı? Java ile ilk ne zaman tanıştınız? O zaman java öğrenmek ve sertifika almak şimdiden daha mı kolaydı?

O zamanlar Java hakkında, "hiç bir başka teknoloji bu kadar büyük bir beklenti ve sahiplenme ile hayatına başlamadı" şeklinde yorumlar okuyordum. Muhtemelen sonrasında Android gibi mobil bir teknoloji benzer tecrübeyi yaşa(t)mıştır. Burada teknolojiyi sahiplenmenin hızından bahsediyorum daha çok. Tabi Java'da, web dalgasıyla üst üste gelince, doğru zamanda doğru yerde olmak denen o, Batılıların chance bizim ise nasip dediğimiz şey gerçekleşiyor. Aslında Java, iki ucunda VB ve C/C++ olan uygulama geliştirme dili spekturumunda, daha optimal bir noktaya konumlandı. Yani daha küçük ve basit bir syntax ve gramer ile yeterince güçlü bir dil oluşturmak, çalışma zamanını güçlü tutmak ve tabi ki platformdan bağımsız olmak gibi faktörlerin üzerine bina edildiğinden, bu işin pratiğini yapan geliştiriciler nezninde devrimsel özelliklere sahip olarak algılandı.

Çalıştığım iş yeri sertifika almayı destekliyordu, ücretini veriyordu, ben de hatırlıyorum Bruce Eckels'in Thinking in Java kitabını alıp, satır satır çizerek, örnek kodlarını yazarak, kendi örneklerimi yaparak çalışmıştım. Ben sertifikamı sanırım 1998'de aldım, o zaman konular daha azdı, sınav içeriği açısından ama test kitabı da yoktu tabi olarak.

Türkiye'ye dönüş sebebiniz neydi? Döndüğünüzde Türkiye yazılım sektörünü nasıl buldunuz? Bir hayal kırıklığı yaşadınız mı?
Ailevi sebeplerden döndüm ülkeme. Açıkçası hayal kırıklığım hala geçmedi, çünkü sektörün durumuna hala alışamadım. Tamamen ithalata, lisansa dayalı, derme çatma, esnaf vari sistem geliştirme teknikleri ve insan kaynağına "eleman" bakışı, aradan onca geçen seneye rağmen temelde çok da değişmedi.

Selsoft'u ne zaman kurdunuz ve şirketin kuruluş amacı neydi?

Selsoft 2011'de kuruldu. Sektör, koskoca Amerika görmüş adamsın, programcı mı olacaksın diye beni yönetici olmaya ittirdi ve ben de denedim. Ama açıkçası sektörün istediği gibi bir yönetici de olamadım; bundan 10 küsür sene önce de hemen her şeyin belirleyicisi kısa vadeli mali hesaplardı. Mimari, kalite, temiz kod vs. mesela, pek kolay şeyler değildi bu şekilde yazılım mühendisliği pratiklerini uygulamak. Dolayısıyla yönetici olarak da başarılı olamayacağımı anlayınca, kendimce çıkış yolunun tek başına ya da çok geniş olmayan bir çerçevede, tamamen uyum sağlayabildiğim kişilerle çalışmak olduğunu düşündüm. Selsoft bu düşüncenin ürünü.

MBA ve Felsefe yüksek lisansı size neler kattı? Türkiye ve ABD'yi kıyasladığınızda yüksek lisansa verilen değer farklı mı? Lisans mezunlarına yüksek lisansı öneriyor musunuz?

Ben 1990'da İTÜ'den mezun olunca pek çok arkadaşım doğrudan MBA benzeri yüksek lisans programlarına başlamıştı. Ben ise MBA ihtiyacını ancak yönetici olunca, İK, finans, satış vb. birimlerden insanlarla daha yakın çalışmaya başlayınca hissettim ve onlarla aynı dili konuşabilmek adına, sahayı bir görmek, tanımak istedim. Dolayısıyla terimleri anlamak, temel ayrımları bilmek ve özellikle de sahanın önde gelen teorisyenlerini ve düşüncelerini öğrenmek, kitap ve makalelerini okumak önemli hale geldi. İyi bir MBA eğitimi, eskiden bu yana önem verdiğim entelektüel gelişim için de iyi bir imkan sunar bence.

Felsefe, tamamen entelektüel amaçlı benim için. Uzun süredir kendi kendimce, amatörce okumaktaydım, ABD'deyken Edward Said, Syed Hüseyin Nasr ya da Quine gibi, bir programcıdan pek beklenmeyecek şekilde bazı ünlü entelektüelleri, filozofları dinleme, onlarla aynı çatı altında bulunma fırsatı da bulmuştum. Hep istemiştim, daha formal bir felsefe eğitimi almayı. Sonunda nasip oldu.

Bence, hayatı sorgulamayı geçtim, işini iyi yapmaya çalışan herkes bir şekilde işi üzerinden bazı felsefi soru(n)lara ulaşır. Örneğin programlama. Programlama dillerinin tabiatı, type sistemleri üzerine düşünen,  biraz makale vs. okuyan kişi muhtemelen kendini modern mantık içinde bulur. Yeter ki ilerleyebilecek temel eğitime, temel nosyonlara sahip olsun ve e önemlisi de meraka. Dahası bence düşünmemek, kişisel, toplumsal, teknolojik vs. her konuda her türlü kötülüğün temelidir. Ama gerek temel eğitimimiz, gerek yüksek öğrenimimiz genelde merakı törpülemek üzerine kurulu, bir de bunun üstüne sektör gelince, merak lüks hale geliyor.

ABD'de master yaparken defalarca hocanın sınıfa gelip soruları dağıtıp, 50 dakika sonra odama getirin ya da haftaya şu saate kadar gönderin deyip gittiğini hatırlıyorum. Ülkemizdeki özellikle MBA eğitimindeki derslerde genelde ilk sorulan sorunun sınavın klasik mi test mi olacağını duymuşluğum çoktur. Bence ülkemizdeki eğitim ile ABD'deki eğitim arasındaki esas fark bu, benim gözlemime göre, temelde ahlaki yani.

Lisans okuyan herkese tabi tavsiye ederim, master sonrasında da imkan varsa doktora yaparak formal bilgilenmelerini sürdürmelerini. Ama sektörümüzünün formal bilgi birikimine uzak oluşu, aşırı problem çözme odaklı çalışması ve bunu da "çözüm odaklı olmak" gibi bir meziyetle, bence aslen ideolojik bir sloganla, ifade etmesi, genelde master ve doktora çalışmalarının, kişinin kariyerinde etkili bir noktada olmasına engel oluyor. Bu tutum da aynı "Üniversite okumayıp bir işe girseydim, şimdi yeni mezun olarak kazandığımdan daha çok kazanırdım" sözü gibi aslında, eğitime bakışımızın ciddi bir şekilde araçsal, faydacı olduğunu da gösteriyor, bence.

Kendinizi amatör filozof olarak tanımlıyorsunuz. Biz de verdiğiniz eğitimlerde felsefe konuşmalarınızdan büyük keyif aldık, ayrıca Twitter'daki paylaşımlarınız da çok keyifli ve bilgi verici. Felsefe size hayatta ve yazılım kariyerinizde nasıl bir etki yarattı?

Hahaha, yok artık! Bakın şu açık: Ben, koyunun olmadığı yerde kendisine Abdurrahman Çelebi denen keçiyim. Maalesef hem toplum olarak hem sektör olarak o kadar sığız ki felsefede temel bir kaç soruyu farketmiş olmak ki temelde felsefe cevaplamak değil soru sorma sanatıdır, soruyu farketme gayretidir, Ekşi sözlükte bir yazarın, sağolsun, yazdığı kadarıyla beni "baya bir filozof eğitmen" kılıyor. Senelerdir object-oriented ya da nesne-merkezli/nesne-yönelimli programlama yapıp da "nesne de neymiş, bu kavramı ortaya atanları bir okuyayım baklalım" demeyen kişilere Aristo'nun nesne tanımından bahsedince filozof gibi görünmem normal. Böyle düşünen arkadaşların hüsnü zanlarının farkındayım ve buna minnettarım da ama asıl sebep, aşırı sığ ve araçsal bir dünya anlayışına sahip olmamız.

Felsefe eğer soru sorma sanatı ya da bilimiyse, kabaca konuşursak, soru sorabilme, soru(n)ları görebilme yetkinliğimi arttırmış, dolayısıyla da eğitim, danışmanlık ve daha önceki yöneticilik tecrübelerimde beni daha temelci/fundamentalist, anlama ve anlatma odaklı yapmış olabilir. Teknolojiden ziyade süreç odaklı biriyim ben mesela ya da Java anlatmaktan çok OOP, OOAD, Design Patterns, Domain-Driven Design anlatma ve uygulamayı daha keyifli bulurum. Teknik hiç bir ortaklığımız olmayan bir arkadaş bana bir seferinde, "farkında mısın, bana en sık sorduğun soru 'anlıyor musun'" demişti.

Selsoft olarak eğitimler veriyorusunuz? Bazıları Udemy platformunda yayınlandı. Bu eğitimler devam edecek mi?

Sanırım devam edecek. Udemy kısmı daha çok kitleye ulaşma ile ilgiliydi; bence iyi de oldu. Ama devam edecek eğitimlerin yeri Udemy mi olur pek emin değilim.

Kurumsal eğitimler veriyor musunuz?

Evet, tabi ki. Esas işim kurumlarla çalışmak, eğitim ve danışmanlık vermek. Online eğitimleri salgın öncesinde Oracle eğitmeni olarak Hindistan'dan İngiltere'ye kadarki zaman diliminde Live Virtual Class olarak çok defa vermiştim. Zaman zaman freelancer olarak ülke dışına da online eğitimler verdim. Ama bahsettiğiniz ve bireysel eğitim ve öğretim dünyasında daha çok tanınmamı sağlayan şey, açık sınıf, online eğitimler, salgınla birlikte , kurumların duruma uyum sağlama sürecide ortaya çıkan boşluğu doldurma gayretinin bir sonucudur.

Yeni yazılım öğrenmek isteyenler için eğitimleri sırayla izlemeleri gerekse nasıl bir sıralama yapardınız?

Yani yazılım öğrenmek demeyelim de programlama öğrenmek diyelim ona. Java özelinde Java ile Nesne-Merkezli Programlamaya Giriş ve Java ile Nesne-Merkezli ve Fonksiyonel Programlama eğitimleriyle temel Java SE bilgisi belli bir noktaya getirilebilir. Tabi bu eğitimlere JDBC, threading, IO gibi konuları da eklemek lazım. Advanced Java eğitimi içerisinde düşündüğüm konular. Sonrasında tabi Java EE tarafı geliyor, dolayısıyla web teknolojileri ile başlamak, örneğin Java ile RESTful 
Web Servisi Geliştirme ile devam etmek mantıklıdır. Tabi OOP'ye hakimiyet arttıkça Design Patterns öğrenmek, belki daha öncesinde Clean Code ile olabildiğince daha anlaşılır kod yazmayı alışkanlık haline getirmek önemli. EE tarafından Spring olmadan olmaz, dolayısıyla bir şekilde Spring'e de giriş yapılmalı. Bu konuda daha detaylı bir yazım var benim blogumda, oraya bakılabilir:  http://www.javaturk.org/udemy-egitimlerim-uzerine/

Bonus:



Rastgele İçerik

DonanımHaber

© tüm hakları saklıdır
made with by templateszoo