25 Nis 2020

Bir yazılım geliştiricinin bilmesi gereken temel bilgiler

Tecrübeli bir yazılım geliştiricinin şurada yayınlanan önerilerini dilimize derleyip kayda geçirmek istedim. Önceki zamanlarımda bunları bilseydim, benim için birçok şey daha farklı olabilirdi:

Server/Cloud Architecture (Sunucu/Bulut Mimarisi): Ağ bağlantılı bir proje geliştirecekseniz, projenin kullanılacağı ortamda kullanılan ağ yapılarına hakimiyet şart.

API (Application Programming Interface): API'ler, kısaca uygulamaların birbirleriyle haberleşmelerini sağlayan yapılar. Derin bir konu.

Frameworks (Çerçeve, iskelet): Her dilin kendine ait, farklı işler için framework seti mevcut. Bu sistemler, hazır bir çerçeve ve çatkı sunarak, belirli şeyleri yapmanızı kolaylaştırırlar. Bir nevi kılavuz gibiler.

Git/Version Control (Sürüm denetimi): Git çevrimdışı dahi kullanabileceğiniz temel bir araç. Tekil projelerde veya takım çalışmalarında sürüm denetimi olmadan ilerlemek çok zor. Hatta düzenli kayıt gerektiren her işinizde git kullanabilirsiniz. Hemen kullanmaya başlamak için şuraya bakabilirsiniz. Github ise sürüm denetimini online yapmanızı sağlayan platformlardan biri.

CI/CD (Continuous Integration/Continuous Delivery): Sürekli birleştirme, sürekli hizmet). Geliştirdiğiniz uygulamanın hangi ortamları kullandığını ve nasıl dağıtıldığını bilmeniz sizi daha bilinçli yapacaktır.

Unit Testing/Automation: Kaliteli uygulamalar geliştirebilmek için onları test etmeniz şart. Testleri otomatize etmek de ayrı bir katma değer. Bu iş için geliştirilmiş framework'ler var :)

Development Tools (Geliştirme Araçları): Verimli çalışabilmeniz için size destek olacak araçlar her alanda gerekli. Atalar ne demiş: 'Alet işler, el övünür'. Postman, Docker, Cordova gibi birçok platform, kod yazımı, test ve müşteriye ulaştırmada büyük kolaylıklar sunarak işinizi desteklerler.

Bunların dışında bilinmesi iyi olacak derya deniz bir sürü şey var. Öğrenmenin sonu yok. Benim öğrenme yolculuğum devam ediyor. Umarım bu yazı sizin için de faydalı olur.

30 Mar 2020

Okuduğumuz bir yazının/haberin doğruluğuna dair sorgulama önerileri

Bilgi kirliliğinin muazzam boyutlara ulaştığı günümüzde, gerçek-doğru bilgiye ulaşabilmek için medya okur/yazarlığı çok önemli bir ihtiyaca dönüştü. Uzun süredir takip ettiğim teyit.org isimli bilgi doğrulama sitesindeki bir yazıda linki verilmiş olan başka bir yazıyı kendi sayfamda da paylaşmak istedim. İlgili yazıda, çok kısa bir sürede tüm dünyayı etkileyen Covid-19 salgını hakkındaki yanlış bilgilerin yayılmasını önlemek için haberlerin ve yazıların nasıl hazırlanması gerektiğine dair madde madde önerilerde bulunulmuş. O madde başlıklarını alıp, ters yönden yorumlayarak okuduğumuz bir yazının/haberin doğruluğuna dair bir süzgeç mekanizmasına dönüştürebiliriz diye düşünüyorum. Diğer bir deyişle, haber veya yazıda aşağıdaki maddelere uyulup uyulmadığına bakarak okuduğumuz bilgilerin gerçekliğini-doğruluğunu sorgulayabiliriz:

Sunulan bir yazıda veya haberde;

Madde-1: Sansasyonel dil kullanmaktan kaçının.
Sorgu: Kullanılan dil sansasyonel mi?

Madde-2: Görsellere dikkat edin.
Sorgu: Yazıyı desteklemek için sunulan görselleri şüpheci bir gözle inceleyin. Gerek görürseniz görüntü bazlı arama motorlarından yararlanabilirsiniz. 

Madde-3: En kötü senaryolar hakkında spekülasyon yapmaktan veya uzmanların spekülasyon yapmalarını istemekten kaçının.
Sorgu: Yazıda en-kötü-durum spekülasyonu yapılıyor mu?

Madde-4: Okuyuculara uygulayabilecekleri belirli aksiyonlar önerin.
Sorgu: Önerilen belirli aksiyonlar varsa, bunlar gerçekten uygulanabilir mi? 

Madde-5: Okuyucuları resmi bilgi kaynaklarına yönlendirin.
Sorgu: Bilgilerin alındığı kaynaklar güvenilir mi? Bu kaynaklara siz de ulaşabiliyor musunuz?

Madde-6: Raporunuzu bilgilendirmek için kullanılan araştırmalar konusunda dikkatli olun.
Sorgu:  Yazıda değinilen araştırmalara ulaşabiliyor musunuz? Araştırmaları ayrıca didikleyebiliyor musunuz? 

Madde-7: Birden fazla uzmanla konuşun.
Sorgu: Yazı uzmanlara dayanarak mı bilgi sunuyor? Uzmanların itimat edilebilirliği konusunda araştırma yapabiliyor musunuz? 

Madde-8/9: Hangi söylentilere hitap edeceğinize karar verirken devrilme noktasını düşünün. Bir söylentiyi reddetmeye karar verirseniz, özellikle başlıklarda ve tweet'lerde gerçeklere odaklanın.
Sorgu: Yazıdaki bilgiler sosyal medyada yayıldığı için gerçeğe dönüşen veya haberleşen türden mi? Bu sorgu için ilgili sosyal medya paylaşımlarına ulaşabilliyor olmak ve onları biraz didiklemek gerekiyor.

Madde-10: İçeriğinizin işlenmesini kolaylaştırın.
Sorgu: İçeriği kolayca anlayıp sorgulayabiliyor musunuz? 

Madde-11: Alaycı veya aşağılayıcı dilden kaçının.
Sorgu: Kullanılan dil alaycı veya aşağılayıcı veya daha genel olarak rahatsız edici mi?

Yukarıda önerdiğim sorguları kullanarak, karşılaştığımız bir yazıyı-haberi metodik bir şekilde analiz edebilir ve en azından şüpheli bilgileri zihnimizden uzak tutabiliriz. Unutmayalım ki hakikat çoğu zaman görünenden farklı olabiliyor.

17 Şub 2020

(yeni) bir beceriyi daha çabuk geliştirmek için iki püf noktası

Merhaba, birkaç yıllık aradan sonraki bu ilk gönderimde, yeni bir şeyler öğrenme hızını ve verimini artırmayla ilgili bir yazıdan bahsedeceğim. Okudukça ilgimi çekerek bende paylaşma isteği uyandıran makaleye şuradan ulaşabilirsiniz. Dilimize uyarladığım sürüm için buyrun:
Yazıda bahsedilen araştırmaya göre, varılan sonuç şu: Ustalaşmak istediğimiz bir görevin biraz değiştirilmiş bir sürümünü tekrarlarsak, aslında aynı şeyi arka arkaya birden çok kez tekrarlamaya devam etmekten daha fazla ve daha hızlı öğreniriz.

Bunun en olası nedeni, mevcut anıların yeni bilgilerle geri çağrıldığı ve değiştirildiği bir süreç olan yeniden-birleştirmedir (reconsolidation).

Süreç basit bir örnekle şöyle açıklanabilir: Basketbolda serbest atışta daha iyi olmaya çalıştığımızı düşünelim. Serbest atışta koşullar sabittir. Pota yerden ~3,05 metre yukarıdadır ve serbest atış çizgisi potadan ~4,57 metre uzaklıktadır. Teorik olarak, aynı noktadan tekrar tekrar atış yapmak, doğru hareketleri kas hafızanıza dahil etmenize yardımcı olur, böylece doğruluk ve tutarlılığınız artar. Ve elbette, bu olur - fakat atışlarınızı iyileştirmenin daha iyi ve daha hızlı yolu, bir sonraki antrenmanda koşulları hafifçe değiştirmektir. Belki birkaç santim daha yakından veya uzaktan atmak gibi. Başka bir antrenmanda, birkaç santim yandan atış yapabilirsiniz. Bir başka antrenmanda, biraz daha ağır veya hafif bir top kullanabilirsiniz. Kısacası, her pratikte koşulları biraz farklı hale getirmek, yeniden birleştirmeye yönlendirerek, daha hızlı öğrenmenize yardımcı olur.

Çok Farklı değil veya Çok Çabuk da değil

Koşulları birazdan daha fazla değiştirmemelisiniz. İlk yaptığınızdan çok farklı bir şey yaptığınızda, yeniden birleştirme yerine, yeni anılar oluşturmuş olursunuz. Araştırmacılar göre; "Değiştirilen görev çok farklı olursa, insanlar yeniden birleştirme sırasında gözlemlediğimiz kazancı alamıyorlar. Oturumlar arasındaki değişikliğin çok az olması gerekir."

Ayrıca, uygulama oturumlarınızın arasında uygun zaman aralıkları bırakmanız gerekir. Araştırmacılar katılımcılara eğitim oturumları arasında 6 saatlik bir zaman aralığı vermişler, çünkü nörolojik araştırmalar yeni anıların yeniden birleştirilmesinin çok uzun sürdüğünü gösteriyor.

Altı saatten önce farklı bir şekilde tekrar-pratiği yaptığınızda, kendinize öğrendiklerinizi "içselleştirmek" için yeterli zaman vermemiş oluyormuşsunuz. Yeteri kadar zaman vermeden tekrar ettiğinizde taze anıları değiştiremezsiniz ve bu nedenle becerilerinizi geliştiremezsiniz çünkü bir önceki anıların henüz birleşme şansı olmamıştır. Dolayısıyla, yeni bir beceriyi öğrenme hızını önemli ölçüde artırmak istiyorsanız, aşağıdaki yöntemi deneyiniz.

Yeni Bir Beceri Nasıl Öğrenilir?

Öğrenmeyi iyileştirmenin püf noktaları; ufak ve akıllıca değişiklikler yapmak, sonuçları değerlendirmek, işe yaramayanları eleyip, işe yarayanları alarak süreci daha da rafine hale getirmek.

Zaten iyi yaptığınız bir şeyi sürekli olarak değiştirip düzelttiğinizde, daha da iyi yapabilirsiniz. Örneğin, yeni bir sunumda ustalaşmak istediğinizi varsayalım.

1. Temel beceriyi prova edin. Sunumunuzu, canlı yaparken karşılaşacağınız koşullar altında birkaç kez tekrar edin. Doğal olarak, ikincisi birincisinden daha iyi olacak; pratik böyle işliyor. Fakat sonra, üçüncü tekrara geçmek yerine ...

2. Bekleyin. Belleğinizin birleşmesi için kendinize en az 6 saat verin. (Bu muhtemelen tekrar pratik yapmadan önce yarına kadar beklemek anlamına gelir ki bu iyi birşey)

3. Tekrar çalışın, ama bu sefer...
  • Biraz daha hızlı yapın. Biraz hızlı konuşun - sadece biraz - normalden daha hızlı. Slaytlarınızı biraz daha hızlı çalıştırın. Hızı artırmak, daha fazla hata yapmanıza sebep olabilir, ancak sorun yok. Bu süreçte eski bilgileri yeni bilgilerle değiştirirsiniz ve iyileştirmeye zemin hazırlarsınız. Veya... 
  • Biraz daha yavaş yapın. Hızlı yaptığınız tekrardakiyle aynı şey olacak. (Ayrıca, normal hızınızda sunum yaparken görünmeyen yeni efektler - efekt için sessizliğin kullanımı da dahil olmak üzere - deneyebilirsiniz) Veya... 
  • Sunuyu daha küçük parçalara ayırın. Hemen hemen her görev bir dizi ayrık adım içerir. Sununun bir bölümünü seçin. Parçalara ayırın ve her parçada ayrı ayrı ustalaşın. Ardından tüm sunumu tekrar bir araya getirin. Veya...
  • Farklı bir projektör kullanın. Veya farklı bir uzaktan kumanda. Veya kulaklıklı mikrofon yerine bir yaka mikrofonu. Koşulları hafifçe değiştirin; bu sadece mevcut hafızayı değiştirmenize yardımcı olmakla kalmaz, aynı zamanda beklenmedik durumlara daha hazırlıklı olmanızı da sağlar.

4. Ve bir dahaki sefere, başka bir koşulu biraz değiştirin.

Bu işlemi neredeyse her şeye uyarlayabileceğinizi unutmayın. Bu süreç, motor becerilerin geliştirilmesinde açıkça etkili olmakla birlikte, neredeyse her beceriye uygulanabilir.

İyileştirebilme umuduyla tekrar tekrar aynı şeyi yapmayın. Aynı şeyi tekrar tekrar yaptığınızdaki öğrenme hızınız, koşulları biraz değiştirdiğiniz tekrar yöntemindeki kadar hızlı olmayacak ve daha sonra kendinize yeni anıları birleştirmek için zaman tanıyacaksınız.

Zaten iyi yaptığınız bir beceriyi, aynı yöntemle ufak değişikliklerle tekrar ederek ve düzeltmeye devam ederek daha da iyi yapabilirsiniz.

Ve çok daha hızlı. Bu, uzmanlığa giden en hızlı yol olarak belirtiliyor araştırmada. Umarım uygulayıp faydasını görebiliriz.