Bir yazılımın doğasında elbette matematik vardır. Yazdığınız kodun önce assembly, ardından binary formatında çalışması, sayısız matematiksel koşul ve işlemin bir araya gelmesiyle mümkün olur. Bunun yanı sıra, modern yazılım dillerinin sunduğu okunabilirlik sayesinde kullanıcıların ihtiyaç duyduğu matematik bilgisi azalır. Bu okunabilirliği başka bir ifadeyle “abstraction (soyutlama)” olarak değerlendirebiliriz. Kodun okunabilirliği, doğal olarak içerdiği matematiksel gereksinimleri daha soyut hâle getirme eğilimindedir. Yazılımcının görevi, ihtiyaçlarına ve üreteceği ürünün gereksinimlerine göre bu soyutlama seviyesini belirlemektir.
Zaman ilerledikçe, insan rollerinin taşıdığı anlam da değişmektedir. Geçmişin yazılımcıları çoğunlukla kendilerinden önceki nesillere kıyasla matematiksel bilgi birikimi bakımından daha yetkin olurdu. Eski zamanların koşulları, yazılımcıların çok yönlü olmasını daha gerekli kılıyordu. Günümüzde yazılımcılık çoğunlukla “parçaları birleştirmek” şeklinde yorumlanabilirken, geçmişte yazılımcı olmak için aynı zamanda matematikçi olmak da gerekebiliyordu.
Yeni yazılım mimarilerinin kurulması, yeni standardizasyonlara olanak tanımıştır. Oluşturulan yeni soyutlamalar, yeni yazılımcıların sektöre daha kolay girmesini ve istediklerini daha kolay gerçekleştirmesini sağlamıştır. Bu durum, hayalimizdeki dijital ürünleri daha hızlı geliştirmemize olanak tanırken bazı eksiklikleri de beraberinde getirmiştir.
Soyutlamanın yol açtığı en büyük eksikliklerden biri, yarattığı illüzyondur. Bir yazılım sonuç olarak ne kadar iyi görünürse görünsün, içerdiği görünmez hatalar onu kusurlu hâle getirir. Teknik ayrıntılardan uzak, soyut bir yapı inşa etmenin sonucu; hatalı ve takip edilmesi zor bir ürünün ortaya çıkması olabilir. Bu illüzyonun en önemli nedenlerinden biri, son kullanıcıların teknik ayrıntıları çoğunlukla önemsememesidir. Ürünü hızlı bir şekilde piyasaya sürmek ve aceleci davranmak, hatalara en çok yol açan etkenlerdendir.
Yazılımcının programı hazırlarken içinde bulunduğu zihinsel durum ve programı kime, neden yazdığı gibi birçok faktör kod kalitesini belirler. Soyutlama seviyesi de bu koşullara bağlı olarak değişir. Kısacası, soyutlamanın temel nedenleri modern dünyanın hızlanması, artan ihtiyaçlar ve bunlar gibi sayısız faktöre dayanır. Büyük ölçekli projelerde yüksek düzeyde soyutlama, adeta bir domino taşının devrilmesi gibi istenmeyen sorunları art arda tetikleyebilir.
Bir yazılımcının matematiğin doğasından nasıl yararlanacağı, içinde bulunduğu koşullara bağlıdır. Öncelikle yazılımcı kendini tanımalı ve matematik alanındaki sınırlarını öğrenmelidir. Ardından, bulunduğu alana bağlı olarak gerekli matematiksel işlevleri öğrenmesi daha kolay olacaktır. Bu ayrımı yaparken kodu yazan kişinin içinde bulunduğu alan da çok önemlidir. Örneğin kişi kendini veri bilimi alanında geliştirmek istiyorsa, yazılım bilgisinden çok bu alandaki matematik bilgisi daha önemli bir faktör olacaktır. Başka bir örnek vermek gerekirse, mobil uygulama geliştiren birinin matematiğe duyduğu ihtiyaç neredeyse hiç olmayacaktır.