1 April 2016 Friday

Kodlama değil Algoritma

Danışmanlığını yaptığım bir CRM projesi için, yazılım ekipleriyle konuşuyorduk.

Analizden sorumlu olan uzmana “Dünya’nın büyük yazılım evlerinde, eleman değişimi hemen hiç sorun yaratmazken, bizde her yazılımın bizzat kodlayana bağımlı olmasının nedenini” sordum. Türkiye’de kodlama dersi verildiğini, ancak öncesinde tasarımla düşünme eğitimi verilmediğini söyledi.

Ek olarak, kodlamacıların büyük çoğunluğunun hemen yazılım yapmaya giriştiği, öncesinde planlama yapmadığı (yani algoritmayla düşünmediği) konusunda da – maalesef – mutabık kaldık.

kodlama

Daha önce yazmıştım. 30 seneden beri IT’ye yakın çalışıyorum. Yıllarca “neden yapamayacaklarını” anlattılar. Projeyi dinledikten sonra “Dediğin gibi yaparsak 12 ayımızı alır. Şunlardan vazgeçebilirsen, 3 ayda teslim ederiz” cümlesini ilk duyduğumda, çoktan 10 sene geçmişti. Bu cümleyi söyleyen IT’ci, yurtdışından mezundu.

Sonraki yıllarda bile bu YAPICI cümlelerle pek sık karşılaşmadım.

😉

Diyeceğim şu: Herkese kodlama öğreterek bilişim çağı yakalanmaz. Bugünün dünyasında, kodlamacılar da mavi yakalı olmak üzereler (Bakınız: Hindistan)

Eğer üretken insan yetiştirmeyi amaçlamışsanız başkasıyla çalışmayı bilen, algoritmayla düşünen, veriyi kullanmayı bilen adam yetiştirmelisiniz.

Kodlama bilinmese de olur.

Etiketler: , , , ,

Kategori: bilişim

“Kodlama değil Algoritma” yazısına şu ana kadar 6 yorum yapılmış:

  1. Bu yazıya sosyal mecralarda çok yorum yapıldı.

    FACEBOOK YORUMLARI:
    .
    Tanjan Ozbilgi
    Haklısınız, kod yazmak sorun değil. Önemli olan algoritmayı oluşturmak. Bizde genelde “kervan yolda düzülür” prensibi ve plansızlık olduğu için hep eksik ya da hatalı tanımlanmış algoritma sonradan değiştirilmek zorunda kalır, bu nedenle verimsiz çalışılır. Bir de algoritma ve yazılım süreçleri iyi dökümante edilmediği için kodu yazan bile gerektiğinde değişiklik yapmakta zorlanır. Çünkü süreç takip edilebilir durumda değildir genelde.
    .
    Yiğit Kalafatoğlu
    Uzmanlık devri bitti. Sıra uzlaşı devrinde
    .
    Enver Altin
    Herkesin dusunmeyi ogrenmesi yeterli. Algoritma ve ayrik matematik dusunce sistemleri herkes icin uygun degil, ustelik bu ogrenme/ogretme surecini zorunlu tutarak aslinda cok baska konularda cok yetenekli olabilecek insanlari koreltiyoruz. Ornegin bir sanatcinin bunlar hakkinda dusunmesi bile yaraticiligini koreltebilir. Ama gunluk hayatta ise yarayacak kadar basit akislar uzerinde fikir yurutebilmek herkese gerekli. Daha fazlasi icin mesleklerde uzmanlasma sart. Isi ehline birakmak lazim, ben CRM danismanligi veriyor muyum? 🙂
    Saygilar, selamlar.
    .
    Ayrica kendi yorumumla celisecek bir konudan da bahsetmeden edemeyecegim. Bahsettigim gunumuzun ortalama insani icin dogru, ama bizim gibi rahatsiz insanlarin arzu ettigi gelecegin ortalama insani icin dogru degil. Robert Heinlein bu konuda yillar once yazmisti, henuz onun arzu ettigi gelecege intikal edemedik: Specialization is for insects: https://en.wikipedia.org/wiki/Competent_man
    .
    Uğur Özmen
    Enver bence algoritmayı abartıyorsun. Ayrık matematik noktasına gelmeye hiç gerek yok. İyi bir adres tarifi, iyi bir yemek tarifi de algoritmayla düşünmenin sonucudur.
    .
    Enver Altin
    Hocam, o dusunmenin sonucudur 🙂 Hic kullanilmamis beyinle bir omur yasayip olup giden insanlar oluyor, uzakta da degil, Istanbul’da falan yasiyorlar.
    .
    Uğur Özmen
    Algoritmayla düşünmek öncelikleri, kilometre taşlarını, köşe başlarını ve etkileyen faktörleri düşünmektir. Nasreddin Hoca’nın “Hindi de düşünür” noktasından uzaklaşmalıyız. Özetle algoritma ile düşünmeyi böyle abartmanı anlamakta gerçekten güçlük çekiyorum.
    .
    Enver Altin
    Abartmiyorum, aksine basitlestiriyorum. Gunluk hayatta gerekli olabilecek kadar algoritmanin birkac dakika icerisinde herkese ogretilebilecegini, cogu insanin bunu kendi kendine ogrendigini dusunuyorum, bunun siradan bir dusunme sekli oldugunu dusunuyorum. Algoritma bence ortalama insan icin biraz fazla.
    .
    Duygu Öner
    “başkalarıyla birlikte çalışmayı öğrensin” cümlesi beni benden aldı hocam
    🙂
    .
    Süleyman Sönmez
    Hocam bu sefer katılmıyorum. Nedenini izah edeyim. Kodlamanın herkese öğretilmesinin temel sebebi herkese müzik dersi verilmesi resim dersi verilmesi ile aynı. Büyüyünce ressam mı olacak çocuklar? Hayır bir kısmı olacak. Peki beste mi yapacaklar. Hayır. Neden bu eğitimler temel ölçüde verilir eğitimde? Bunu iyice düşünmeli . Mesleğim gereği birçok kez kodlama eğitimi verdim. Öğrencilerin bunu resim müzik matematik gibi gerekli seviyede görmesi ile iki fayda göreceğiz.
    1) Elimizde ileride programcılık yapma ihtimali olan bireylerimizin sayısı artacak.
    2) Bireyler kodlama öğrenirken yeni bir düşünme şeklini kavrayacaklar. Çünkü kodun sonuçlarını görecekler.

    İlköğretimde nasıl veriliyor kodlama? En başta basit robotları algoritmaya uygun şekilde sağa sola yollayacak adımları tasarlayarak. Eğer sadece algoritma ile kalınırsa gerçek hayat ile bağlantısı görünmeyecektir.

    Gelelim bu hareketin çıkış nedenine. ABD, Çin ile rekabet etmek istiyor. Dünya ile rekabet edebilmesi için çocukluktan itibaren yetişmiş insan gücünü artırmak istiyor. Bu sayı çok önemli. Çünkü olasılık kanunu işliyor. Sadece ilgili olanlar kodlama öğrensin derseniz asla gerekli büyük kütleye ulaşamıyorsunuz.
    .
    Barış Atasoy
    Algoritma konusunda Uğur beye katılıyorum, yani katılıyorum demek zaten saçma, gerçek bu smile ifade simgesi Algoritma, algoritmanın neyi düzenlediğine göre karmaşıktır ya da değildir. Bipedal bir robota yürümeyi “söylemek”, sensör verilerini işlemek, feedback control, eklemlerin doğru sırayla hereketi vs gibi şeyleri çıkardığınızda, “önün boşsa sağ adım at, düşmediysen ve önünde bir engel yoksa sol adımı at ve tekrarla” kadar basitir. Bunun “karmaşık” olması ile robotik ile ilgili husus, süreçle değil. Mesela, bu basit algoritmayı hayatına uygulayamayan 75 milyon filan bipedal manda yaşıyor bu ülkede. Çukura düşüyor ölüyor, otobana çıkıyor ölüyor, vs. Herkesin kodlama öğrenmesi cidden SAÇMA olur. Yani, bu tam olarak, “eh, fikrin olmasa da Türkçe biliyorsun ya, her konuda konuşabilirsin” demek gibi. Ben ilkokuldan beri kod yazıyorum. Kodlama öğrenmek, zaten 1-2 dil biliyorsanız ve omurilik soğanıyla yaşamıyorsanız (Türkiye nüfusunun %70’i filan gibi) zor birşey değil. Hatta şöyle diyeyim, algoritmayı çıkardıktan sonra, çok spesifik bir iş yapmayacaksam, platform da bildiğim dillere izin vermiyorsa, “yeni bir dilde yazmak” benim için en fazla birkaç günlük bir intibak süreci. (Doğal olarak, 10 senedir kullandığım dilden 10 kat daha yavaş oluyorum, ama konunun özü bu değil zaten)
    .
    Beynini kullanmayı öğretmediğin, zaten “hardware” olarak da bugları olan bir yapıya, “dünyada bu moda” diye birşey öğretmeye kalkmak (muhtemelen de bilmediğin bir şeyi) tam da milli bir hastalığımız zaten.
    .
    Uğur Özmen
    Benim yerime Barış Atasoy yanıtlamış. Hindistan’da kodlamayı iyi bilenler bile mavi yakalı. (Hani kısa sürede yerini – belki de kendilerinin yazdıkları – yazılımların alacağı kişiler.)
    .
    Barış Atasoy
    Süleyman bey,
    “2) Bireyler kodlama öğrenirken yeni bir düşünme şeklini kavrayacaklar. Çünkü kodun sonuçlarını görecekler.” kısmına kesinlikle katılmıyorum. “Kodlama” kelimesini “mantık” ile değiştirip okuyun. İnsanlar mantık kullanmadan kodlama da yapamaz (birşeyleri hareket ettirp rengini değiştirmek gibi şeylerden bahsetmiyorsak) “yaptıklarının sonuçlarını da anlamazlar”.
    .
    Süleyman Sönmez
    Hocam taksi sürücülerinin yerini de robot arabalar alacak. Siz biz gibi öğretmenler işimizden olacağız. Yeni işlerde çalışacağız Öğretmenlik bitecek. Doktorlar yerine kusursuza yakın teşhis koyabilen anında röntgen çeken 🙂 robotlar gelecek. Ressamlar yerine daha şimdiden resim çizebilen yapay zeka yazılımlar Google çatısında çalışıyor. Gelecekte singularity denen robotların bizi ekarte edebileceği zaman olgusu her yapılanı değersizleştiriyor. Ancak her şeyde olduğu gibi daha en az 20 sene kodlama iş görecek gibi görünüyor. Matematiğin, Tarihin Din Kültürünün Müziğin öğretilmesi gibi kodlama da öğretilmelidir temel özellikleri ile..
    .
    Barış Atasoy
    Akıllı insanların “robotlara öğrenmeyi öğrettikleri” gibi, biz de öğrenmeyi öğrenirsek, gerçekten işe yarar bir tür olabiliriz. Ben insanlığı kozmolojik olarak baktığımda, yararsız ve istilacı bir tür olarak görüyorum. Biz olmasak dünya daha iyi bir yer olurdu diğer canlılar için. Singularity denen şey de bana aslında çok yüzeysel geliyor; zira aslında bu gelşmeler bizi daha çok bir ayrıma götürecek; yok mu olacağız, yoksa “makul ve mantıklı” bir tür olarak, zoraki bir şekilde evrimleşecek miyiz? Zaman içinde öğrendik ki, insanın doğayı değiştirme ve paternleri anlama yetisi olsa da, işe yarar, makul ve iyi yaşamamızı sağlayacak bir ahlak, toplumsal ve ekonomik bir yaşam geliştirememek şöyle dursun,binlerce senedir bir takım soyut saçmalıklar yüzünden kendimiz dahil herşeyi yokediyoruz. (İnsan türünün yarattığı yapay zekanın 24 saatten az sürede Hitler’e benzediğini gördük; bu olayın yüzeysel ve magazinel bir tarafı olsa da) Bu yüzden, kendi mahsulümüz olan robotlarla birleşip daha mühim bir varlık, yeni bir form olacağımızı sanmıyorum; ancak, Frankenstein’i yaratan hasta ruhlu doktor gibi, yeni form da bizim daha da hasta bir halimiz olur.
    .
    Uğur Özmen
    Matematik, dil, düşünce sistematiği, toplum içinde davranış (ahlak da bunun bir parçası) ve estetik (resim ve müziği kapsıyor) öğretilmeli. Diğerleri konusunda kesinlikle aynı fikirde değilim. Çocuklara Tarih ve Din öğretmenin faydalı olacağına hiç inanmıyorum. 18 yaşından sonra, meslek olarak isteyenin öğrenebileceği şeyler bu ikisi.
    .
    Bana gelince, bir meslek öğretmiyorum. Videolardan dinleyip evde kendisinin pratik yaparak öğreneceği bir bilezik değil benim anlattığım. Nasıl düşünülmesi gerektiğini öğretiyorum. Öğrenmeyi, hatalarından ders almayı, tekrar öğrenecek bilgi üretmeyi öğretiyorum.
    .
    Serkan Ugur
    Hocam zihinsel anlamda Türkiye’ye fazlasınız
    .
    Atif Unaldi
    Ceddine rahmet
    .
    Serkan Deniz
    Ben sozelciydim hocam. Napayım ? En yakın köprüden atlayım mı?
    .
    Uğur Özmen
    Ben de İşletmecilik mezunuyum.
    .
    Gokhan Gorali
    Başka bir açıdan bakınca: https://www.linkedin.com/…/learning-code-yields…
    Learning to Code Yields Diminishing Returns
    linkedin.com
    .
    Kutadgu Arslan
    Aynısının daha uzunu
    🙂
    .

  2. Sosyal Medya Yorumları devam ediyor:

    LiNKEDIN YORUMLARI:
    .
    Erkut Göksel ÇINAR

    Çok uzun süre özellikle C++’da kodlama yapan ve ekip yöneten biri olarak demekteyim ki : “başkasıyla çalışmayı bilen, algoritmayla düşünen, veriyi kullanmayı bilen adam yetiştirmelisiniz” sözünüz gerçekten çok önemli.
    .
    Onur Polat

    Aynı fikirdeyim…
    .
    M. Murat Albayrakoglu

    Neredeyse 12 yıl boyunca, öğrenmeyi öğrenebilecekleri en uygun zamanda, beş şıklı kısa sorudan ötesini öğrenme ihtiyacı olmamış kuşakları, üniversitede de kazanamayıp ortaya salınca, mevcut duruma şaşırmamak gerek. Eğitimin başaramadığı (belki de “yapmadığı” demek gerek) şeylerin yükünü de hem kurumlar, hem de ülke çekiyor. Ağla sevgili yurdum…
    .
    Ugur Ozmen

    M. Murat Albayrakoglu Operations Research dersinden kaçmayı tercih edip ERP eğitimi almak isteyen öğrenci gördüm. Çocuğa çelişkisini anlatamadım. Çok haklısın.
    .

  3. Sosyal Medya Yorumları devam ediyor:

    TWiTTER YORUMLARI – TARTIŞMALARI:
    .
    Cemil Şinasi Turun ‏@Jetwell
    Katılıyorum Uğur Abi’ye.
    🙂
    .
    Orçun Madran ‏@orcunmadran
    @ugurabi araç ile amaç yine karışmış durumda. Kodlama bir araç aslında belirttiğiniz amaçlara ulaşabilmek için. Buna da şükür diyebilir tabi
    .
    sdtkcdgn ‏@skocadogan
    @ugurabi Birey kodlama öğrenir/yapar(ken)algoritmik düşünme,birlikte çalışma konularınıda öğrenir.Bunlar yoksa zaten adam gibi kodlayamazki.
    .
    Ugur Ozmen
    @skocadogan Aynı fikirde olmayabilirim değil mi? Birlikte çalışmayı bilen kodlamacıya 35 yılda yüzlerce projede 20 kere bile rastlamadım
    .
    sdtkcdgn ‏@skocadogan
    @ugurabi Ayni fikirde olmak için benden izin almanıza gerek yok elbette.:) Rastlamadıysanızda sizin şansızlığınız ne diyeyim … 🙂
    .
    Ugur Ozmen ‏@ugurabi
    35 yıl ve yüzlerce proje süresince rastlamadıysam, sadece benim şanssızlığım değil söylediğin gerçek olmadığından olabilir @skocadogan
    .
    Sdtkcdgn ‏@skocadogan
    @ugurabi peki siz bilirsiniz diyelim.
    .
    ilker ilgen ‏@ilker_ilgen
    @ugurabi @skocadogan Pardus projesi buna en güzel örnektir. Birbirlerinin beyin hicrelerini yemekten yazdıkları tüm kodlar ”ÇÖP” oldu.
    @ugurabi @skocadogan Planlamayı ve grup çalışmayı bilmezler ve kodlarında yaptığı değişiklikler nedeniyle yüzlerce saatlik çalışmalar ÇÖP tr
    .
    Ahmed Şeref Güneysu ‏@asguneysu
    “Yazılımın da mavi ve beyaz yakası var ama resmi çizgilerle ayrılmamış” cümlemi @ugurabi çok güzel açıklamış.
    .
    Erdem Lafcı ‏@erdemlafci
    Mavi yakalı kodlamacılar çok doğru bir tespit
    .

  4. Uğur Bey,
    Bu konuda sizinle hemfikirim. Bu konu hakkında beni düşündüren bazı hususları yazmak ve sizin de görüşlerinizi almak istiyorum.

    “Herkes kodlama öğrenmeli” düşüncesinin dogma kabul edildiği şu popüler videoya bir bakın: https://www.youtube.com/watch?v=dU1xS07N-FA

    Ne kadar coşku verici değil mi? Genel fikir şu “gelişen teknoloji ve bilgisayar programları, hayatımızda daha da etkin olacak bu nedenle kodlama öğrenmek zorundayız” Benim itiraz ettiğim nokta ise doğru dürüst bir neden sonuç ilişkisi kurmadan herkesin kodlama öğrenmesi gerekliliği düşüncesi. Ben mikrodalga fırın kullanıyorum ama faraday kafesini bilmek zorunda değilim?

    Kodlama, çocuklara yeni bir düşünce biçimi kazandırır; deniliyor. Buyurun: http://blog.codinghorror.com/please-dont-learn-to-code/

    “It assumes that coding is the goal. Software developers tend to be software addicts who think their job is to write code. But it’s not. Their job is to solve problems. Don’t celebrate the creation of code, celebrate the creation of solutions. We have way too many coders addicted to doing just one more line of code already.”

    Kodlama, problem çözümü sürecinin bir parçası sadece, asıl olay -sizin ifadenizle- algoritmayla düşünmek.

    Esnaf kafasıyla duruma yaklaşıp “bu işte çok para var” diyenlere şu rakamları gösteriyorum: http://www.myplan.com/careers/top-ten/highest-paying.php

    Gelecek katma değer üreten işlerde. Buna katılıyorum. Ancak bu nedenle “çocukları ne kadar erken programlamayla tanıştırırsak o kadar iyi, programcılığa hevesi olanlar böylece erkenden yol alırlar” düşüncesini anlayamıyorum. Benim zamanımda en popüler meslek elektrik-elektronik mühendisliğydi. O zaman bu düşünceye göre çocuklara o zamanlarda lehimleme teknikleri mi öğretilmeliydi? Katma değer üretecek nesli yetiştirmenin yolu çocuklara kodlama öğretmekten mi geçiyor? Bunun en doğru & verimli yolu bu mudur? Bu konuda herhangi bir çalışma yapılmış mıdır yoksa FATİH projesi gibi doğru dürüst gelecek planlaması yapılmadan çocukların eline tablet verip yaptım oldu düşüncesiyle mi hareket ediliyor?

    Programlamayı kötülüyor gibi görünmek de istemiyorum, şu videodaki adama katılıyorum https://www.youtube.com/watch?v=6XvmhE1J9PY, ama dikkatinizi çekerim, zorlayıcı değil heveslendirici konuşuyor, “ben anlamam, hepiniz öğreneceksiniz” demiyor.

    Zaten itiraz ettiğim asıl nokta da tam olarak bu: Niçin öğrenmemiz gerektiğini söyleyen argümanların temeli yok. Varsa yoksa “öğrenilmesi iyi olur, bütün dünya öğreniyor vs.” Beni en çok şaşırtanlar ise Twitter’da takip ettiğim ve çok saygı duyduğum 60+ üstü akademisyenler. Bütün herkes öyle söylüyor diye “herkesin yürümeyi öğrenmesi gibi kodlama öğrenmesi gerek” diyen akademisyen var. Nasıl yahu?

    Herkes bir coşku seli içerisinde şu havada: https://www.youtube.com/watch?v=FC5FbmsH4fw

    Yapılacak olan uygulamanın nedenlerini merak eden ve bunun doğru mu olduğunu sorgulayanlar ise şöyle(temsili): http://www.paralelsinema.com/wp-content/uploads/2014/11/erol-ta%C5%9F-paralelsinema11.jpg

  5. Bazıları “Herkes araba kullanmayı öğrensin” der. Doğrusu “Herkes araba kullanmayı öğrensin” değil, “herkes trafik kurallarını öğrensin” olmalıdır.

    😉

    Araçları amaç yapmanın, gelişmemiş kültürün bir parçası olduğunu düşünüyorum.

  6. Merhabalar, ben de yaklaşık 4 yıldır aktif bir yazılımcı olarak 3-4 firmada çalıştım ve diyeceğim odur ki burada sıkıntı kişilerde değil şirketlerdedir, Turkiye’deki her işte olduğu gibi yazılımda da sallamasyon ve günü kurtaran teknikler kullanılıyor; kod kalitesi ve okunabilirliği hiçe sayılıyor; sizin bahsettiğiniz firmalarda ise kod kalitesi ve okunabilirliği ilk sırada geliyor ve temiz olmayan hiçbir kod kullanılmıyor. Yapılması gereken management’a ağırlık vermek, fakat ben bunun şu an için Türkiye’de pek mümkün olmadığını görüyorum: çünkü diğer bütün işler günü kurtara kurtara giderken yazılım nasıl 100% planlı devam edebilir ki? Bütün işler birbirine bağımlıdır; misal yazılım projesi tamamlanacak, hemen ama çabuk, koştur koştur bak önceki iş bitiyor bunu yetiştir, bak sonraki işe geç kaldık hadi daha bitmedi mi… gibi alelacele, ne kadar hızlı biterse o kadar iyidir anlayışı değişmediği sürece siz de rahatça yazılımcınızı değiştiremeyeceksiniz. Ha sizin dediğinize geleleim: kişiler planlamayı öğrenirse düzelir mi? Ya hepsi doğru olan farklı planlamalara alışık ise? E gene kodlar sil baştan yazılacak anlaşılmayacak ki, ama şirket standartları olduğu sürece o şirketteki herkes kodunu da yazar, başkasınınkini de anlar, dökümanlarını da oluşturur ve böylelikle yeni gelen yazılmıcı bu işe rahatlıkla, dökümanları da okuyarak yerleşebilir.

Yorum Yazın