Merhaba sevgili okurlar.
Aramızda son dönemlerde programlama konusunda hevesli arkadaşlarımızın olduğunu görüyorum. Programlama macerasında kendine başarılı bir yol çizmekte olan arkadaşlarımızın da olduğunu biliyorum. Ancak bu süreçlere yeni adım atacak arkadaşların nereden ve nasıl başlayacakları konusunda net bir fikre sahip olamadıklarını düşünüyorum.
İşte bu çerçevede sizlere kendi programlama maceranızda şahsi deneyimlerimden de hareketle nereden ve nasıl başlayacağınızı kısaca anlatacağım.
Kişisel Hazırlık Süreci
Yaşamımızda birçok konuda kararlar vermek durumunda kalıyoruz. Verdiğimiz kararlar doğrultusunda elde ettiğimiz çıktılar ile hayat deneyimlerimizi yönlendiriyoruz. Tüm bu döngüsel süreçlerde içinde bulunduğumuz durumlar ve sonuçlar ilişkisinde bir bakıma analitik düşünürken buluyoruz kendimizi.
Aslında yazılım geliştirme süreçleri de yaşamla iç içe geçmiş ve kendi kişisel yeteneklerimize göre şekillenen bir konu. Kendi kişisel süreçlerimizde programlama kafasıyla hareket ederken bazı özelliklerimizi geliştirmemiz faydalı olabiliyor. Gelin, kısaca maddeleyelim.
- Sabırlı olma: Bizim hayatın içinde aldığımız kararları yönetirken sabırlı olabilmeyi becerdiğimizde elde ettiklerimizin kendimize neler kattığını daha etkin gözlemleme şansı buluyoruz. Programlama aşamalarında da benzer bir anlayışla yaklaştığınızda, çıkan sorunlara karşı daha etkin çözümler üretebiliyor ve programlama öğrenim döngünüz içerisinde yeni şeyler keşfetme şansı bulabiliyorsunuz. Çünkü yazılım geliştirme aslında eşittir sabırla hareket etme diyebilirim.
- Araştırmacı olma: Bir birey olarak yeni bir bilgiyi araştırma ve o bilgiyi sorgulama yetisine sahip olma becerileri, yazılım geliştirme aşamalarında yeni evrenleri keşfetmenizde yardımcı olacaktır. Öyleki programlama süreci bence%10 kod yazma, %90 araştırma üzerine şekilleniyor.
- Yaratıcı olma: Yaratıcı olma meselesi bir ürün ortaya koyarken sizin mevcuda yeni ne kattığınızla veya olmayan bir ürün geliştirirken neyi farklı yaptığınızla ilişkili bir durum. Örneğin, hepimizin zaman zaman kullandığı Uber hizmetini düşündüğümüzde tek tuştan oluşan bir arayüzle insanların taksi çağırmalarına imkan veren bir fikirle ortaya çıktığını biliyor muydunuz? Bu sebeple ne fikir ortaya koyarsanız koyun, asıl mesele yenilikçi bir bakış açısıyla konuya yaklaşmanız.
- Basit düşünme: Aslında sorunlara çözüm ararken basit bir bakış açısıyla yaklaştığınızda, etkilerinin büyük olabileceğini görüyoruz. Sözgelimi, Uber taksi çağırma hizmeti örneğinde de olduğu gibi. Arayüzde tek bir düğmesi olan ve o düğmeye tıklandığında aracın kişiye ulaşması mantığına dayanıyor. Ne kadar basit ve anlaşılır değil mi?
- Çevrenize karşı duyarlı olma: Bence çoğu yazılım geliştiricisi arkadaşta gördüğüm bir eksiklik, sosyal konulara karşı olan bakış açıları. Öyleki sosyal çevrenizde olan biteni takip etmeden, sadece aldığınız işler doğrultusunda hareket ederseniz sadece karar ve netice döngüsünde kalır ve duyarsız bir geliştirici olabilirsiniz. Ancak bu durumun tam tersine sizler toplumsal olayları takip edip kendiniz sorunlara çözüm oluşturabilecek projeler ortaya koyabilirseniz, o vakit herkesten bir adım önde olma şansınız doğabiliyor.
- İnsanlarla iyi bir ilişki kurabilme: Yazılım geliştirme süreçleri aslında bir bakıma tek başına yürütülecek bir işlemler bütünü olarak görülse de zamanla birden fazla kişiyle aynı projeyi geliştirme durumuna dönüşebiliyor. Dolayısıyla sizin bir takım anlayışıyla hareket edebilmeniz ve yeni insanlar tanımaya açık olmanız önemli. İster kendi projenizi geliştiriyor olun, ister siz bir projenin parçası olun, çevrenizle bir ağ oluşturmanın faydasını ilerleyen süreçlerde göreceksiniz. Boşuna dememişler, “Yaşamdaki en büyük yatırımınız insanlarla olan ilişkileriniz” diye.
- Maymun iştahlı olmama: Aslında kendi deneyimlerimden hareketle, zamanında yaptığım en büyük hata birden fazla konuyu aynı anda öğrenme çabası veya geliştirdiğim projelerde “Şu da olsun, bu da olsun” kaygısı. Çünkü siz birden fazla yazılım dilini aynı anda öğrenmeye kalkarsanız, zamanla beyniniz “Bir dur” diyecek ve işin başında sıkılacaksınız. Bununla birlikte, geliştirdiğiniz projelerde özellik ekleme derdine düşerseniz o proje hiç bitmeyecektir. Bu noktada öncelikle adım adım gitmeniz ve temel mantıktan hareketle eğitim döngünüzü başlatmanız faydalı olacaktır. Örneğin, html, css ve javascript dillerini eş zamanlı öğrenme çabasından çok önce html sonrasında css ve javascript dilleriyle ilerlemeniz daha etkin bir öğrenim deneyimi yaşamanıza katkı sağlayacaktır.
- Dil becerilerine sahip olma: Yazılım geliştirme süreçlerinde ilgili yazılım diline yönelik dokümantasyonları algılama ve gelişmeleri takip edebilmeniz için yabancı dil bilmeniz faydalı olacaktır.
- Bilgisayar kullanım becerilerine sahip olma: Bence en önemli hususlardan biri bilgisayar teknolojilerine ve ekran okuyucu mantığına ve kullanımına hakim olabilmeniz. Çünkü ekran okuyucuyu iyi kullanabilme ve kullandığınız bilgisayar sistemlerini iyi tanıma, sizin yazılım geliştirme süreçlerinde yardımınıza yetişiyor. Sözgelimi, bir komut satırıyla çalışırken geçmişi okuma ve verdiğiniz komut sonrası çıktıları panoya kopyalayabilme becerileri, ekran okuyucunuzu ne kadar etkin kullanabildiğinizle ilişkili olacaktır.
Yazılım Diline Karar Vermek
İşte geldik asıl meseleye, “Hangi yazılım dilinden başlayacağız?” konusu. Aslında tam bu noktada şunu belirtmeliyim. Yazılım diline karar vermeden önce “Bir algoritma nasıl kurulur ve algoritma nedir?” kavramlarına bir bakmanız önemli olacaktır. Yaşamda her şeyin bir algoritma olduğunu ifade edersek, işin teorik kısmından başladığınızda yeni bir dil öğrendiğinizde karar mekanizmalarıyla çalışma ve döngüsel konularda bir adım önde oluyorsunuz.
Sonraki aşamada kendinize şu soruları sorarak doğru yazılım diline karar verebilirsiniz:
- Hangi platform için yazılım geliştirmek istiyorum?
- Web teknolojilerini kullanarak yazılım geliştireceğim.
- öğrenmem gereken ne olmalı?
- Temel işaretleme dili olan html ile başlamalıyım.
- projeleri nasıl dinamik ve kullanıcı etkileşimli hale getirebilirim?
- Sunucu taraflı bir dil öğrenmem gerekiyor. Bu noktada php, node.js veya python temelli dil yapılarını tercih edebilirim.
Uygulama arayüzünü nasıl biçimlendirebilirim?
- Bir biçimlendirme dili öğrenmeliyim. Bu noktada da css bana yardımcı olabilir.
Evet değerli okurlar, programlama maceranızda sizlere yön vermesini umduğum bilgileri aktarmaya çalıştım. Bir sonraki yazıda buluşmak üzere…