Karışık bir kafa, uzun bir yazı

İyi akşamlar herkese.Öncelikle çok klişe bir konu açtığım için özür dilerim.Benzer bir konu açıldığını gördüm ama her insanın soruları farklı oluyor.

Yazılım dünyasına ucundan köşesinden kafasını uzatan bir insanın karşılaştığı en büyük zorluk bence yol haritası çıkarmak oluyor.Onlarca dil ve teknolojisi arasında ne yaptığını bilemez bir hale girebiliyor.En azından bende öyle olmuştu.Çok uzatmadan konuya gireceğim.İki ana başlıkta tavsiyelerinizi bekliyor olacağım.

1)Ben Elektronik ve Haberleşme 4.sınıf öğrencisiyim ve hedefim bir veri bilimcisi olmak.Aldığım derslerde görüntü işleme,yapay sinir ağları,makine öğrenmesi gibi konuların daha çok ilgimi çektiğimi ve başarılı olduğumu gördüm.Bundan dolayı MATLAB’da bu konuları içinde barındıran bir bitirme projesi yazdım.

Ancak okuldaki hocalarımın söylediklerinin aksine MATLAB’ın o kadarda popüler olmadığını gördüm.Bu nedenle bir hedef koydum bu projeyi Python ile yeniden yazacaktım.Udemy’den ve Youtube’dan izlediğim videolarla bu seviyeye yaklaştım diyebilirim.Yani yaklaşık 2 hafta sonra bu seviyeye gelmiş olacağım.

Ve şimdi yazının başlarında bahsettiğim durumu yaşamaya başladım.Peki sonra ne yapacağım?
Bu konuda sizlere danışıyorum.Ben bir veritabanımı öğrenmeliyim(evet ise hangisi)
Linux’mu öğrenmeliyim?Knime’mı öğrenmeliyim yoksa SAS’mı?
Yoksa İngilizce’mi? (şu an ingilizcem B1 düzeyinde)
Bunların birbirinin alternatifi olmadığını biliyorum.Ama şu aşamada bana fayda/zaman en çok hangisi katkı sağlar?
Python öğrenmeyi kesmeyeceğim yukarıda saydıklarımın birisi olmak zorunda değil sadece kafamın çok karışık olduğunu göstermek için bu örnekleri verdim.

2)Aslında yukarıdaki soruyla ilintili bir durum.Okuduklarıma göre iyi bir yazılımcı dil fanatikliği yapmaktan çok o proje için hangi dil daha faydalıysa onu kullanır deniliyor.Buraya kadar gayet güzel.Ancak Python’ı hiç bilmezken araştırırken öğrenmesi en kolay dillerden birisi diye bahsediliyordu.Ancak öğrenmeye başladıktan sonra gördüm ki çok da kolay değildi.Ben daha önce okulda C,Java ve MATLAB gördüm.Bu dillerde en azından kendi okuduğum dönem ve bölüm için en iyisi bendim,hemde açık ara farkla.Yani arkadaşlarımın bütün yazılım ödevlerini (çok zor ödevler değildi) ben yapardım.Bunu anlatma sebebim sizler gibi yüzlerce saat deneyimim olmasa bile en azından bu işin biraz mantığını bildiğimi anlamanız.
Ancak bugün için bildiklerimin neredeyse hepsi uçup gitmiş.Evet birbirine benzer şeyler ama oturup yazamam ezbere.Sizler bu olayı nasıl hallediyorsunuz.?Yani öyle insanlar görüyorumki Cv’lerinde hemen hemen her dil ya da teknoloji var.Benim kariyer hedefim C++,Java ve Python üzerinde uzmanlaşmak.Sizce bu mümkün mü? Evet ise nasıl?

Evet bu konuları aslında bende merak ediyorum. Benimde bu aralar çok karışık aklım. İş ilanlarına bakıyoruz milyon tane farklı nitelik istiyorlar. Ben bir tane dili 1 senede temel olarak zor öğrendim :smiley: Bu yüzden senin gibi aynı kaygıları bende yaşıyorum ama daha kendi içimde kararlar verebilmiş değilim.

Bir dilin önemi yok kendini genel olarak gelistirmelisin bir dil ile yaptığın şeyi diğer dillerde de yaparsın (bazı seyler hariç) yani cv sinde ne kadar dil yazarsa yazsın genel olarak programlamada kötüyse ne fark eder bence yapman gereken pythonu tam ogrendikten ve matlabda yaptığın projeleri tekrar yapmaya çalışmaktan veya proje yapmaktan sonra diğer dillere javaya c++a gecmelisin İngilizceyi de yavaş yavaş gelistirmelisin yani üstüne oturup sadece İngilizce öğrenmeye çalışmak bence saçma (ben in ingilizce forumlar okumaya calisarak geliştiriyorum) birde isletim sistemi olarak Windows ile istediğin bir linux dağıtımını dual boot yapmalisin ki iki ortamda da bulunabilesin birde dilde uzmanlaşmak proje yapmak üzerine kurulu benim düşüncelerim bunlardi

Dil üzerine kariyer değil, teknoloji ve programlama metodolojileri üzerine kariyer yapmayı düşünün. Piyasayı takip edin, kullanılan yöntem ve araçları araştırın. Mesela bu aralar nodejs çok yaygın, bunu kısa bir piyasa araştırması ile görebilirsiniz.

Kendine platform seç,bu platforma en uygun dile geçiş yap.Ardından dili öğren.Dili başlarda sadece seçtiğin platform için öğren.

MATLAB bildigimiz anlamda bir programlama dili degil. Bir firmanin bir urunu.

Goruntu isleme, yapay sinir aglari, makine ogrenmesi, MATLAB gibi konulari kendi insiyatifiyle arastirip ogrenen, C ve Java derslerinde baskalarinin odevlerine yardim eden biri icin hic zor olmamasi lazim. Zor geldiyse arada atlanan temel (ve basit) bir sey vardir gibi geliyor bana. O yuzden soracagim: Nesi zor geldi?

Ne yapmak istiyorsun?
Yillar icerisinde vardigim nokta: Neyi ogrendigin onemli degil, ogrenme istegini, hevesini kaybetmemen onemli.

B1 nasil bir seviye? Mesela surada yazanlari anlamakta gucluk cekiyor musun? Ingilizce teknik dokumentasyon okuyabilme edinecegin ilk beceri olmali. Su anda yapamiyorsan, ona konsantre olmani oneririm.

Linux’u ogrenmek icin vakit harcamaya gerek yok. Kullanmaya baslayip kullanirken ogrenebilirsin, tahminen aynen Windows’la yaptigin gibi.

Veritabani icin cok bir alternatif yok, PostgreSQL ogreneceksin. Ama genel olarak nasil calistiklari, tablo nedir, iki satir yazip nasil okursun bilmekten otesine gitmene gerek yok. Ihtiyacin oldukca ogrenebilirsin, yeter ki ne ise yaradigini bil.

Aslinda bu butun teknolojiler icin gecerli. Mesela ben Knime ve SAS nedir bilmiyorum fakat simdi gidip iki paragraf okuyacagim. Gunun birinde isime yarayacaklari bir durum olursa “haa, boyle bir sey vardi” diyip girismeye oradan baslayabilirim. (Bir yerde duzenli veri tutmak istedigin gun gidip PostgreSQL’in detaylarini ogrenmen gerektigi gibi.)

Bos vakitlerini bu tur “bu teknoloji neymis acaba, nasil kullaniliyor, kullanmasi ne kadar zor” deneylerine harcayabilirsin. Gidip Python’in operatorlerini, __lt__ fonksiyonunun nasil calistigini ezberlemene gerek yok. Fonksiyon yazip cagirabilecegini, gerektiginde numpy kullanabilecegini, database’lerle konusabilecegini bilmen yeterli.

Kafan her zaman cok karisik olacak. 20+ senedir kod yaziyorum, bildigimden cok seyi unuttum ve kafam hala karisik. Gittikce daha da karisiyor. Mumkun oldugunca fazla seyi yuzeysel olarak ogrenip bildigin diger yuzeysel seylere baglayip konumlandirma bu karisiklikla mucadele etmenin yollarindan bir tanesi. Bir digeri de ilgini ceken, sana faydali olan bir konuyu bulup onda derinlesip kafani disariya fazla cikartmamak. Ben sahsen ikisini de yer yer yapiyorum.

Dogru. Iyi yazilimcilarin onlarca dil bilmesinin sebebi de bu. (Bir noktadan sonra “dil ogrenmek” bir haftasonu aktivitesine donusuyor.)

Universitede sinav kagidina bile

for (int i=0; i<arr.length*; i++) {

*: count olabilir, length() olabilir, count() olabilir...

yazmistim. Bir problemi bir array’in elemanlarini gezerek cozebilecegini biliyorsan, bir programlama dilindeki bir array’in eleman sayisina nasil ulastigin detayi onemli degil. Zaten o sinavdan bugune

for (var elem: arr)

sentaksi geldi, yukaridakinin dogrusu bile yanlis oldu.

Biz bunu bilgisayar kullanarak hallediyoruz, hatalarimizi soyluyor :slight_smile: Internet kullanarak hallediyoruz, yonlendiriyor. Bazen IDE bile kullaniyoruz, kodun yarisini bizim icin yaziyor :slight_smile:

(cok uzadi, kisa kesiyorum, sonra devam ederiz)

Kosarak kac.

3 Beğeni

Ben o python fanatikligini birakamiyorum bir turlu. Az cok java, c biliyorum. Ama yine sonu python’a donuyor. sanirim sorunum oradan oraya ziplamak. Mesela avr ogrenecektim, ertesi gun aklima bir web projesi geldi ve vazgectim. Bunun gibi.

Attığınız dökümantasyonu biraz kelime yardımı ile okuyabilirim.
Yanıtınızdan genel olarak her şeyden temel olarak bil ihtiyacın oldukça onları kullanacaksın kullandıkça gelişeceklerdir gibi bir anlam çıkardım.
PostgreSQL tavsiyesi için teşekkür ederim.Temel birkaç işlemi öğrenmeye çalışacağım.
Zaman ayırıp cevapladığınız için teşekkür ederim.

Merhaba avr ile bir web projesi biraz uzak değil mi birbirine?
Yani bu atlamayı nasıl başarıyorsunuz? Öğrenci iseniz bir nebze anlamlı ancak profesyonel bir şekilde çalışıyorsanız çok zor olmuyor mu?

Evet öğrenciyim elbette. Evet avr ve web birbirinden uzak şeyler. Ben gömülü programlama ile web arasında gidip gelmiştim o zaman. Ama şu an web konusunda sabitim. Ben yeni başlarken Python bilirdim bir tek. Şimdi 100 tane teknoloji var hangisini seçesin kullanasın. Öğrenme hevesimi hiç kaybetmedim ama bu durum yüzünden 3 senedir hiçbir teknolojide doğru düzgün ilerleyemedim. (Python hariç)

Merhaba hocam, bilişim sektörüne ilk kez 1.5 sene önce c ile girdim. 1 ay sonra c++'a atladım. Çok zor geldi html+css devam ettim. Hoşuma gitti Php ile backend yazayım dedim, bunalıma girdim. 1-2 ay boş boş gezdim. 5 ay böyle nasıl geçti hiç anlamadım. 1 sene önce de Python ile çalıştım. O gün bugündür üzerinde çalışıyorum. Bu 1 sene niyatinde temelimi attığıma inanıyorum.

Ve bir konuda fikrinizi almak istiyorum. Ben mesela şuan Django ile çalışıyorum, bir blog yazıp notlarımı tutmak için. Çok fazla derine inmiyorum zorlanırsam hevesimi kırmaması ve vazgeçmemem için. Blogumu yazıp, kaynak kodlarını da Github’a pull edip köşeme geçeceğim. Geliştirme sırasında örneğin bir hata ile karşılaştığımda araştırırım cevabımı ararken başka birşey öğreniyorum ama üzerine gitmiyorum. ‘Hmm şöyle bir kütüphane, araç, vs. varmış’ deyip defterime not ediyorum. Sonrada aynen işime devam ediyorum. Doğru mu bu yaptığım? Bu bende zamanla gelişti ve bir süre sonra sanki öğrenmekten korkuyormuşum gibime geldi.

Ben profosyonel olarak da atliyorum. Bir gun bir vitrin icin Arduino kodu yazarken ertesi gun ayni proje dahilinde bir mikrosite yapmak gerekebiliyor. Ikisinin de yazilim firmalarina verdigim danismanlikla alakasi yok, fakat kendimi tek bir is/meslek ile tanimlamadigim icin bunda bir sorun goremiyorum. Puf noktasi ise korkmadan atilmak. Bunu genelde korkmaya vakit birakamayacak kadar yogun/sikisik projeler alarak yapiyoruz.

Ama dusunursen bir ekmek firini da bir yandan biyokimya ve termodinami ile ugrasirken, diger taraftan dukkan tasarimi ve musteri iliskilerine bakiyor.

Zaten her seyin uzerine giedecek vaktimiz yok, oyle bir donemde yasiyoruz (hem vakit darligi hem de seylerin cogunlugu yuzunden.) Ben de mesela yukarida bahsi gecen KNIME’yi cok merak ettim. Daha dun bir arkadasimla COVID-19 istatistiklerini nasil analiz edebilecegimizi konusuyorduk. KNIME boyle bir is icin uygun bir tool mu onu bile bilmiyorum, onu bile ogrenmek vakit alacak.

Bence karsilasilan araclari not etmek cok guzel bir davranis. Ben kagit yerine kafama not ediyorum, beynin unutma mekanizmasini avantajima kullanmaya calisiyorum.

Bana ogrenmekten korkuyormussun gibi gelmedi. Daha cok hayal kirikligi yasamaktan* korkmak sanki. Sunu fark ettim, hayal kirikligi yasamaktan korkmak ile hayal kirikligi yasamak arasinda pratikte hic bir fark yok.

Ayni mantikla, “ogrenmekten korkuyorum” yerine “ogrenmiyorum” da kullanabilirsin sanki. Hem psikene (psişene? “psikolojine”) daha iyi gelir, hem de: Her an bir seyler ogreniyor olmak zorunda degiliz. Bazen insan tarlasina bakmak veya bir forumda insanlarin derdini dinleyip oneri vermek de istiyor.


*: Ing. “disillusionment” daha iyi bir terim. Hayal ile heves kirikligini birlestirsek daha da iyi olabilir.

1 Beğeni

Bunu ben de merak ettim ama cevap gelmemiş.

Hocam merhabalar. Aslında bende çok fazla tecrübem olmamasına rağmen genel programlama felsefesinin birz oturduğunu düşünüyorum. İlginizi çeken kısımlar Python’un çok kullanıldığı yerler.
Ayrıca C ve Java biliyorsanız Python temellerini kolayca öğrenirsiniz. Zaten C syntax.
Kullandığımız dili de kütüphaneye göre seçiyoruz. Zaten kullanım alanı da buna göre şekilleniyor. Python için konuşursak Numpy, Matplotlib, Pandas,openCV gibi silahları var. Olay dili öğrenmek yerine bunları öğrenmek oluyor yani. Çünkü hem C hem de Nesne yönelimli bir dil(java) bilen birisine kütüphane kullanmak kalıyor.