5 Tem 2023

Saha Tecrübelerim : C#'a Merhaba, Python'a Elveda.

Herkese merhaba,  

Uzun zamandır iş yoğunluğum nedeniyle blog yazamıyordum.

Mezun olduk, dünya yeni bir çalışma şekliyle tanıştı. Evden çalışmak. 

Sadece çalışma değildi, uzaktan eğitime de göz kırptık. Bir süre boyunca evden, bir süre de hem evden hem de tek odalı ofiste çalışarak geçti. 


Hibrit çalışmak güzel. Kötü yanları yok değil, mesai kavramını unutuyorsunuz, sosyal hayatınız sıfıra yakın ilerliyor. Yaptığınız işi küçümseyenler oluyor, evde olmanız hasebiyle. Gibi gibi işte. 

Gelelim ofise; tek odada makam koltuğum ve uzunluğuyla odanın tamamını işgal eden ağır abimiz bir masa. 

Tam olarak böyle bir ortam da kod yazmaya ve öğrenmeye çalıştım..

İlk iş günümde sigaradan zehirlendim. evet evet yanlış duymadınız, sigaradan içenden içmesine müsaade edeni bir kalemle çizecek bir adam olarak ilk iş günü sigaradan zehirlendim. Daha sonra yetmez gibi tekrar zehirlendim neyse bu konulara girmeyelim. Hadi biraz teknik konuşalım. 

Ne yaptım lan ben ?

  • Python maceram…

Üniversite zamanı nesne tabanlı programlama dili gördüğüm için kendimi scripting dillerinde geliştirmeliyim dedim. 

Nesne tabanlı programlamayı çözdün bu eksik kaldı dimi Mustafa? 

Hedef olarak python ve javascripti koydum. Verilen ödevleri python ile yapıyor, hocalarımın dikkatini çekiyordum.. Bilimsel yönden de zengin olan python aslında diğer sektörler için de biçilmiş kaftandı. Web olsun, masaüstü uygulama olsun.. Araştırma görevlisi bir hocamız (Ahmet) tkinter ile bir app yazdığımı gördü. Nasıl yazdın bunu dedi? Elle dedim elle… Hafif bir gurur yaşamadım değil. 

(evet sürekle bırakçılardan kimler kaldı el kaldırsın, süslü parantezciler burada mı?) 

Arkadaşlarımdan beni ayıran tek bir yetenek vardı, kod yazmaktan internetin altını üstünü getirmekten sıkılmazdım. 

Python iyi güzel hoştu. Bir kaç proje yaptım. Şuan pek takip edemesem de o zamanlar python web ekosistemi Django ve Flask üzerinden yürüyordu. Tabi ki flask’ı kolaylığı sebebiyle kendimi flask üzerinden ilerletmek istedim.. Her juinor'un yaptığı gibi BİLDİĞİM ŞEY EN DOĞRUSUDUR düşüncesiyle ilk proje teklifini flask ile yaptım…

Projenin kendisi de öldü. Paramı bir kısmını alamadım, haram zıkkım olsun. Böyle şeyler yazmak istemezdim ama ilerleyen konularda bu kısmı da değineceğim. Flask'ın hem template'i hem de basit bir şekilde API oluşturabilmesi ile web mantığını çözdüm. 

Daha sonra sahadan çok ayrı gittiğim ilk iş başvurum da anladım. 

Python ne lan diyordu herkes, ne yazılır ki pythonla? 

Buraya flask ile yaptığım design pattern lerin olduğu bir projeyi koyabilirim. Projenin yapısı size ilham verebilir. Kodlamada eksik ve yanlışlar olabilir. github'a linkle beni..

  • İlk şirket, ilk deneme süreci..

Daha sonra .net core ve c# ile tanışmama vesile olan bir firmada deneme sürecine başladım. Sektör de kalifiyeli adam olmadığından veya yaptığım bazı projeler yüzünden c# da hello world bile yazmadığım halde .net core uygulaması geliştirdim. Bunun sebebi birçok dile uğraşmışlığım olarak düşünüyorum. 

(Hadi oradan asgari ücretten hallice maaş istersen böyle olur. firmalar seni kapar.)

Python'daki rahatlığı bildiğim için c# biraz bana o zamanlar zor geliyordu. Hatta söyle bir tweette atmışım.

Yemişim Kurumsal mimarinizi. Python'a yavaş diyenin abv. 

Bu tweetin asıl sebebini şöyle açıklayabilirim. C# ekosistemi windows'dan yürüyordu. Yavaş yavaş linux'a yönelme vardı ya da ben henüz Rider IDE’siyle tanışmamıştım. VSCode C# eklentileri ile kod yazmaya çalışıyorum. Nerede dinamik kod analizi. Hey yavrum hey… Kod yazılsın, run butonu ile çalıştırılsın; çalışması beklensin. İlgili kısma gelindiği vakit hata yaptığın şeyin farkına varırsın onca zaman boşa gitsin. Hatta proje referansını bile console üzerinden veriyordum. Birden fazla proje yok tabii ki çok fazla. Bir de öğrenme sürecinin stresi var üzerinizde. İlk işinizde hem frontend, hem de backend yazmak zorundasınız. Backend yetmez gibi bir de webservis var. 

Gerçekten bir yazılımcının ekmek teknesi, çırağı idesidir, scaffold’udur.. 

yaz kenara yaz lazım olur özlü sözler…

Javascript biliyorum ama frontend teknolojilerine adım atacak hevesim yok. Yeni bir şey öğrenmeye korkuyla yaklaştığım için frontend teknolojilerine girmeye cesaretim yoktu. Dökümanları okuyup kod yazarak öğrenmeye başlayabilirsiniz işte bu hevesi bir kere almak gerekiyor. 

Hatta şu blog da yazdığım tavsiyelerden anlaşılacağı gibi ne olmak istediğimi bilmiyordum…


1 Aylık deneme sürecinde ortaya bir ürün çıkardım. Eh işte çalışıyordu, stackoverflow hataları dışında. :) isteseniz yapamazsınız. Verilen taskları yaptım, benimle birlikte deneme sürecinde olan yeni mezun arkadaşta bu ödevi yapıyordu. Facebook'tan sorularını görüyordum. Spagetti kod yazmaktan dolayı elendim. 1 ay her iki taraf içinde ticari değeri olmayan bir projeyi yaptırmanın gerçekten yararı var mı acaba diye de düşünmeden edemedim. 3,4 ay boyunca hevesim kırılmıştı. Bir süre boyunca pc başına geçmeyi bıraktım. 

Belki de sadece backend veya frontend yazsam daha iyi olabilirdi. 1 ay da her şeyi öğrenip nasıl mükemmel kod yazabilirdim ki?

  • Freelancer maceram

Freelancer derken, şu konulara değinmeden geçemeyeceğim, 

Müşteri size güvensin veya güvenmesin aynı şekilde siz, kapora almadan iş yapmayın!! 

Bu konuda çok canım yandı, bütün suç benim herkesi kendim gibi dürüst zannediyorum. Biraz da projeyi istenilen zamanda teslim edebilir miyim? Edemezsem müşterim mağdur olur mu diye ilk önce para almadan bu projeyi yapabilir miyim diye kod yazıyorum bu bazen 2 saat bazen de 10 sn, bazen de 1 gün oluyor. Projeyi yaptırmaktan vazgeçse boşuna uğraşmış olacağım ama yine de yapıyorum. Daha fazla süren şeyler de oldu olmadı değil. İş takip planı yapın, yaptığınız şeyler için önceden ücret alın, konuştuğunuz şeyler dışında istek gelirse hemen onu paraya dönüştürün müşteri sizi yormasın.

#Flutter

O aralar flutter a kafayı takmıştım. Bir müşterimden ötürü. Flutter ile mobil uygulamalar yazmaya çalışıyorum. Neden flutter? neden java değil? Bilmiyorum 😀  Müşterinin istekleri yüzünden dart diline javascript bulaştırdım. Java yetmiyormuş gibi. Müşterinin isteği yazdığım kod mobil app de çalışsın, çalışsın ki ip engeline takılmasın. Yani app’in içinde crawler işlemi yapıyorduk. 

Yazılımın handikaplarından biri de bence 2 yıllık sektör tecrübesinden çıkaracağım güzel tespit şu soru olmalıydı:

Her şeyi uzaktan yönetme ve kodu düzenlemeye gerek kalmayacak bir kod yazılabilir miydi?

Bu sorunun cevabını 2 yılın ardından sadece fikirsel olarak evet diyebiliyorum. Gerçeğe dökecek ne zamanım ne de hevesim var. Bu fikri scripting dillerde çok kolay yaparsınız ama kodu refactor etmesi çok zor olacaktır. Nesne tabanlı dillerde de yaparsınız artık bunlar imkansız değil.

Baktım proje bitmiyor, flutter ı da bıraktım. Yaptığım onca şeyin ücretini almadan müşteriyi engelleyip para gelen musluğa kör tapa taktım diyebilirim. Biraz da istedikleri şey illegal şeylere kaydığı için bunu yaptım. 

Bilmiyorum bu sorunu (Proje öğrenme süreciyle proje yazmak) başkaları da yaşıyor mu? 

Bu yüzden yaptığım işin çoğu bitmiyorsa bu psikolojiye girerek proje hakkında uğraşmayı daha can sıkıcı buluyorum. 

Çünkü yazdığınız kod size fazla iş çıkarıyorsa yazdığınız kod ya sizi tekrar ettiriyordur, ya da spagetti kod yazıyorsunuzdur. 

  • İş teklifi aldım. 

Tüm bunları yaptım lakin yine de sektörden hep geride kaldım. Hala gerideyim diyebilirim..Sonrası girizgahta belirtiğim şirketten iş teklifi aldım. Şirket daha önce stajını yaptığım şirketti. Hem de abimdi. hocamdı. Stajyer olarak girdiğim firma da stajyer yetiştirmek de nasip oldu. :D Staj dönemi boyunca yaşadığım şeylerin aynısını o stajyer de yaşadı. Bir muhasebe uygulamasının (milattan kalma) eksik kalan kısımlarını düzeltmekle uğraştı. Bir şeyler öğrenmiştir illaki ben de öğrendim lakin stajyerde kendimdeki öğrenme hevesi göremedim. 

Bu şirkette deneme süreci yoktu. Deneme sürecinde bizi zengin?! yapacak bir projeyi yapmak için bir esnafla anlaştım. Hadi lan sitenin şifresini ver, yapacak işimiz (ŞİRKETTE İŞE BAŞLACAĞIM) var diye telefon edince (SALAK gibi bu sözleri söyledim) adam sinirlendi.. Projeye ayırdığım 1,2 hafta heba oldu.. Böyle salak hayaller yüzünden zamanım gitti. Yaptığınız proje illegal şeylere gidiyorsa yapmayın efendim, sonra kesin başınız ağrır. Bir web sitesinden veri çekilecekse o siteden api almalısınız, crawling işi mühendis işi değildir canım, kimin sitesinden kime veri çalıyorsun? 

Bu proje de yalan olunca ağır abimiz masalı olan odada iş teklifi aldım. Hiç fiyat pazarlığı yapmadan kabul ettim. Çünkü bir yerden tecrübe biriktirmek istiyordum.

Şirkette tek tabanca onlarca proje yazdım.. Vue.js'e merhaba dedim.

Vue’ ile milyon tık alan proje yaptık. Yaptığımız proje ana sayfası html satırı on binleri geçti. component hak getire. Çünkü projenin hem backendcisi, hem frontendcisi, hem de db tasarımcısı rolündeydim. İş teslim süresi kısa olunca bu konulara dikkat ederseniz afedersiniz; proje yetişmez.. Bana solid diyemezsiniz.

  • Tavsiyeler

DB tasarımı çok küçümseniyor. Proje büyük olsun, küçük olsun db düzgün tasarlanmadıysa o iş hep geçikir. Silme senaryoları, bir alanın null veya boş string olması gibi bazılarının çok da umrumda olmadığı şeyler benim için bir projenin can damarı idi.

Staj zamanında yaptığım bir muhasebe mobil uygulamasının web sitesini yapıyorduk. Db tasarımı hazırdı, bir muhasebe uygulamasının db tasarımı ne kadar zor olabilirdi ki? Çok fazla CRUD yaptığımdan ötürü bir projede lazım olabilecek her türlü şeyi bu projeyle tecrübe edindim.. Bir full-stack’cinin ihtiyacı olabileceği bazı konuları buraya sıralayım. Kendini backend de geliştiren biri için frontend konuları sıkıcı olmuştur ve hazır yapılar ile işini hemen halletmek isteyenler için yazıyorum.

  • Tablo, filtresi olan, sort yapabileceğiniz, sayfalaması olan. (NonFactor Mvc, Boostrap Vue B-Table)
  • Form uygulamalarını validate eden bir yapı. (JQUERY validations ) daha iyisi varsa lüften yeşillendirin buraları.
  • Kod üreten araçlar (Scaffolding…)
  • Kendini tekrar eden form elemanları yani liste şeklinde veri girişi yapabilmek için hazır yapı (Ben hala bulamadım.)
  • Seçilen işlemlere göre bazı html kısımların güncellenmesi değişmesi (bu kısım vue da kolay jquery de işkence)
  • Excel listesi alabilmek
  • Pdf ile raporlar alabilmek
  • Pivot tablo  
  • Resim yükleme form araçları
  • Dosya yükleme form araçları
  • Selectbox apileri. (select2 js önerimdir.) 
Buraya kadar okuduysanız, bir teşekkürü borç bilirim. 

2 Yorum

Kendimi gördüm bu yazıda, okurken yaşadıklarım geldi aklıma. Umuyorum ki her şey gönlünce olur. Bir söz vardır "tecrübe, hayatta yemiş olduğun kazıkların birikimidir" diye. Bunların hepsi tecrübe olarak dönecek inşallah=)

Teşekkürler yorumunuz için.

Okuyup geçme yorum yap lütfen :)

Yorumunuz cevaplandığında bildirim almak için Beni bilgilendir'i işaretleyin.
EmojiEmoji