Geçen gün gördüğüm haber ağzımı açık bıraktı. Olay Mersin’de geçiyor. “Yazılım öğren diyen eniştesini bıçakladı…” Aman Allah’ım! Gerçekten trajik bir olay. Her geçen gün değeri artan yazılımın ölçütü tabii ki bu olmamalı. Pandemi başladığından beri çoğu firma kepenk indirmek zorunda kaldı. Peki, ayakta kalanlar ve hatta markasını katlayarak büyütenler, bunu nasıl başardı? Sizce? Cevabın %90 lık bir kısmını tabii ki “yazılım” oluşturuyor. Yazılımın bize kazandırdıklarını dijital ortamda doğru bir şekilde uygulamayı başaran kişi ve markalar başarıya ulaştı, ulaşmaya devam ediyor. Tabi bu durum sadece tüm dünyayı etkileyen bir olay olduğunda gerçekleşmedi.
Peki, yazılım öğrenmek, yazılımcı olmak ve bu yolda ilerlemek size neyi ifade ediyor? Sizler için hazırladığım rehber niteliğindeki bu içeriği gelin beraber inceleyelim.
- Evde yazılım öğrenebilir miyim?
- İyi bir yazılımcı olmak için neleri öğrenmeliyim?
- Yazılım öğrenmeye nereden, hangi kaynaktan başlamalıyım?
- Hangi programlama dili bana göre?
- Algoritma neden önemli?
- Yazılımcıların avantajları ve dezavantajları
- Yazılım mühendisleri ve yazılımcılar arasındaki fark nedir?
- Yazılımcılar için olmazsa olmaz platformlar
Evde yazılım öğrenebilir miyim?
Yazılımcı olmak için ille de bunun okulunu okumanız, bir diplomanızın olmasına gerek yoktur. Kendi çevremden örnek verecek olursam, bundan tam 4 yıl öncesinde bir bilişim seminerinde network oluşturdum. İçlerinden bir arkadaşım, bazı sebeplerinden dolayı liseyi 3.sınıfta bırakmış ve İstanbul’a taşınmış. Burada belirli bir süre garsonluk, oto yıkamacılığı vb. işlerde çalıştıktan sonra internette gezinirken “yazılım” ile tanışmış. Sonrasında tam 5 ay boyunca evden çıkmamış. Sürekli ama sürekli olarak, günde 10 saatin üzerinde kendini bu alanda geliştirmeye devam etmiş. 1. Yılın sonunda 3500 TL maaş + primler ile özel bir şirkette çalışmaya başlamış. Kendisi ile en son görüştüğümde kendi şirketini açmak için hazırlıklarda bulunduğunu söyledi.
Demem o ki, kendinizi geliştirmek istediğiniz sürece herhangi bir okula, üniversiteye bağlı kalmak zorunda değilsiniz. Üniversite de verilen eğitim ve diploma, inanılmaz derece de kıymetlidir. Fakat ilgili bölümde okumuyorsunuz veya okumadınız diye ‘yazılımcı’ olamazsanız mânasına gelmemektedir. Üniversiteler, hocalar, seminerler, kurslar, eğitimler, yazılı ve online kaynaklar hepsi sizin için birer fırsat kapısıdır. Bu kapıların anahtarları, sizin zihninizdedir. Azimli ve sabırlı olduğunuz sürece kesinlikle bu kapıların kilitlerini açacaksınızdır. Hayat tablosunda, kalem sizin elinizde. İstediğiniz gibi doldurabilirsiniz.
Birkaç tıklama ile tüm kaynakları listeleyebilirsiniz. Bunu siz de biliyorsunuz. Özet ile evde yazılım öğrenmek, kesinlikle mümkündür.
İyi bir yazılımcı olmak için neleri öğrenmeliyim?
Yazılıma gönül verenler derneğine hoş geldiniz :). Artık yazılım sektörünün belirli alanlarında temel-orta donanıma sahipsiniz. Yazılımcı olmanın en temelinde ne yatıyor, biliyor musunuz? ‘Araştırmacı olmak.’ Bazen bir satır kod için saatler hatta belki günlerinizi harcayabilirsiniz. Bunun için yerli-yabancı bulabildiğiniz tüm kaynakları didik didik araştırmanız gerekebilir. Sakın endişe etmeyin… Kod yazmak, şiir yazmak gibidir. Bir kere kod yazmanın hazzına varan birisi, bu hazzı sürdürmek için değil günlerce, aylarca bile araştırma yapmaya hazırdır. Peki, araştırmacı insanların bir diğer özelliği nedir bilir misiniz? Tahmin edin…? Size biraz yardımcı olayım. Saatlerce, günlerce, haftalarca ve aylarca araştırma yapmaktan bahsettim. Bunu kimler yapabilir? ‘Sabırlı insanlar’. Öyle değil mi? Kariyer basamaklarına giden her yol için bu durum geçerlidir. Hem de sektör fark etmeksizin. Hiç kimse üniversiteyi veya liseyi bitirir bitirmez uzman olamaz. Olmamalıdır da zaten. Edineceğiniz en küçük bir deneyim bile, bir sonraki adım(lar)ınız için pırlantadan daha kıymetlidir. Etrafınızdaki insanlardan, uzmanlardan bir şeyler kapmaya çalışın. Bunu sadece yazılım için yapmayın.
Bu size ne katacak?
İletişim alanında, pazarlama ve dijital pazarlama alanında, kapabildiğiniz her ne var ise ‘tecrübe haznenize’ bunları doldurun. Bunları uyguladığınız sürece kendinizi daha donanımlı, daha özgüvenli ve başarılı hissedeceksiniz. Hatta hissetmekle kalmayıp, bizzat yaşayacak ve çevrenizden de bu durum ile ilgili dönütler alacaksınız. Kendinize mentorler seçin. İster yakın çevrenizden, ister okul ortamınızdan, ister iş hayatınızdan veya sadece ismini bildiğiniz başarılı girişimcilerden… Bu kişiler, sizin hayata olan bakış açınızı genişletir, başarıya giden yolda daha sağlam adımlarla yürümenizi sağlar.
Şimdi şöyle bir düşünelim. Etrafınızda, tanıdığınız kaç tane yazılımcı var? 1, 2, 5, 20? Peki, bu sayıyı neye göre belirlediniz? Sadece format atmayı bilen birisi için mi, içerik yönetim sistemi ile web sitesi oluşturan birisi için mi ya da…? Örnekleri çoğaltabiliriz. Yazılımcı olmak, tek bir kod dahi yazmadan projeler üreten kişiler midir? Kesinlikle hayır.
Kendisini geliştirmek için sürekli çaba sarf eden, asla pes etmeyen azimli kişilerdir, yazılımcılar. Belki mobil uygulama alanında uzmansınız, belki de web projelerinin backend kısmında… Her ne olursa olsun, iyi bir yazılımcı sürekli gündemi takip eder ve kendi bildikleriyle asla yetinmez. Sürekli alternatif düşünceleri ve uygulamaları ile farklarını ortaya koyarlar. E tabi dijital çağda yaşıyoruz. Jack Trout’den şu kitap ismini daha önce duydunuz mu? “Farklılaş ya da Öl”. Bu sıkı rekabet ortamında farklı ve faydalı şeyler sunmadığınız sürece ya diğerlerinin arasında standart/standartın altında devam edersiniz ya da çok da bir şey yapamadan bu sayfadan silinirsiniz. Sektöre yakın örneklerle devam edecek olursam, pandemi döneminde sizce “yazılım” hangi boyuta geldi? İnterneti ve yazılımı kullanamayanlar kepenk indirdi. Hızlı ve esnek davrananlar, hemen uyum sağlayan markalar ise yükselen bir ivme ile yollarına devam edip, rakiplerine fark attılar. Yazılım sektörünün pasta grafiği bu kadar büyümüşken ve kendilerini sözde yazılımcı(!) olarak ilan edip, insanları, müşterilerini yarı yolda bırakanlar da varken, kendinizi ön plana çıkarmanız için ne yapacaksınız? Hadi, şöyle bir toparlayalım ve iyi bir yazılımcı için ne yapmanız gereken listeyi oluşturalım;
Yazılımcıda olması gereken özellikler
- Araştırmacı olmak,
- Sabırlı olmak,
- İletişim becerileri,
- Sektörü takip etmek ve güncel kalmak,
- Farklı düşünebilmek(Hayal gücünüzden asla vazgeçmeyin. Ne demiş Einstein; “Hayal gücü bilgiden daha önemlidir. Çünkü bilgi sınırlıyken, hayal gücü tüm dünyayı kapsar.” Oluşturulan yazılımlar çok büyük bir oranı, daha önce yapılmamış olanlardı. Hayal edildi, denendi ve yapıldı.).
- Farklı kişiler ve kaynaklardan feyz almak,
- Tek başınıza proje üretmekten çekinmeyin.
Yazılım öğrenmeye nereden, hangi kaynaktan başlamalıyım?
Yazılım sektörü ile yeni mi tanışıyorsunuz veya uzun zamandır bir başlangıç yapmak istiyor ve nereden başlayacağınızdan emin değil misiniz? Öyleyse artık rahatlayıp, arkanıza yaslanabilirsiniz. Size nereden başlayacağınızı ve hangi kaynakların başlangıç için ideal olduğunun tavsiyesini sunacağım.
Bu yazıyı okumaya devam ettiğiniz için öncelikle sizi tebrik ediyor ve sektöre kattığınız, katacağınız her şey için teşekkür ediyorum. Bu aşamaya gelene kadar internet üzerinde araştırmalar yapıyordunuz veya Instagram, Telegram, Facebook, Twitter üzerinde gezinirken benim duyuruma denk geldiniz ve ilginiz olduğu için bu içeriğimi ziyaret ettiniz. Evet, yazılım öğrenmeye başlamak, bu sektörde gelişmek için en uygun kaynak, ‘internet ansiklopedisidir.’ Binlerce yerli kaynak ve milyonlarca yerli/yabancı kaynağa arama motorları eşliğinde erişebilirsiniz.
Herkesin öğrenme biçimi farklılık gösterebilmektedir. Örneğin, Aleyna yazarak öğrenirken, Murat video izleyerek daha iyi öğrenmektedir. Bu konuda kendinizi en iyi yine siz tanırsınız. Buna istinaden şunları söyleyebilirim;
Udemy ve YouTube üzerinden kurslar izlemeye başlayın. Aynı zamanda forum sitelerini sıkı bir şekilde takip edin. Bunun için r10, wmaraci gibi platformları tavsiye edebilirim. Bununla birlikte kişisel blog sitelerinin büyük faydasını görebilirsiniz. Çünkü kurumsallıktan uzak, takipçisiyle daha samimi bir dil ile anlatılan içerikler, her zaman daha etkileyici ve akılda kalıcı olmuştur.
GitHub, medium, reddit siteleri sizin için birçok içeriği bir araya getirecektir. Takip etmenizi tavsiye ediyorum.
Bununla birlikte bazı yayınevlerinin harika kitapları mevcuttur. Bunun için ufak bir araştırma yapıp, ilerlemek istediğiniz alandan kitap seçimleri de yapabilirsiniz.
Ve tabii ki, sadece blog içeriklerini okumakla, videoları izlemekle, dinlemekle bu iş olmaz. Gördüğünüz, okuduğunuz, duyduğunuz her örneği beyninizin içinde toparlayın, notlar alın ve muhakkak uygulamaya dökün. Böylece öğrenirken aynı zamanda da tecrübe sahibi olacaksınız.
Unutmadan… Bu alt başlıkla ilgili detaylı bir içeriğim mevcut. Hadi, yazılıma nereden başlamalı? Sorusuna şimdi karar verin.
Hangi programlama dili bana göre?
Sıkça sorulan sorulardan birisi de budur. “Yazılıma başlayacağım, tamam da… Hangi programlama dili bana göre ki?” Öğrendiğiniz ve öğreneceğiniz programlama dil(ler)i, sizin yazılım sektörü içerisindeki alanınızı belirler ve bu alanda yapacağınız kariyerin yapı taşlarını oluşturur. Örneğin, siz bir yapay zeka meraklısı mısınız? Ya da mobil uygulamalara büyük bir heyecan mı duyuyorsunuz? Belki de web projelerinin bir numaralı yazılımcısı olacaksınız? Kim bilebilir ki… İşte, seçeceğiniz programlama dili aslında kariyerinize de yön vereceği için öncelikle bir seçim yapmalısınız. Tıpkı yukarı da örneklediğim gibi. En çok merak duyduğunuz alan nedir? Bunun seçimini yapın ve buna göre programlama dili seçimini gerçekleştirin. Böylece artık aklınızdaki soru işaretlerini gidermiş olur ve kendi yolunuzu çizmeye başlarsınız. Tüm detayları ile paylaştığım blog yazımı merak ediyor ve hangi programlama dilinden başlamalıyım diyorsanız, ziyaret edebilirsiniz.
Algoritma neden önemli?
Hayatınızı belirli bir düzene göre yaşıyor musunuz? Yoksa, ‘kafa nereye ben oraya’ diyenlerden misiniz? Umarım öyle değilsinizdir :). Yazılımın belirli bir işlev kazanmasını sağlayan olgu, algoritmadır. Belirli bir problemi çözmek veya bir yol haritası oluşturmak için kullanılan algoritma, gerek günlük yaşantımızda gerekse de yazılım da yaşadığımız/kullandığımız bir gerçektir.
Hemen bir örnek ile akıllarda daha net bir yer edinmesini sağlamaya çalışacağım;
Üniversite sınavına hazırlandığınızı düşünün. Matematik çalışacaksınız ve daha önce çalışmaya hiç başlamamışsınız. Çalışma planınızı nasıl oluşturursunuz? Ünite-ünite sırayla devam etmek mi yoksa bir o baştan bir bu baştan mı çalışırsınız?
Hangisi size daha mantıklı ve olağan geliyor? Sırasıyla, belirli bir plana göre çalışmak. Değil mi? Evet, kesinlikle öyle…
Bir yazılım oluştururken sistem aynen bu şekilde işler. Önce yol haritanızı yani algoritmanızı oluşturur ve kullanacağınız kodlamaları, fonksiyonları oluşturmuş olduğunuz bu algoritma doğrultusunda tamamlarsınız.
Tüm detayları ile algoritma nedir, diye merak ediyorsanız ilgili içeriğimi ziyaret ederek yazılımcılar için algoritmanın ne işe yaradığını öğrenebilirsiniz. Tabii bununla birlikte günlük hayattan örnekler ile de öğrendiklerinizi pekiştirmenize yardımcı oldum.
Algoritmanın hem yazılım hem de fiziksel yaşantımızdaki inceliklerini fark ettikten sonra, genel bakış açınızın da değiştiğini göreceksiniz.
Yazılımcıların avantajları ve dezavantajları
Her meslekte ve sektörde olduğu gibi durumun zorlukları, kolaylıkları ve avantajları, dezavantajları bulunmaktadır. Peki, yazılımcılar için avantajlar ve dezavantajlar neler? Gelin, beraber inceleyelim.
Avantajlar
Yazılımcı olmanın belki de bu satırlara sığdıramayacağım kadar çok avantajı vardır diyebilirim. Hadi başlıyoruz…
Öncelikle ille de bir ofise bağıl olarak çalışmak zorunda değilsiniz. Bir bilgisayarınız var mı? Öyleyse tamamdır. Freelancer olarak çalışmalarınızı tek başınıza yürütebilir ve maddi gelirinizi bu şekilde de kazanabilirsiniz.
Arkadaşlarınızın gözünde farklı bir statüde olursunuz. İnternet, bilgisayar, telefon veya herhangi bir elektronik cihaz hakkında açılan konuşmalar da bilirkişi siz olursunuz. Onların gözünde siz birer dâhisiniz!
Bir programlama dilini öğrendikten sonra yeni bir dil öğrenirken adapte olmanız daha kolay olur. Çünkü temelde mantıkları çok benzerdir. Bu durumda sizin hızlı bir şekilde ilerlemenize olanak sağlar.
Ekip çalışması gerçekleştirebilirsiniz. Özellikle büyük projelerde, yükü hafifletmek harika olacaktır. Değil mi?
Maddi boyutunu göz önünde bulundurursanız, ne kadar donanımlı iseniz, portföyünüz de o kadar büyük olacaktır. Kendinizi sürekli geliştirmeye devam…
Birkaç tane avantaj/olumlu özelliği de siz belirtmek ister misiniz? Yorumlar da görmekten mutluluk duyarım.
Dezavantajları
Eh, her gülün bir dikeni vardır… Yazılımcıların yaşadığı sorunları ve dezavantajlara da bir göz atalım;
Sektör hakkında bilgisi olmayan müşteriler ile iş yapmak. Sizin yaptığınız işi sürekli küçümserler. ‘Taş attın da kolun mu yoruldu?’ gibi tabirlerle karşılaşabilirsiniz. Harcadığınız mesai saati ve talep ettiğiniz ücret arasında daima bağlantı kurmaya çalışabilirler.
Kod yazmak, bir alışkanlık olabileceği gibi çalışma saatleriniz günün her anında olabilir. Bundan dolayı esnek mesai saatlerine alışmanız gerekir.
Müşterinin bitmek bilmeyen revize istekleri. ‘Ya şunu da şöyle mi yapsaydık’ veya ‘şu böyle daha güzel olurdu değil mi’ Hayır, değil. Ki çok büyük ihtimalle istedikleri projeyi zaten birebir olarak yapmışsınızdır fakat ne de olsa genelde soyut bir şeyler ürettiğimiz için müşterilerin hayal güçlerini engelleyemiyoruz… Her seferinde yeni bir istek ile karşılaşmaya hazır olun.
Özel bir şirket de çalışıyorsanız veya iş başvurusunda bulunacaksınız, muhtemelen istedikleri şeyler şu şekilde olacaktır;
‘Üniversiteyi yeni bitirmiş, en az 5 yıl tecrübe, referans olarak sunabileceği en az 5 proje, C, C++, C#, JAVA, Python, JavaScript, PHP, Pascal, Ruby, Assembly gibi dillere hakim’ gibi absürt isteklerle karşılaşmanız yine çok olasıdır. Avantajlar da olduğu gibi dezavantajları için sizin de belirtmek istedikleriniz var ise lütfen yorumlarda belirtmekten çekinmeyin, merakla bekliyorum.
Yazılım mühendisleri ve yazılımcılar arasındaki fark nedir?
‘Evde yazılım öğrenebilir miyim?’ başlığının alt metnini bir hatırlayın… Tamamdır, şimdi asıl sorumuza gelelim. Üniversite mezunu bir yazılım mühendisi ile yazılımcı arasındaki fark(lar) nedir? Üniversite eğitimi, bu işin bütün teorik ve uygulama detaylarını size verir. Keza işin püf noktalarını da(Tabii almak isteyene…). Yazılım mühendisliği öğrencileri mezun olduklarında artık sektör için hazırdır diyebiliriz. Tabii yine bu eğitim sürecinde kendini sürekli olarak geliştirmeye devam etmiş kişiler her zaman ön planda olacaktır. Özel sektördeki şirketler zaten daha henüz üniversite eğitimleri devam ederken bu bölümün öğrencilerini takibe alırlar ve başarılı öğrencileri erken safhada marka saflarına katmak isterler. Bunun için öğrencilik dönemlerinde dahi maaş karşılığında çalıştırdıkları kişiler vardır. Bu her 2 taraf için mutualizm ilişkisini barındırır. Marka için kaliteli, genç, dinamik, yeni fikirler sunan ve fikrilere açık olan harika bir yazılım mühendisi adayı, öğrenci için ise ‘şirket ortamında’ deneyim kazanmak ve henüz öğrencilik aşamasında maddi gelir elde etmenin vermiş olduğu haz ve özgüven…
Bu arada her yazılım mühendisine yazılımcıdır da diyebiliriz, değil mi?
Yazılımcılar, genelde kendi imkânları doğrultusunda sektöre girmiş kişilerdir.
Biraz daha ‘serbest stil’ ile kendilerine has bir tarz ile eğitimlerini tamamlamış, farklı bakış açıları ile kalıplaşmış olgulardan sıyrılmış profesyonellerdir de diyebiliriz. Biraz daha günlük hayattan bir örnek vermek istiyorum. Böylece farkı daha net göreceğiniz inancındayım;
- Amerika’ya İngilizce öğrenmek için gittiğinizi düşünün ama hiçbir şekilde kursa gitmeyeceksiniz. Sadece insanlarla iletişim, etkileşim halinde olarak dil öğreneceksiniz. (Bu, birinci senaryomuz.)
- Türkiye’de bir İngilizce kursuna yazıldığınızı düşünün. Grammer ve tüm detaylar ile size İngilizceyi öğreteceklerdir. (Bu da, ikinci senaryomuz.)
Birinci senaryo, yazılımcıdır. İkinci senaryo ise yazılım mühendisidir. Umarım ikisinin arasındaki farkı artık daha net görebiliyorsunuzdur.
Yazılımcılar için olmazsa olmaz platformlar
Projelerini yapıyor, kendinizi gün geçtikçe daha da çok geliştiriyorsunuz. Belli bir networkünüzde var. Nirvana’ya giden yolda harika işler çıkarmaya devam ediyorsunuz. Peki, kullanmanız gereken, asla vazgeçemeyeceğiniz platformlar neler, biliyor musunuz?
Size bu konu ile ilgili birkaç naçizane tavsiyede bulunmak istiyorum. ‘Yazılım’ denilince belki de ilk akla gelen platformlardan birisi olan “GitHub” üzerinde muhakkak bir kullanıcı profiliniz olsun. Keza aynı şeyi “Stack Overflow” için de uygulamanızı şiddetle tavsiye ediyorum. Bununla birlikte sektör fark etmeksizin kariyer yapmak isteyen herkesin “LinkedIn” profili de olmalıdır. Eğer halen bu konuda bir şeyler yapmadıysanız, elinizi çabuk tutmalı ve ilgili platformlar da yerinizi almalısınız.
Bununla birlikte bir medium ve reddit profili de oluşturmanızı tavsiye ederim. Unutmayın ki, sadece yerel platformlarda zaman geçirerek ‘çok iyi’ bir yazılımcı olamazsınız. Evet, elbette harika işlere imza atabilirsiniz. Ve öyle ki global piyasada iş yapan bir yazılımcı olmak istiyorsanız, uluslararası platformlarda da yer edinmeniz gerekir. Sizce de öyle değil mi?
Forum siteleri… Evet, yazılım sektörü ile ilgili bir şeyler alabileceğiniz veya katabileceğiniz bir forum sitesine giriş yapmalısınız. Ben yine r10’u önereceğim. Sadece yazılım değil, birçok alanda katkısı olacaktır.
Ve yine sizler için olmazsa olmaz bir şey; “Kendinize ait bir blog sitesi”. Neden mi? Çünkü insan en iyi öğretirken öğrenir. Kendinize bir blog sitesi açın ve bildiklerinizi internet kullanıcıları ile paylaşın. Hem kendinize hem sektöre hem de topluma büyük bir katkıda bulunmuş olursunuz. Hemen şimdi buna girişebilirsiniz. Çok cüzi bir bütçe ile profesyonel görünüme ve işlevselliğe sahip WordPress web siteleri oluşturabilirsiniz. WordPress site nasıl yapılır diye düşünmeyin. Sizin için harika bir içerik hazırlamıştım. Veyahut hiçbir ödeme yapmadan sadece Google hesabınız ile blogspot(blogger) sitenizi oluşturabilirsiniz.
Evet, siz yazılımcılar ve yazılımcı adayları… Bu rehberi uzun bir sürecin ve binlerce kelimenin ve bilginin süzgecinden geçirdikten sonra sizlere sunuyorum. Yer işaretlerine kaydedebilir, başucu rehberiniz haline getirebilirsiniz.
Düşüncelerinizi, görüşlerinizi yorumlarda belirtebilirsiniz. Merakla bekliyorum…