top of page

Endüstri Mühendisliği Yazıları-7 (Yazılım ve Matematik-1)

Merhaba,


Bir önceki yazıda önümde yazılım dünyası derya deniz uzanırken, kumsalda oynadığım deniz kabuklarından bahsetmiştim. Bu yazıda daha kapsamlı kod yazımı hakkında tecrübemi paylaşmak istiyorum. Bu konuda ustalaştıkça, işleri daha fazla dijitalleştirme şansımız doğacaktır. Üzerinde duracağım konularla beraber, hakkımda şunun düşünülmesi benim için yeterli olacaktır; ben bir kodcuyum, yazılımcı değil. Yazılımcılık ayrı bir meslektir ve azımsanmayacak tecrübe, birikim ve emek ister. Benim burada paylaşacaklarım, bir mühendisin kendi çabasıyla hem işine hem çevresine katabileceği değeri arttırma amacı gütmektedir. Aksi takdirde haddimi aşan bir yazı olur.


Konumuza dönersek; VBA, Excel ve Access üçlüsü bir çok sürecin dijitalleşmesini sağlayabilir, fakat etki alanları sınırlıdır. Örneğin, veri analiziyle beraber bir talep tahmin programı hazırlamak isterseniz bu üçlü size yeterince destek veremez. Ayrıca yaptıklarınızın görselliği sınırlı olur ve diğer sistemlerle (örneğin şirketin ERP'sinin bağlı olduğu SQL veri tabanı gibi) haberleşmesi zorlaşır. Diğer bir örnek; daha önceki bir yazımda belirttiğim genetik algoritma denemesini sıfırdan yazmalısınız, piyasada bu üçlüye yardımcı olacak paket programları bulmakta zorlanırsınız. Yine de şansınızı zorlayabilirsiniz, fakat bazı güvenlik açıklarıyla boğuşmanız gerekir, çünkü VBA açık yazılımlı koda sahiptir. Bu kodu şifreleyerek kullanıcının görmesine engel olmayı deneyebilirsiniz, fakat şifrenin kırılıp kodlara ulaşılması kolaydır (en azından bahsedeceğim diğer yazılımlara göre). Yazılımcı camiasında "patlatma" olarak geçen bu olay sonucu, emeğiniz orta yerde kalır ve siz bunu bedelsiz bile yapsanız, başka birisi bu koddan faydalanıp ticari bir ürünü geliştirebilir. Excel ve Access'in başına gelebileceklere değinmiyorum bile; her gün orta yerde duran dosyaların zamanla nasıl şiştiği ve bozulduğuna bakın. İşte bu yüzden, eğer bir endüstri mühendisi olarak, yaptığınız işi (ki bunda kompleks matematik önemli bir yer tutar) daha kaliteli bir şekilde ele almak istiyorsanız, tavsiyem C# ve SQL olacaktır. C# üstüne yazılan birçok kütüphane (library), ihtiyaç duyacağınız kompleks matematiksel çözümleri sağlayacaktır. Bu sayede siz de detaya çok girmeden, programın başka bir kısmına odaklanabilirsiniz.


Bu programları öğrenip, kullanmanız için gereken yatırım sıfır TL'dir. Evet, hem programlar, hem de bunların eğitimi için harcamanız gereken para miktarı sıfırdır. Yazılım dilleri ve bunları kullanarak kendi programlarınızı yazacağınız editörler bedelsiz sunulur. Ayrıca, bu programlama dilleri üstüne hazırlanan kütüphaneler de bedelsizdir. İstediğiniz gibi indirip kullanabilirsiniz. Yaşadığımız ülke koşullarına göre anlamsız gelen bu olayın insani, ekonomik ve sosyal boyutu hakkında görüşlerimi yazının sonuna saklıyorum. Onun yerine, bu yazılım gücüyle yapılabileceklere bir örnek vermek istiyorum; bir talep tahmin modülü yazmak.


Satış ekibinizden ilgili kişilerin bilgisayarlarında bir Excel dosyası olsun. Buna sizin eklediğiniz bir ribbon (Excel'in menülerine verilen ad) var. Satış analistleri, gerçekleşen satış verilerini bu dosyaya girip, ribbon'a koyduğunuz bir tuşa basıyor. Böylece veri Excel'den alınıp yine kendi dizaynınız SQL veri tabanına yükleniyor. Sonra, satış ekip yöneticileri kendi bilgisayarlarında kurulu Excel'den sistemin gerçek satış verilerini kullanarak en iyi talep tahmin modelini kurması ve buna bağlı orta vade tahminleri göstermesini istiyorlar. Saniyeler içinde gelen analiz sonuçlarına bakıp, ürün veya grup bazında kampanya vb girdileri yapıp veriyi güçlendiriyorlar. Talep tahminleri yapılıyor, ciro ve karlılık tahmin raporları otomatik hazırlanıyor. Satış analistlerinin girdiği binlerce (belki yüzbinlerce) satış verisini kullanıp yüzlerce farklı talep tahmin modelinden optimum versiyon seçiliyor ve bu süreç boyunca ana girdi/çıktı noktaları dışında kimse sürece karışmıyor. Böyle bir programı, bir mühendis oturup tek başına yazabilir mi? Evet, yazabilir. Ama bunun için bazı konularda kendisini güçlendirmesi gerekir. Şimdi bu konuda mühendisimize katkıda bulunacak araçlardan bahsedelim.


Microsoft'un piyasaya sürdüğü bu yazılım geliştirme ortamı (IDE: integrated development environment) ihtiyacımızın büyük bir kısmını karşılar. Bedelsiz indirebileceğiniz bu program sayesinde bilgisayar programları yazabilir, web sitesi ve uygulamaları geliştirebilir, çalışmalarınızı mobil ortama taşıyabilirsiniz. Editörde programlama dilleriyle çalışırken yazdıklarınızı tamamlayan bir sistem vardır. Intellisense adı verilen bu sistem, bir çok yerde size yardımcı olur, kodun gidişatını anlayıp komutlarınızı tamamlar. Ayrıca, yazım devam ederken olası hataları belirler ve programı çalıştırmanıza gerek kalmadan bunları düzeltmeniz için sizi uyarır. Microsoft, bu programda size birçok hazır şablon (template) sunar. Örneğin, Excel üzerine bir program yazacaksanız, ilgili bağlantıları sizin için önden yapar ve referans alacağı kütüphanelerden hazır yazılı kod paketlerini getirip bu şablonla beraber kullanıma sunar. Size kalan, ana probleminize odaklanıp bunun algoritmasını tamamladıktan sonra şablonun sunduğu bağlantı noktalarına eşleştirmektir. Programlama dili dışında, web, mobil ve windows obje tasarımı yapabileceğiniz dizayn şemaları vardır. Ayrıca, veri tabanı ile iletişime geçebileceğiniz ve hatta dizaynı üstüne çalışabileceğiniz ara-yüzler bulunur. Son olarak, biz mühendislerin bol bol yararlandığı R gibi istatistik programları, ya da Microsoft'un direk desteklemediği ama bir ara-yüz sayesinde ulaşabileceğiniz Phyton gibi programlama dilleri için ortam sunar. Özetle, bir şey geliştirmek istiyorsanız neredeyse VS'den (Visual Studio kısaltması) hiç çıkmadan bütün günü içeride geçirebilirsiniz. Programın kullanımı (tabi genel hatlarıyla) diğer Office uygulamalarına benzediği için uyum sağlamak zor olmaz. Fakat, içeriğe hakimiyet önemlidir. İşte bunun için önce kullanacağınız programlama diline odaklanmak gerekir.


VS kapsamında birçok programlama dilinde çalışabilirsiniz; C#, F#, Visual Basic vb. Ben bunların arasından C#'ı seçiyorum; zengin forumları, kütüphaneleri ve hızlı çalışması yüzünden. Dilin temel prensipleri ve işinizi kolaylaştıracak modüllerini öğrenmek için Paragim Technologies adlı firmanın eğitim videolarını tavsiye ederim. Firmanın kurucusu Hint asıllı İngiliz arkadaşımız Venkat'ın hazırladığı C# Tutorial for Beginners adlı YouTube video seti çok iyidir. Sıfırdan başlayıp, paralel kodlamaya kadar, C#'ın sunduğu bütün seçenekleri 100 videoda anlatıyor. Ve bunu o kadar iyi yapıyor ki, konuya tamamen yabancı olsanız bile anlıyorsunuz. Videoların yorumları teşekkür ve iyi dileklerden geçilmiyor. İnsanlar, Venkat’ın üniversite hocalarından bile daha iyi anlattığını söylüyor, başka alanlarda yayın için teşvik ediyorlar. C# konusunda destek alabileceğiniz diğer bir kaynak, tabi ki forumların şahıdır; Stack Overflow. Akla hayale gelecek her sorunuza buradan cevap bulabilir, ya da cevabı bulacağınız yeri öğrenebilirsiniz.


Bir sonraki yazıda programımız için ön yüz tasarımı, matematiksel kodlama ve veri tabanı yönetimi üzerine devam edeceğiz.


Sevgiler


bottom of page