Rehber Programlamaya nasıl başlarım?

Forumda artik neredeyse gunde 2 defa "Yazilima nasil baslarim?" konusu acilir oldu. Bu ise bir noktayi koymak gerekiyor gibi dusunuyorum. Bu yazi uzun birikimler ve gozlemler sonucu yazilmistir ama gozden kacirdiklarimi belirtirsiniz. Fazla uzatmak istemiyorum.

"Para icinse olmaz!" Algısı​

-Programlamayı ne için öğrenmek istiyorsun?
+Para kazanmak için
-O zaman öğrenemezsin.

Yukarıdaki diyalogu forumda en az 100 defa gormusuzdur. Nedense "Para icinse olmaz." algisi var yazilimda. Arkadaslar, olur. Bir insan para kazanmak icin de olsa oturup hirslanir, bu yonde dogru arastirmalar yapip kendini biraz zorlarsa bal gibi de olur. Hatta belki de zevk icin yapanlardan daha iyi yapar. Sakin ola "Para icin yapiyorsan isinamazsin." diyenleri dinlemeyin. Bu is bu kadar zor degil. İnsanlara bu dayatmayi yapmayin sayin arkadaslar.

"Hangi Dille Baslamaliyim?" Polemigi​

Arkadaslar programlamaya dair hicbir sey bilmiyorsaniz ve tek satir kod bile yazmadiysaniz size oncelikli tavsiyem programlama temellerini kavramanizdir. Eger matematik temeliniz (Matematikle alakasi yok yazmayin hemen gidip. 3>2'yi bilmekten bahsediyorum.) iyiyse cok daha rahat ogrenebilirsiniz.

Bu konuda birkac tavsiyem var fakat sanirim reklam olacagindan paylasmayayim. Detayi sorulursa paylasirim.

İlk Dil Seçimi​

Tamamdir. Programlama temellerini biliyoruz ve artik "Neden degisken kullaniriz? Neden karar yapilari var? vb." sorulari yanitlayabilir haldeyiz. Yavas yavas tatli pratikler yapmamiz gerekiyor simdi. Bunun icin size weak-typed oldugu icin JavaScript oneririm. Cogu egitmen de genelde programlama temeli anlatirken JavaScript kullanir. Eger ozellikle bir dil ogrenmek istiyorsaniz dogrudan o dille de baslayabilirsiniz ama eger ogrenmek istediginiz dil cok alt seviyeli bir dilse bunu kesinlikle onermem (en azindan kolay dillerle bir pratik yapin).

"Python ile baslayin en kolay dil yahu!" diyecek arkadaslarima sesleniyorum. Python sandiginiz kadar kolay bir degil. Ha tamam ilk basta degisken tanimlamak zevkli, sacma toollar yazmak zevkli. Tkinter falan filan kullanmak zevkli ama class, inheritance olaylarina girdiginizde is bulaniyor birazcik. O yuzden yeni baslayan kisilere Python onermiyorum ama isterseniz o da olur.

Seciminizi yaptiktan sonra o dili anlatan iyi bir hocadan dersinize baslayin. Udemy kursu olabilir, YouTube uzerinden olabilir fark etmez. Eger dil secimiyle ilgili detayli bir rehber isterseniz yazin onu da hallederiz bir sekil.

Sorunlar Yaşamaya Başladım​

"Her sey oradan yazdıgın gibi rahatca olmuyor Schettino!" dediginizi duyuyorum sanirim. Bu asamada problemler yasayacaksiniz. Bunlara biraz deginmek isterim acikcasi.

1-) Learning Hell / Sürekli Video İzliyorum Yapamıyorum

Kendisi "Tutorial Hell" olarak da bilinir. Eger bu sorunu yasiyorsaniz genel olarak surekli tutorial izler durursunuz. Yani bir projeye baslamak istersiniz ve surekli olarak tutorial izlersiniz. Tabii kendiniz kod yazmadiginiz icin aslinda izlediginiz tutoriallarin hicbir ise yaramadigini ve sadece vakit kaybettiginizi anlarsiniz. Ha bir de kod yazmadiginiz icin iyice korelir ve "Ben bunu asla yapamayacagim." dusuncesine kapilirsiniz. Cogu kisi sirf bu sorundan yazilimi birakmistir.

Learning Hell'den çıkamayıp bu işi bırakanlara zaten beceremeyecekti bıraktı derler ama aslında olay farklıdır. Kişi çalışmayı aslında doğru yapamadığı için bu işi bırakır. Belki de çalışmayı bilse çok başarılı olacaktır. Yani size onerim bu islere bir dahil olmaniz. Kodu siz yazin. Takildiginizda videoyu izleyin. Bir de not alayim isine girmeyin arkadaslar. Biyoloji mi bu?

2-) Kodları Aklımda Tutamıyorum
"Uf, ne yazacaktım şimdi?" gibi soruları kendinize çok soruyorsanız kod ezberlemeye baslamıssınız demektir. Kodu mantiginizla yazmiyor, yazilmis kodu ezberliyorsunuz demektir. Bunu da genellikle mantigini tam kavrayamadiginiz seylerde *istemsiz* yaparsiniz.
Eger bu sorunla karşılaştıysanız önce yapmak istediginiz seyi bir kagıt uzerine aktarıp mantıgına uyarak yazmayı deneyin. Eger bunu da yapamıyorsanız temellerde eksiginiz olabilir. Ona dikkat edin.

3-) Bu Dilden Cok Sıkıldım
Yazdıgınız dilden cok sık sıkılıp dil degistiyorsanız maalesef "Learning Hell"e dogru kosuyorsunuz demektir. Belki de aylarca calistiktan sonra 0 bilgi elde edersiniz.
Bu yuzden biraz kendinizi sıkıp bu isin mantıgını kavramaya calısın. Eger o kadar bile sabredemiyorsanız bu is size gore olmayabilir.

4,5,6,7,8,9,...-) Sizin Sorunlarınız
Evet! Bu konunun altına yasadıgınız sorunları yazın sayın geliştiriciler ve geliştirici adayları. Boylelikle herkes faydalanir ve sorunlar cozume kavusur.

Pratik, Pratik, Pratik...​

Kendi dilinizde iyice pratik yapin. Hatta kucukten projelere de baslayin. Ornegin hastane yonetim sistemi, banka yonetim sistemi, oto kiralama sistemi vs. Bunlar sacma seyler gibi gorunebilir ama karsilasacaginiz sorunlari cozmek size tecrube katacaktir. Tabii her sorunda "Hay ben böyle kodun da böyle programın da..." diye başlamazsanız.

İyi Programcılık Yolunda​

Artik iyi kotu bir seyler ogrendiniz. Kendinizi daha da gelistirme vakfi. Bu sahilde bir kum tanesi olmaktan kurtulmanız gerekiyor oyle degil mi? Sizi one cikaracak sey urununuzun (yazdıgınız kodun) kalitesidir.

"Ne demek istiyorsun kardesim hicbir sey anlamadim ya!" diyorsaniz size basit bir ornekle aciklamama izin verin. Elimizde A ve B kodlari olsun. Sizce hangisi daha hos duruyor?
C#:
public class ProgramA{
    public int a = 2005;
    public List<insan> c = new List<insan>();
   
    public static void Run(string[] args){
        runSth();
    }
   
    public static void runSth(){
        insan b = new insan();
        b.year = a;
        c.Add(b);
    }
}
C#:
public class ProgramB{
    public int personYear = 2005;
    public List<Person> Persons = new List<Person>();
   
    public static void Run(string[] args){
        AddPerson();
    }
   
    public static void AddPerson(){
        Person person = new Person();
        person.Year = personYear;
        Persons.Add(person);
    }
}
Sizce de alttaki kod daha hos durmuyor mu? Kodunuzu daha okunakli ve performansli yazmaniz gerekiyor. Bunun icin size cogu dil icin gecerli bazi seyleri soylemek istiyorum.
  1. İsimlendirmeleri İngilizce yapın. (insan değil Person)
  2. Kullandığınız dilin isimlendirme biçimine uyun.
  3. Çok fazla karar yapısı kullanmayın.
  4. Bir şeyin daha pratiği için Google'da araştırma yapın.
Daha detaylı Clean Code rehberi için yine istekte bulunabilirsiniz. Müsait olduğumda yazarım. Tabii C# için.

Artık Orta Seviyedesiniz​

Artık başlangıçtan kurtuldunuz. Programlama temellerini bilen, temiz kod yazmasını bilen, SOLID kurallarını bilen bir yazılımcısınız. Siz artık 1-2 tutorial videosu izleyerek yeni bir dil öğrenebilecek kapasitedesiniz. Hatta tutorial izlemeyi geçin, İngilizceniz iyiyse dokümantasyon okuyarak bile dil öğrenebilirsiniz.

"Ben bir alanda uzman olacağım!" derseniz o alana ait yapmanız gereken şeylere yönelebilirsiniz artık. Eğer en başında bu alana yönelseydiniz "sıradan" Discord botu yapabilen biri olacaktınız. Ama şimdi istediğiniz her alanda rahatça uzmanlığa gidebilirsiniz. Tabii bu süreç de zorlu bir süreç fakat temeliniz sağlam.

Veda​

Arkadaşlar, eger bu isi yapmak istiyorsaniz gayret gostereceksiniz. Baska yolu yok. Gayret gosteren her kim olursa bunu basarabilir. Yazilim ozel muthis zeka falan istemiyor. Eger istese emin olun ki ben bu isi hic yapamazdim.

Bu iste sizin ilerlemenizi en cok engelleyecek sey egodur. Eger egoya kapilirsaniz kendinizi ogrenmeye durdurursunuz. Yazilimda da ego cok gereksiz bir seydir cunku her seyi kusursuz bilmeniz mumkun degil. Bir sistem gelir ertesi gun her sey degisir. Bilginizin bir onemi kalmaz.

Umarim derdimi anlatabilmisimdir. Sadece kendinize guvenin ve sıkı calısın. Gerisi gercekten kolay olacaktir. Ayrica beni actıgınız her yazılım yardım konusuna rahatlıkla etiketleyebilirsiniz. Size yardim etmek beni gercekten mutlu eder.
 
Son düzenleyen: Moderatör:
Yazılım öğrenme fikri zaten bir süredir aklımdaydı. Bu konudan sonra hevesim de iyice arttı. JavaScript için hangi programı önerirsiniz? Arayüzün sadeliği vs. ön planda tutularak.
 
Tamamen içimizden biri gibi açıklanmış bir rehber :D Genelde her şeye uygun, TDK tarzında yazılar okurdukta, bu tam olarak halktan bir açıklama olmuş. Katılmadığım ufak tefek noktalar olmakla beraber sade, gösterişsiz, yeni başlayanlara "ulan bi tam benim düşüncelerimi dümdüz yazmış" tarzında, geliştirilebilir, güzel bir rehber olmuş. Elinize sağlık.
 
Tamamen içimizden biri gibi açıklanmış bir rehber :D Genelde her şeye uygun, TDK tarzında yazılar okurdukta, bu tam olarak halktan bir açıklama olmuş. Katılmadığım ufak tefek noktalar olmakla beraber sade, gösterişsiz, yeni başlayanlara "ulan bi tam benim düşüncelerimi dümdüz yazmış" tarzında, geliştirilebilir, güzel bir rehber olmuş. Elinize sağlık.
Tesekkurler. Kesinlikle daha gelistirilmesi gerekiyor, ben cevreme nasil bu isi anlatiyorsam buraya da oyle anlatmak istedim. Kendi gorusum denilebilir.
 
Programlama öğrenirken kişinin tek motivasyonu eğer para kazanmak ise ilerleyemez, başarı sağlayamaz. Bu bir iddia değil birçok meslek dalında da olan bir şey, CS için daha belirgin sadece.

Bunun dışında genel olarak önerilerin güzel, okuyan kişilere yol gösterecektir.
 

Yeni konular

Geri
Yukarı