Bilgisayar Mühendisi ile Soru Cevap — Ali Murat Çevik
Herkese selamlar! Geliştirme Günlüğü bloğunun yeni yazısına hoş geldiniz. Bugün Yazılım Karavanı ekibinden, Ali Murat Çevik ile bir soru cevap yapacağız.
Moderatör: Geliştirme Günlüğü (Mert S.)
Konuk: Ali Murat Çevik (Kurucu @ YazılımKaravanı)
1-Yazılımı 4 farklı kelime ile bağdaştıracak olsaydın bunların en başında hangileri gelirdi?
Aslında yazılım çok geniş bir kavram. Disiplinler arası çalışmayı içerisinde barındırdığı için belirli bir kalıba koyması çok zor. Ancak 4 kelime ile yazılımın temel taşlarını bağdaştırabiliriz. Bunların en başında şüphesiz “matematik” gelecektir. Elinizdeki veriyi defalarca kez işleyip bir sonuç çıkarabilmeniz için hayal gücünüzün de çok yönlü olması gerekir. Parçalar halinde ilerleyip bütünü görebilmek çok önemli. O yüzden “analitik düşünme” de bu kelimelerden birisi olacaktır. Öte yandan insan — makine etkileşimi işin içerisine girdiği için aslında bilgisayarlarla insanın arasındaki bağı kuran şeyin yazılım olduğunu düşünmek yanlış olmayacaktır. Bu nedenle “iletişim” kelimesini de ekleyebilirim. Kastettiğim iletişim dolaylı yoldan insan hayatına yeni deneyimler kazandırdığı gibi ekonomi, kültür, sosyallik, eğitim, ticaret gibi pek çok kapıyı da yazılım ürünleri açmaktadır. Bu nedenle dünyaya yön verdiği için “gelecek” kelimesi de bunların başında gelirdi.
2-Yazılımda en çok haz aldığın şey nedir?
Bana en çok haz veren şey ürün haline getirdiğimiz bir projenin kullanıldığına sosyal hayatta denk gelmek. İsmini vermeden bir örnekle açıklayayım, global bir markanın ülkemizdeki yerel uygulamasını geliştirdik. Bu markanın müşterileri ülkemizde mobil uygulama üzerinden işlemlerini kolayca gerçekleştirebiliyor. İnsanların içerisine çıktığımda bu uygulamanın cafede yan masada konuşulduğuna şahit olmak bana çok haz vermişti. Bu gibi örneklerle karşılaşmaktan haz alıyorum diyebilirim.
3-Yazılımın temel prensipleri senin için nedir?
Benim için belki de en büyük prensibi ekip çalışmasına uygunluktur. Bir yazılımın ekip çalışmasına uygunluğu ise SOLID prensiplerini barındırıyor olmasından geçer. Bunu daha da açacak olursak; geliştirmekte olduğunuz projenin gelecekte yeni özellikler kazanmasının çok kolay olması gerekmektedir. “Önceki yazılımcı” konumuna düşmemek için bu prensiplere özen göstermek gereklidir. Kod tekrarının yer almadığı, yorum satırına ihtiyaç duyulmadan “ben buradayım!” diyen temiz kodların bulunduğu, sınıf yapılarının düzenli ve mimarinin doğru kullanıldığı projeler yazılımın temel prensiplerini barındırıyor diyebiliriz.
4-Sence yazılıma başlangıçta doğru gidişat diye bir şey var mıdır?
Kesinlikle vardır. Bu doğru gidişat kişiden kişiye değişiklik gösterebileceği için bir kalıba sokmayı doğru bulmuyorum. Ancak mentorluk yaptığım arkadaşlardan deneyimlediğim kadarıyla yazılıma yeni başlayacak olan dostlarımıza ilk başta yazılımın ne demek olduğunu, içerisinde bulundurduğu alanları, hatta ve hatta tarihçesini öğrenmelerini öneririm. Üniversite yıllarında Altera Quartus’da bir devredeki lambayı yakmaya çalışırken kullandığımız Assembly’nin, Margaret Hamilton’un uzaya giden ilk astronotlar için geliştirdiği yazılımın dili olduğunu bilseydik daha da iştah duymaz mıydık? Kullandığımız araçları tanımadan, kara ekrandan nasıl arayüzlü uygulamalara geçeceğimizi bile bilmeden körü körüne ilerlemenin yanlış gidişat olduğunu biliyorum.
5-Kararsiz ilerlemektense bir yerden tutunup baslamak daha mi iyidir?
Aslında bazen kararsız ilerlemenin de faydalarını görebiliyoruz. Savunduğum için değil ancak; kararsız bir developer dediğimiz zaman mobili de, backendi de, webi de hatta gömülü sistemler ve makine öğrenimini de merak eden bir developer gözümde canlanıyor. Hepsinin tadına bakmadan hangisini seveceğini bilemeyebilir. Bu durumu avantaja çevirebilir. Ancak tam tersi senaryoda, kesin bir çizgisi bulunan geliştiricinin ilgi duyduğu alana tutunup başlaması da faydalı olacaktır. Burada yine iş kişide bitiyor.
6-Yazılıma su an başlayacak olsaydın asla yapmayacağın şeyler nedir? (Başlıca)
Yazılıma üniversite ile başladım. Başlarda matematik disiplinlerine daha ağırlık verdiğim için yazılımda pratik yapmak için çok fazla vaktim kalmıyordu. Bu durumu 3. sınıfta fark etmiş olmak biraz kötü bir deneyim içeriyor. Ancak fark ettikten sonrasında ise derslerde beklenen başarı oranı düşüyor. Bu dengeyi en baştan sağlamak gerekiyor. Şu an başlayacak olsaydım (benim gibi üniversitede bilgi teknolojileri alanında eğitim görenler için) ders — pratik — müşteri üçlüsü arasında denge kurup ilerlemeye çalışırdım.
7-Yazılım yokken ki hayatın ile şu anki hayatın arasında düşünce yönünden köklü bir değişim oldu mu? Sana kazandırdığı en belirgin yetkinlik nedir?
Kesinlikle oldu. Bana kazandırdığı en belirgin yetkinlik bir şeye kesin hüküm vermemek oldu. Bir hatanın alakasız bir sebebi olabileceği gibi, çok pratik çözümü de olabiliyor. Aldığım kararlarda, yaptığım işlerde aynı şeyi birçok yoldan yapabileceğimin farkında olarak başlamak, ilerideki riskleri ve sonuçları da hesaplamaya yardımcı oluyor. Vereceğim örnekler çok büyük şeyler değil ancak arabayla arkadaşlarınızı evlerinden alacağınız zaman aklınızda birden çok rotanın oluşuyor olması ve birine karar veriyor olmanız neye bağlıdır? Bende evin önünde aracı duraklatacağım konum, kapının yönü, yolun sıkışıklığı, evlerin sırası, ve arkadaşlarımın hazırlanma hızları aynı anda kafamda dönüyor :) Hayatın içinde de kendi algoritmalarınızın işlediğini farkederek yaşamak güzel bir his de veriyor.
8-Sence yeni başlarken, duyumlardan dolayı ingilizce öğrenmeliyim diye düşünüp, birkaç sene yazılımı ertelemek ne kadar mantıklı?
Yazılım pat diye içerisine dalabileceğiniz bir evren değil. Öncelikle temel kavramları öğrenmeniz gerekir. Kod yazmadan önce, herhangi bir programlama dili öğrenmeden önce, veri tiplerini, algoritmaların yürütülmesini, maliyet hesaplarını ve istatistiği iyi bilmeniz gerekir. Bu yazılımın başlangıcıdır. Bu süreçte ingilizce de paralelde ilerleyebilir. İngilizce için bunları ertelemek zaman kaybı olabilir. Ancak ingilizcesiz bir süreç asla olmamalı. Aradaki dengeyi kurmak başarıyı artıracaktır.
9-Geliştirdiğin projelerin ileriye dönük olarak sana katkıları nelerdir?
Yazılım sayesinde pek çok sektörle iç içe çalışma deneyimim oldu. Otomotiv, sağlık, medya ve kimya sektörlerindeki müşterilerin taleplerine çözüm üretebilmek için bu alanlarda ön çalışma yapıp, doğrudan sektörün içerisinde problemleri çözmek aslında farklı alanlarda da deneyim sahibi olmamı sağladı. Bir e-ticaret uygulamasına başlamadan önce müşterinizin ödemeyi hangi yoldan alacağını baştan sormak ileride yapacağınız entegrasyonları, bütçeyi ve yazılımın geliştirilmesindeki pek çok adımı sonradan değiştirmenize gerek kalmadan projeyi planlamanızı sağlayabiliyor.
Sorularımıza verdiği değerli yanıtlar için konuğumuza teşekkür ederiz.
İletişim adreslerimiz:
Mail: [email protected]
Instagram: @GelistirmeGunlugu
Instagram: @YazilimKaravani
LinkedIn: Yazılım Karavanı
LinkedIn: Ali Murat Çevik