Neredeyse 30 yıldır yazılım geliştirme ile uğraşıyorum. Yazılım geliştirmek ve yazılım uzmanı olmak isteyenler nereden başlamalı , neler öğrenmeli bu yazımda anlatmaya çalışacağım.
- Yazılım Uzmanı Kimdir
- Neden yazılım uzmanına ihtiyacımız var ?
- Yazılım geliştirici olmak için hangi yetenek ve alışkanlıklara ihtiyacımız var ?
- Yazılım uzmanı veya yazılım geliştirici olmak zor mudur ? Üniversite mezunu olmak gerekli midir ?
- Yazılım geliştirme uzmanı olmak için neleri bilmek gerekir ?
- Yazılım uzmanı olmak isteyenler için tavsiye ettiğim araçlar ve web siteleri
- Nereden başlamalı ?
- Sonuç
Yazılım uzmanı kimdir ?
Yazılım uzmanı kısaca yazılım geliştirmek, yazılımların test ve bakımlarını yapan meslek gurubuna verilen genel bir terimdir. Genelde yazılım uzmanı, yazılım geliştirici anlamında yaygın olarak kullanılmaktadır.
Yazılım mühendisi, yazılım uzmanı, yazılım geliştirici, programcı gibi pek çok terim bulunmasına rağmen genel olarak yazılım uzmanı, yazılım geliştirme sektöründe kabul görmüş bir tanımlamadır.
Yazılım mühendisi, bilgisayar veya yazılımın çalıştığı her ortam içinde yazılım ve sistemlerin tasarım, geliştirme, bakım, test ve değerlendirme gibi mühendislik prensiplerini uygulayan kişidir.
Yazılım uzmanı yukarıdaki tanımın dışında, pratik hayatta belirli bir yazılım/yazılım alanı konusunda uzmanlaşmış kişiler için de kullanılmaktadır.
Mühendislik veya uzmanlık kavramları birbirinin yerine kullanılmaktadır. (İngilizce engineer kelimesinden geliyorr.)
Yazılım geliştirici; (ingilizce Software Developer, Software Programmer) ise yazılımı geliştirmek için bizzat kodlama yapan kişidir.
Küçük ve orta projelerde genelde programcı ve yazılım mühendisi aynı kişi olmaktadır. Büyük yazılım projelerinde ekip içerisinde farklı rollerde uzmanlıklar bulunmaktadır.
Web developer, web tabanlı uygulamalar geliştirenler için kullanılmaktadır. Web geliştiricisi olarak pek yaygınlık kazanmadığından, yazılım gelişitirici veya yazılım uzmanı tanımı daha çok kullanılıyor.
Neden yazılım uzmanına ihtiyacımız var ?
İş dünyasında ve günlük hayatımızın hemen her alanında bilgisayarlar ve akıllı telefonlar girmiştir. İnternet, tv’ler, arabalar, endüstriyel cihazlar ve pek çok teknoloji ürünü, yazılım ile değer kazanmaktadır. Bugün uzay teknolojilerinin önemli bir kısmını da yazılımlar oluşturmaktadır.
Gelecek yazılım teknolojisinin imkanları ile şekilenmektedir.
Kağıt bile ihtal edilirken, yazılım sorusu lüks kaçabilir birilerine. Ancak yazılım yeni petroldür. İş ve gelişmenin merkezindedir. İthal samanla olmayacağı gibi ihtal yazılıma da bel bağlamamak gerekir. #linux #pardus
— Ertan Kayalar (@ertankayalar) 8 Ekim 2018
Şirketler, yazılım geliştiricilere şu alanlarda ihtiyaç duyarlar:
- Verimlilik: Belirli bir işi yazılım teknolojisinden yararlanarak zaman ve insan kaynağından tasarruf ederek tamamlamak, karlılığı arttırmak.
- Hatasız iş üretme: İnsanların hata yapabileceği hesaplama veya karmaşık işlemleri sorunsuz yerine getirmek. Uçak yazılımlarının ne kadar hayati olduğunu bir düşünün.
- Zaman tasarrufu: İnternet veya mobil cihazlardaki gibi benzer işlevleri her noktadan gerçekleştirerek hayatı kolaylaştırmak. Her yerden sesli görüşme, email, bankacılık işlemleri her gün yaptığımız işlemler.
Yazılım geliştirici olmak için hangi yetenek ve alışkanlıklara ihtiyacımız var ?
Bana göre yazılım uzmanı olmak isteyen herkesin aşağıdaki temel yeteneklere sahip olması başarısını doğrudan etkileyecektır.
Öğrenme alışkanlığı Düzenli öğrenme alışkanlığı benim en çok üzerinde durduğum konu. Sürekli okumak, yeni çıkan yazılım geliştirme teknolojilerini öğrenmek yazılım uzmanının yaşamının bir parçası olmalı. Steven Covey’in Etkili insanların 7 alışkanlığında bahsettiği gibi “baltayı bilemek” gerekiyor.
İngilizce Yazılım geliştirmede yabancı dillerin içerisinde ingilizce ayrı bir özellik taşıyor. Yazılım geliştirmek için kullanılan programlama dilleri ingilizce kelimelerden oluşturuluyor. İngilizce dökümanların olması ve farklı ülkelerdeki yazılım geliştiricilerin birlikte çalışmak için ingilizceyi kullanmaları bu dili yazılım geliştiriciler için kritik noktaya getiriyor.
Mantık, Matematik ve Soyut Düşünce Bilgisayar programı, kodlama dediğimiz metin dosyalar üzerindeki tanımlamalardan oluşur. Bu tanımlamalar bilgisayara ne yapması gerektiğini, hangi koşullarda nasıl karar vermesi gerektiğini anlatır. Algoritma olarak adlandırdığımız bir problemi çözmek için açık bir talimat dizisi kodlamalarla ifade edilir.
Yazılım geliştirmek isteyenler mukayese ve soyut düşünme yeteneklerini geliştirmeleri gerekir. Bu sayede zihinde insanların problemlerini nasıl çözeceklerini, yazılımı nasıl tasarlayacaklarını ve kodlayacaklarını düşünebilirler.
Yazılım geliştirme sayılarla sık uğraşılan bir alandır. Hesaplamalar, raporlar ve analizler oluşturabilmek için rakamlarla aranızın iyi olması gerekir.
Sağlıklı yaşam Yazılım uzmanı olmak isteyenler pek çok kişinin gözünde kapşonlu “hacker” görünümlü bir karakterin gece geç saatlere kadar bilgisayar başında oturduğu resim canlanır. Yazılım geliştiricilerin dünyadan kopuk, sağlıksız beslenen ve hareketsiz tipler olduğu düşünülür.
Gerçekte, sürekli oturarak çalışan herkes gibi sağlık sorunları yazılım uzmanlarını da bulur.
Yazılım geliştirici olmak isteyen herkese tavsiyem, sağlık beslenme, düzenli uyku ve spordur.
Genç yaşlarda bu tür sıkıntılarınız olmayabilir. Ancak yaşınız ilerledikçe veriminizin ve yaşam kalitenizin düşmemesi için bedeninize özen göstermelisiniz.
Yazılım uzmanı veya yazılım geliştirici olmak zor mudur ? Üniversite mezunu olmak gerekli midir ?
Yukarıdaki alışkanlıkları kazanarak düzenli çalışan herkes yazılım uzmanı olabilir. “Yazılım geliştirmek zordur” gibi söylemlerin sizi korkutmasına izin vermeyin.
Yazılım mühendisi veya üniversite mezunu olmak bu iş için gerekli değildir. Meslek yaşamım boyunca tanınmış üniversitelerin bilgisayar mühendisliği bölümünden mezun olmuş ama yazılım geliştiremeyen pek çok kişi tanıdım.
Yazılım uzmanı olmak için sabırlı ve çalışkan olmak, en önemlisi de yaptığınız işi sevmek gerekir.
Yazılım geliştirme uzmanı olmak için neleri bilmek gerekir ?
Yazılım uzmanı denildiğinde akla gelen ilk konu programlama dilleridir. Ancak başarılı bir yazılım uzmanı bundan fazlasını bilmek zorundadır.
StackOverflow sitesinin 2020 anketine göre göre en çok öğrenilmek istenen programlama dillerinin başında Python geliyor.
Popüler programlama dilleri:
Yazılım geliştirme metodları: Yıllardır yazılım geliştiriciler hatasız ve zamanında proje teslimi için bir takım metodlar geliştirmişlerdir. Bu metodlar zamanla yerini bir yeni metodolojiye bırakmıştır.
Bunlardan bazıları :
- Waterfall
- Agile Development
- XP – Extreme Programming
- Scrum
Yazılım geliştirme çalışmalarında yaygın olarak kullanılan tekniklerden bir tanesi de versiyon kontrol (VCS) sistemleridir .
VCS’ler yazılım işinde her çıkarlan versiyonların yani sürümlerin kayıtlarını tutmaktadır. Yazılım geliştirici ileri veya geri bu sürümlerde giderek çalışabilmektedir.
Popüler versiyon kontrol sistemleri:
- Git
- Subversion
Kullanıcı Hikayeleri: Bir projeyi geliştirirken en önemli konulardan bir tanesi de Kullanıcı Hikayeleri (User Stories) dir.
Kullanıcı hikayeleri, oluşturulacak yazılımı kullanacak kullanıcıların neler yapacağını özetle anlatan dökümanlardır.
Kullanıcı hikayeleri esasen yazılımı kullanacak olan kişi veya kurumlarca yazılması gerekir. Ancak pratikte programcının desteği ile oluşturulmaktadır.
Kullanıcı hikayeleri programcı ile işveren/kullanıcı arasında oluşturulacak yazılım konusunda ortak bir dil oluşturmak için hazırlanır.
UML: UML, (Unified Modeling Language) nesneye yönelimli programlamada (OOP) sınıf (class) tasarımı yapmak için kullanılan görsel tasarım dilidir.
Yazılım uzmanı olmak isteyenler için tavsiye ettiğim araçlar ve web siteleri
Yazılım geliştirme ile ilgili bu sayfaya sığmayacak kadar çok web sitesi bulunmaktadır. Bu nedenle sık ziyaret ettiğim veya faydalı yazılımların bulunduğu sitelerden seçtim.
- Mozilla Developer Network Mozilla vakfının javascript ve uygulama geliştirme kütüphanesi
- React JS Facebook yazılım ekibinin geliştirdiği frontend js kütüphanesi
- Vue JS Progressive JS Framework
- Angular JS Google ekibinin geliştirdiği JS Framework
- WordPress Codex WordPress programcılarının temel kaynağı
- Stack Overflow Dünya genelinde programcıların birbirlerine sorular yönelttikleri, yardımlaştığı popüler site
- Git Git ile sürüm yönetim servis sağlayıcı
- Django Python Web Framework
- Flask Python Web Framework
- Symfony Endüstri standardı olmuş PHP framework.
- Laravel Popüler PHP framework
- Yii PHP Framework
- Tutsplus Kodlama üzerine yazılar
- Smashing Magazine Web Tasarım, grafik, kodlama yazıları
- ASP.NET Microsoft ASP.NET programcıları için web sitesi
- Atom Editör Ücretsiz kodlama editörü
- Visual Studio Code Microsoftun ücretsiz popüler editörü
- FreeCodeCamp Ücretsiz Kodlama Eğitimi
- Udemy Ücretli Video eğitim sitesi
- Linkedin Learning Ücretli Video eğitim sitesi
Nereden başlamalı ?
Çok kullanılan bir deyişi hatırlatmak istiyorum:
Bir fili nasıl yersiniz ? Her seferinde bir lokma ısırarak.
Düzenli ve günlük çalışma alışkanlığı edinerek ilgilendiğiniz bir programla dilini seçin. Öğrendiklerinizi pekiştirmek için bir uygulama geliştirmeniz faydalı olacaktır.
Sonuç
Yıllar önce ilk program kodunu gördüğümde kendi kendime “Ertan sen bu işi öğrenemeyeceksin” dedim. Aslında sadece 10 satırlık basit bir Basic koduna bakıyordum. Bugün bilmediğim bir programlama dilindeki koda baktığımda bile ne yaptığını anlayabiliyorum.
Yazılım uzmanı olmak istiyorsanız öğrenmek zorunda olduğunuz bilginin sizi korkutmasına izin vermeyin.
Bu yazımı beğendiyseniz sosyal medyada paylaşmayı unutmayın!
Bu yazıyı pinterestte pinlemek için aşağıdaki görseli kullanabilirsiniz.