Merhaba ben Ertan Kayalar. Yazılım uzmanıyım. 20 yıldan daha uzun süredir yazılım geliştirme alanında çalışıyorum. Sizlere yazılım uzmanlığı konusunda ihtiyacınız olacağını düşündüğüm aşağıdaki bilgileri hazırladım. Yazılım uzmanı olmak isteyenler ya da yazılım uzmanı ile çalışmak isteyenler faydalanabilirler.
- Yazılım uzmanı kimdir ?
- Neden yazılım uzmanına ihtiyacımız var ?
- Nasıl yazılım uzmanı olunur ?
- Yazılım uzmanının bilmesi gerekenler nelerdir ?
- Yazılım uzmanı ile çalışırken dikkat edilmesi gerekenler nelerdir ?
- Yazılım uzmanı olmak isteyenler için tavsiye ettiğim siteler
Yazılım uzmanı kimdir ?
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 mühendislik prensiplerini uygulayan kişidir.
Yazılım uzmanı yukarıdaki tanıma göre geçtiği gibi, pratikte belirli bir yazılım konusunda uzmanlaşmış kişiler için de kullanılmaktadır. Mühendislik veya uzmanlık kavramları birbirinin yerine kullanılmaktadır.
Yazılım geliştirici veya programcı 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 çalışmasında farklı rollerde çalışılmaktadır.
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 bilgisayar 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.
Şirketler, yazılım uzmanına bu alanlarda ihtiyaç duyarlar
- Verimlilik; belirli bir işi yazılım teknolojisinden yararlanarak zaman ve insan kaynağından tasarru ederek tamamlama, karlılığı arttrma.
- Hatasız iş üretme; insaların hata yapabileceği hesaplama veya karmaşık işlemleri sorunsuz yerine getirme. Uçak yazılımlarının ne kadar hayati olduğunu bir düşünün.
- Zaman tasarrufu; internet veya mobil cihazlardaki gibi benzer işlevleri her noktadan gerçekleştirerek hayatı kolaylaştırma. Heryerden sesli görüşme, email, bankacılık işlemleri her gün yaptığımız işlemler.
Nasıl yazılım uzmanı olunur ?
Yazılım uzmanı olmak için öğrenme sevgisi birinci koşuldur diyebiliriz. Çünkü yazlım teknolojileri sürekli gelişmekte, güncel bir teknoloji birkaç yıl içerisinde demode olabilmektedir. Yazılım uzmanlarının yeni şeyleri keşfetme duygusu güçlüdür. Yazılım uzmanlığında üniversite eğitimi şart olmayıp, başlangıçta temel eğitim kursları ile başlayıp daha sonra sürekli öğrenerek devam edilebilir.
Yazılım uzmanının bilmesi gerekenler nelerdir ?
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. Yazılım geliştirici olarak en temel bilgi algoritma, mantık becerilerinin yüksek olması temel unsurlardandır. Ülkemizde yazılım geliştirme konusunda yeterli türkçe kaynak olmadığını da düşünürsek ingilizce öğrenilmesi gereken bir dildir. Programcıların resmi dili ingilizcedir.
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 sistemler:
- Subversion
- Git
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, (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ı ile çalışırken dikkat edilmesi gerekenler nelerdir ?
Projenin başarıya ulaşması için yazılım uzmanının bilgi ve tecrübe düzeyi önem taşır. Teknik detaylarda soru cevaplara belirli bir aşamayı geçebilirsiniz. Ancak bir yazılım uzmanının tecrübesini en iyi sahip olduğu blog sitesi verecektir. Hangi konularda makale yazdığı, kimler tarafından okunduğu size daha ayrıntılı bir izlenim verecektir. Twitter veya Facebook gibi bağlantıları ile iş dünyası ve iletişimi de bir diğer fikir alabileceğiniz sitelerdir.
Yazılım projenize başlarken yazılım uzmanına projeniz ile ilgili tüm detayları anlattığınızdan emin olun. Projenizin detaylarını anlatan bir döküman oluşturun. Bölümler ve maddeler halinde kuşbakışı tarif edebileceğimiz genel işlevleri, projenin amacını, kullanıcıların oluşturulacak yazılımı nasıl kullanacaklarını anlatın. Proje maliyetini ve süresini oluşturmak için yazılım uzmanına bu dökümanı sunun. Boşlukta ne kadar konu bırakırsanız o kadar kötü süprizle karşılaşma riskiniz artar.
Proje için kullanıcı hikayesi oluşturarak ortak bir zeminde proje detaylarını belirleyin. Yazılım projesi için her kullanıcının proje içerisinde yapacaklarını aşırı ayrıntıya girmeden anlatın. Anlamadığınız teknik terim veya detayların olmamasına özen gösterin. Kullanıcı hikayeleri teknik terim kullanmadan işveren ve yazılım uzmanı tarafından anlaşılabilir olmalıdır. Proje geliştikçe kulanıcı hikayesi de gelişerek devam eder. Ancak kullanıcı hikayesi projenin teknik detayı veya sözleşme değildir.
Sözleşme oluşturun. Projeye harcayacağınız zaman ve parasal değerlerinizi korumak, yazılım uzmanının emek ve haklarını korumak, projenin oluşturulma, teslim ve projeye ilavelerin detayların bulunduğu bir sözleşme imzalayın. Kullanıcı hikayesi ve proje teknik detayları ek olarak projede bulunsun.
Yazılım geliştirme planlaması kolay ancak pratikte daima gecikmeler olan bir çalışmadır. Yazılım uzmanı ile ortaya çıkan sorunları açıkça konuşun. Ancak yazılım uzmanına karşı anlayışlı olun. Sık sık karar değiştirmek bir yazılım projesi için iyi bir şey değildir. Daha iyi bir yazılım üretmek için oluşacak gecikme tarihlerine karşı sabırlı olun. Yazılım geliştirme emek yoğun bir çalışmadır.
Dikkat edin, sıfırdan oluşturulan yazılım projelerinde hesaplanamayan aksaklıklar olabilir. Termin tarihini kısa tutmakta ısrar etmeyin.Yazılım projesi, planlama, kodlama, test ve teslim aşamalarından oluşur. Bu aşamaların en sağlıklı biçimde tamamlanması için yazılım uzmanı ile işveren arasında sürekli açık diyalog büyük önem taşımaktadır.
Yazılım uzmanı olmak isteyenler için tavsiye ettiğim siteler
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.
codex.wordpress.orgWordPress Codex, wordpress programcılarının temel kaynağı
|Site Adresi||Açıklama|
|stackoverflow.com||Dünya genelinde programcıların birbirlerine sorular yönelttikleri, yardımlaştığı popüler site.|
|phpmaster.com||PHP programcıları için makaleler|
|symfony.com||Popüler PHP 5.3 Framework|
|ellislab.com/codeigniter||Popüler PHP Framework|
|yiiframework.com||Popüler PHP Framework|
|wp.tutsplus.com||WordPress makaleleri|
|smashingmagazine.com||Web tasarım, grafik ve programlama|
|lynda.com||Programcılar için video eğitim sitesi|
|video2brain.com||Programcılar için video eğitim sitesi|
|net.tutsplus.com||Web yazılım geliştiricileri için eğitici bilgilerin yayınlandığı web sitesi|
|git-scm.com||Popüler versiyon kontrol sistemi GIT’in web sitesi|
|x.com||Paypal Developer Web Site|
|asp.net||Microsoft ASP.NET programcıları için web sitesi|