Yazılım öğrenmek



Robot yapmak istiyorum.
Program geliştirmek istiyorum.
Yazılım öğrenmek istiyorum.
...
Bu cümleleri kurmuş ve arayış içerisine girmiş bir öğrenci olarak bu yazıya ve buna benzer daha yüzlercesine  çeşitli kaynaklardan ve eğitim sitelerinden ulaşabilirsiniz.
Bu yazıda bu işi size bir öğretmen olarak değil, 2018'den beri gayret gösteren bir öğrenci olarak anlatmaya çalışacağım. 

Bu konulara merakım elbette 10'lu yaşlarımdan beri var. Ancak bizim kaynaklara ulaşmamız o vakitlerde pek mümkün olmadı. Ailemde, okuduğum okullarda, çevremde bu konularla ilgilenen kimse yoktu. Ancak 30 yaşında yazılım dünyasının bir öğrencisi olabildim.


Blok temelli kodlama; yani code.org, scratch, m-block platformlarında en basit hali ile öğrenmeye başladım. Sonra arduino öğrendim. İnternet üzerinde bulduğum hemen her projeyi yapmaya çalıştım. Sonra python ile tanıştım ve eğitimler aldım. Halen yeri geldikçe, yani aklıma bir icat, bir proje fikri geldikçe, ihtiyaç duydukça bunların hepsini kullanmaktayım.

Yukarıda koyu puntolarla yazıp altını çizdiğim kelimelerden söze başlamak istiyorum. Yeri geldikçe, proje fikri geldikçe, ihtiyaç duydukça...


İşte bu üç kavram aslında sizin ilham kaynağınız, çıkış noktanız oluyor.

Yazılım ve programcılık ile ilgilenen pek çok profesyonelden, eğitimcimden duyduğum şu oldu: 

"Ben de yeni şeyleri ihtiyaç duydukça öğreniyorum."


Öncelikle şunu net bir şekilde anlayın. Yazılımcı olmak ezber yapmak değildir. Elbette sık kullanılan hızlı kodlar ezberlenir. Ancak asıl amaç işin yapılış mantığını anlamak.


Öncelikle yapacağınız şey,  hedefinizin, projenizin tam anlamıyla farkında olmak, ulaşmak istediğiniz sonucu net olarak ifade edebilmek, süreci iyi kavramak.

Şu soruyu sorun kendinize: 
Siz ne yapmak istiyorsunuz?
Sonra ikinci soru geliyor. 
Nasıl yapacağım?

Bu noktada hedeflediğiniz işi adımlara ve parçalara böleceksiniz. Sonra bunu, işi yapmasını istediğiniz programa, cihaza, robota, dünyanın en aptal varlığına anlatır gibi adım adım, tane tane anlatacaksınız. İşte buna algoritma diyoruz. Program geliştirmenin en önemli adımı bu, doğru ve güçlü bir algoritma kurmak oluyor.

Bir örnek verelim.

Diyelim ki sabah uyanınca lavaboya girip çıkma işini bir yazılım haline getirelim.
Bir robotunuz var. Ona sabah uyanan bir insanın lavabo ritüelini anlatacaksınız.
Algoritmamız şu şekilde gelişsin:
Sabah oluyor, alarm çalıyor ve robot aktif hale geliyor:


"Alarmı duyunca gözünü aç - Telefonu eline al - Alarmı sustur - Telefonu aldığın yere bırak - Doğrul - Ayaklarını aşağı salla - Varsa terliğini giy, yoksa bir sonraki adıma geç - Ayağa kalk - Yatak odasının çıkış kapısına yönel - Kapı kapalıysa aç, açıksa bir sonraki adıma geç - Odadan çıkınca lavaboya yönel. Lavabonun girişinde kapı kapalıysa aç, açıksa bir sonraki adıma geç - Lavabonun önüne gel - Musluğu aç - Elini suyun altına uzat - Elini yıka - Yüzünü, suya 15cm olacak şekilde yaklaştır - Yüzünü yıka - Musluğu kapat - Doğrul - Havluya uzan - Varsa eline al, yoksa 3 adım sonraki komuttan devam et - Elini kurula- Yüzünü kurula - Havluyu aldığın yere geri as- Geri dön - Lavabodan çık - ..."


Uzatabiliriz. 

Fark ettiyseniz gündelik bir süreçte, karşılaştığımız ama düşünmeden otomatik olarak yaptığımız, sıradan, basit, hemen her şeyi listeliyoruz. Robotumuzun bizim adımıza düşünmesi mümkün değil. Küçücük bir adımı atlasak, örneğin kapıyı aç demesek, kapıya toslar, program çöker. Ya da musluğu kapat komutunu vermesek, musluk açık kalır ve kullanıcı zarar görür. Havlu yerinde olmasa, biz kurulama komutunu versek, robot orada hata verir. Devreler yanar, lafın gelişi:) İşte sağlam algoritma tam olarak bu!


Her program geliştirme platformunda yapılacak işi algoritmalara ayırmak çok önemli. Daha sonra hangi programı kullanacaksanız, sıradaki işiniz onun dilini doğru kullanmak oluyor! 


Her program geliştirme platformunun kendine has kuralları ve yapısı var. Bu temel yapıları ve mantığı doğru bir şekilde anlamanız çok önemli. Bu platformların kodlarını, kurallarını içeren "Documentation" denen siteleri veya dosyaları oluyor. Yani "dokümantasyon". Bu dokümantasyonlarda, kullandığınız platformla ilgili tüm kodlar, kullanış biçimleri örneklerle anlatılıyor. Bu noktada iyi bir okuyucu olmanız, anlayacak kadar İngilizce bilmeniz, ya da o esnada çeviri yapmanız gerekiyor.


Uzun, çaba gerektiren, saatlerinizi, gecelerinizi, uykularınızı harcayabileceğiniz bir dünya! Ucu bucağı olmayan bir dünya!


Düşünün; İyi bir kaptan olmak için dünyanın tüm sularına gitmiş olmak mı gerekir?

Tabi ki hayır. İyi bir kaptan, karşılaştığı güçlüklerden ders çıkaran, her an yeni şeyler öğrenen ve öğrendiklerini iyi yorumlayan, kullanan kaptandır.

Yazılımcıyı da böyle düşünün. Milyonlarca kod ve komut var. Hepsi ezberlerinde mi? Hayır. Ona doğru yerden erişmeyi, bulduklarını işin mantığına uygun kullanmayı biliyorlar. En önemlisi hedeflerini biliyorlar. Defalarca kere hata yapıyorlar, Ama hatalından hep doğru sonucu çıkarıyorlar.

Çok küçük bir yazılım bile yapıyor olsanız, sağlam ve tam bir program yazmanız saatler günler alabiliyor. Yüzlerce hata yapıyorsunuz. Her yeni hata ile programınız daha kusursuz hale geliyor. Mesela bir oyun veya program yüklediniz, ayrıntılarını incelerseniz bir yerlerde Version: V2.1.15 gibi şeyler yazıyor. Bu kodlar, o programın her hatasının sonucunda geliştirilmiş yeni versiyonlarının olduğu, yani sürekli olarak hataların giderildiği ve yeni şeyler eklendiği anlamına geliyor.


Uzun lafın kısası iyi bir yazılımcı olmak için, hatalarından ders çıkaran, pes etmeyen, hedefinden ve yaptığından emin, öğrenme isteği hep artarak devam eden iyi bir öğrenci olmanız gerekiyor. Tıpkı hayatın diğer tüm alanlarında olduğu gibi!

Yani genç arkadaşım, sen bir öğrenci olarak bu işe hepimizden daha yakınsın!


Bu içerik ©İşlem Atölyesi tarafından üretilmiştir.

Sonraki yazı Önceki yazı
Henüz yorum yapılmamış
Yorum ekle!
Yorum url
başa