Bir bilgisayarın önünde otururken bir sorunu çözemezsem sorun olmaz mı? [kapalı]


12

Ben bir hobici programcı ve yeni başlayan biriyim. Çoğu zaman, bilgisayarın önünde otururken sorunu çözemiyorum. Örneğin, bir sayının diğerinin gücü olup olmadığını bulmaya çalışıyordum. Bir kalem ve bir kağıt alıp sorunu analiz edene kadar çözümü bulamadım. Yaklaşık 3 dakika içinde çözdüm ve senaryoyu Python'a yazdım.

Bazen bir bilgisayarın önünde otururken sorunu biraz çözebilirim, ama biraz zorlukla. İyi mi?


6
Bana göre bu bir sorun için çok da kötü değil ve aslında birçok insan bilgisayara çok fazla bakıyor, sonunda bu konunun daha az ölçüde olduğunu fark etmiyor. Birçok profesyonel programlama, genellikle ödev olarak verilen zor mantıksal formüller yerine çok çürük değişiklikler içerecektir ve en azından bunları gerçekleştirebiliyorsanız çok fazla sorun olmaz.
Katana314

2
Programla ilgili daha anlamlı olması için sorunuzu yeniden gözden geçirmek isteyebileceğinizi düşünüyorum.
Snoop

8
Bu tamamen özneldir. Herkes farklı öğrenir ve çalışır. Sizin için uygun olanı yapın.

7
Bilgisayarın önünde bir sorunu çözmeye çalışmak için en kötü yer olabilir, çünkü düşünmeniz gerektiğinde yazmaya başlamak için çok cazip hale gelirsiniz. Genellikle bu sizi zorlar çünkü makineden şekilde daha iyi almak düşünüyorum değil hareket . En zor sorunlarımın çoğu sabah ofise yürüyerek giderildi.
Robotu Gort

2
Ayrıca sorunun ne kadar zor olduğu sorusu da var. Daha fazla deneyim kazandıkça, şimdi zor olan bazı problemler kolaylaşacaktır. Ancak bu sadece daha zor olanları çözebileceğiniz anlamına gelir. Kendim için, yürüyüş yaparken veya kros kayağı yaparken gerçekten zor olanlarımın çoğunu çözüyorum.
jamesqf

Yanıtlar:


33

En zor sorunlarımı çözme eğilimindeyim:

  • Bir beyaz tahtanın önünde (bazen hiçbir şey çizmeden - sadece bir sorunun nasıl görselleştirileceğini düşünmek bazen bir çözüme yol açabilir)
  • Onları meslektaşlarına açıklarken
  • Pencereden dışarı bakıyor
  • Yürüyüş yaparken
  • Duş altında
  • Tuvalette

Monitörden uzaklaşmak, yalnızca bir uygulama yazmaya değil, sorunun kendisine odaklanmak için genellikle çok yararlıdır.

Sorun çözme kafanızda gerçekleşir. Program kodunu yazmak, çözümünüzü bilgisayara nasıl açıkladığınızdır.


1
Teşekkür ederim! Haklısın, bilgisayardan ne kadar uzaklaşırsam soruna o kadar çok odaklanabilirim.
Mahmood Muhammad Nageeb

2
Masanızda bir lastik ördek tutmayı öneren bir kitap okuduğumu hatırlıyorum (ne yazık ki hatırlayamıyorum) ve güdük olduğunuzda, sorunu lastik ördek için yüksek sesle açıklayın.
Robot

7
@StevenBurnap Buna lastik ördek hata ayıklama denir ve muhtemelen Addison Wesley tarafından The Pragmatic Programmer'da okudunuz .
Philipp

2
"Program kodunu yazmak, çözümünüzü bilgisayara nasıl açıkladığınızdır." - Alan Perlis: "İnsanların okuyabileceği ve sadece makinelerin çalışması için programlar yazılmalıdır." Bu şekilde bakmayı tercih ederim: kodu yazmak, çözümünüzü iş arkadaşlarınıza nasıl açıkladığınızdır . Çözümü belirsiz bir şekilde belirsiz bir şekilde tarif ettiğinizde, herhangi bir insan (kendiniz de dahil olmak üzere, 6 ay sonra) bunu anlayabilecek şekilde, aynı zamanda bir makine tarafından yürütülebilir hale gelir, bunun titizlikle tanımlanmasının bir yan etkisidir. belirsizlik olmaması için yeterli. …
Jörg W Mittag

4
Re: lastik ördek. Oyuncak ayı ile benzer bir hikaye var. MIT'deki öğretmenler ofislerinde oyuncak ayılar oturuyordu. Sadece sorununuzu ayıya açıkladıktan sonra vurmanıza izin verildi. Öğrencilerin yarısı hiçbir zaman kapıyı çalmadı, problemini ayıya açıklarken çözdü. StackExchange üzerinde iyi yazılmış, iyi araştırılmış, iyi biçimlendirilmiş, ayrıntılı, yüksek kaliteli bir soru formüle etmek aynı etkiye sahip olabilir , bu da (bunun nedenlerinden biri) sadece bunu yapmak konusunda çok analizdir!
Jörg W Mittag

7

Bunun iyi bir soru olduğunu düşünüyorum. Bunu nasıl yorumladığımdan, sorduğunuzu düşündüğüm şey "Periyodik olarak bilgisayardan uzaklaşmam doğru mudur?"

Ben kalkmak ve başka birine ne düşündüklerini sormak zorunda kalmayacak bir gün olduğunu düşünmüyorum, ya da bir parça karalama kâğıdı çıkarın ve sorunu çözmek için bir denklem karalayın. Ayrıca, programlamaya daha fazla girdiğinizde, önceden bir diyagram / mimari oluşturana kadar kodu yazmaya bile başlamayabilirsiniz.

Üniversitedeyken veri yapıları dersi alıyordum ve bir sıralama algoritması tasarlarken sorun yaşıyordum. Profesörümden yardım istediğimde, problemi önceden düşünmediğimi biliyordu. Bana söylediği ilk şey, henüz kodu yazmaya başlamaya hazır olmadığımdı. Böylece bir parça kağıt çıkardı ve birkaç kare çizdi ve sonra diziden sayıları koydu. Sonra kareleri hareket ettirdiği birkaç resim daha çizdi ve bana sıralama algoritmasının nasıl çalışacağını görsel olarak gösterdi.

Zihninizi temizlemek ve sorunu çözmek için yapabileceğiniz bazı şeyler:

  • Ara ver
  • Bir meslektaşınızla konuşun
  • Beyaz tahta sorunu / konsepti
  • Uyu!

Gece yarısı çözüm ile uyanırsanız şaşırmayın.


1

Kesinlikle eğer etkili bir profesyonel programcı / geliştirici olmak için yardımcı olacağını düşünüyorum. Ancak, çözümü program mantığına çevirirken bir sorun hakkında düşünmek IMHO'nun eğitime ihtiyacı var, bu yüzden bu görevleri serileştirirseniz sorun görmüyorum - sadece her ikisini de başarıyla tamamlamanız gerekir. Kodlamaya başlamadan önce baştan sona bir çözüm düşünmenin avantajları vardır, ancak bunun için biraz sabırlı bir karakter olmanız gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.