Dijital, Etkinlik

Trendyol Group’un BackEnd Developer’i Faruk Emre Ciğer ile MasterClass!

Acunmedya Akademi; Türkiye’nin en büyük e-ticaret markalarından biri olan Trendyol Group’ta BackEnd Developer olarak çalışan Faruk Emre Ciğer ile “Clean Code& Solid Principles” konulu bir MasterClass gerçekleştirdik.

Faruk Emre Ciğer, üniversitede başlayan yazılım yolculuğunda; bugün Türkiye’nin en değerli şirketlerinden birinde çalışmasına kadar hangi süreçlerden geçtiğini anlatarak başladı.

Her yazılımcının mutlaka bilmesi gereken “SOLID PRINCIPLES”

SOLID yazılım prensipleri; yazılımın esnek, anlaşılabilir ve sürdürülebilir olmasını sağlayan 5 temel prensipten oluşur. Bu prensiplerin baş harflerinden S.O.L.I.D kelimesi ortaya çıkar.

S harfi Single Responsibility’den geliyor.
Faruk Emre Ciğer, “Şimdi, bir kahve makinesi alacağınızı düşünün. Her şeyi yapmasını istersiniz değil mi? Frappuccino yapsın, macchiato yapsın… Yazılımda da buna benzer bir durum söz konusu.”

Yazılımcılar tek bir sınıf içerinde yazılmış binlerce kodu okuyup anlamaya çalışır. Böyle durumlarda yapılacak en ufak bir değişikliğin neleri etkileyeceğini anlamak zorlaşır. Bu duruma dair Faruk Emre Ciğer: “Yazılımda olabildiğince tek bir sorumluluk yüklemek isteriz. Bir sınıf’a tek sorumluluk yüklersek, yönetmesi kolay olur.

Bir sınıfa birden fazla fonksiyon atandığında ortaya çıkabilecek sorunları da öğrencilere uygulamalı olarak gösteren Faruk Emre Ciğer, “değişim gerektiğinde ihtiyacımız olanı değiştirebilebilmek için ”single responsibility” yani tek sorumluluk ilkesine uymamız gerektiğinin altını çizdi.

Bir Yazılımın Her Şeyi Yapmasını İstiyoruz!

SOLID prensiplerinin ikincisi, Open/Closed. Bu prensip, yazılım geliştirirken kullanılan class ya da metotların gelişime açık; kodların ise değişime kapalı olmasıdır.

Bu prensibi Faruk Emre Ciğer: “Bir tane robot var, kesme işlemi yapabiliyor. Daha sonra bir sürece giriyor, diyor ki ben artık boyayabilirim. Diğer taraftaki kesebiliyor, işleme girdikten sonra artık hem boyayabiliyor hem de kesebiliyor. Peki, ben koduma yeni bir özellik eklemek istiyorsam? Olabildiğince gelişime açık ama değişme kapalı kodlar yazacağız. Nasıl yapacağız peki? Bunu bunun için bazen patern kullanmamız gerekecek.” açıkladı. Önce yanlış sonra da doğru metotlardan oluşan uygulamalı örneklerle prensibin anlaşılmasını sağladı.

Sonuç olarak Açık/Kapalı Prensibi, yazılımcılar için yazılımın sürdürülebilirliği ve genişletilebilirlik bakış açısına sahip büyük bir veridir.

SOLID prensiplerinin üçüncüsü, Liskov Substitution Principle. Bir alt sınıf ya da türetilmiş bir sınıf, onun üst sınıfı ya da temel sınıfıyla her zaman yer değiştirilmelidir ve bu yer değiştirme programının istenen davranışını değiştirmemelidir.

Interface Segregation prensibi; çok fazla sorumluluğa sahip büyük arayüzler oluşturulmamasıdır. Bunun yerine daha spesifik, daha az sayıda sorumluluğa sahip arayüz oluşturmaktır. Bu prensibe uygun yazılımlarda değişiklik yapmak ve yeni özellikler eklemek kolaydır.

Dependency Inversion prensi ise; üst seviye modüller, alt seviye modüllere bağlı olmamalıdır. Bu prensibin amacı, sistemdeki sıkı ilişkilerin azaltılması ve böylece yazılımın daha esnek ve genişletilebilir hale getirilmesinin sağlanmasıdır.

Gerçek Hayatta Her Zaman Teoride Öğrendiğimiz Gibi Olmuyor

SOLID prensiplerini detaylı bir şekilde açıklayan Faruk Emre Ciğer: “ Prensiplere uymamız gerekiyor fakat gerçek hayatta bazen bunu başaramıyoruz. İş yetişmesi gerekiyor, karşımıza zor metotlar çıkıyor… En azından Clean Code’ye uymamız gerekiyor.”

Clean Code: Sıkıcı ve Anlaşılır Kod

Faruk Emre Ciğer Clean Code hakkında öğrencilerle interaktif bir sohbet gerçekleştirdikten sonra: “Robert Cecil Martin’in şöyle bir söz söylüyor ‘ Clean Code’yi anlamanın yolu baktığınız zaman düz yazı okuyormuşcasına sıkıcı olur.’ diyor. Clean Code’ yi anlamaya çaba göstermezsin dümdüz okursun bunu yap, şunu yap, cümle cümle yazar. İçine gidersin orada bunu yap,bunu yap yazar. Yani kodun sıkıcı bir şey haline dönüşmesi lazım.” dedi. Robert Cecil Martin’in, bu kavramı açıklayan ve meşhur eden insan olduğu bilgisini paylaştı.

Uygulamalı Deneyim

İnteraktif bir şekilde yürütülen etkinlikte öğrenciler, yazılım temellerini uygulamalı olarak deneyimledi. Öğrenciler, sektöre dair ve kariyerlerinde nasıl ilerlemeleri gerektiğini sorma fırsatı yakaladılar.

Öğrencilerin tüm sorularını cevaplayan Faruk Emre Ciğer, deneyimlerini ve bilgilerini paylaştığı ve öğrencilerimize ilham olduğu için teşekkür ederiz.