Problem Çözme Teknikleri

17.11.2020
Problem Çözme Teknikleri

İncelediğimiz problemleri çözerken çözüm sürecine destek olan bazı yaklaşımları kullandığımızı fark etmişsinizdir.

Programlama sürecinde de problemin çözümüne yönelik yol ve yaklaşımları belirlemek gerekir ama öncelikle genel kural ve teknikleri bilmek yararlıdır. Bazı genel kurallar neredeyse tüm problemler için kullanılabilir. Bu nedenle, bu kuralları içselleştirir ve düşünme sürecinizin bir parçası hâline getirebilirseniz herhangi bir problemi çözmeye çalışırken mutlaka bir fikriniz olur.

Her Zaman Bir Planınız Olsun

Belirsiz bir durumu yaşamak yerine her zaman bir planınız olmalıdır. Bu, en önemli kuraldır. Belki oluşturduğunuz çözüm planı ilk denemelerde sonuç vermeyecek ama her seferinde sizi çözüme biraz daha yaklaştıracak ipuçları elde etmenizi sağlayacaktır.

Her zaman bir planınız olsun.

Her zaman bir planınız olsun.

Denediğiniz yaklaşım ne olursa olsun (doğru ya da yanlış), fikir üretmemekten ve deneme yapmamaktan her zaman daha iyidir. Planlama yapmak aynı zamanda hedef belirlemek ve bu hedefe ulaşmak anlamına gelir.

Planınız olmazsa tek bir hedefiniz olur; o da problemi çözmektir. Bu durumda problemi çözene kadar herhangi bir başarı kaydetmiş olmazsınız. Dahası sadece nihai hedefe ulaşmaya çalışmak, her başarısızlıkta moralin bozulmasına neden olabilir. Ama küçük hedeflerden bile oluşan bir plan yaparsanız çözüme yönelik adımlar attığınızı ve zamanı etkili biçimde kullandığınızı göreceksiniz. Her bir adımda kendinize güveniniz artacak ve çözüme bir adım daha yaklaşmış olacaksınız.

Problemi Tekrar İfade Edin

Önceki problemlerde de gördüğümüz üzere bazen problemi tekrar ifade etmek, göremediğimiz bir ayrıntıyı görmemizi ya da problemi daha kolay çözmek adına bir ipucu yakalamamızı sağlayabilir. Hatta bazen probleme ilişkin bir yanlış anlamanın ortaya çıkmasına ya da hedefin daha iyi anlaşılmasına neden olur.

Problemi farklı biçimlerde sunmak çözüm sürecine ışık tutmasa bile bazen yalnızca problemi doğru anlayıp anlamadığımızı bile teyit etmek açısından önemlidir. Ayrıca tekrar ifade ederek problemi küçük alt parçalara ayırmak gibi yaygın işlemleri de kolaylaştırmış olabiliriz.

Problemi Küçük Parçalara Ayırın

Verilen problemi adımlara ya da bölümlere ayırmak, çözümü kolaylaştırır. Bir problemi iki bölüme ayırdığımız düşünüldüğünde, her bir parçanın çözümünün tümünü çözmeye göre yarı yarıya kolaylaştığını düşünebiliriz. Bu durum için sıralama örneğini ele alalım.

Problemi Küçük Parçalara Ayırın

Problemi Küçük Parçalara Ayırın

Elinizde 100 kişisel dosya olduğunu ve bu dosyaların alfabetik sıraya göre dizilmesi gerektiğini düşünelim. Önce bir dosya alıp sonra her aldığınızı doğru yere yerleştirerek 100 adımda bu işlemi bitirebilirsiniz. Peki ya biri sizin için 100 dosyayı A-F, G-M, N-Ş ve T-Z olacak biçimde 25 adetten oluşan 4 gruba ayırsaydı işlemi daha kolay yapmaz mıydık? Her seferinde tek tek harf sırasını kontrol etme işlemi, dosya sayısı çoğaldıkça zorlaştığından sayıca küçük bir grupla çalışmak işlemi hızlandıracaktır. Bu nedenle bir problemi çözülebilir küçük parçalara bölmek, çözüm işlemini kolaylaştırır ve hızlandırır.

Önce Bildiklerinizden Yola Çıkın

Programlama yaparken öncelikle bildiklerimiz ile başlamalı ve sonra yeni çözümler arayışına girmeliyiz. Problemi küçük parçalara bölerek çözebildiğiniz parçadan başlayınız. Bu parçaları çözerken diğer parçalarla ilgili olarak aklınıza yeni fikirler geldiğini ve aynı zamanda kendinize olan güvenin arttığını göreceksiniz.

Programlama süreci boyunca çoğu zaman çok iyi olduğunuz konular, zorlandığınız konular ve henüz öğrenmediğiniz konular olacaktır. Bir problemin mevcut becerilerinizle çözülüp çözülemeyeceğine karar vermek için problemi çok iyi incelemeniz gerekir. Böylece bilgi dağarcığınızda olmayan ama çözüm için gerekli olan işlemlerin farkına varabilirsiniz.

Problemi Basitleştirin

Çözmekte zorlandığınız bir problemle karşılaşırsanız problemin kapsamını daraltmayı deneyebilirsiniz. Bunun için koşulları azaltmayı ya da çözebileceğiniz biçime dönüştürmeyi, değişkenleri azaltmayı ya da problemin kapsama alanını küçültmeyi düşünebilirsiniz. Temel amacınız problemi basitçe ifade etmeye çalışmak olmalıdır. Çözüm için denediğiniz yaklaşımlar, size gerçek çözüm için yol gösterecektir.

Problemi Basitleştirin

Problemi Basitleştirin

Problemi basitleştirmek size aslında problemdeki zorluğun neden kaynaklandığını da gösterecektir.

Benzerlikleri Arayın

Burada ele aldığımız benzerlik kavramı, çözülmesi istenen problemle önceden çözülen problem arasındaki olası örtüşme ya da yeni çözüme ilham verme olarak tanımlanabilir. Benzerlik, farklı biçimlerde karşımıza çıkabilir. Bazen problemler aynı, değişkenler ya da veriler farklıdır. Bazen problemin belirli bir bölümü başka bir problemle benzerlik gösterebilir.

Benzerlikleri Arayın

Benzerlikleri Arayın

Problem çözme sürecinde hızınızı ve becerinizi arttıracak en önemli yaklaşım, benzerliklerin farkına varmaktır ancak bu, aynı zamanda kazanılması en zor beceridir. Buradaki zorluk, benzerliklerin farkına varacak kadar problem çözmek ve deneyim kazanmak gereğinden ortaya çıkmaktadır. Bu nedenle programlamaya yeni başlayanlar için bir problemi çözerken hazır yazılmış bir kodu bulmak ve onu güncelleyerek problemi çözmeye çalışmak son derece yanlıştır. Bir çözümü kendiniz üretmezseniz tamamen anlayamaz ve içselleştiremezsiniz. Ayrıca çalışan her bir program, problemin çözümü olduğu kadar, daha sonraki problemleri çözmek için kazandığınız deneyimlerdir.

Şu anda ne kadar yazılmış kodlar kullanarak problemleri çözerseniz gelecekte de sürekli bu yaklaşımı kullanacaksınız demektir.

Deneme Yapın

Bazen bir problemi çözmenin en kolay yolu denemek ve sonuçlarını gözlemlemektir. Bu, tahmin etmekten çok farklıdır. Bir çözümü tahminen öngörmek ile kodu yazarak denemek ve sonuçlarını incelemek çok farklı sonuçlar verir. Böylece problemi çözebilmek için gereken ipuçlarını elde edebilirsiniz. Denemek, ara yüz tasarlarken, çizim yaparken ya da kütüphaneleri kullanırken yararlı bir yaklaşımdır. Diğer yandan hata ayıklama süreci de bir tür deneysel yaklaşımdır.

Deneme Yapın

Deneme Yapın

Bir problemin çıktılarına bakarak sorunun nereden kaynaklandığını anlayabilir ve problemi çözebiliriz. Bu nedenle programda önemli noktalara gözlemek amacıyla değer verebiliriz. Değerlerin değişimini gözleyerek çözüme daha hızlı ulaşabiliriz.

Asla Vazgeçmeyin

Asla vazgeçmemek, kişisel bir özelliktir. Kararlılık, güven ve istek kaybolduğu zaman açık düşünemezsiniz, işlemler olması gerektiğinden uzun sürer ve gittikçe zorlaşır. Hatta öfke ve kızgınlığa bile dönüşebilir.

Asla Vazgeçmeyin

Asla Vazgeçmeyin

Ekrandaki program kodu çalışmadığı zaman programcı koda değil, kendisine ve aslında problemin kaynağına, yani kendi aklına kızmaktadır. Bu noktada moralimizin bozulmasına izin vererek aslında başarısız olmak için bir bahane üretmiş oluruz. Bu duygudan kurtulmak, programcı tarafından verilecek bir karardır. Böyle durumlarda en etkili çözüm ara vermektir. Problemden tamamen uzaklaşarak geçirilecek vakit sonrasında çok daha verimli çalışmak olasıdır.

YORUMLAR

Henüz yorum yapılmamış. İlk yorumu yukarıdaki form aracılığıyla siz yapabilirsiniz.