Bir Kodcu, Bir Programcı, Bir Hacker, Bir Geliştirici Ve Bir Bilgisayar Bilimcisi...

 Bir arkadaşım geçenlerde şöyle bir soru sordu: “Ben nasıl kod yazılacağını öğrenmek istiyorum. Nereden başlamalıyım?”

NASIL KOD YAZILDIĞINI ÖĞRENMEK İSTİYORUM – IKEA’YA MI GİDEYİM YOKSA KENDİ AĞACIMI MI EKEYİM?

Bu ahşap doğrama gibi bir şey. Bir ağacı ekerek işe başlayabilirsiniz. Ardından onu doğrayabilir, zımparalayabilir ve bir masa yapabilirsiniz. Veya IKEA‘ya gidebilirsiniz. Muhtemelen bu ikisi arasında bir yol seçeceksiniz.

Bir WordPress temasını değiştirmek IKEA’ya gitmek gibidir. Fakat kendi web framework’ünüzü yazmak ağacı baştan ekmeye benzer. İşler bu aralıkta nerede olmak istediğinize göre değişir, normal bir mobilya yapımcısından Woodright’s Shop’a kadar birçok yerde olabilirsiniz. Veya başkası tarafından üretilen prefabrik parçaları birleştiren biri olabilirsiniz.

PEKİ, NEREDEN BAŞLAYACAĞIM?

Çok güzel, İnsanlar kod yazmayı öğrenmek istediği zaman her zaman mutlu olmuşumdur. Klasik öneriler:

codecademy.com

KhanAcademy.org/cs

code.org

learncodethehardway.org

Udacity

CodeSchool

Harvard’s CS50x at edX

CoderByte

Ardından sorunun kaynağından daha ilginç sorular gelmeye başlar.

Bir Kodcu, bir Programcı, bir Hacker, bir Geliştirici ve bir Bilgisayar Bilimcisi arasındaki fark nedir?

Bir Kodcu, bir Programcı, bir Hacker, bir Geliştirici ve bir Bilgisayar Bilimcisi arasındaki fark nedir?

Bu sözler belki de size aynı şeyleri ifade edecektir. Belki de geek, nerd ve dweeb isimlerini duydunuz. Fakat hepimiz biliyoruz ki bunların arasında çok önemli farklar var. Bu farkları bilmek ayrıca size, kodlama serüveninizde ne kadar derine gitmek istediğiniz hakkında fikir de verir.

Kodcular – Çözmesi çok zevklidir. İşe yarayacaktır fakat sonrası öyle olmayabilir.

Hackerlar – Genellikle düşük seviyeden insanlar, yeteneklidirler, bazı alanlarda detaylı bir anlama gücüne sahiptirler. Bazen korkutucu derecede derin olabilir bu.

Programcılar – Kod yazarlar ve algoritmaları anlarlar. Genellikle yalnız ve iyi çalışırlar.

Geliştiriciler – En kültürlü kimselerdir. Birçok farklı sistem ve programlama dili kullanabilir ve bunları birbirleri ile haberleştirebilirler. Gerçek ve engin tecrübeli insanlardır. İnsanlarla çalışabilir ve iyi iletişim sağlarlar.

Bilgisayar Bilimciler – Bilgisayarların nasıl çalıştığını teorik seviyede bilmeleri gerekir. Genellikle matematik insanlarıdır.

Eğer bunlardan birine yakınsanız, hangi yöne gideceğinize daha kolay karar verebilirsiniz.

WEB PROGRAMLAMAYI SAYIYOR MUYUZ?

Bu tartışmadaki birçok insan web programlamayı da saydı. Bu mantıklı, çünkü 2016 yılındayız ve herkes internette. Fakat bundan birkaç yıl önce muhtemelen arkadaşımızı yanımıza alıp bir konsol uygulaması yazardık veya bir düğme sürükleyip, bir mesaj kutucuğu ile ‘Merhaba Dünya’ yazan birVisual Basic programı yazardık.

Peki ya Markup kodu? Birçok insan “HTML ve CSS öğrenin” dedi. Fakat ben bunun klasik bir algıda kod yazmak olduğunu düşünmüyorum. Javascript ve Web Servislerine bir geçit olarak görülecek olursa, başlamak için güzel bir nokta. Buradaki önemli nokta, tarayıcıdaki her HTML’in bir web uygulaması olmadığını bilmek ve uygulamaların birbirleri ile bağlantılı olduğunu anlamaktır.  Uygulamalar servislerden veri tüketir, bildirim, mesaj, e-posta ve twitter gönderir. Neredeyse bütün uygulamalar bir şekilde dağıtıktır. Basit bir uygulama olsa bile, o uygulama birtakım veriler için bir web servisi çağırır.

Eğer bugün bir kodcu olmak istiyorsanız, ya da biraz daha bekleyip, efektif kodcuyu dinlerseniz, interneti anlamak isteyeceksiniz ve tarayıcınıza twitter.com yazdığınız zaman neler olduğunu bilmek isteyeceksiniz. Aynı bir marangozun ağaçların nasıl büyüdüğünü bilmesi, bir araba yarışçısının motorların nasıl çalıştığını bilmesi ya da bir tesisatçının suyun nerden geldiğini bilmesi gibi. Eğer verimli bir insan olmak istiyorsanız gerçekten bunları iyi anlamanız gerekmektedir.

“KOD YAZMAK İSTİYORUM” DEDİĞİMİZ ZAMAN ASLINDA NEYİ KASTEDİYORUZ?

Bu sorunun altındaki şey ne? İnternet siteleri yapmak mı istiyor? Yoksa tasarlamak mı? Mobil uygulamalar yapıp onların çalışmasını sağlamak mı istiyor? Garaj kapısını çok aralık bıraktığı zaman ona mesaj atacak bir cihaz mı istiyor? Bunların hepsi farklı birer problem ve her birinin başlamak için güzel yolları var.