Yazılım Mühendisinin Yapması Gerekenler

Yazılım Mühendisinin Yapması Gerekenler
Bilinmeyen Bilişim Kitabı

Yazılım mühendisiliği okuyan kardeşimizin, bir yazılım mühendisinin yapması gerektiği şeylere dair sorusunu cevaplıyoruz.

SORU:

Merhaba. Yazılım mühendisliği okuyorum. Bir çok dilde program/site yazdım ama şuana kadar en iyi olduğum alan frondend. Php’ye hakim olduktan sonra backend’e yönelmek istiyorum. Ama dediğimde frondend/backend sanki düşük şeyler gibi geliyor. Mühendis dediğin Veritabanı, güvenlik, arge vb şeylere yönelmeli gibi geliyor bana. Bu düşünce doğru mu?
Frondend, backend’de ne kadar ileri gidilebilir hayal dünyasına girmeden tabi gerçekçi olalım 🙂

CEVAP:

Bir sürü alandan bahsetmişsin, bu konuyu okuyacak kardeşlerimizin kafasının karışmaması için bazı düzeltmeler yapmamız lazım. Zira sosyal medyada “ki ayrı yazılır bir kere…” diyen işsiz arızalardan biri değilim yanlış anlaşılmasın. Kendi dilinde yazma ve okumada 68 ülke arasında 42. olan bir ülkede de böyle olayları salakça buluyorum ya neyse…

ve

Front-End ve Back-EndÖncelikle sorunda bahsettiğin alanlara bir açıklık getirelim ki daha sağlıklı bir cevap vermiş olalım. Sorunda “frondend/backend” yazmışsın. İngilizce olan “Frond” kelimesi Türkçe de “yaprak” anlamına gelir, ki bununda yazılımla alakası yoktur. Bu nedenle doğrusu “Front” yani Türkçe de “ön” anlamına gelen kelime kullanılır. Bunun nedeni de sitenin dinamik olarak çalışmasını sağlayan yazılımın arka planda, sitenin görselliğinin ve kullandığımız unsurların ön planda yer aldığı düşünülerek verilen bir isimdir.

Diğer yandan “Front-End” kelimesinin Türkçe anlamı “Başlangıç Aşaması“, “Back-End” kelimesinin Türkçe anlamı ise “Arka Uç” anlamına geliyor. Bununla alakalı olarak da önce tasarımın, sonra yazılımın yapıldığı şeklinde bağlantı kurmak mümkün. Zira genel olarak tasarıma göre yazılım yapılıyor. Front-End ve Back-End ile ilgili daha ayrıntılı bilgi almak isteyen kardeşlerimiz buradan buyursun; Front-End Nedir? Back-End Nedir?

Yazılım Mühendisinin Yönelmesi Gerekenler

Baştan belirteyim sözlerim kesinlikle tepkisel değil. “Mühendis dediğinin Veritabanı, güvenlik, arge vb gibi şeylere yönelmesi gerekiyor” şeklindeki düşüncen kesinlikle yanlış. Bu biz yazılımcıların sık sık yaşadığı ana sorun olan “madem yazılımcısın, o yüzden teknolojiye dair her boktan anlamalısın. Telefonu da bilmelisin, televizyonu düzeltmelisin, bilgisayarla ilgili her sorunu çözmelisin” gibi bir düşünce. Yani bu düşünce genel olarak yazılımın ne olduğunu bilmeyenlerin sahip olduğu bir düşünce ve bu sıkıntıyı yazılımcılar çok çeker. Mesela bir doktordan “madem doktorsun, 6 yıldan fazla bunu okumuşsun, o zaman kalp ameliyatı da yapabilmelisin, dişte çekebilmelisin, estetik operasyonla meme de büyütebilmelisin” gibi nasıl düşünülmüyorsa, yazılımcılar içinde aynı şey düşünülmemeli.

Yazılım MühendisiHa, elbette bir yazılımcı yaptığı yazılımda veritabanı kullanacağı için veri tabanına dair bilgiye sahip olmalıdır. Yaptığı yazılımda sorun yaşamamak için bir takım güvenlik önlemleri almalıdır. Fakat bunların üst düzey olması beklenilemez. Veri tabanına yaptığı yazılımı bağlamak, veri girmek, silmek, düzenlemek gibi konularda bilgi sahibi olur fakat yüklü miktardaki verilerin nasıl veri tabanını yormadan, stabil çalışacağını, veri tabanı güvenliği, yazılımın ihtiyaç duyacağı ideal veri tabanı sistemi ve benzeri bir dünya konuda çok iyi olması beklenilemez. Aynı şekilde güvenlik önlemleri alır fakat güvenli bir sistem için yapılması gereken bir dünya işi yapamaz. Eğer yapabilseydi, , ve benzeri kavramlar olmazdı

Diğer yandan bir yazılımcı bir tasarımcı değildir. Dolayısı ile bir yazılımcının hem yazılım yapıp hemde tasarım yapmasını beklemek saçmadır. Elbette iyi kötü bir tasarım ortaya çıkarabilir fakat bu asla sadece tasarımda kendisini geliştirmiş biri kadar profesyonel bir şey olmaz.

Soru da geçen Ar-Ge kavramı ise başlı başına farklı bir kavram. Ar-Ge, Araştırma ve Geliştirme anlamına gelir. Bunun içinde yazılımcısı da vardır, veri tabanı uzmanı da vardır, tasarımcısı da vardır, sistem güvenliği uzmanı da vardır. Kısacası Ar-Ge bir şeyin en iyi kalitede, ucuz ve benzeri konularda olması için yapılan çalışmadır.

Tüm bunların neticesinde bir yazılım mühendisinin yapması gereken yazılımdır, sadece yazılımdır, hep yazılımdır. Elbette diğer konularda bilgi sahibi olmasında fayda vardır fakat iyi bir yazılımcı olmak için yapılması gereken diğer konulara yönelmek değil sadece bilgi sahibi olacak kadar ilgilenmektir.

SONUÇ

Kusura bakma ve yanlış anlama kardeşim ama yazılımın kolay bir iş olmadığını anlayacak kadar yazılımın içinde değilsin anladığım kadarıyla. Yazılımda iyi bir noktaya gelirsen, sende sorunda yer alan düşünceye sahip kişilerden yaka silkeceksin. “Lan zaten yazılımda öğrenilmesi ve yapılması gereken bir dünya iş var. Bi de veritabanı, tasarım, güvenlik ve benzeri konularda bilinmesi ve yapılması gereken bir dünya işi bilmemi ve yapmamı bekliyorlar” diyecek ve isyan edeceksin. Önce iyi bir yazılımcı olmak için öğrenmen gereken her şeyi öğren ondan sonra diğer alanlara kafa yormaya başla.

Mühendislik kavramını da çok büyütüyorsun gözünde. Mühendis dediğin eğitim aldığı alanda uzmanlaşmış kişidir. Eğitim aldığı alanın yan unsurlarında uzmanlaşmaz. Basit bir web sitesi yapmayı dahi bilmeyen bilgisayar mühendisi tanıdıklarım var. Tabi bizim eğitim sisteminde mühendislik eğitimi alan bir kişinin o alanda uzman olduğunu söylemek ne kadar doğru olur, orası ayrı mesele… Sende üniversiteyi bitir, ondan sonra gerçek uzmanları görüp, kendin için uzman diyebilecek misin bakalım…

Bilinmeyen Bilişim Kitabı