Bilgisayar Mühendisliği

31 May 16, Tuesday @ 13:28

Ekşisözlük'teki bilgisayar mühendisliği tanımlarına bakınca, "bilgisayar mühendisi mimar, programcı ameledir", "utp kablo takmayı bilmezler", "temeli hardware'dir", "programlamayla alakası yoktur", "bilgisayar bilimlerinden farklı bir şeydir", "asıl işi işlemci tasarlamak" gibi saçmalıklar arasında kayboluyorsunuz.

Bu da şaşırtıcı değil çünkü bazı hocalar ve mezunlar bile bu yanlış fikirleri yaymaya devam ediyor.

Bilgisayar Mühendisleri Odası'nın şu kuruluş raporuna bakın:

Meslek Alanında Yaşanan Tahribat (sayfa 9): ...sektör kamu ile akademiden ziyade serbest piyasa koşulları içinde büyümüş... kamusal düzenleme olmaması (yüzünden) ülkemiz salt tüketici konumda kalmış... bilgisayar mühendisleri teknoloji ve bilim dünyasında çığır açan çalışmalara imza atmak yerine kod yazan kişiler olarak kalmışlardır.

Bu metni yazan ve okuyan hiç kimsenin aklına, "silikon vadisinde çığırları açanların kamu düzenlemesi mi vardı?", "serbest piyasa hakimiyetindeki Amerika, bilişim tüketicisi konumunda mı?" ya da "Knuth, Tarjan, Sedgewick gibi teorik araştırmacılar bile her gün kod yazıyorken bizim bilgisayar mühendislerinin ayağına bu niye bağ oluyor" gibi çok basit sorular gelmemiş anlaşılan!

Bu bilgi kirliliğine engel olmak için bazı kavramları temelden açıklamak gerekiyor.

Bilgisayar Mühendisliği

Bir çok ülkede Computer Science (Bilgisayar Bilimi) olarak geçen bölümdür. Bir uygulamalı matematik alanıdır. Temel problemleri: neleri hesaplayabiliriz (karmaşıklık, quantum), nasıl hesaplayabiliriz (algoritmalar, veri yapıları, yapay zeka, diller ve derleyiciler) ve neyle hesaplayabiliriz (bilgisayar mimarisi, ağlar, sistemler) olan bir bilim dalıdır.

Türkiye'de bir mühendislik bölümü olarak açılmasının nedeninin devlet kadrolarında mühendis olmayanların teknik kadro sayılmasının zorluğu ve yüksek maaş alamamaları olduğunu düşünüyorum.

Mühendislik iki anlamda kullanılabiliyor: Bilimsel bilginin bir şeyler geliştirmek için kullanılması ile bir profesyonel meslek dalı. Birinci anlamın bir sakıncası yok. Örneğin bir problemin çözülmesi için bir program geliştirmek bir mühendislik çalışması olarak görülebilir.

İkinci anlamda ise sıkıntı büyük. Profesyonel mühendislik, tıpkı doktorluk ya da tesisatçılık gibi bir meslektir. Denetime bağlıdır, mesleği yapanlar bir oda ya da kuruma kayıtlı olmak ve belli yeterlik şartlarını yerine getirmek zorundadır. Bunun amacı da, örneğin evinize patlama riski olan bir doğalgaz borusu bağlanmasını ya da iki inşaat mühendisinin aynı bina için farklı statik hesapları vermesini önlemektir.

Böyle bir durum bilgisayar mühendisliği için iki nedenden anlamsız. Birincisi bu bir profesyonel meslek değil, bir bilim dalı ve bu bilgiye herhangi biri sahip olabileceği gibi kendi başına her türlü amaçla da kullanabilir. İkincisi ise yaratıcılığa ve çeşitliliğe açık bu alanda, şu iş bu şekilde yapılır gibi meslek kurallarını üretecek bilgiye sahip değiliz. Evet, bazı tasarım kalıpları (design patterns), ve yazılım geliştirme teknikleri (test tabanlı geliştirme, sürüm kontrolü, vb) icat ettik ama hâlâ genel problemi çözebilmiş değiliz. Bu iş bir bilim olduğu kadar aynı zamanda bir sanat da. Şirketlerin diplomaya sertifikaya değil kendi mühendisleriyle yapılacak mülakata bakmasının altında da bu yatıyor.

Bilgisayar Bilimcisi Program Yazmaz mı?

Bu saçma fikrin savunulmasının ardında diplomayı aldıktan sonra yan gelip yatarak para kazanma beklentisi var herhalde.

Araştırmacılar için hipotezlerini test etmenin, modellerini incelemenin önemli bir yolu program yazmak. Bazen teorileri ispatlamanın bir yolu bile olabiliyor.

Endüstride ise program yazmayacağım diyen adamı görüşmeye bile çağırmazlar. Google, Microsoft, Apple gibi şirketlerin herhangi bir pozisyonuna girmek için iş görüşmesinde bile program yazmanız gerekiyor.

Bir kişi analiz yapacak, diğeri tasarım yapacak, kalanlar da tasarımdaki fonksiyonları yazacak modeli 60'larda kaldı. Yazılım geliştirme, yazılımların artan karmaşıklığı ile birlikte çok daha dinamikleşti. Tasarım, gerçekleme, test ve hata ayıklama ayrı süreçler değil artık. Takımlar, hiyerarşi yerine birlikte çalışan uzmanlardan oluşuyor.

Elini kirletmeyen biriyle hiç kimse çalışmaz. Okulda ödev olarak yazdığı programlar dışında bir deneyimi olmayan adamın zaten tasarım bilgisi de olamaz. Dahası, bu işlerden bir kaç yıl kopmuş birinin bile tasarım becerisi hızla düşmeye başlar.

Okullu mu Alaylı mı?

Bir başka saçma tartışma. Genelde bu tartışma teorik bilgi mi yoksa pratik bilgi mi gibi yanlış bir düzleme de çekiliyor. O yüzden ikisine de bakalım.

Örneğin elindeki dosyalardan bazı bilgileri tarayıp istatistiksel bir sonuç çıkarmak isteyen bir kişiye Python ile basit betikler yazmaya yetecek kadar bilgisayar bilimleri bilgisi yeterli olabilir. Benzer şekilde bir felsefeci hiç programlama öğrenmeden yalnızca karmaşıklık teorisini çalışarak kendi alanında ihtiyaç duyacağı bilgilere kavuşabilir.

Karşılaşılan herhangi bir problemi çözebilecek genel bir program yazma yeteneği ya da bilgisayar bilimleri alanında yeni bilgiler keşfedebilecek bir araştırma yeteneği için ise üniversite eğitimi programında yer alan hemen her konuyu öğrenmek şart.

Bilgisayarlar bir çok katmandan ibaret. Algoritmalar, kitaplıklar, diller, işletim sistemi, işlemci, transistörler, elektronlar. Bu katmanların hangi seviyesinde çalışırsanız çalışın altınızda kalan kısımlara bağımlısınız. Dolayısıyla işinizi daha iyi yapabilmeniz altta neler döndüğünü bilmenize bağlı.

Teorik ve pratik bilgiden biri daha üstün diyemezsiniz. Daha iyi bir algoritmayla kazandığınız teorik hızı, o algoritmanın işlemci önbelleği kullanımı daha kötü olduğu ve veri setiniz yeterince büyük olmadığı için geri kaybedebilirsiniz örneğin.

Bu bilgileri nereden ve nasıl öğrendiğiniz değil, öğrenmiş olmanız önemli. Dahası dünyanın en iyi üniversitelerinde bile okusanız, işlenen konular ve yaptığınız ödevler sizi bu alanda uzman yapmaya yetmeyecek.

Orko der ki...

Eskiden İstanbul'da her kahvede, satrançta o kahvedeki herkesi yenmiş ama başka birileriyle oynamadığı için Kasparov'u yenerim ben diye böbürlenen tipler vardı.

Ne iş yapıyorsanız yapın, o alanda dünyanın en iyileri kimse onları bulun ve onları tanımaya ve geçmeye çalışın. Bilgisayar alanında bir şeyler keşfetmiş her araştırmacının, günlük yaşamda kullandığımız ürünleri yapan her geliştirici ve girişimcinin, Internet üzerinde blog'ları, sunumları, ders videoları, makale ve kitapları var.

Hayatında büyük ölçekli bir ar-ge projesinde yer almamış, eski ders kitaplarından okuduğu arkaik tanımları öğreten hocaları, yaptığı e-ticaret sitesi ya da muhasebe programıyla kendini girişimci sananları, yabancı dilden yarım yamalak çevirilerle kitap yazanları, forumlarda iki üç soru cevapladığı için büyük üstat havalarına giren tipleri ciddiye almayın.

Yoksa yukarda alıntıladığım kişiler gibi kendi küçük mağaramızda dışardaki dünyanın gölgeleriyle oyalanır dururuz.

Zamanın ruhu

28 January 15, Wednesday @ 14:25

Teknolojik gelişme insan topluluklarının yaşam biçimini kökten değiştirebiliyor.

Mesela tarımın keşfiyle (kabaca MÖ 9000), avcı-toplayıcı göçebe topluluklar yerleşik düzene geçip köy, şehir ve devletleri oluşturdular. Az sayıda kişinin bütün topluluğa yetecek yiyeceği üretebilmesi, diğerlerini günlük yiyeceği toplamak derdinden kurtarıp kral, asker, rahip, bilim adamı gibi sınıf ve meslekleri ortaya çıkardı.

Bu değişimin olumsuz etkileri de oldu. Kalabalık ve sabit topluluklar; dışkıların birikip su kaynaklarını kirletmesi, bulaşıcı hastalıklar, kıtlık ve savaşlar gibi yeni sorunlar yarattı. Ancak, sınıflaşmayla ortaya çıkan bilim ve siyaset; kanalizasyonlar, su kanalları, yönetim ve hukuk sistemleri icat ederek bu sorunları zamanla çözdü.

Sanayi devrimi (18. yy) başladığında dengeler yeniden bozuldu. Kol gücü ihtiyacı düşer ve üretim verimliliği sürekli artarken bir yandan da oluşan katma değeri cebe atan işverenler ile işçileri arasındaki uçurum açılıyordu. Artan işsizliğin pazarlık güçlerini azalttığı işçiler, bir araya gelip sendikalaşarak güç dengesini yeniden kurdular. Günlük sekiz saat mesai, çocuklara işçilik yaptırılmaması, hafta sonu tatili gibi hakları yasalaştırmayı başardılar. Bir yandan da makinalaşmanın getirdiği yeni iş kollarına (makineleri kullanmak, inşa ve tamir etmek) eleman sağlamak için temel eğitim sistemleri ve okullar kuruluyordu.

Bu gelişmeler sayesinde; geçiş dönemindeki isyanlara (mesela Luditler), bir anda oluşan fakirlik ve sömürüye, işverenlerin sendikalara acımasız saldıralarına rağmen, bilişim devriminin (20. yy) başlarına geldiğimizde, en azından gelişmiş ülkelerde, toplumun çoğunluğunu orta sınıf oluşturmakta ve kendine eğitim, iş, sağlıklı ve iyi bir yaşam olanağı bulabilmekteydi.

Bilişim devrimini bilgisayar, Internet, sosyal medya gibi değişik aşamalara bölmenin doğru olmadığını düşünüyorum. Tarımın ya da buhar makinasının icadına karşılık gelen ve herşeyi başlatan olay, Alan Turing'in 1930'larda kendi adıyla anılan Turing makinesini keşfidir. Son derece basit ve soyut bir makinenin yapılabilecek tüm hesaplamaları yapabilmesi o kadar güçlü bir fikirdi ki, çok kısa bir zamanda bilgisayarların, hesaplanabilirlik, karmaşıklık ve kriptoloji bilimlerinin, iletişim teknolojilerinin, otomasyonun ve robotların ortaya çıkmasına yol açtı.

Bilgisayar bilimleri alanında çalışan bir kişi olarak mesleğimin özünün diğer meslekleri yok etmek olduğunu düşünüyorum. Veritabanları, muhasebe ve İK elemanlarını; kendi kendini süren araba, şöförleri; sosyal medya, gazeteci ve siyasetçileri; online eğitim, ögretmenleri; ATM ve POS cihazları, banka katiplerini; Amazon, tezgahtarları; yüksek seviyeli programlama dilleri ve tasarım araçları, programcıları; bulut bilişim servis ve yazılımları, sistem yöneticilerini yok ediyor.

Her gelişme ile başka bir alandaki rutin düşünsel işler ortadan kalkıyor. Tıpkı sanayi devrimindeki gibi, verimliliğin ve işsizliğin birlikte artması söz konusu ve gene aynı şekilde işverenler tasarruf edilen katma değeri cebine atıyor; ancak önemli bir fark var.

Bu sefer, kol gücünden sonra zihinsel iş alanları da kaybolunca; yalnızca eğitimle insanlara verilebilecek yeni bir iş becerisi kalmadı. Kol ve zihin gücü otomasyonla kolayca sağlanırken, çok az kaynakla çok büyük değer ortaya çıkaran tek yetenek yaratıcılık. O da malesef eğitimle aktarılabilecek bir şey değil. Belki bir parça geliştirilebilir ama daha ziyade köreltildiğini görüyoruz. İçinde yüksek miktarda şans da içeriyor. Bırakın toplumun çoğunluğunu, tek bir kişiyi bile alıp sanatçı, girişimci, mucit ya da vizyoner yapamayız. Bu nedenle mesela Amerika'da tartışılan gençlerin STEM eğitimine yönlendirilmesi ya da ilkokullara konacak programlama dersleri gibi önerilerin, bireysel gelişime fayda sağlasa da, işsizliği çözmesi beklenmemeli.

Bu durumun yarattığı eşitsizliği, geçmişte de varolan ve sosyal faktörlerden kaynaklanan eşitsizlikle karıştırıp yalnızca bir gelir dağılımı sorunu olarak görenler var. İşin bu tarafının çözümü kolay: toplanan vergiler, teknolojinin de yardımıyla, her insana temel barınma, beslenme, iletişim ve eğitim imkanlarını sağlamaya fazlasıyla yeter. İnsanların ideolojilerini bir tarafa bırakıp böyle bir amacı gerçekleştirmeye karar vermeleri zor tabi, ama problem bir mühendislik problemi.

Hatta bazı para tüccarlarının büyük servetlerini hiç bir iş yapmadan daha fazla güç ve para kazanmak için kullanabilmesi bile bence ana problem değil. Teknolojinin artan asimetrik gücüyle "disruption" eninde sonunda onları da yenecek. Milyar dolarlık Kodak, Nokia gibi dev şirketlerin, ar-ge de yaptıkları halde, bir anda çöpe gidebildiği bir dünyada yaşıyoruz. Petrol zenginliği bile ufaktan azalmaya başladı.

Ancak, dünyada hâlâ sanayi devriminin fikirsel gelişmelerini bile özümseyememiş büyük halk kitleleri ve devletler varken; böyle bir yeni yaşam biçiminin insan topluluklarında yaratacağı sosyolojik ve psikolojik çalkantının nelere yol açacağı bilinmiyor.

Şu anda ciddi bir tepki ve reddetme var. Eşitsizliğe olan tepki, sorunun kaynağını görmeyip fanatizme ve faşizme dönüşüyor. Irkçılık ve kutuplaşma artıyor. Sokaktaki sıradan vatandaştan, Avrupa Merkez Bankasına bir sürü kişi ve kurum borçlanmayla eski düzeni sürdürebilme derdinde. Siyasal partilerin bu konuda bir söylemi bile yok, ya da sanayi devriminin temel varsayımları çoktan çökmüş ideolojilerini anlatıyorlar. Orta sınıfta durumu henüz iyi olanlar, işsiz ya da az kazanan insanların tembellikten bu durumda olduğuna inanıyor. Değişimi görmeyen gençler mesela Amerika'da hâlâ yüz elli bin dolarlık öğrenim kredisi alıp iş bulma imkanı vermeyecek üniversite bölümlerinde okumaya devam ediyor. Eşitsizliğin olumsuz tarafını sosyal politikalar ile engellemeyi başaran ama olumlu tarafından değer yaratmak için faydalanamayan (göçmenlik ve bireysel girişim konusundaki katılıkları yüzünden) bazı gelişmiş Avrupa ülkelerinin toplam ekonomik gücü zayıflıyor. Daha bir çok örnek sayılabilir.

Hoşlanmadıkları ve birlikte yaşamayı bilmedikleri rastlantısallık, teknoloji ve iletişim tarafından ivmelenerek hızlandırılırken; insan topluluklarının yaşayacağı büyük buhrandan bir ütopya mı yoksa felaket mi çıkacak bilemiyorum.

Tek bağlı liste

27 January 14, Monday @ 00:25

Tek bağlı liste (singly linked list), kolayca göz ardı edilebilecek basit gözüken bir veri yapısıdır. Aslında onu bir çeşit yönlü çizge (directed graph) olarak düşünmek daha doğru ve programlanmasında birçok ince nokta var. Belki de bu özelliğinden dolayı programcılara iş görüşmelerinde sık sık soruluyor. Bugüne kadar karşıma çıkan sorulardan bir derleme yaptım. Eleman ekleme gibi temel işlemler ya da tek bağlı listenin özelliklerinden bağımsız genel sorular yok. Eğlenceli ve öğretici olacağını tahmin ediyorum.

Çözerken (C dili için)

struct node {
    struct node *next;
    void *data;
}
gibi minimal bir şekilde tanımlanmış bir liste varsayabilirsiniz. Problemlerde istenen O(1) kabaca liste uzunluğundan bağımsız olarak sabit miktarda, O(N) ise listenin eleman sayısıyla orantılı bellek ya da işlem sayısını belirtiyor.

  1. Verilen listede sondan k'ıncı (mesela beşinci) elemanı döndürebilir misiniz? İdeal çözüm O(1) bellek, O(N) işlem. Bu ısınma sorusuydu :)
  2. Verilen listede dairesel bir döngü (bir eleman sonraki eleman olarak önceki elemanlardan birini gösteriyor) olup olmadığını bulun. O(1) bellek O(N) işlem. Bu çok sık sorulan bir soru.
  3. İki tane liste veriliyor. Bu listelerin birleşip birleşmediğini, eğer birleşiyorlarsa sondan kaçıncı elemandan itibaren birleştiklerini bulun. O(1) bellek O(N) işlem.
  4. Çift sayıda eleman içeren bir liste veriliyor. Listeyi bir eleman ilk yarısından bir eleman da ters yönde olmak üzere ikinci yarısından sıralanacak şekilde değiştirin. Örnek olarak eğer 1->2->3->4->5->6 listesi verilmişse bunu 1->6->2->5->3->4 haline getireceksiniz. Yine O(1) bellek O(N) işlem. Bu sorunun listeyi olduğu gibi ters çevirme ya da her k elemanı ters çevirme gibi değişik halleri sıklıkla soruluyor.
  5. Dairesel (son elemanın bir sonraki eleman olarak ilk elemanı gösterdiği) bir listede, herhangi bir elemana ait bir işaretçi veriliyor. İşaretçinin gösterdiği elemanı listeyi bozmadan silebilir misiniz? Bellek kullanmadan ve O(1) işlemde!
  6. Bir önceki sorunun çözümü dairesel olmayan bir listede çalışır mı? Hangi koşullarda çalışmaz?
  7. Peki eğer node yapısına ek bir bilgi (ama işaretçi falan değil, o zaman çift yönlü listeye döner) koyarsak bu koşulları da çözebilir miyiz? Bellekte node yapısının kapladığı yeri büyütmeden bu bilgiyi koymanın bir yolu var mı?
  8. Yine aynı soruda, işlem sayısı limitini kaldırırsak, dairesel olmayan liste için soruyu çözmek mümkün mü?

Sorularda anlaşılmayan yerler olursa yorumlarınızı bekliyorum. Tek bağlı listelerle ilgili yukardaki kriterlere uyan başka sorularınız varsa onları da yazın. Eğlenceli ve zorlu sorulara ödüllerimiz olabilir :D

Çare yazılım

26 December 13, Thursday @ 21:52

Geçen seneki bir blog yazımda, "nasıl bu kadar yüksek faiz verebildiğimiz ise Türkiye ekonomisinin büyüdüğünü sananları yakın bir tarihte çok şaşırtacak ayrı bir hikaye" diye bir tahminde bulunmuştum. O günden beri olan olayların hiçbirini tahmin edemez, hatta bazılarına söyleseniz bile inanmazdım. Ancak ekonomideki sistemik zayıflığı ve bunun olaylardan olumsuz etkilenme fonksiyonunun konkav olduğunu görüyordum.

Nitekim, dünyadaki olumlu ve olumsuz gelişmelerin ortalamasından en kötü etkilenen ülkelerden biri olduk. Krizin etkilerini her gün şiddetle artan dövizde, seçim döneminde yapılmak zorunda kalınan zamlarda, siyasi çözülmelerde görebilirsiniz. Siyasal krizlerin aşılmasına ve dünya piyasalarındaki olaylara bağlı olarak bir miktar düzelme olabilir belki, ama orta ve uzun vadede bir çıkmaz sokaktayız. Ben herşeye rağmen Türkiye'nin bir şansı olduğunu düşünüyorum. Ancak bu şansı kullanabilmek için önce sorununun nedenlerini anlamak, sonra da bazı büyük değişiklikleri gerçekleştirmek zorundayız.

Üretim out, tasarım in

Dünyada büyük değişimler oluyor. Gelişen otomasyon ve iletişimle birlikte bir çok meslek değerini yitirmeye, her mesleğin kendi içindeki değer dağılımı da az sayıdaki uzmanlara doğru devrilmeye başladı. Çok fazla bilgi, çalışma ve yetenek gerektiren yüksek teknoloji işleri ile vasıfsız olarak da yapılabilecek hizmet sektörü dışındaki çalışanların geçim standartları her gün düşmekte. Hizmet sınıfının para kazanabilmesi için de güçlü bir orta sınıf gerekiyor. Sanayi işçiliğinin ve orta kademe plaza yöneticileri de dahil olmak üzere her meslekten "ara" elemanların gelecekte pek bir değeri olmayacak.

Aynı durum ürünlerin ekonomik değeri için de geçerli. Mesela Cisco ya da Juniper gibi kendini ara katmanda konumlandırmış şirketlerin alt tarafını Çin'de çok ucuza üretilen taklit donanım ürünleri yerken, üst tarafını yazılımla tanımlanmış ağ (SDN) ve genel işlemciler (hatta GPU) üzerinde çalışan ağ yönlendirme teknolojileri yemek üzere. Cep telefonu piyasasının üç lideri de (Google, Apple, Microsoft) aslen yazılım firması. Donanıma göre daha zor olan yazılım alanında rekabet edememeleri, piyasanın eski liderlerinin hepsinin alaşağı olmasına yol açtı.

Böyle bir piyasada Türkiye'nin ucuz işçilik, montaj hattı, ara sanayi gibi çıkmazlara girmeyip, yüksek teknoloji alanında yerine alması şart. Gerçekçi düşünürsek Türkiye'nin nanoteknoloji, biyoteknoloji ya da nükleer enerji gibi alanlarda gerekli altyapıyı, yan sanayiyi kuracak, eleman yetiştirecek, temel bilim araştırmalarını yapacak zamanı yok. Dolayısıyla bir yandan bunları oluşturmaya çalışırken, yatırım karşılığında en fazla değer getirebilecek olan yazılım alanına yüklenmek en doğru strateji olur.

Çevre kirliliği ve aşırı enerji kullanımı yaratan ve karşılığında getirisi çok az olan üretim sektörlerini kapatmak, karnımız doymadan yaşayamayacağımız için de tarımı yeniden canlandırıp cari açığın parçası (bkz: simit zammı, susamı bile ithal ediyoruz) olmaktan çıkarmak da bu stratejinin tamamlayıcısı olacaktır.

Değişen sınıf yapısı

Dünyadaki diğer bir önemli değişiklik ise, aynı ülke içindeki sınıflar arasında böyle uçurumlar açılırken, farklı ülkelerdeki aynı sınıfların birbirinden haberdar olması ve ortak bir zihniyet oluşturması.

Batman filminde, kötü adam Bane, lambayı patlatan Batman'e "sen karanlıkta görmeyi sonradan öğrendin, ben ise karanlığın içinde doğdum" der. Benim kuşağım ve önceki kuşaklar, eposta, sosyal medya, twitter gibi teknolojileri sonradan öğrendi. Oysa bugünkü nesil bunların içinde doğuyor ve onları düşüncelerinin doğal bir uzantısı gibi kullanıyor.

Çağdışı kalmış işadamları hala istikrar istikrar diye debelenirken, genç kuşak silikon vadisinde en çok edilen lafın "disruption" olduğunu, girişimcilerin yıkarak üzerine yeni iş modelleri kurulacak alanlar peşinde koştuğunu görebiliyor. Değişimin hızını gördükleri için istikrar denilen şeyin durgunluk ve geri kalmaya yol açan bir aldatmaca olduğunu farkediyor.

Kısıtlı imkanlara ve bizim toplumda girişimciliğin bir değer olmamasına karşın, gençler çok sayıda yerli girişim başlattı. Doğal olarak, belli bir noktaya gelebilenleri daha rahat kaynak bulabilecekleri silikon vadisine göç ediyor, ancak büyük bir potansiyel olduğu açık. Genç kuşağın dinamizmi ve dünyayla iç içe olması, Türkiye'nin en büyük avantajı.

Bu potansiyeli yazılım alanında bir atılıma dönüştürebilmek için, akademide, özel sektörde ve toplum bilincinde büyük bir hamleye ihtiyaç var.

Akademi ve özel sektör

Bilimin önündeki en büyük engel Yüksek Öğretim Kurumu. Bu kurumun kaldırılıp, üniversitelerin kendi rektörlerini kendilerinin seçmesi, akademik standartlarını, kadro ve bütçelerini kendilerinin belirlemesi lazım. Bilim adamları devlet memuru statüsünden çıkarılmalı, düşünce özgürlüğünün sağlanması için Tenür kavramına benzer bir koruma getirilmeli. Buna karşın akademik hırsızlık işten atılma nedeni sayılmalı.

Tübitak'ın girişim yatırımcılığını ve ürün geliştirmeyi özel sektöre bırakıp, üniversitelerle işbirliği içinde temel bilim araştırmalarına yönelmesi lazım.

Kobi, teknokent vb gibi modası geçmiş kavramları bırakalım. Büroya binaya ihtiyacı olmayan, damga vergisi dahil hiç sabit vergisi olmayan, yalnızca kar üzerinden kurumlar vergisi ödeyen bir "yazılım şirketi" kategorisi oluşturalım.

Yerli melek ve VC yatırımcılara teşvik ve vergi kolaylıkları sağlayalım, hisse opsiyonu, şirket satışları, yatırım girişi, yabancı ortaklık vb gibi konularda yasal sorunlarını çözelim. Kickstarter gibi toplumsal finansman modellerini yasal düzenlemesini yapıp yaygınlaştıralım.

Beyin göçü

Para ve insan kaynağı ayırarak ortalama eğitim seviyesini yükseltmek mümkün. Ancak ne yaparsanız yapın mesela Elon Musk gibi ülke ekonomisine milyalarca dolar değer katabilecek bir adam ancak şans eseri ortaya çıkıyor. Dolayısıyla bu insanları elde tutmak ve hatta ülkeye çekmek çok önemli. Yabancı bilim adamı, mühendis ve girişimcilere sunacak kolay bir çalışma izni ve vatandaşlık imkanımız olmaması bir eksiklik.

Musk da, Google'ın kurucularından Sergey Brin de Amerika'ya göçmen olarak gelmişler. Bugün ise Amerika'da göçmen vizelerine karşı, artan işsizlik kaynaklı bir hoşnutsuzluk var. Siyasi güçleri fazla olmasa da, diğer sorunlar arasında vize ve göçmenlik işlerini kolaylaştıracak yasa değişikliklerini ya da kota artışlarını yavaşlatmayı başarıyorlar. Bu, değerlendirmeyi bilen ülkeler için çok büyük bir fırsat olabilir.

Yerli olsun, yabancı olsun, beyin gücünü getirebilmek için gereken şeyler belli. Yaşanacak güzel bir coğrafya konusunda Türkiye çok şanslı bir ülke, ancak İstanbul ulaşım sorunu, pahalılığı ve gittikçe çirkinleşen yapılaşmasıyla bu avantajını kaybetmekte.

Bir diğer etken para. En kolay çözebileceğimiz de bu bence. Türkiye'de para yok değil, yalnızca AR-GE'yi gereksiz gören bir zengin kesim var. Spekülatif para kazanma yolları engellenir ve VC şirketleri/fonları teşvik edilirse o paranın girişim yatırımlarına akması çok kolay olur.

Burada tabi daha önce yapılan hatalar yapılmamalı. Mesela bir tersine beyin göçü programı oldu. Türkiye'ye dönen bilim adamlarına iki yıl boyunca az bir ek para veriliyor. Bu tür bir programı ya zaten geri dönmeye karar vermiş, ya da yetersiz olduğu için yurtdışında tutunamamış kişiler kullanır. Bu kısa süreli paranın, ne alana ciddi bir faydası olur, ne de gerçekten iyi birilerini dönmeye ikna eder. Daha iyi bir fikir, mesela NSF ya da benzeri bir yerden bir araştırma fonu alabilmiş kişilere gidip, aynı çalışmayı Türkiye'de yaparlarsa iki katı destek ve kalıcı bir kadro teklif etmek olabilir.

En önemli etken ise özgürlük. Başörtülüleri üniversiteye sokmadık. Saçı uzun gençleri dövdük. Kot pantolonla sunum yaptı diye mühendisi azarladık. Telefon numarası 532 ile başlamıyor diye insanları restorana kabul etmedik. Şekilcilik artık delilik boyutuna varmış durumda. Amerika'nın en büyük gücü burada saklı. New York'ta milyar dolarlık hedge fund yöneticisi ile evsiz bir adam aynı metroya biner, aynı parkta çayını içer. Bir ürünü sunmaya canlı yayına çıkan CEO normal bir kazak giyer. Açık kapalı, istediği kadar çılgın giyinmiş olsun kimse yoldan geçen bir diğer kişiye gözünü dikip bakmaz.

Kimsenin nasıl yaşadığına --yorum yapmak dahil-- karışmamamız gerektiğini, farklılığın bir güç olduğunu, teknolojik ve ekonomik gelişmenin ancak bir özgürlük ortamında olabileceğini kavramamız ve tektipleşmenin sonunun toplu yokoluş olduğunu görmemiz gerekiyor.

İstatistiği sağduyu olarak kullanmak

29 March 13, Friday @ 13:50

Filmi de çekilen Moneyball kitabının yazarı Michael Lewis, geçen sene Princeton Üniversitesinde bir mezuniyet konuşması vermişti. Tamamını dinlemenizi öneririm, özetle insanların başarılarını ve geldikleri konumları büyük oranda şanslarına borçlu olduklarını ve kendilerini başkalarından daha fazla hakka layık görmeden önce bunu bir düşünmelerini söylüyor.

Şansın etkisini fark etmek için bilinçli bir çaba gerekiyor. Öncelikle egomuz aldığımız eğitimi, çevremizin katkılarını, toplumdan gördüğümüz desteği unutup gözümüzü sadece kendi özelliklerimize dikiyor. Sonra da hikaye anlatmaya olan düşkünlüğümüz, olayları geriye dönük açıklayan, zaman içinde gelişen taraflı yaşam hikayeleri yazmaya başlıyor.

En büyük çok uluslu şirketlerin yöneticilerine bakın. Yakın zamanlara kadar bunlar şirketin en alt kademelerinde işe başlayıp otuz sene her kademede çalıştıktan sonra şirketin başına geliyorlardı. Bugün ise neredeyse üniversiteden çıkar çıkmaz CEO olarak işe başlayan insanlar var. İşe alım kriterleri başarıdan ya da bilgi birikiminden ziyade okulda kimin arkadaşı oldukları. Bunu mühendis seçerken yapılan binlerce görüşmeyle kıyaslayın.

İşin komiği performans değerlendirmelerinde girişim (startup) değerleri kullanmaları. Girişimciler için şirketi kurduktan üç ila beş yıl içinde şirketi satmak ya da benzeri bir çıkış yapmak normaldir. Kurumsal bir firmanın yöneticisini de bu kadar kısa zaman aralığında değerlendirirseniz, adamın yapacağı iş, bol miktarda adam çıkarmak, uzun vadede şirketin batmasına yol açacak işler yapıp günlük değerleri yüksek göstermek ve üç yıl sonra bonusunu alıp gitmek olur.

Havadan zengin olan, koskoca şirketleri aptalca kararlarla batıran adamlar, aldıkları bonus yetmiyormuş gibi bir de tavsiye vermeye kalkıncalar gülünç oluyor. Başarının sırrı çok çalışmakmış, sabah erkenden işe gelirlermiş, vb vb. Ortalık, liderlik sırları, falanca kişinin iş kuralları, kariyer yapmanın on kuralı gibi zırva yazı ve kitaplardan geçilmez hale geldi. Hele kendi avantajlarını ve yaşam kolaylıklarını unutup, utanmadan ben doğum yaptıktan sonra bile toplantıya girdim, çalışanlardan da aynı şeyi beklerim gibi mesajlar verenler işin tadını kaçırıyor.

Sahip olduğumuz her özelliğe bilgiye ve deneyime karşın, dünya üzerinde aynılarına ya da daha iyilerine sahip en az bir milyon kişi var. Medya yalnızca başarılı (=şanslı) olan azınlığa odaklanarak istatistiksel sapmaya yol açıyor ve palavra hayat hikayelerine inanılırlık sağlıyor.

Büyük organizmaların bu aptallığı aslında iyi bir şey, doğal gelişime yer açıyor ve hantallığın ölüp gitmesini sağlıyor. Biz şansın temel faktör olduğu bir ortamda bundan nasıl faydalanılır ona bakalım.

Olasılık konusunda yazan çağdaş filozoflardan Nassim Taleb bize bunun ipuçlarını veriyor. İlk adım, bir şeyin kendisiyle o şeyin bir fonksiyonu arasındaki farkı kavramak.

Bilmediğimiz faktörler sonucu gerçekleşen olayları altı yüzlü bir zar atışıyla ifade edelim. Diyelim ki, attığımız zar sonucu gelen rakam kazancımız olacak. Hilesiz bir zarda beklediğimiz ortalama kazanç (1 + 2 + 3 + 4 + 5 + 6) / 6 = 3.5 olacaktır. Bu, olumlu ve olumsuz faktörler birbirlerini dengelediğinde, yani %50 başarı elde ettiğimizde elimize geçecek kazançtır.

Şimdi ise kazancımız zarın direk değeri değil bir fonksiyonu olsun. İlk önce konveks bir fonksiyon olan f(x) = x*x kare fonksiyonuna bakalım. Beklenen kazancımız (1*1 + 2*2 + 3*3 + 4*4 + 5*5 + 6*6) / 6 = 15.17 olacaktır. Bu değer zarın kendi beklenen değerinin karesinden daha büyük (3.5*3.5 = 12.25) bir değer. Böyle bir durumda ortalamanın altında kar etmemiz için faktörlerin büyük kısmının olumsuz gitmesi gerekecektir.

Eğer konkav bir fonksiyon olan f(x) = kök(x) karekök fonksiyonun seçersek, beklenen değer bu sefer (kök(1) + kök(2) + kök(3) + kök(4) + kök(5) + kök(6)) / 6 = 1.80 olur ki, zarın kendi beklenen değerinin karekökünden (kök(3.5) = 1.87) daha küçük bir değerdir. Bu durumda ise ortalama kar yapabilmemiz için faktörlerin büyük kısmının olumlu gitmesine ihtiyacımız var.

Jensen eşitsizliği adı verilen bu durum, mesela ar-ge projelerinin neden hep geciktiğini bize açıklıyor. Projenin eksi zamanda (daha başlamadan önce) bitmesi söz konusu olamayacağına göre, bilinmeyen faktörlerin etkisi konkav (süreyi daha uzatacak tarafa doğru meyilli) bir fonksiyon. Bu durumda da gecikme olmaması için planlama aşamasında bu faktörlerin çok büyük bir bölümünü doğru tahmin etmiş olmak (imkansız bir çaba) gerekiyor.

Taleb'in Antifragile kitabı bu yaklaşımın sağlık, günlük yaşam, ekonomi gibi birçok alanda doğru riskleri almak için nasıl kullanılabileceği üzerine. Biz yine yalnızca girişimlere odaklanalım.

Ar-ge'nin mutlaka gecikeceğini gördük. Demek ki bunu hesaba katmamız, kaynakları tüketmeden, planlarda çok geniş zaman aralıkları bırakarak hareket etmemiz lazım. Paul Graham, Nasıl Ölmemeli? yazısında farklı bir noktadan yola çıkarak benzer bir sonuca varıyor.

İşgören minimum ürünle işe başlayıp, yapılmasa da olacak herşeyi sonraya bırakmak da çok iyi bir strateji. Hem işi basitleştirip bilinmeyenleri azaltıyor, hem de ürün başarısız olursa çöpe atılacak emeği azaltarak kazanç fonksiyonunu olumlu yönde büküyor.

Bir girişimin şansını çok fazla arttıramayacağımıza göre, girişim sayısını arttırarak toplam şansı yükseltebiliriz. Daha incelikli bir strateji birden fazla girişimi paralel olarak götürmek. Yatırımcılar arasında birbirine rakip şirketlere eşit oranda yatırım yapmak epey rastlanan bir durum. Rekabeti bir şirket kazandığında kaybedenlere yatırdığınız ve batan paranız sınırlı iken, kazanan şirketten kazanacağınız miktarın limiti olmadığı için net bir kazanç sağlama olasılığı çok yüksek olacaktır. Bu daha çok yatırımcılara uygun bir strateji gibi de görünse, girişimciler de uygulayabilir.

Okul dönemi boş zaman açısından paralelde bir kaç girişimde bulunmak için ideal. Bir kaç mobil uygulama ya da web sitesi kurmadan mezun olmayın. Okuldan çıkınca yalnızca girişimlere atılmak yerine, tecrübe kazanılacak ama vakit öldürmeyecek makul bir iş bulup, bir yandan para birikimi yaparken, bir taraftan da girişimlerde bulunmak da güzel bir strateji olabilir.

Böyle paralel işler çok yorucu olabiliyor. İnsan beyni de bilgisayar gibi bir önbelleğe sahip, bir işe başladığımızda yavaş yavaş detaylarla doluyor ve hızlı çalışmamızı sağlıyor. Hemen başka bir işe geçince detayları unutup baştan başlıyoruz. Verimliliği düşürmeden paralelliği arttırmak için benim bulduğum strateji işleri atomik parçalara bölmek ve bir parçayı tamamen bitirmeden bir sonraki işe geçmemek. Bir sonraki işi ise farklı bir alandan seçerek sıkılmayı ve yorgunluğu önlemek.

Tabii işin miktarı değil niteliği önemli. O yüzden mutlaka işleri filtrelemek lazım. Yapmayabileceğiniz hiç bir şeyi yapmayın. Emin değilseniz yapmayın gitsin. İş hayatımda önüme acil olarak gelen, bir kaç hafta boyunca ihmal edince de yapılmasına gerek olmadığı anlaşılan bir dolu şey oldu (neyseki hiç birini yapmamıştım zaten eheh). Gerekli ve doğru işler tekrar tekrar ortaya çıkıp kendilerini hatırlatır zaten.

Her şeyi tepkisel olarak planlayıp tamamen bitiş tarihleri üzerine yaşamak, rastlantısal ve keyfi işleri hayatınızdan çıkarıp rastlantılardan etkilenme fonksiyonunuzu olumlu taraftan daraltan bir diğer hata olur.

Bu konuda söylenecek tartışılacak çok şey var ama bu yazı fazla uzadı, artık başka yazılara. Rastgele! :)