Codefiction - Yazılım Mimarı Ne iş Yapar?

 Codefiction tarafından canlı yayınlanan, yazılım mimarı ne iş yapar konulu video.

Videoda global şirketlerde yazılım mimarlığı tecrübesi olan katılımcılar, yazılım dünyasındaki architect kavramını ele alıyor. 

Yazılım şirketlerindeki çeşitli yöneticilik pozisyonlarının ne anlama geldiğini, günümüz dünyasında kavramların nasıl değiştiği konuşuluyor.

Atlassian, Amazon, SpaceX gibi firmalarda işlerin nasıl ilerlediği, rollerin nasıl paylaşıldığı anlatılıyor.



"Özellikle kurumsal firmalarda duyduğunuz yazılım mimarı rolü ne iş yapar? Kod yazar mı? Yazmalı mı? Yoksa sadece toplantılara mı girer? Gelin hep beraber iyi yazılım mimarı ve kötü yazılım mimarı arasındaki farkları tartışalım.

Bu sefer konuğumuz Atlassian firmasinda Principle Tech Evangelist olarak çalışan Serhat Can (https://twitter.com/srhtcn). Katılımcılar: Deniz İrgin (https://twitter.com/denizirgin) Deniz Özgen (https://twitter.com/_denolk

Mert Susur (https://twitter.com/MertSusur)" - Codefiction




Codefiction Nasıl Yapılır: Twitter

 Codefiction ekibinin 2 bölümlük Twitter nasıl yapılır serisi.



Video 1 : 




Video 2 :





Akın Kaldıroğlu Hocamızla Yaptığımız Röportaj

Bize biraz kendinizden bahseder misiniz? ( Aslen nerelisiniz? Nerelerde eğitim aldınız? Evli misiniz? )
Öncelikle geç cevap verebildiğim için özür dilerim.
Ben Ayvalık'lıyım. Lise sonrasında 1990 yılında İTÜ'den mezun oldum. İTÜ'de Elektronik okumama rağmen MEB bursuyla gittiğim ABD'de Bilgisayar Mühendisliği'nde (BM) master yapmaya karar verdim. Nitekim önce BM sonra da çalışırken Yazılım Mühendisliği yüksek lisans eğitimleri aldım. Evliyim, 3 çocuğum var.


Amerika'ya gidiş sebebiniz neydi? O yıllarla bu yılları karşılaştırdığınızda ABD'ye gitmek ve orada tecrübe kazanmak hala mantıklı mı?

Aslında taa lisede bile yurt dışında bulunmayı, özellikle orada eğitim almayı çok istiyordum. Aileden zengin değilseniz, okulda da çok başarılı olamamışsanız, geriye sadece devletin bursu kalıyordu o zamanlar, seçenek olarak. Tabi 90lı yılların başından bahsediyorum.  Sadece ABD değil, iyi eğitim veren yurt dışındaki okullarda lisans olmasa bile yüksek lisans eğitimi almak hala çok güzel bir imkan bence. Mesele sadece yabancı dil ya da iyi bir okul diploması değil, dünya görüşünü geliştirmek, envai çeşit tecrübeyi kazanmak; hala benim önem verdiğim şeyler bunlar. Üstüme vazife olmayan bir konuda çıkarım olacak ama toplum olarak bence bu türden tecrübelere çok ihtiyacımız var.

İlk işinizden bahseder misiniz? (İşe giriş hikayeniz, sizden beklentiler..)

Hahaha, ne zamandır ilk işimi pek düşünmemiştim. İlk işim Unix üzerinde firewall geliştiren bir yazılım evindeydi. 40-50 kişilik, çok odaklı iş yapan, ufak bir şirketti. Önce Maryland Rockwille'deydi sonra  Virgina'da Alenxandria'ya taşınmıştık. Yöneticimizi hatırlıyorum, George. İlk işe başladığım gün masamın üzerini mendille silerken koşup tuvaletten bir tomar kağıt havlu getirmişti bana. Bir keresinde de sanırım öğle yemeğinden sonra uyurken masamda yakalamıştı beni 🙂 Bir de yılbaşı yemeğine ben katılmayayım dediğimde, "bak, seni anlıyorum, ben de bu toplumun kıyısındanım, Mormon bir aileden geliyorum, yemek için önceden istediğini ısmarla, yemekte istediğini yap istemediğini yapma, ama birlikte olalım, eğlenelim" dediğini hatırlıyorum. Muhteşem bir adamıdı. Açıkçası böyle tecrübeleri yaşamak, sahip olduğu bilinç ve özellikle de toplumsal alışkanlıklar açısından insana kargadan başka kuş da olduğunu öğretiyor ki bu tecrübenin, yukarıda da bahsettiğim gibi ne yabancı dille ne de yüksek lisans ya da doktora ile kıyaslanması mümkün değil.

Bu işte benden beklenti Java tarafına geçiş ile ilgili alınmış stratejik bir karar doğrultusunda çalışmaktı. Tabi her zaman öyle olmadı, C ile yazılmış devasa firewall kodu üzerinde de çalıştım bayağı. İşe girince ilk öğrendiğim şeyin "firewall" olduğunu hatırlıyorum.

İlk kullandığınız programlama dili neydi? Bu dilin zorlukları nelerdi?

C, biraz da C++'dı. Firewall kodlarında yer yer C++ ile yazılmış kısımlarda vardı ama temelde C koduydu.  Java'nın da ilk günleriydi, yeni release olmuştu. Okuldan çıkıp, üç-beş bin satırlık codebeaselerinden milyonlarca satırlık devasa bir codebasee girmek çok korkutucu. Ufak takımlarda işi biraz da kendin halletmen gerekiyor, yardım almak zorlaşıyor vs.

ABD'de çalıştığınız farklı işlerden bahseder misiniz? Oradaki işler size neler kattı?

Benim çalıştığım yıllar DotCom patlamasının yaşandığı zamanlardı, dolayısıyla ilk işimden sonraki işlerde daha çok web arayüzleri olan projelerde çalıştım ve hep Java kullandım. Mesela satır satır servlet yazdım 😞, ya da Microsoft'un kendine göre değiştirdiği API'ye sahip JDK'sıyla, Visual J++ üzerinde geliştirme yaptım, Swing ile GUI geliştirdim vs. Teknolojik katkılardan ziyade daha organziasyonel ve kişisel ilişkiler bence daha fazla şey katmıştır bana, eğer hakikatten faydalanabilmişsem. 300-400 kişilik orası için küçük teknoloji şirketlerinde de çalıştım, GE'de de çalıştım. Her milletten insanla tnaışmak güzel bir şey. Taa GE'den bir Hintli arkadaş geçenlerde İstanbul'a geldi ve tekrar görüştük mesela.

Java ilk çıktığında Dünya'da nasıl bir etki yarattı? Java ile ilk ne zaman tanıştınız? O zaman java öğrenmek ve sertifika almak şimdiden daha mı kolaydı?

O zamanlar Java hakkında, "hiç bir başka teknoloji bu kadar büyük bir beklenti ve sahiplenme ile hayatına başlamadı" şeklinde yorumlar okuyordum. Muhtemelen sonrasında Android gibi mobil bir teknoloji benzer tecrübeyi yaşa(t)mıştır. Burada teknolojiyi sahiplenmenin hızından bahsediyorum daha çok. Tabi Java'da, web dalgasıyla üst üste gelince, doğru zamanda doğru yerde olmak denen o, Batılıların chance bizim ise nasip dediğimiz şey gerçekleşiyor. Aslında Java, iki ucunda VB ve C/C++ olan uygulama geliştirme dili spekturumunda, daha optimal bir noktaya konumlandı. Yani daha küçük ve basit bir syntax ve gramer ile yeterince güçlü bir dil oluşturmak, çalışma zamanını güçlü tutmak ve tabi ki platformdan bağımsız olmak gibi faktörlerin üzerine bina edildiğinden, bu işin pratiğini yapan geliştiriciler nezninde devrimsel özelliklere sahip olarak algılandı.

Çalıştığım iş yeri sertifika almayı destekliyordu, ücretini veriyordu, ben de hatırlıyorum Bruce Eckels'in Thinking in Java kitabını alıp, satır satır çizerek, örnek kodlarını yazarak, kendi örneklerimi yaparak çalışmıştım. Ben sertifikamı sanırım 1998'de aldım, o zaman konular daha azdı, sınav içeriği açısından ama test kitabı da yoktu tabi olarak.

Türkiye'ye dönüş sebebiniz neydi? Döndüğünüzde Türkiye yazılım sektörünü nasıl buldunuz? Bir hayal kırıklığı yaşadınız mı?
Ailevi sebeplerden döndüm ülkeme. Açıkçası hayal kırıklığım hala geçmedi, çünkü sektörün durumuna hala alışamadım. Tamamen ithalata, lisansa dayalı, derme çatma, esnaf vari sistem geliştirme teknikleri ve insan kaynağına "eleman" bakışı, aradan onca geçen seneye rağmen temelde çok da değişmedi.

Selsoft'u ne zaman kurdunuz ve şirketin kuruluş amacı neydi?

Selsoft 2011'de kuruldu. Sektör, koskoca Amerika görmüş adamsın, programcı mı olacaksın diye beni yönetici olmaya ittirdi ve ben de denedim. Ama açıkçası sektörün istediği gibi bir yönetici de olamadım; bundan 10 küsür sene önce de hemen her şeyin belirleyicisi kısa vadeli mali hesaplardı. Mimari, kalite, temiz kod vs. mesela, pek kolay şeyler değildi bu şekilde yazılım mühendisliği pratiklerini uygulamak. Dolayısıyla yönetici olarak da başarılı olamayacağımı anlayınca, kendimce çıkış yolunun tek başına ya da çok geniş olmayan bir çerçevede, tamamen uyum sağlayabildiğim kişilerle çalışmak olduğunu düşündüm. Selsoft bu düşüncenin ürünü.

MBA ve Felsefe yüksek lisansı size neler kattı? Türkiye ve ABD'yi kıyasladığınızda yüksek lisansa verilen değer farklı mı? Lisans mezunlarına yüksek lisansı öneriyor musunuz?

Ben 1990'da İTÜ'den mezun olunca pek çok arkadaşım doğrudan MBA benzeri yüksek lisans programlarına başlamıştı. Ben ise MBA ihtiyacını ancak yönetici olunca, İK, finans, satış vb. birimlerden insanlarla daha yakın çalışmaya başlayınca hissettim ve onlarla aynı dili konuşabilmek adına, sahayı bir görmek, tanımak istedim. Dolayısıyla terimleri anlamak, temel ayrımları bilmek ve özellikle de sahanın önde gelen teorisyenlerini ve düşüncelerini öğrenmek, kitap ve makalelerini okumak önemli hale geldi. İyi bir MBA eğitimi, eskiden bu yana önem verdiğim entelektüel gelişim için de iyi bir imkan sunar bence.

Felsefe, tamamen entelektüel amaçlı benim için. Uzun süredir kendi kendimce, amatörce okumaktaydım, ABD'deyken Edward Said, Syed Hüseyin Nasr ya da Quine gibi, bir programcıdan pek beklenmeyecek şekilde bazı ünlü entelektüelleri, filozofları dinleme, onlarla aynı çatı altında bulunma fırsatı da bulmuştum. Hep istemiştim, daha formal bir felsefe eğitimi almayı. Sonunda nasip oldu.

Bence, hayatı sorgulamayı geçtim, işini iyi yapmaya çalışan herkes bir şekilde işi üzerinden bazı felsefi soru(n)lara ulaşır. Örneğin programlama. Programlama dillerinin tabiatı, type sistemleri üzerine düşünen,  biraz makale vs. okuyan kişi muhtemelen kendini modern mantık içinde bulur. Yeter ki ilerleyebilecek temel eğitime, temel nosyonlara sahip olsun ve e önemlisi de meraka. Dahası bence düşünmemek, kişisel, toplumsal, teknolojik vs. her konuda her türlü kötülüğün temelidir. Ama gerek temel eğitimimiz, gerek yüksek öğrenimimiz genelde merakı törpülemek üzerine kurulu, bir de bunun üstüne sektör gelince, merak lüks hale geliyor.

ABD'de master yaparken defalarca hocanın sınıfa gelip soruları dağıtıp, 50 dakika sonra odama getirin ya da haftaya şu saate kadar gönderin deyip gittiğini hatırlıyorum. Ülkemizdeki özellikle MBA eğitimindeki derslerde genelde ilk sorulan sorunun sınavın klasik mi test mi olacağını duymuşluğum çoktur. Bence ülkemizdeki eğitim ile ABD'deki eğitim arasındaki esas fark bu, benim gözlemime göre, temelde ahlaki yani.

Lisans okuyan herkese tabi tavsiye ederim, master sonrasında da imkan varsa doktora yaparak formal bilgilenmelerini sürdürmelerini. Ama sektörümüzünün formal bilgi birikimine uzak oluşu, aşırı problem çözme odaklı çalışması ve bunu da "çözüm odaklı olmak" gibi bir meziyetle, bence aslen ideolojik bir sloganla, ifade etmesi, genelde master ve doktora çalışmalarının, kişinin kariyerinde etkili bir noktada olmasına engel oluyor. Bu tutum da aynı "Üniversite okumayıp bir işe girseydim, şimdi yeni mezun olarak kazandığımdan daha çok kazanırdım" sözü gibi aslında, eğitime bakışımızın ciddi bir şekilde araçsal, faydacı olduğunu da gösteriyor, bence.

Kendinizi amatör filozof olarak tanımlıyorsunuz. Biz de verdiğiniz eğitimlerde felsefe konuşmalarınızdan büyük keyif aldık, ayrıca Twitter'daki paylaşımlarınız da çok keyifli ve bilgi verici. Felsefe size hayatta ve yazılım kariyerinizde nasıl bir etki yarattı?

Hahaha, yok artık! Bakın şu açık: Ben, koyunun olmadığı yerde kendisine Abdurrahman Çelebi denen keçiyim. Maalesef hem toplum olarak hem sektör olarak o kadar sığız ki felsefede temel bir kaç soruyu farketmiş olmak ki temelde felsefe cevaplamak değil soru sorma sanatıdır, soruyu farketme gayretidir, Ekşi sözlükte bir yazarın, sağolsun, yazdığı kadarıyla beni "baya bir filozof eğitmen" kılıyor. Senelerdir object-oriented ya da nesne-merkezli/nesne-yönelimli programlama yapıp da "nesne de neymiş, bu kavramı ortaya atanları bir okuyayım baklalım" demeyen kişilere Aristo'nun nesne tanımından bahsedince filozof gibi görünmem normal. Böyle düşünen arkadaşların hüsnü zanlarının farkındayım ve buna minnettarım da ama asıl sebep, aşırı sığ ve araçsal bir dünya anlayışına sahip olmamız.

Felsefe eğer soru sorma sanatı ya da bilimiyse, kabaca konuşursak, soru sorabilme, soru(n)ları görebilme yetkinliğimi arttırmış, dolayısıyla da eğitim, danışmanlık ve daha önceki yöneticilik tecrübelerimde beni daha temelci/fundamentalist, anlama ve anlatma odaklı yapmış olabilir. Teknolojiden ziyade süreç odaklı biriyim ben mesela ya da Java anlatmaktan çok OOP, OOAD, Design Patterns, Domain-Driven Design anlatma ve uygulamayı daha keyifli bulurum. Teknik hiç bir ortaklığımız olmayan bir arkadaş bana bir seferinde, "farkında mısın, bana en sık sorduğun soru 'anlıyor musun'" demişti.

Selsoft olarak eğitimler veriyorusunuz? Bazıları Udemy platformunda yayınlandı. Bu eğitimler devam edecek mi?

Sanırım devam edecek. Udemy kısmı daha çok kitleye ulaşma ile ilgiliydi; bence iyi de oldu. Ama devam edecek eğitimlerin yeri Udemy mi olur pek emin değilim.

Kurumsal eğitimler veriyor musunuz?

Evet, tabi ki. Esas işim kurumlarla çalışmak, eğitim ve danışmanlık vermek. Online eğitimleri salgın öncesinde Oracle eğitmeni olarak Hindistan'dan İngiltere'ye kadarki zaman diliminde Live Virtual Class olarak çok defa vermiştim. Zaman zaman freelancer olarak ülke dışına da online eğitimler verdim. Ama bahsettiğiniz ve bireysel eğitim ve öğretim dünyasında daha çok tanınmamı sağlayan şey, açık sınıf, online eğitimler, salgınla birlikte , kurumların duruma uyum sağlama sürecide ortaya çıkan boşluğu doldurma gayretinin bir sonucudur.

Yeni yazılım öğrenmek isteyenler için eğitimleri sırayla izlemeleri gerekse nasıl bir sıralama yapardınız?

Yani yazılım öğrenmek demeyelim de programlama öğrenmek diyelim ona. Java özelinde Java ile Nesne-Merkezli Programlamaya Giriş ve Java ile Nesne-Merkezli ve Fonksiyonel Programlama eğitimleriyle temel Java SE bilgisi belli bir noktaya getirilebilir. Tabi bu eğitimlere JDBC, threading, IO gibi konuları da eklemek lazım. Advanced Java eğitimi içerisinde düşündüğüm konular. Sonrasında tabi Java EE tarafı geliyor, dolayısıyla web teknolojileri ile başlamak, örneğin Java ile RESTful 
Web Servisi Geliştirme ile devam etmek mantıklıdır. Tabi OOP'ye hakimiyet arttıkça Design Patterns öğrenmek, belki daha öncesinde Clean Code ile olabildiğince daha anlaşılır kod yazmayı alışkanlık haline getirmek önemli. EE tarafından Spring olmadan olmaz, dolayısıyla bir şekilde Spring'e de giriş yapılmalı. Bu konuda daha detaylı bir yazım var benim blogumda, oraya bakılabilir:  http://www.javaturk.org/udemy-egitimlerim-uzerine/

Bonus:



Bir yazılımcı olarak, şahıs şirketi kurarak yurtdışına remote olarak hizmet vermek.

 Yurtdışına şahıs şirketi üzerinden remote iş yapıyorsanız :


- KDV ödemiyorsunuz,
- 6322 sayılı kanun gereği, gelirinizin %50'si üzerinden gelir vergisinden muafsınız.
- Örnek olarak 4000 Euro fatura kestiğinizde ve 400 Euro masrafınız olduğunu düşünürsek(Kira,ısınma,elektrik,yemek), 1800 Euro'su vergi muhafiyetine giriyor ve kalan 1800 Euro'nun yaklaşık %32'si ni gelir vergisi olarak ödüyorsunuz. Size kalan tutar 3000 Euro ve harcadığınız 400 Euro oluyor.

Not : Tutarlar yaklaşık değerlerdir. Şahıs şirketi gelir vergisi oranlarına ayrıca internetten bakabilirsiniz.
Not:  Ayrıca 29 yaş altına artı olarak gelir vergisi ve bağkur destekleri de mevcut.






TalendGrid'in ilgili videosu :



Yazılım Geliştiricileri İçin Yazılım Mimarlığı - Simon Brown

Yazılım mimarı olmak isteyen yazılım geliştiricileri için Simon Brown tarafından yazılmış kitap. Dili sade ve akıcı.

Yazarın visualising software architecture kitabı da mevcut fakat ilk kitap benim için yeterli oldu.


Kitaptan alıntılar :

"Teknik liderlik, bir rütbe değil bir roldür."

"Most of the best software architects I know have a software development background, but for some reason many organisations don’t see this as a part of the software architecture role. Being a “hands-on software architect” doesn’t necessarily mean that you need to get involved in the day-to-day coding tasks, but it does mean that you’re continuously engaged in the delivery, actively helping to lead and shape it. Having said that, why shouldn’t the day-to-day coding activities be a part of the software architecture role?

Many software architects are master builders, so it makes sense to keep those skills up to date. In addition, coding provides a way for the architect(s) to share the software development experience with the rest of the team, which in turn helps them better understand how the architecture is viewed from a development perspective. Many companies have policies that prevent software architects from engaging in coding activities because their architects are “too valuable to undertake commodity coding work”. Clearly this is the wrong attitude. Why let your software architects put all that effort into designing software if you’re not going to let them contribute to its successful delivery?

Of course, there are situations where it’s not practical to get involved at the code level. For example, a large project generally means a bigger “big picture” to take care of and there may be times when you just don’t have the time for coding. But, generally speaking, a software architect who codes is a more effective and happier architect. You shouldn’t necessarily rule out coding just because “you’re an architect”."

https://leanpub.com/software-architecture-for-developers


Rastgele İçerik

DonanımHaber

© tüm hakları saklıdır
made with by templateszoo