kodlamaya c dili ile başlamak

  • --- spoiler ---

    at gibi potansiyel var yeni nesilde. sabahtan beri mesaj kutumu bombalıyorlar. ben de bu duruma karşı boş duramadım. aşağıdaki başlıklara ilgisi merakı olan herkesi newway adlı slack hesabımıza ve create-new-project adlı kanalımıza bekliyorum. orada buluşalım. ben ve boş boş gezen bir kaç arkadaşım mentörlük yapacağız istekli olan arkadaşlara. bir heves açılmış bir şey gibi görünebilir ama aslında ben bu tarz bir girişimde 5 yıl önce de bulunmuştum. sanırım o zaman yazılım bu kadar rağbet gören bir şey değildi. şimdi herkes önemini kavramış anladığım kadarı ile. umarım yine hevesim kursağımda kalmaz. slack'te görüşürüz. başlıkları ingilizce yazmam gözünüzü korkutmasın. sadece şimdiden yazılımcı diline geçelim istedim.

    software developer
    fullstack software developer
    backend developer
    frontend developer
    mobile android developer
    mobile ios developer
    unity3d game developer
    ai/ml developer
    system and network engineer
    cyber security
    database administrator
    devops engineer
    project manager
    product owner
    ui/ux designer
    illustrator
    designer
    content writer

    yatarak para kazanma, kolay yoldan köşeyi dönme falan vadetmiyorum. para toplayıp paradan para da yapmayacağız. eğer istekli arzulu sayısında belli bir yerlere gelirsek hem yeni bir şey öğrenecek hem de tecrübeleneceğiz. bakarsınız yanlışlıkla bir ve ya birden fazla değer üretiriz hiç belli olmaz. şimdi slack'e kayıt olun. orada yeterli çoğunluğu sağlarsak ilerleriz. yoksa destroy all humans!!!

    buraya kayıt olun

    --- spoiler ---

    programlama dili öğrenirken en önemli unsur ne yapmak istediğinizdir. sizler için web tabanlı uygulama geliştirebileceğiniz programlama dillerini şöyle üstün körü kategorize edeyim.

    türkiye piyasasında hemen backend(arka taraftaki mantık işlemleri) işler bulmak için:
    dil: java
    framework: springboot

    türkiye piyasasında hemen frontend(ön yüzde kullanıcının gördüğü arayüz işlemleri) işler bulmak için:
    dil: javascript
    framework: angular >reactjs > vuejs
    not: burada framework dengeleri çok hızlı değişiyor ama birini bileni diğeri için de işe alıyorlar sıkıntı yok.

    machine learning / artificial ıntelligence işlerine girmek için.
    dil: python
    framework/library: tensorflow

    mobil android geliştirici işlerine girmek için:
    dil: kotlin
    framework: android sdk

    mobil ios geliştirici işlerine girmek için:
    dil: swift
    framework: swiftui

    yenilikçi ve alemin yükselen yıldızı backend işlere girmek için:
    dil: golang
    framework: echo, beego vs.

    yenilikçi ve alemin yükselen yıldızı mobile/frontend/desktop işlere girmek için:
    dil: dart
    framework: flutter

    framework(çatı/iskelet) nedir derseniz; framework dediğimiz şey de bir programlama dilini alıp hangi alanda geliştirme yapılıyorsa o alana uygun geliştirici yazılımcıya kolaylıklar sağlayan bir çok kodu size hazır sunan yapılar. mesela tavsiyelerimin hepsi web tabanlı uygulama geliştirmeye yönelikti ve yazdığım bütün frameworkler ile web tabanlı uygulama geliştirirken bir çok yardımcı kütüphane(kodlar bütünü) de beraberinde geliyor.

    aynı şekilde golang ile oyun yazmak için başka başka oyun frameworkler de var. bu da yine yazılımcıya oyun geliştirirken tekrar amerikayı keşfetmesi yerine oturup oyununu geliştirmesine olanak sağlıyor.

    önce ne iş yapmak istediğinize karar verin. ondan sonra da hangi dili öğreneceğinize karar verin. c gibi low level dillerle zaman kaybetmeyin. hele ki akademik geçmişiniz yok ise.

    edit: bir kaç düzenleme yaptım. mobil eklendi. ayrıca bir kaç soru geldi onları aşağıda cevaplıyorum.

    insan gibi davranan muhendis uyarılarıyla terraform yerine tensorflow olarak değiştirildi. hep karıştırıyorum onları.*

    suser-1'in soru ve cevapları.

    1. baska bur bolumde okuyan bir kardesin olarak bu alanda is bulma olasılığım ve maas durumum ne olur?
    2. eksi sozluk tarzi site kurabilmek icin hangi yazilim dillerini bilmem gerekir?
    3. sizce farkli bolum okuyan biru bu ise emek verirse karsiligini alir mi? tesekkurler simdiden.

    1. şu anda çalıştığım ortamda bilgisayar mühendisliği mezunu bir tek benim. kimyacı, fizikçi, matematikçi, turizmci gibi pek çok alandan insanla birlikte çalışıyorum. ki projemizin yazılım müdürü bile bilgisayar mühendisi değil. yani her kes yazılımcı olabiliyor ve boş beleş bir şirket değilse sadece cv'deki tecrübene ya da yaptığın projelere bakıyor. ayrıca avrupada ve amerikada çoğu üniversite bir alanda 8 yıl* tecrüben var ise seni o alana ait lisans mezunu sayıyor. yani 8 yıl yazılımcılık tecrübesi edindiğinde dünyanın en yaşabilir ülkelerinde mühendis olmaya hak kazanıyorsun. yamulmuyorsam ssg de bu şekil microsofta girmişti. ama gönlünüz rahat olsun etikete ihtiyacınız yok bu işi yaparken. sadece bilg. müh. mezunlarının bir kaşıntısı var bu konuda. siz onlara takılmayın. hepsi armut değil gördüğünüz gibi.

    1.5. maaş durumu şu an epey iyi. 5-10 yıllık yazılımcı maaşları 2000-3000 dolar arası değişiyor kazançlar tr'de.

    2. ekşiyi yapmak çok basit aslında. html, css, javascript ile ön yüzünü yazabilirsin. java, golang, python, c# gibi diller ile de arka yüzünü yazabilirsin. postgresql, mysql gibi açık kaynak kodlu veritabanlarında da verilerini saklayabilirsin. linux bir sunucu kiralayıp yazdığın bu web tabanlı uygulamanı da bütün dünyaya açabilirsin. tabi bu işleri düzgünce yapmaya kalktığında işler birazcık daha fazla komplike olmaya başlıyor.

    3. birinci ve ikinci cevap bu soruya da cevap veriyor. mühim olan tecrübe. kimse diplomaya bakmıyor. bakanlarla da çalışmayın zaten. direk vizyonsuz bir şirket olarak bir tik atın yanına. bilg. müh. olarak hemen sorarım yazılımcıların hepsi müh. mü yoksa başka alanlardan insanlar da var mı? benim için turna sol çünkü. başka alanlardan insanlar da varsa bu şuna dalalet eder demek ki bir şeyler üretmek için bir araya gelmiş bir sürü insan var içerde. öbür türlüsü ego savaşlarının olduğu bütün gün toplantıların yapıldığı boş beleş bir kamyon insan bir arada demek. genelliyorum, tabi ki her yer böyle değil ama benim gözlemlerim bu yönde.

    suser-2'nin sorusu ve cevabı:

    soru: hocam ben html ve css genel hatlarıyla temel olarak biliyorum yani ezbere bilmesem de ne yapılması gerektiği hakkında fikir sahibiyim gerek olduğunda da netten yardımla bir şeyler yapmaya çalışıyorum. şimdi ise amacım php öğrenip dinamik web siteleri yapabilmek.

    sence php öğrenmeye devam etmeli miyim yoksa daha basit ve daha kullanışlı olan başka dillere mi yönelmeliyim senin bildiğin.

    el-cevap: işe ilk başladığım yıllarda sorsan sana şu dili öğren, şununla yap, bu uçuyor bu kaçıyor derdim. ama sonra fark ettim ki hiç bir aracın önemi yok. önemli olan şey yapılacak ürünü en hızlı ve en kaliteli şekilde piyasaya çıkarabilmek. bunun yanında da eğer zamanın varsa kendini diğer yazılımcılardan farklılaştıracak yenilikleri araya sıkıştırmak.

    - eğer tek başına bir proje üreteceksen bildiğin yoldan git. ürünü 2 aydan fazla geliştirme ortamında tutma. kör topal kullanıcıyla buluştur. çünkü hedef kitlen ile çıkardığın ürün arasındaki bağı sıcak tutmalısın ve hedef kitlene göre geliştirmelerine devam etmelisin.

    - ama ben piyasaya iş yapacağım diyorsan, sana doğru cevabı kariyer net ve linkedin ilanları verecek. iş ilanlarında senin ilgilendiğin alanla ilgili en çok hangi programlama dilleri, araçları isteniyorsa onlara yönelmelisin. tavsiyem kendi projelerini de bu ilanlarda istenilen programlama dillerine ve araçlarına göre yapman. böylelikle projen elinde patlarsa piyasaya girerken tecrüben olmuş olur.

    ille de tavsiye istersen sektörün istediği; java(springboot), angular, postgresql yerine belki kan getirecek ama golang, vuejs, couchbase ile ilerle derdim, ama sen bana kulak asma en orta yolu ile ilerle; springboot, vuejs, postgresql ile kariyerinin ilk 5 yılını kolaylıkla ve rahatlıkla atlatırsın.

    yatırım tavsiyesi değil, yazılımcı tavsiyesi: springboot, vuejs, postgresql

    suser-3'ün sorusu ve cevabı:
    soru: .net core hakkındaki piyasa durumu nedir? bir de javascript, web alanında java'yı, c#'ı, python'u falan silecek diyorlar bunun bir gerçekliği var mı?

    el-cevap: eski javacı yeni java hater olarak şunu söyleyebilirim. rab gelse java'yı zor kaldırır piyasadan. dünya java'nın omuzları üzerinde koşuyor. dünya derken dünyanın en büyük sigorta şirketleri, bankaları, elektronik firmaları, teknoloji firmaları vs. paranın döndüğü yerlerin yüzde 80'ni* java ile yazılmış durumda. (cern bile java kullanıyor lan) bu dünyanın rabbi para ise, yazılımın da rabbi javadır. on yıldır dünyanın en çok kullanılan programlama dilini bir şey gelecek ve piyasadan silecek demek için kafanın aşırı güzel olması lazım. inanma onlara. çok sağlam bir kaynak değil ama yine de fikir vermesi açısından. son 10 yıllık geçmişi javanın burada. tiobe index

    ayrıca hiç bir şey var olan bir şeyi piyasadan silemez. sadece pastadaki payını azaltır, yıllar içinde de ya değişime uğratır ya da yavaş yavaş kaybolmasına vesile olur. silmek bir an da yok etmek demek. yok öyle bir dünya. ben deneme amaçlı yazdığı koda kıyamayıp yorum satırına alan yazılımcılar tanıyorum. komple bütün projeyi kaldırıp yerine javascript koyacak baba yiğidin adresini ver de tanıyalım.

    javascript ön yüzünden, arka yüzüne hatta veri tabanına kadar tek bir dil ile bütün uygulama geliştirme süreçlerini halletmene yarayan çok güzel bir dil. ama onun da handikapları var. götünü başını typescript gibi supersetler ile yamıyorlar da insanlar biraz daha sıcak bakmaya başlıyor. frontend'e şu an alternatifi yok ama backend'i domine etmesi çok zor. hele o callback pisliğiyle kimse uğraşmak istemiyor.

    .net core güzel geliyor, ama microsoft c# çıları küstürdü benim gözlemlediğim. çünkü keskin değişimleri sevmedikleri için c#'cı bu adamlar. sen önlerine yeniden öğreneceğin bir şey koyunca adam onu öğreneceğime springboot öğrenirim hem daha fazla iş imkanı var diyor. microsoft açık kaynak koda ve linux desteği ile yine gündemde kimse görmezden gelmiyor. yine de açık kaynaktan beslenen yazılımcılara kısa vadede büyük bir kaydırma yaptırması çok zor. uzun vadede ise ön yargıların kırılabilitesine bağlı. bana sorarsan oracle, microsoft, sap vs. bu gibi şirketlerin adını duyunca bir yerden lisans parası sokacaklarmış gibi hissediyorum. o yüzden hiç yüzüne bile bakmıyorum. bu konuda daha microsoftçu arkadaşlara danışmanda fayda var.

    suser-4'ün sorusu ve cevabı:
    soru: hocam sizce yazılımda matematiğin önemi nedir?

    el-cevap: yoktur. ben bir bok anlamam matematikten. her hangi bir dünya klasiğini alıp sıkılmadan okuyan ve anlayan her bipedal homo sapiens yazılımcı olabilir. rasyonel düşünebilmesi ve bir sorunun içindeki bir den fazla koşulu göz önüne alarak cevaplaya bilme yetisine sahip olması yeterlidir.

  • python ile icten yanmali motor ecu'su programlamaya calisani ibreti alem icin plazanin lobisinde sikerler.

    öyle bir dildir.

  • sikişmeye kırbaçla başlamak gibidir.