Zor Problemleri Cozmenin Pratik Rehberi

Bazen kendimi nasil yazacagimdan emin olmadigim kodlari yazmam gerektigi durumlarda buluyorum. Kendigimi kaybolmus hissettigim zamanlarda attigim adimlari anlatacagim. Bunlar buyuk yenilikler veya kimsenin bilmedigi seyler degil sadece zor kazanilmis tavsiyeler.

  1. Herhangi bir kod yazmadan once sorunu birkac hafta iyice dusunun.
  2. Ihtiyaciniz olan input ve outputlara sahip bir fonksiyon veya sinif yazin.
  3. Fonksiyonu, acikca belirlenmis birden fazla adima ayirin. Bu amaclari nasil elde edebilecegini bilmiyor olabilirsin, fakat bu problem gelecekteki sen ile alakali. Simdi sadece yuksek seviyeli bir algoritma yazmaya calisiyorsun.
  4. Bu adimlarin her biri icin fonksiyonlar olusturun ve her birine NotImplementedException() hatasi dondurtun. Isimleri uzun ve aciklayici olmali ve onlardan ne beklendigini hakkinda kafalarca hic soru isareti birakmamalidir. Gercekten bu fonksiyonlari nasil yazacaginizi bilmeseniz bile problem degil.
  5. Simdi, bu fonksiyonlardan birkacini yazin. O kadar da zor olmadigini goreceksiniz. Hatta bazilari eglenceli bile olacaklar. Ozguveninizi saglayip kolay olanlarini implemente edin. Ilerliyor hissi hosunuza gidecer ve siz onemli sayi turlerine ve dosyalarin input outputlarina odaklanirken beyninizin analitik bolumunun bir sure arka planda calismasina izin verir.
  6. Sira zor olanlardan bazilariyla mucadeleye geldi. Daha once yaptiginiz gibi o fonksiyonlari kucuk adimlara bolun. O zor problemleri adimlara bolmeye devam edin. O adimlarin her birini anlasilir isimlerle fonksiyonlara cevirin. Kolay olanlarini implemente edin ve zor olanlari bolmeye devam edin. Bunu defalarca yapin. Ne kadarini tamamladiginiza sasiracaksiniz.
  7. Çok yakında NotImplemented'ı ortadan kaldıran sadece birkaç sinir bozucu işlevle %80 eksiksiz bir çözüme sahip olacaksınız.Şimdi en sevdiğiniz paket yukleyicinizi (PIP, npm, maven) veya kod reponuzu veya soru-cevap sitesini veya uygulamalar için yapay zeka programlama asistanını araştırın. Bu özel işleve veya widget'a ihtiyaç duyan ilk kişi siz değilsiniz. Birkaç dev (yazilimci degil cidden dev) bul, tepelerine tırman ve "Vay canına, dünyada bir sürü akıllı programcı var!" diye bağır.

  8. Tamam, inter ağları taradınız ve yine de birkaç sinir bozucu NotImplemented istisnanız var. Bu bilim adamlarını kontrol etmenin zamanı geldi. Sorunlarinizdaki her SEO kelimelerinin permütasyonunu arXiv'de aratin. Elbette başkaları sizin çözmeye çalıştığınız problemlerle ilgili problemler üzerinde çalışmıştır. Büyük olasılıkla, sorununuzu çözülebilir bir şeye yeniden çerçevelemenize yardımcı olabilecek içgörüler veya perspektifler sunacaklar. Bunu deneyin. Sorununuzu yeniden çerçeveleyin ve NotImplementedlerin ustesinden gelin.

  9. Simdi basin belada. Hala birkac NotImplementen istisnaniz varsa ve uzerinde duracaginiz devler veya bu alana takintili akademisyenler yoksa, o zaman her sey size kalmis. Buyuk dusunun. Kariyerin buna bagli. (Saka yapiyorum, umarim.) Belki bir banyo dusunmenize yardimci olur?

Bunlarin tum yazilimcilarin attigi adimlar oldugunu dusunuyorum, ancak bazen bunlarin ustunden gecmek iyi oluyor. Ozellikle fonksiyonel ayrismaya deger veriyorum. Fonksiyonlar, sadece daha az kod yazmak icin degil ayni zamanda problemler hakkinda dusunmek icin de guclu bir soyutlamadir.

Ve lutfen fonksiyonlar. kelimesini sadece fonksiyonel programcilarin begendigi seyler gibi yanlis yorumlamayin. Herhangi bir data transformeri kastediyorum.

Okudugunuz icin tesekkurler! Simdi gidin ve su zor problemleri cozun!

Orijinal Metin: praeclarum.org/2022/02/19/hard-problems.html