Yazılıma başlamak için bir çok farklı motivasyona sahip olabilirsiniz. Belki bu işi profesyonel olarak yapmak istiyorsunuz, belki kendi alanınızda bir şeyler geliştirmek için istiyorsunuz, belki de ufak bir şey yapıp çıkacaksınız.
Yeni başlıyorsanız bir portfolyo oluşturmak en öğreticisi olacaktır bence. Github’ı kullanın orayı oyun alanınız haline getirin. Bir şeyi öğrenmek istiyorsanız bir proje açın ve üzerinde deneyin. Doğal olarak versiyon kontrolünü de öğrenmiş olacasınız. Netlify, vercel gibi yerlerde deploy edip görülmesini de sağlayabilirsiniz.
Programlamaya merak sarmış kişilerin kafalarında bazı sorular görüyorum. Bunlarla ilgili birkaç yazı yazmaya karar verdim. Öncelikle tebrik ederim yeni bir dünyayı keşfedeceksiniz, en çok kaynak bulunan ve uzman olanların bilgi paylaşmayı, anlatmayı sevdiği bir alan seçtiniz. Elinizdeki bilgisayar sizin laboratuarınız, öğretmeniniz, iş yeriniz, not defteriniz. Önce amacınızdan başlayalım neden öğrenmek istiyorsunuz.
Konuya ben nasıl başladım, şimdi başlasam nasıl başlardımla giriş yapacağım.
Üniversitede C programlama dersi alarak hatta bir sene boyunca tek bir renkli çıktı almadan, çoğunlukla kağıda kod yazarak başladım. Ne olduğunu pek bilerek gitmedim bölüme biraz far görmüş tavşan gibi ordan burdan bir şeyler öğrenmeye çalışıyordum. Buradaki yolculuk C öğren, C++ öğren, object oriented, java, biraz makine öğrenmesi oku, oyun geliştirmeden de biraz tadına bak şeklinde devam etti. Biraz eleştiri olacak ama lazım olur diye bilgi yüklemesi yapmak gibiydi, yanlış anlamayın eleştirdiğim farklı alanlarda bilgi sahibi olmak değil, bilgi sahibi olamamak. Çoğunda ne yaptığımızı anlamak da zordu çünkü. Şunu eklemeliyim ki sevmeden devam etmeniz çok zor.
Şu an başlayacak olsam, eğitim materyalleri çok çeşitli ve en iyi eğitmenlerden kendi kontrol ettiğiniz zamanlarda eğitim alabiliyorsunuz. Bir çok açık kaynağa sahibiz deneme fırsatları çok fazla. Yapay zeka bize güzel özetler çıkartabilecek bir düzeye bile geldi.
İlk olarak 24 saatte, 10 adımda vs hap bilgilerle yazılımcı olabileceğinizi düşünmediğinizi varsayıyorum. Bunları izlemek sizi yazılımcı değil, bilgi ve aşinalık sahibi yapar. O aceleyle sadece birkaç tarif uygulayabilecek hale gelebilirsiniz ama yazılımcı olmak başka bir iş. Ancak yazılım yapa yapa yazılımcı olabilirsiniz.
Burda konuşmak istediğim samimi olarak yazılım öğrenmek isteyen kişiler. Öncelikle hedefiniz yazılım öğrenmekten ziyade yazılım üreten birine dönüşmek olsun. Yani burda temelde yapmamız gereken bazı pratikleri hayatımıza katmak olacaktır. Belirlediğiniz öncelikler hedeflerinizden daha büyüktür. Çünkü sizi oraya ulaştıracak olan öncelikleriniz olacak.
Herkes yazılım yapabilir bunu bir basitleştirme olarak değil bir övgü olarak söylüyorum. Kendinizi bir yarışta hissetmeyin, her zaman sizden daha iyi ya da kötüler olacak kendi yolunuza odaklanın. Başkalarından öğrenin, kendinize daha fazla şey katmaya çalışın ama kıyaslamayın.
Teknolojileri öğrenin, uygulayın ama fanatiği olmayın, hatta zaman zaman farklı teknolojileri ve onların problemleri nasıl çözdüğünü öğrenmek aydınlatıcı olacaktır. Siz problem çözücüsünüz, gerçek hayat problemlerini alıp dijitalde çözmeye çalışıyorsunuz o yüzden hangi aracı kullandığınızdan çok sorunu çözmeniz önemli. Yıllar önce popüler olan bir çok teknoloji şu an hatırlanmıyor bile. Teknolojileri öğrenirken, prensiplerini öğrenin. Dümdüz ezber yapıp kullanmayın. Ki ezbere ihtiyacımız yok zaten. Minimumu yapabilecek kadar öğrenip üzerine inşa edebilirsiniz.
Yazılım mimarisi, bilgisayar mimarisi, dizayn prensipleri, yazılım dillerinin nasıl çalıştığıyla ilgili bilginiz olsun.
Kullandığınız toolları tanıyın. Elinizde çok güçlü bilgisayarlar, yazılım araçları, internette bolca içerik var. Elinizde sadece çekiç varsa her sorunu çekiçle çözmeye çalışırsınız. Ama alet çantanız doluysa her duruma uygun bir çözüm üretebilirsiniz.
Herhangi bir işi yapmanız uzun sürüyorsa daha hızlı bir yolu var mı diye araştırın. Muhtemelen vardır.
Her zaman karşındakini dinlerken anlayamayabilirsin, ya da neyi savunduğunu göremeyebiirsin daha anlamlı sorular sorarak bir bakış açısı kazanabilir ve bu bakış açısıyla işlerini daha iyiye götürebilirsin.
İş yerlerinde göreceğin tüm rollerin bir sebebi var, anlamaya çalış hatta yapabiliyorsan az biraz öğrenmek faydana olacaktır.
Bir de pes etmeyin. Sanırım en önemlisi bu. zihninizi kaçmamaya zorlamak.
Sağlığınız her zaman için önceliğiniz olsun.
Yazılımcı olmak için
- Programlama ezberlemekten ibaret değil ki teknolojinin mutfağında oturuyorsunuz temelleri öğrenin ve bunları kullanarak problemlere yaklaşın.
Bu arada problemi konuşmak da büyük bir yardımcı sesli bir şekilde tekrar etmek, biriyle konuşmak, ya da rubber duck gibi oyuncaklara anlatmak sihirli bir şekilde yardımcı oluyor. (bknz. rubber duck debugging) Bazen sorunlar çok göz önünde olsa bile kelimelere dökülene kadar saklanabiliyor.
- Her şeyi öğrenmeye çalışmayın. Bir uzmanlık alanınız olsun. İstediğiniz bu uzmanlığı keşfetmek zaman alabilir hatta bir uzmanlıkta da kalmayabilirsiniz ancak her dili öğrenecek zamanınız maalesef yok.
- Doğru kaynağı bulmaya çalışın. Doğru kaynağı bulmadığınızda muhtemelen bir tutorial cehennemine düşeceksiniz. Teknoloji canlı bir bilgi ve güncel olan bilgiyi bulmak her zaman kolay olmuyor. O yüzden kaynağı bulduktan sonra geçerli bir kaynak olup olmadığını değerlendirin. Bilgiyi sadece dinleyerek değil uygulayarak öğrenebilirsiniz. Elinizi kirletmeden öğrenmeyi beklemeyin. Öğrenin ve uygulayın.
- Öğrenmeyi öğrenin. Ben bu dersi almıştım bunun için. Faydalı olduğuna inanıyorum.
- Problem çözme yeteneğinizi geliştirin, herkesin farklı bir bakış açısı var o yüzden başka çözümleri de gözlemleyin, kodlar okuyun, üzerine konuşun, dinleyin. Böylece kendi perspektifinizi oluşturabilirsiniz. Pair Programming bu konuda yardımcı olacaktır.
- Dökümantasyon okumayı pratik edin. Çok çok iyi bir yazılımcı olsanız da döküman okuyacaksınız. Hem en güncel kaynak her zaman orasıdır. Hem de her şeyi ezberleyemezsiniz ya da buna gerek yok. Nerde bulacağınızı bilin.
- İletişimde kalın,
- İş başvurusu yapmak da geliştirir
İngilizce Kaynak Önerileri;