Dr. Volkan Tunalı'nın Kişisel Blogu

Bilgisayar, Teknoloji, Bilim, Sanat

Yazılım Mühendisliği Üzerine

leave a comment

YazilimMuhendisiyiz.biz ekibiyle yazılım mühendisliği üzerine yaptığımız röportajı aşağıda bulabilirsiniz. Özellikle üniversitelerin Yazılım Mühendisliği bölümleri konusunda biraz daha fazla bilgi sahibi olmak isteyenlerin yararlı ipuçları bulacağını umuyorum. Yazılım mühendisliğiyle ilgili olarak ayrıca YazilimMuhendisiyiz.biz sitesini ziyaret etmenizi öneririm.

Kendinizden biraz bahsedebilir misiniz?

Marmara Üniversitesi Bilgisayar Mühendisliği mezunuyum. Mezuniyetimden sonra aynı yazılım şirketinde kuruluşundan itibaren 11 yıl çalıştım. Bu süreçte yüksek lisans ve doktoramı tamamladım. Doktoradan sonra akademisyen olma fırsatı doğdu ve 2012’de Maltepe Üniversitesi Yazılım Mühendisliği Bölümü’nde öğretim üyesi olarak çalışmaya başladım. 2015’te ise Celal Bayar Üniversitesi’nde yine Yazılım Mühendisliği Bölümü’nde çalışmaya başladım. Çocukluğumdan beri bilgisayar programlamayla hep iç içe oldum; programlamayı her zaman çok sevdim. Hatta bir an önce bu işi meslek olarak yapmak için endüstri meslek lisesi Bilgisayar Bölümü’nde okudum.

Sizce Yazılım Mühendisliği nedir?

Mühendisliğin tanımlarından biri kabaca şöyle: “Mühendislik, sistemlerin tasarımı, inşa edilmesi ve işletilmesine adanmış bir meslektir”. Bu tanımı Yazılım Mühendisliğine uyarlayabiliriz. Gerçek hayat sorunlarına çözüm olarak geliştirilecek yazılım sistemlerinin tasarlanması ve kodlanarak çalışır hale getirilmesiyle ilgili çalışan meslek dalıdır. Burada şunu iyi vurgulamak gerekli: geliştirilen sistemler çok çeşitli ölçeklerde olabilir. Küçük ölçekli sistemleri oluşturmak için formel bir mühendislik eğitimine çok gerek olmayabilir. Özellikle de yazılım sistemleri söz konusu olduğunda, ilgili ve hevesli herhangi birinin de oldukça başarılı işler çıkardığını görebilirsiniz. Ancak, büyük, kapsamlı ve karmaşık sistemlerin analizi, tasarımı, oluşturulması ve bakımı genellikle çok sayıda ve çeşitli zorluklar içerir. Bütün bu zorlukların üstesinden gelebilmek, sorunsuz ve verimli çalışacak bir sistemi optimum maliyetle oluşturabilmek, ciddi bir mühendislik eğitimi gerektirir. Mühendislik eğitimi ayrıca ekonomi, verimlilik, çevre, ve mühendislik etiği gibi konularda da bilinç kazandırmayı hedeflemektedir.

Celal Bayar Üniversitesi Yazılım Mühendisliği bölümünün eğitimi, akademik kadrosu, dersleri ile ilgili bilgi verir misiniz?

Henüz mezun vermemiş, yeni kurulmuş sayılabilecek bir bölüm olarak Yazılım Mühendisliği alanında dünya standartlarında bir öğretim programımız var. Öğretim programının oluşturulmasında, hocalarımızın önceki üniversitelerindeki aynı bölümden gelen bilgi birikimi ve deneyiminden de yararlanıldı. Ayrıca, bölüm hocalarımızın akademik uzmanlıkları tamamen Yazılım Mühendisliği üzerine. Hocalarımızın çoğunun ciddi bir sektör geçmişi ve tecrübesi var (bu hocalardan biri benim). Sektörden gelen birikimlerimizi maksimum derecede derslere yansıtmaya çalışıyoruz. Bölümümüzü ayrıcalıklı kılan yönlerden birinin bu olduğunu düşünüyorum. Yazılım geliştirme yaşam döngüsündeki her aşama bizde en az bir ders halinde ele alınıyor. Zorunlu derslerimizin yanı sıra açmaya çalıştığımız seçmeli derslerle hem sektörel hem de akademik yönde konu çeşitliliği oluşturmaya çalışıyoruz. Bölümümüzde hem örgün hem de ikinci öğretim olması akademik kadromuz için biraz yorucu olmakta. Öğretim üyesi sayımızı arttırmaya çalışıyoruz. Zaman içinde bu konuda daha iyi bir duruma geleceğiz.

Biliyorsunuz tercih dönemi yeni bitti Yazılım Mühendisliği, Bilgisayar Mühendisliğini tercih eden adaylara tavsiyeleriniz nelerdir?

Bu bölümleri tercih edip yerleştirilmişlerse, tavsiye edecek pek bir şey kalmamış demektir, öncelikle tercih ve başarılarından dolayı tebrik ederim. Üniversitedeki mesleki dersler genellikle mühendislik temeli oluşturmaya yöneliktir. Piyasadaki güncel teknik ve teknolojileri yansıtmayabilir. Bu durum mesleğimizin doğasındadır. Her gün öğrenilmesi gereken yeni araçlar, programlama dilleri ve teknolojiler ortaya çıkmaktadır. Üniversitedeki derslerle bunlara yetişmeyi beklemeyin; mümkün olduğunca bu yenilikleri takip etmeye çalışın. Internet’i öncelikle bu amaçla ve verimli kullanmayı öğrenin. Mezun olduktan sonra da bu sürecin aynı şekilde devam edeceğini unutmayın.

Bilgisayar Mühendisliği ile Yazılım Mühendisliği arasındaki farklar nelerdir?

Aslında bir çok perspektiften karşılaştırma yapmak mümkün. Ben üniversitedeki bölüm öğretim programları üzerinden bir karşılaştırma yapmak istiyorum. Daha önce ifade ettiğim gibi ben Bilgisayar Mühendisliği bölümünden mezun oldum. Pek çok arkadaşım gibi ben de yazılım sektöründe çalıştım, yani yazılım mühendisliği yaptım (yani yapmaya çalıştım). Üniversitede aldığım temel birikim ve kişisel merakım işimde başarılı olmamı sağladı ancak iş hayatında zaman geçtikçe aslında iyi bir yazılım mühendisi olmak için iyi kodlamanın, iyi veritabanı bilgisinin yetmediğini, öğrenilmesi gereken çok daha fazla şeyin olduğunu fark ettim. Bu eksiğimi kapatmak için de erişebildiğim bütün kaynaklardan kendimi geliştirmeye gayret ettim. Şu anda Yazılım Mühendisliği bölümünde, işte bu konuların hepsi ayrı birer ders olarak ele alınıyor, mezunlar bunları bilerek piyasaya çıkmış oluyor. Bence bu çok ama çok önemli bir fark. Bunun dışında, öğretim programları karşılaştırıldığında iki bölümün de çok sayıda ortak dersi olduğu görülecektir. Çok sayıda ortak dersin varlığı iki bölümü birbirine benzer gibi gösterse de bütünsel olarak öğretim hedeflerindeki farklılık derslerin işleniş ve hedeflerine de mutlaka yansıyor. Tüm şartların eşit olduğu bir durumda iki bölümden hangisini tercih etmeliyim diye soranlara şunu söylüyorum: Eğer temel hedefin yazılım sektöründe çalışmak ve iyi bir yazılımcı olmaksa, yazılım mühendisliğini tercih etmelisin. Benim öğrenciliğim sırasında Yazılım Mühendisliği bölümü olsaydı, muhtemelen yazılım mühendisliğini seçerdim.

Yazılım sektöründe İngilizce şart mı? Sizce ne seviyede olmalı?

Kesin bir şekilde EVET! Her zaman söylediğim şeyi bir kez daha söylemek istiyorum. Üniversiteden mezun olmadan önce İngilizce konusunu halledin. Mezun olduğunuzda çok iyi derece İngilizce okuyabilir-yazabilir duruma gelmelisiniz. Konuşma kısmı size kalmış. Mezun olduktan sonra düzenli bir şekilde kursa gidip hallederim demeyin; asla zaman bulamazsınız.

İş olanakları ve maaş durumu nasıl?

Mesleğimizin güzel yanlarından biri de istihdam sorunu olmaması. İş bulamayan kimseyi duymadım ve başlangıçta maaş biraz düşük gibi görünse de kısa süre içerisinde ve göstereceğiniz performansa göre çok iyi maaşlar almaya başlarsınız. Ancak hemen şunu da vurgulamalıyım, firmaların her şeyi bilen değil işini iyi bilen, becerikli, sorunsuz ve temiz iş çıkaran, ekip içerisinde uyumlu çalışabilen mühendislere ihtiyacı var. Diploma genellikle iyidir ama her zaman işe yaramayabilir.

Yazılım Mühendisi ile programcıyı ayıran farklar nelerdir?

Aslında bu tür keskin ayrımlar yapmak çok zor. “Yazılım Mühendisi programlama yapmaz, yalnızca tasarım yapar, doküman hazırlar, programcı da bu tasarımı kodlar” gibi saçma, klişe bir düşünce var. Bundan kurtulmamız lazım. Yazılım Mühendisi, yazılım geliştirme süreçlerindeki her işi yapar, hem de çok iyi yapar, yapmalıdır. Yazılım mühendisi, aldığı mühendislik eğitimi sayesinde, geliştirilmekte olan sisteme bütünsel bir perspektiften bakabilir, sistemin ekonomisi ve verimliliği gibi konuları da dikkate alır. Programcılık eğitiminde bu tür bir bakış açısından ziyade programlama pratiğiyle doğrudan ilgili konular hedeflenir. Mezun olur olmaz büyük projelerde yazılım mimarı, ekip lideri, proje yöneticisi olarak çalışacağınızı düşünmeyin. Program yazma tecrübesi olmadan program yazacak bir ekibin lideri olmak bana pek anlamlı gelmiyor.

İlk hangi programlama dilinden başlanmalı?

Hangi dille başladığınızın bir önemi yok bence. Önemli olan meraklı olmak, sıkılmadan, bol bol deneme-yanılma yaparak programlama mantığını anlamaya çalışmak ve sonrasında da bol bol pratik yaparak dilin sunduğu tüm yetenekleri öğrenmeye çalışmaktır. Daha sonra başka bir dili öğrenmek her zaman daha kolay olacaktır. İlle de bir programlama dili adı vermemi isterseniz, yazımı basit ve anlaşılır olan bir dil olsa iyi olur, sanıyorum bugünlerde Python iyi bir seçim olabilir. Java ya da C# da düşünülebilir. Ama bence en iyisi BASIC :)

Yazılım kitaplardan mı daha iyi öğrenilir yoksa video derslerden mi?

Her iki kaynaktan da yararlanmak lazım. Ben kitapları tercih ederim, videolarda bazen basit bir şeyin örneklenmesi bile dakikalar sürmekte, ben sabredemiyorum. Kendinizi tanıyın, hangisini yararlı buluyorsanız ona yönelin. Ama şu bir gerçek, kendiniz kodlamadan, kodu kendiniz tuşlamadan bu iş olmaz. Bol bol deneyin, değiştirin tekrar deneyin, kurcalayın, merak etmeyin, bozulmaz. Ayrıca, kitaplardan daha öğretici olabilecek bir yöntem de başkalarının kodlarını okumaktır. Özellikle de açık kaynaklı ciddi projelerin kodlarına bir bakın, dünyada bu iş nasıl yapılıyor, en azından ilham alırsınız.

Bir programlama dili en iyi nasıl öğrenilir? Bir dili çok iyi biliyorum demek için ne kadarını bilmemiz gerekir?

Dilin yapısını zaten çabucak öğrenirsiniz, öğrenilecek fazla bir şey yok, kontrol ve döngü yapıları, dinamik bellek yönetimi, alt düzey dosya işlemleri, vs. kısa sürede syntax’a alışırsınız. İşe yarar bir proje geliştirmek için genellikle dille birlikte hazır gelen framework’leri de öğrenmek gerekir, örneğin, veritabanı işlemleri, ağ işlemleri, vs. Bunların hepsini tek tek ayrı ayrı öğrenmeye çalışmak verimsizlik oluşturabilir. Dolayısıyla, bence önce işe yarar bir proje fikri bulun (toy-project denilen türden). Bu projeyi yaparken ihtiyaç duyduğunuz şeyleri araştırın, takıldığınız şeyleri aşmaya çalışın. Sonuçta o dilin sunduğu çok sayıda özelliği uyguladığınız bir projeniz olur. Parça parça şeyler deneyerek öğreneceğinizden çok daha fazlasını öğrenmiş olursunuz.

İlk programlama deneyiminizden bahseder misiniz?

Ben 10 yaşımdayken ağabeyim programlama kursuna gitmiş ve eve bir bilgisayar aldırmayı başarmıştı. O günlerde nedense her yerde Commodore 64 varken biz Amstrad CPC464 almıştık (64 KB ana bellek, 4.77 Mhz işlemci, kasetçalar, yeşil-beyaz mono ekranlı süper bir şeydi). Önce oyunları kasetten nasıl başlatacağımı öğrenmiştim. Maalesef çok az sayıda oyun vardı ve piyasada Amstrad için oyun bulamıyorduk. Bilgisayarın yanında her nasılsa Türkçe yazılmış bir kullanım ve BASIC programlama kılavuzu gelmişti. O kılavuzu merakla okurken örnek programları da yazıp deniyordum. Kitaptaki örneğin bazı yerlerini rasgele değiştirip denerken bu iş çok hoşuma gitti. Bu bilgisayar ve bu kılavuz belki de benim bu mesleğe yönelmeme vesile oldu.

Neden çoğunlukla özel üniversitelerde var bu bölüm?

Yazılım Mühendisliği’nin ve hatta bazen Bilgisayar Mühendisliği’nin bile üniversitede bölümü olan bir mühendislik dalı olmaması gerektiğini düşünen hocalar var. Zaman içinde Bilgisayar Mühendisliği üniversitelerde kendine sağlam bir yer edinmiş olmasına rağmen Yazılım Mühendisliği üniversitelerde yeni yeni yer buluyor. Bilgisayar Mühendisliği bölümü varken Yazılım Mühendisliği bölümünün farklılığı tam olarak anlaşılamıyor. Vakıf üniversitelerinde işin maddi bir boyutu da olduğu için Bilgisayar Mühendisliği bölümünün yanına bir Yazılım Mühendisliği bölümü açmak avantajlı görülebiliyor. Bilgisayar Mühendisliğiyle ortak dersler sayesinde Yazılım Mühendisliği bölümünün hoca ihtiyacı nispeten daha kolay karşılanabiliyor. Daha fazla bölüm, daha fazla öğrenci demek. Sanıyorum bundan dolayı vakıf üniversitelerinde Yazılım Mühendisliği bölümünü daha çok görüyoruz.

KTÜ mü, CBÜ mü, Fırat Üniversitesi mi?

KTÜ ve Fırat’taki bölümleri pek tanımıyorum, kıyaslama yapmam zor. Başarılı öğrencilerin tercihlerinde CBÜ’nün Ege Bölgesi’nde bir üniversite olmasının sağladığı bir avantaj olduğu kesin. Bölüm hocaları olarak Türkiye’nin en iyi yazılım mühendislerini yetiştiren bölüm olma vizyonumuz ve hedefimiz var. Henüz mezun vermedik, bu şimdilik bir dezavantaj. Mezun vermeye başladıktan sonra, öğrencilerimiz sektörde kendilerini göstermeye başladıktan sonra bölümümüzün bilinirliğinin ve tercih edilirliğinin artacağını düşünüyoruz.

Kaynak: http://blog.yazilimmuhendisiyiz.biz/2016/09/30/yazilim-muhendisligi-uzerine-yrd-doc-dr-volkan-tunali-ile-roportaj/