
Hepinizin bildiği üzere her gün binlerce kişi bilişim sektöründe bir şekilde yer alıyor. Bu günlerde aramıza yeni katılan arkadaşlardan çok sık duymaya başladığım bir soru var; Yazılım üzerine kendimi geliştirmek istiyorum ama nereden başlamalıyım? Tabii bu soru her sektördeki yeni arkadaşların aklına gelen bir soru olabilir. Yazılım Mühendisi olarak çalıştığım için ben kendi çerçevemden yanıtlamaya çalışacağım.
Her meslekte olduğu gibi yazılım alanında da güncel teknolojileri takip etmek ve en çok ihtiyaç duyulan konular hakkında uzmanlaşmak sizi aranan bir aday haline getirecektir. Bilişim sektörü diğer sektörlere kıyasla yeni bir sektör olmasına rağmen bir çok alt alandan oluşmakta. Kendinize nereden başlamayım sorusundan önce hangi konuda bir alt yapım var sorusunu sorun.
Bir yazılım mühendisi veya programcı olmak için bir alt yapınız varsa yani bunun üzerine bir kursa ya da üniversiteye gitmiş iseniz işiniz biraz daha kolaylaşacaktır. Ancak böyle bir alt yapıya sahip değilseniz bana göre bu alt yapıyı kurmak için vakit ayırmalısınız. Piyasada bulunan ve programlama ile uğraşan bir çok kişi işi biraz aceleye getiriyor. Tabiri caiz ise tepeden inme programlama yapmaya çalışıyor. Günümüz teknolojisi ile artık programlama arayüzleri (Integrated Development Environment - IDE) bizlere çok fazla imkan sağladığı için neredeyse hiçbirşey öğrenmeden örneğin bir Windows Form uygulaması yazabiliyorsunuz. Diyeceksiniz ki madem bu kadar kolay o zaman neden alt yapımı geliştirmek için vakit harcayayım? Hemen cevap vereyim çünkü bilgisayarın başına geçip 3-5 satır kod yazabiliyor olmak sizi yazılım uzmanı veya mühendisi yapmaya yetmez. İş hayatına atıldığınızda sizden kod yazmanızdan çok çözüm üretmeniz beklenecektir. Ne demek istediğimi basit bir benzetme ile anlatayım. Yazılım yazan kişinin yani programcının yaptığı iş, temel olarak inşaatta çalışan duvar işçisinin yaptığı işten pek farklı değildir. Duvar işçisi kendisine tarif edilen, ölçüleri ve içeriği verilmiş çimento ile duvarı örmek ile uğraşır. Duvarı örerken üzerine o duvarın ona söylendiği gibi yapar ve kendisinden birşey katmaz. Programcı ile bir uzmanın veya mühendisin farkı da budur. Duvarı örmeyi öğrenebilirsiniz ama bu duvarın nerede olacağını, işlevini, hangi malzemeyi kullanacağınızı bilmiyorsanız malesef bir ev yapamazsınız.
Bu kadar laftan sonra demek ki yine bana göre ilk adımınız kendinize yeter bir alt yapı oluşturmak olmalı.
Diyelim ki yeterli alt yapınız var ancak henüz bir uzmanlığınız yok.. Daha önce de söylediğim gibi yazılım mühendisleri de bir çok alt uzmanlığa bölünmüş durumdadır. Kısaca ve kabaca özetlemeye çalışacağım.
- Alt seviye programlama. (Low level programming - Absolute Machine Code & Assembly Language)
- Üst seviye programlama. (High level programming - Compiler Language)
- Çok üst seviye programlama. (Very high level programming - Interpreter Language)
Programlamayı bu üç en genel alt alana ayırabiliriz ve aslında 3'ü de günümüzde uzmanlarına ihtiyaç duyulan alanlar. Eğer bilgisayar mühendisi iseniz zaten bunun 3'ü için de bir alt yapıya sahip olmalısınız. Burada listedeki ilk eleman direk gömülü programlama yani bir mikro işlemci programlama veya bir sürücü (driver) yazma vb. üzerine uzmanlaşmak isteyen arkadaşların biraz daha üzerine yoğunlaşması gereken konular. Örnek olarak bir 8086 mikro işlemci programlayacaksanız bu intel işlemcinin assembly dili üzerine bilgi edinmelisiniz.
Tabii ki bir sistem programlanırken çoğunlukla bu alt alanların birden fazlasını içerisinde barındırır. Dolayısıyla örneğin alt seviye programlama üzerine uzmanlaşan birinin bir üst seviyede neler yapılması gerektiğine dair de fikri olmalı böylece daha başarılı bir sistem yaratılabilir.
Üst seviye programlama arada bir derleyici (compiler) olan ve dili makinanın anlayacağı dile çeviren programlama dilleri ile tasarlanır. Buna örnek olarak en popüler C dilini verebiliriz. Günümüzde C nin abileri yer alsa da çoğu zaman iki seviye arasındaki bağlantı C dili ile gerçekleştiriliyor.
Daha üst seviye programlamalar ise günümüzde daha çok kullanıcı ile direk bağlantılı olan web programlama, veritabanı ve arayüz tasarımlarında kullanılmaktadır. Buna örnek olarak da Visual C#'ı verebiliriz.
Şimdi diyceksiniz ki benim yaşım ilerledi ve bunların hepsine vakit ayıramam ancak yazılım sektöründe de yer almak istiyorum ne yapıcam?
Cevap olarak şunu söyleyebilirim, eğer yeterli alt yapı için zamanınız yok ise işe C veya C++ gibi üst seviye bir dil hakkında bilgi sahibi olmak işe başlayabilirsiniz. Göreceksiniz ki temel olarak aslında bütün programlama dilleri benzer bir çalışma ve yazım mantığına sahip. Ardından örneğin web programlama ile uğraşacaksanız PHP veya ASP üzerine yoğunlaşın ve veritabanları üzerine bilgi sahibi olmaya çalışın. Benzer bir mantıkla eğer masa üstü programlama üzerine gitmek isterseniz Visual dillerden birini tercih edebilirsiniz. Bu Java olabilir veya .NET Framework alt yapılı görsel bir dil olabilir.
Umarım bu yazım size ufak bir yol gösterebilmiştir.