AGILE Problem SOLVING

Mesaj 1 : Her zaman daha iyisi vardır.

Mesaj 2 : Eklediğin her bir satır kod israftır.

Mesaj 3 : Amaç, hedef çok önemli ve olmalıdır ama yolun sonu da değildir, o bir yeni referanstır. Odaklanmayı sağlar, yolda tutar.

6-7 ay önce Pandemi sürecinde, hackerrank’de 30 Days Challenge yolculuğuna çıktım ve tamamladım.

Problemleri anladıktan sonra çözüm üretmeye çalışıyorsun. İçlerinden bir tane problem örneğini aşağıda bulabilirsin.

Problem : Maximum Subarray Sum

1. FAILED & FIX

Kod yazdıkça denemeler yapıyorum, compile ettikçe hatalarımı anlayıp düzeltiyorum.

Motto ‘yu hatırladınız : “test et, hata yap, düzelt, tekrar

XP (Extreme Programming) pratiklerinden biri de budur : TDD (Test Driven Development)

2. WORKING BUT …

Ah şu “ama” lar olmasa 🙂

Denemeler sonunda “Çalışan Yazılım/Çözüm” bulundu. Süper çok sevindim.

Ama…

İstenen sonucu veriyordu ama müşteri memnun değildi 😉 çünkü performansı kötüydü. 32 satırlık kod timeout alıyordu.

Kodu daha performanslı nasıl yazarım derken 28 satırlı bir halini oluşturdum ama yine timeout. 4 satır 4 satırdır. 🙂

Çünkü eklenen her bir satır israftır.

3. Done, Success

Sonra biraz araştırdım, forumları okudum, çözümler gördüm, ve anladım.

Sonuç : 13 satırla en iyi performanslı hali çıkmıştı.

Bu son halini görmesem, bulamasam hackerrank’e yazacaktım. Compiler hatalı diye 🙂

Evet, daha iyisi olana kadar en iyisi Agile Manifestonun 2. değerinde belirtildiği gibi elinizdeki “çalışan yazılım/çözümler

Daha iyisi yoktur heralde demeyin. İleride çözüm bir satıra da düşebilir 😉

return Math.maximumSum(sumArray, m);

Buraya kadar bir yerlerde “Çalışan yazılıma dokunma” demiş olabilirsiniz. Bu, geçmişte yaşadığımız acı tecrübelerin, hata yapma korkumuzun ve güvensizliğin sonuçları olabilir mi acaba?

4. Keep GOING

Önemli olan şu: Kendini, potansiyelini farket, iyi bir yolculuğa çık, keşfet ve sürekli öğren ve geliş.

Kalp attığı müddetçe döngüsel olarak böyle devam eder, etmeli.

Lean, Kanban ve Agile yaklaşımının, Çevik Zihniyetin ve diğer öğretilerin özünde yatan da budur : “Döngüler” ve “Süreklilik“.

Yani amaç sürekli yolda olmaktır. Yolda öğrenmek, sürekli gelişmek, ara hedefleri bitirmek (Done) ve böylece verimsizlikleri ortadan kaldırmaktır.

Lean, Kanban, Agile Frameworks

Cepler doldukça, yetkinlik artar ve artık karmaşık problemlere çözüm bulmak kolaylaşır, hemen denemeye başlarsın, oyun oynar gibi eğlenceli hale gelir. Çözecek problem ararsın.

Bazıları buna tecrübe der, uzman der, master der, ünvan verilir, rütbe takılır. Sonra ünvanlar yetmez yenileri bulunur; expert, senior expert, principal, senior principal 😉 Sonra tek tek bu ünvanların rol ve sorumlulukları talep edilir, bir kaç kereliğine ortalığa zorla çıkarılır. 😉

Hepimiz biliyoruz ki, özünde ünvanların hiç bir önemi yoktur.

Sen varsındır. Havalı olmasına gerek var mı?

Developer” : “Geliştiren” ve hep “Amatör

Erkan sana söylüyorum? 🙂 Ne dersin?

 

 



Bir yanıt yazın