Programlama mekansal yeteneklerden nasıl etkilenir? [kapalı]


19

Arka fon

Bir proje üzerinde ne kadar uzun süre çalışırsam, o kadar netleşmez. Artık kafamdaki çeşitli sınıfları / nesneleri ayıramıyorum gibi. Her şey karışmaya başlar ve her şeyi tekrar ayırmak çok zordur. Fonksiyonları gerçekten ait olmadıkları sınıflara koymaya başladım ve daha sonra% 100 eski olduğunu düşündüğüm kod yazma gibi aptalca hatalar yapıyorum; işler artık kafamda net bir şekilde haritalanamıyor. Birkaç saat (ya da bazen günlerde!) Bir adım geriye gidene kadar, aslında neler olduğunu tekrar görebiliyor ve üretken olabiliyorum.

Genellikle bununla savaşmaya çalışırım, kodlama konusunda o kadar tutkuluyum ki, başka ne yapabileceğimi bilmem için hayatım boyunca yapmayacağım. Bu, işlerin gerçekten garipleşebileceği zamandır, kafamda o kadar yükseliyorum ki, bir bardak su dökmek gibi çeşitli eylemlerin artık bilinçli bir düzeyde gerçekleşmemesi (bir dereceye kadar) gerçeklikle temasımı kaybetmek. Bu, benim endişe yoğunluğumun hemen hemen hepsi (bir şey mi?) Sınırda anlamsız problem çözme (kod öğelerini ayırmaya çalışarak) için ayrılmış olan otomatik pilotta gerçekleşir. Kaybedilen bir savaş gibi geliyor.

Bu yüzden bir süre önce bir IQ testi yaptım (Wechsler Yetişkin İstihbarat Ölçeği olduğuna inanıyorum) ve Uzamsal Yetenekimin oldukça düşük olduğu ortaya çıktı. Hala ortalamanın biraz üzerinde iyi bir toplam puanım var , bu yüzden yaşamak için bir sopayla bir şeyler yapmak zorunda kalmayacağım, ama kazandığım bilgisayar programlarını yazarken / mühendislik yaparken bunun böyle bir handikap olduğundan biraz endişeliyim ' ciddiye ya da profesyonelce yapamazsınız.

Soru

Diğer insanların bunun hakkında ne düşündüğüyle çok ilgileniyorum ...

Yukarıda açıklanan sorunların nedeni düşük bir mekansal yetenek olabilir mi?

Programlama mekansal yeteneklerden nasıl etkilenir?

Belki ADD çizgileri veya benzeri bir şeyden daha fazla bakmalıyım, çünkü 17 yaşında (5 yıl önce) ADD teşhisi kondum, ancak aldığım ilaç beni o kadar etkilemedi gibi görmedi hepsi bu kadar ciddi.

Bildiğim kadarıyla insanlar düşük / med / yüksek mekansal yetenekle doğarlar, bu yüzden daha şanslı olanların doğuştan daha iyi programcılar olup olmadığını öğrenmek ilginçtir.


5
it turned out my Spatial Aptitude was quite low. I still got a decent score, just above average,Ben bir psikolog değilim, ama İngilizceyi doğru bir şekilde quite low
okursam

1
Ah, ayrıca, IQ testleri, onlar hakkındaki araştırmaları açıkça özetlemek için saçmalık. ABD'de mi yaşıyorsun? (Sadece soruyorum çünkü IQ testlerinin daha yüksek bir kullanımı var gibi görünüyor - ve ABD'de başka bir yerde olduğundan çok fazla tahmin edilen ADD korkusu
haylem

1
@psr: Aslında şaşırmam. Bu onunla çok fazla ilgisi yok gibi gelebilir, ancak mekansal temsiller ve kronik hareket hastalığı ile ilgili problemleri olan insanlar genellikle çok fazla şeyle uğraşmak için biraz daha zor zamanlara sahiptir. Yine de biraz farklılaştırıcı olduğunu düşünmüyorum (ama ben psikolog veya nörolog değilim) ve gerçek programlama becerileriniz ve tutkunuz sizi paketin geri kalanından ayıracak şey.
haylem

2
@haylem Genel olarak bilmiyorum, ancak çoğu çevrimiçi IQ testi birkaç eksende not alacaktır. Mekansal yetenek, mantık yeteneği, vb. Bence natli'nin söylediği şey, hepsinin ortalaması ortalamanın biraz üzerindeydi, ama boşluk yetenek puanı oldukça düşüktü.
Izkata

1
Ben özlemek Ben bir sopayla şeyler sokmak bir iş için.
Dan Ray

Yanıtlar:


27

Aslında, son 35 yılda toplanan bazı sert araştırma verileri var ve düzenli olarak olmasa da, birkaç benzer fenomen yaşadım. Daha fazla bilgi için aşağıya bakın.

Araştırma verisi

Olduğu görülmektedir bazı fakat minör aşağıdaki işlerinde yerine ve özetlenir araştırmaya dayalı ilişki. Yine de araştırmalarda olduğu gibi, çalışma modelleri çalışmalar arasında farklılık gösterir ve sonuçların sonuçlarda neden farklılıklar olduğunu anlamak için bunlar yakından incelenmelidir.

Bir tutam tuzla alın: Bazıları nispeten tarihli, IQ testleri o zamandan beri değişmiş olabilir. Daha sonra onaylanıp onaylanmadığını görmek için her makalenin alıntılarını bulmak için ayrıntılı bir arama yapmadım.

Bu çevrimiçi içeriğe erişim sağlayan bir kitaplığa bağlılığınız yoksa bazı bağlantılar (özellikle [PDF] türü) sizin için çalışmayabilir.


Kişisel görüş

Uyarı ve Açıklama: Ben NE psikolog NOR bir nörolog, ama ben okumakta olan ve öğretim hem küçük çocuklar (6 başlayarak) ve üniversite öğrencilerine programlama (en fazla 60!).

AND ile öğrencilere, mekânsal problemlerden etkilenen bazı öğrenciler (ve daha güçlü engelli olanlar da dahil olmak üzere) kendimi üniversite öğretmeni olarak öğrettikten sonra, (engellerime dayalı öğrencilerimi takip etmedim, Açıkçası) bazılarının genel eğrinin alt kısmına kaydedilmiş olabileceğini, hala bazı puanların yüksek olduğunu hatırlıyorum (ve hatta bir tanesi sınıfın en az 2 yıl boyunca majör olduğunu bile).

Demek istediğim, bir etkisi olsa da ve yukarıdaki bazı araştırmalarda gösterildiği gibi, programlamayı ve bir programcı gibi düşünmeyi öğrenme yeteneğinizin en büyük bölümünü açıklamıyor. Eğer gerçekten isterseniz öğrenmek durmayacak ve genel durumda çalışmasını engellemez ki o (aynı olabilir ama bu, önemsiz var olabilir senin durum) biraz daha zor senin için yapmak.

Neyi ve ne kadar hızlı öğrenebileceğinize dair neredeyse hiçbir sınır yoktur .

Sonuçta, hiçbir programcı iyi bir meydan okumayı sevmez, değil mi? (Sana bakıyorum, RSI)


Kişisel (Muhtemelen İlişkisiz) Deneyim

Ama sence öyle olabilir çok tutkulu. Günde ve haftada kaç saat çalışıyorsunuz? Düzenli aralar veriyor musunuz?

Benzer Bir Durum?

Hayatımın bir döneminde, haftanın her günü, tüm yıl boyunca en az 14 saatlik günler, bilgisayar ekranının önünde 120 saatlik çalışma haftalarını kaydetmekle sonuçlanan bir noktaya kadar çalıştım . Evet, yemek, uyumak, işe gidip gelmek (hafta : araba kullanmaktan kaçın! ), Duş ve diğer hayati işlevler için haftada sadece 48 saat kaldı . Bu noktada, neredeyse kalp atışında uyuyabilirdim (genellikle uyku problemleri olsa da), ancakNeredeyse her zaman kod hayalini kurmaya devam edecektim ve aniden duşta ya da yürürken ya da koşarken ya da aklınızın otomatik pilotta kendinize söylediğiniz gibi geri gittiğini anlayan görevler yaparken bile fark ettim. Ne yazık ki, uykumdaki sorunları sihirli bir şekilde çözemezdim; tarif ettiğiniz ve deneyimlediğiniz şeylere daha yakın olurdu: kafamda dönüp, daha büyük bir ölçekte mantıklı (görünüşte), ancak herhangi bir çözümü açıkça ifade etmeyen ve çok fazla başarı olmadan, karışık düşüncelerin devasa bir girdabı bu düşüncelerden birine odaklanmak, onu net bir şekilde incelemek ve faydalı bir şeye dönüştürmek. Ve bu genellikle oldukça yorucu ve üzücü bir durumdu.

Gevşeme Yardımı

Belki biraz sakinleşmeniz, rahatlamanız ve daha az çalışmanız gerekir. Aklını başınızdan alacak bir şey bulmaya çalışın. O zamanlar, bu çılgın düşünce trenini gerçekten durduracak bir şey yapmak için sık sık saatlerce uyku saatinden vazgeçtim. Karşılıksız görünüyor, ama aslında daha fazla uyumak ve dinlenmekten çok rahatlayabileceğim birkaç şey yapmayı tercih ettim. Bir anlamda sinir pillerinin dikkatinin dağılması ve fiziksel pillerin uykusu.

Tetikleyicileri Tanımlama

Bu sizin durumunuz değilse, belki de bu durumu sizin için tetiklemede başka bir şey olabilir. Bu durumlarda var olan öğeleri ayırmaya çalışın ve bu öğeleri de bulup bulamayacağınızı görmek için bu durumu başka ortamlarda yeniden üretip oluşturamayacağınızı görün. İşyerinde veya evde, vb. Daha mı oluyor?

İzolasyon

Ayrıca, bunu zaten duymuş ve denemiş olabilirsiniz, ancak küçük bir mekansal engelli bir arkadaşım var ve genellikle bilgisayarlarda çalışıyorsa, çok daha karmaşık görüşlere ve pencerelere sahip olmaktan kaçınmasına yardımcı oluyor. açık (dikkat dağınıklığını önlemek için) ve genel olarak işleri oldukça minimalist tutmak (hem tasarım hem de renkler, içerik ve temsil açısından).

Ayrıca düzenli molalar vermeye çalışın ve sizin için en uygun olana bağlı olarak zihninizi her 1 veya 2 saatte bir kısa süreliğine serbest bırakın. Belki Pomodoro tekniğini veya benzer bir şeyi benimseyin (bununla bir korelasyon hakkında araştırma yapmadım, ancak mola vermeye zorlamakta yardımcı olabilir).


Çok ilginç bir soru, kazmaya başladığınızda ve ilk başta kendi deneyimlerimi düşünmemiştim. Umarım yardımcı olur. Daha fazla araştırma makalesi için, Google Akademik'te "uzamsal uygun programlama" için hızlı bir arama yapılması bir ton daha sonuç verir. Alıntılama araçlarını kullanmak, en çok atıf yapılan çalışmaları belirlemeye yardımcı olabilir.
haylem

1
Cevabınıza çok çaba harcadığınız için teşekkürler, orada gerçekten iyi bilgiler var. Kesinlikle günde yaklaşık 10 saat, bazen daha fazla kod yazıyorum. Gevşeme burada anahtar olabilir, ancak bunu gerçekleştirmek zor olacaktır. Dediğin gibi, muhtemelen kendi projelerim hakkında çok tutkuluyum; Başka bir şey yapmak istemiyorum. Bu yüzden fiziksel olarak programlama dışında bir şey yapıyor olsam da, zihnim hala buna devam edecek ... Zihninizi iyi memnun ettiği için yapmayı durdurmanın mümkün olduğunu düşünmüyorum.
natli

@natli: Bekletme alışkanlığını tekmelemekle aynı yaklaşım. Sigarayı bırakmak istiyorsanız, sigara yerine bir şey koymanız gerekir. Programlamanın yanı sıra gerçekten keyif aldığınız herhangi bir hobi var mı? Sonra onu kullan. Bazı insanlar için yoğun aktiviteler yapabilirdi (örneğin, squash almak ...), diğerleri için ise tam tersi: son derece pasif bir şeye ihtiyaçları var. Belki meditasyonu deneyebilirsiniz. Zihninizi temizlemeyi öğrenmek, öğrenmek için önemli bir beceridir. Örneğin uyku sorunlarımda çok yardımcı oldu.
haylem

@natli: "Çaba" umursamadım. İlginç bir soru buldum ve makalelerin çoğu iyi okumalardı. Bu tür bir araştırma bazen, psikolojik ve nörolojik sürücüleri belirlemeye çalışırken, iyi bir çalışma modeli belirtmek zor olduğu için biraz belirsiz olabilir. Ayrıca araştırmalar insanlara “kapıları kapatma” yönünde gitme eğiliminde olduğunda da korkutucu olabilir. Açıkçası bu niyet değil: araştırmayı yönlendirmiyorsunuz; ama yine de sonuç olabilir. Yine de bunun aktif bir araştırma alanı olduğunu öğrendiğime memnun oldum . Bunun için teşekkürler ve yardımcı olduğuna sevindim.
haylem

Pomodoro tekniği için +1. Bunu hala üniversitedeyken sınavlarım için okudum. Çalışmış olmalıydı, çünkü her şeyi <geçtim - cümlenin tamamı ciddiye alınmamak için tehlikeli bilime dayanıyor.
Jamie Taylor

4

Ech ... bu bir yorumdan daha fazlasını hak ediyor.

"Genellikle bununla savaşmaya çalışırım"

Kavgayı bırak. İşleri büküyorsunuz ve yanlış mı yapıyorsunuz? Bazı benzersiz sorunlarınız olabilir, ancak bir soruna çok uzun süre odaklanmış herkes için beyninizin isyan tarzı normaldir. Daha gençken, günümün çok büyük bir kısmı bu bilinçli seviyede düşünerek geçti ve kendime hiçbir iyilik yapmıyordum. Sorununuz yeterince uğraşmamanız değil, ne zaman çıkacağınızı bilmemenizdir.

Sonunda makul bir saatte uyumak için tek yolun kesinlikle hiçbir şey hakkında düşünmek ve 10 dakika içinde keşfetmek için şok olduğunu anladığımda, arka brülöre bir şeyler koymanın değerini takdir etmeyi öğrendim. Uykuya daldım, normalde zihinsel tükenmeden çökmeden önce en az birkaç saat düşünmeyi düşünüyorum.

Oradan bir soruna çok fazla bilinçli düşünce koyduğumu fark etmeyi ve sadece bir süreliğine bırakmayı öğrenmeyi kolaylaştırdım. Bunun, bir problemi çözmenize yardımcı olmaya gerçekten ne kadar katkıda bulunduğunu keşfettiğim için şaşırdım.

Aşağıdakileri tavsiye ederim:

  • Kafanızda bir şey büküldüğünde ve mola verebilme ve yürüyüşe çıkma lüksüne sahip olmadığınız zaman, vites değiştirmeye çalışın ve bir süre problemin çok farklı bir parçasına odaklanın.

  • Asla öğle yemeğini atlamayın ve daima ofisten çıkın. Bir durma noktasına gelmek veya sadece bırakmak için kapıya gelene kadar kendinizi verin. Kafanızda kalmaya değer her şey orada olduğunuzda orada olacak ve ihtiyacınız olmayan her şey gitmiş olacak. Bunu ne kadar çok keşfederseniz, o kadar kolaylaşır.

  • Düzenli olarak kendiniz gün boyunca hiçbir şey düşünmeyecek. Kendinize bir bardak su alırken bir dakika bile olsa.

  • Daha az düşünmek için OOP veya daha fazla problem-alan merkezli mimari yaklaşımdan yararlanmaya çalışın. Kodunuzdaki aktörler en üst düzeyde kimler? Birbirleriyle karmaşık ilişkileri olmamalıdır. Bu, bir seferde sorunun bir parçasına daha fazla odaklanmanızı sağlar.

Yardımcı Olabilecek Bazı Kodlama İlkeleri

  • Neredeyse bütün etik / ahlak kurallarına uygulanabileceğinden, KURU genel kodlama pratiğidir. Çok nadir istisnalar vardır. Onları çok nadir tutun.

  • Gelecekte karşılaşabileceğiniz problemleri aşırı çözme alışkanlığınız varsa, bunu kesin. Hiçbir şey olması gerekenden daha karmaşık olmayan koddan daha fazla geleceğe yönelik veya "ölçeklenebilir" değildir. "Kurumsal" yalandır.

  • Karmaşık kalıplar genellikle uzun mermi puanı ödül listeleri vaat eder. Çoğu zaman önemli olan sadece 3 şey vardır. Okuması kolay. Yeniden kullanımı kolaydır. Değiştirilmesi kolaydır. Bir dövüş sanatçısının yapabileceği minimum güç kullanımı açısından düşünün ve bu prensibi karmaşıklığa uygulayın. Sorunu çözmek için tam olarak ideal.

  • Önce arayüzünüzü yazın. Ve hayır sadece gerektiğinde kullanılması gereken C # / Java yapılarını kastetmiyorum, nesnelerinizin API'sını kastediyorum. Sınıfın / nesnenin ne yapması gerekir? Bu boş yöntemleri yazın ve onlara arg adları verin. Tamamen bitene kadar boşlukları doldurmayın. Daha sonra ince ayarlar yapmak sorun değil, ancak ne yapabilmesi gerektiğini belirledikten sonra, her şeyin birer birer nasıl yapılması gerektiğine odaklanabilirsiniz. Kendinizi sık sık yaptığınız kadar kafanızda tutmaya çalışırken bulmanızın nedeni, bir sürecin belirli bir aşamasına gelmeden çok önce çözülmesi gereken sorunların gerçekleşmesi olabilir. Çok fazla var ve yöntemleri var mı? Ben bundan bahsediyorum.

Teşhis?

Bence mekansal farkındalık endişesi iyi karşılandı. Bu cephede neye karar verirseniz verin, özellikle de ilk kez bu konuda isteksiz olsaydınız, ADD'ye bir şey tekrar veririm. Bu kesinlikle hiper-odaklamanın aşırıya kaçtığı gibi görünüyor. Sonuçta, kodlama sevgisi sizi bu sorunları hafifletmenin yollarını bulmaya itsin ve kariyerinizin iyi olacağını umuyorum.


3

Bu bulanıklığı görmeye başlamadan önce kaç saat çalışıyorsunuz? İş 4'ü bildiğim iyi programcıların çoğu, bir kahve veya öğle yemeği ya da bir şey almadan 5 saat önce olabilir. Okuduğum bu tür en uzun sprintler Guy L Steele ve Richard M Stallman'ın Emacs yazarken 10 saat kadar sprint yapmasıdır. Steele, tekrar böyle uzun bir sprint yapmak istemeyeceğini söylemeye devam ediyor.

Programlama konusunda oldukça yeniyseniz (diyelim ki 5000 saatten az (bu sayı Peter Norvig'in on yıl içinde programlamayı öğrenme konusundaki yayınından geldi, uzman bir programcı olmasını önerdiği 10000 saati yarıya indirerek)), bu çok iyi görünüyor mola günlerine ihtiyacınız olduğunu söylediğiniz bölüm dışında normal. Belki de kendinizi bu kadar uzun bir molaya ihtiyaç duymak için yakıyorsunuz?


2000 saatten fazla deneyime sahip olduğumu düşünmüyorum, ancak gerçekten takip etmem gibi bir şey değil. Ayrıca, birkaç (okuma; iki) günlük iyileşme ihtiyacı oldukça nadirdir. İlk birkaç gün, ertesi gün problemlerle başa çıkmak için sadece iyi bir gece uykusuna ihtiyacım var, ama muhtemelen çok uzun süre çalışıyorum, karışıklıkla mücadele etmeye çalışıyorum. Eğer yeterince uzun süre devam edersem, koduma taze gözlerle bakmak ve yaptığım aptal hataları anında görmek için kodlamadan birkaç gün ayırmaya ihtiyacım var. Yapılması saatler süren şeyler, kelimenin tam anlamıyla söz konusu aradan sonra sadece 15 dakika sürüyor.
natli

1

Açıkladığınızdan, sorununuzun çeşitli nedenleri olabilir:

  • tecrübesizlik

  • Odak kaybı / yorgunluk

  • Düşük mekansal yetenekler

Deneyimsizlik, temelde daha fazla deneyim kazanarak ... tarafından çözülebilir. Kulağa geldiği açıktır, ancak daha fazla pratik yaparak kendinizi karmaşık programlama koşullarında daha sık bulacaksınız ve giderek bunlarla baş etmeyi öğreneceksiniz. Şu anda doğru bağlantıları yapmak, doğru sonuçları çıkarmak ve bu durumların kilidini açmak için zihinsel şemalardan ve reflekslerden yoksun olabilirsiniz; (daha çok anladığım kadarıyla 22 yaşındasın, ki bu hala çok genç).

Odağınızı geliştirmek için çeşitli teknikler vardır. Pomodoro ve bitmiş almak şeyler iki örnektir. Programlama alanında, Test Odaklı Geliştirme de gerçekten tavsiye ettiğim bir şey çünkü sizi her seferinde küçük, ulaşılabilir bir hedefe konsantre olmaya zorluyor (bebek adımları). Bir TDD yaklaşımı ile "gerçekten ait olmadıkları sınıflara işlevler koyma" olasılığınız daha düşüktür, çünkü sınıfınızın sorumluluğunu bir testle açıkça tanımlamak ve daha sonra yalnızca kod yazarken uygulamaya odaklanmak zorunda kalırsınız. , birkaç sınıf arasında atlamak ve rastgele yavaş yavaş doldurmak yerine

Sık sık aralarla sürdürülebilir bir ritim benimseyerek yorgunluk ve dikkat düşüşlerinden kaçınılabilir. Linda Rising'in bu sunuma beynimize saygı göstererek daha üretken olmaya ilgi duyabilirsiniz : Döngüye Doğru Doğdu .

Düşük mekansal yeteneklere gelince, korkarım ki bu konuda yapabileceğiniz çok şey yok. Ancak, sıkı çalışma onu zayıflatabilir ve bu sadece programlamada gerekli olan beceriden uzaktır. Yaratıcılık, tutku, coşku, titizlik, analitik beceriler, keskinlik, iş sorunlarını iyi kavrama, işbirliği becerileri gibi şeyler, kod tabanının ortalama zihinsel görselleştirmesinden daha zayıf bir şeyden daha fazlasını yapabilir.

Kısacası, IMO'ya ihtiyacınız olan şey:

  • Disiplin

  • Uygulama

  • Sürdürülebilir bir hız

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.