Bir sağ beyin, büyük sol beyin koduyla nasıl başa çıkabilir? [kapalı]


11

Kendimi bir sanatçı / fizikçi olarak tanımlasam da çoğunlukla bir sanatçıyım. Matematik yapabilir, kelimelerle başa çıkabiliyorum ve sol beyin olarak kabul edilen "mantıksal" şeyler olsa da, bu bir çaba ve hatalar yapıyorum, oysa iyi bir şekilde yapıyorum ve çoğu zaman sağ beyinle ilişkili şeyler açısından düşünüyorum düşünme - mekansal ilişkiler, bütünsel büyük resim bağlamı, vb. Tabii ki, sağ-sol beyin teorisi aşırı basitleştirildiğinden ve hiçbir zihinsel aktivite bu kadar basit olmadığından, bulanık olan her şey. Yine de, sanatçılar, video yönetmenleri, şefler ve diğer sözel olmayan düşünce, yaratıcı türlerle iyi uyduğumu hissediyorum, "BT" veya hardcore yazılım mühendislerindeki çoğu insanın, farklı ayrıntılara dikkat ederek, akılda birçok ayrıntı ve güçlü rasyonel ve sözel yetenekleri.

Yani burada büyük bir C ++ yazılımı sürüsü, OO çok ağır telaşlı ve belirsiz hataları düzeltmek için para ödeniyor ve yirmi diğer sınıf ve yöntem isimleri akılda tutmadıkça, herhangi bir kod satırı mantıklı değil, aralarındaki ilişkiler, yürütme akışı (çok spagetti benzeri) ve diğer detaylar.

Bunun yanı sıra, çağdaş C ++ ve OO stillerinin çoğuna da karşıyım. Bu kodu yazanlar gerçekten derin OO ve Modern C ++ kool-ade içti. Aslında kodu takip etmek çok daha zor, bir şeyi düzeltmek veya değiştirmek için nereye karar vermek çok zor buluyorum. Bunun sol / sağ farkının (veya ne demek isterseniz) bir parçası olup olmadığını bilmiyorum.

Ama C ++ üzerinde çalışmalıyım - insanlar gelirim için bana güveniyor. Bu durumla başa çıkmak, işverenim için olabildiğince etkili olmak için ipuçları ve teknikler nelerdir?


9
Bu bir sol beyin / sağ beyin farkı değildir - kimse bu tür C ++ kodunu, büyük bir çaba sarf etmeden, onu yazan kişi dışında (çoğu zaman, hatta onlar bile) anlayamaz veya değiştiremez. Sadece bir şeyin ne kadar süreceği hakkında bir tahmin yapmanız istendiğinde, "çağdaş" tasarımla başa çıkmak için bunu yüzde yüz iyi bir şekilde doldurduğunuzdan emin olun.
Carson63000

8
O kadar sinirli olma. C ++, tasarım amacının kullanılabilirlik (insanlar için) veya uygunluk, netlik, doğruluk (derleyiciler için) olmadığı çok garip bir dildir. C ++ 'ın tek tasarım amacı, tamamen pratik olmasa bile, olası her sözcüksel permütasyonu bir şey ifade etmekti.

1
@Rocket: Onu havaya uçurdun :-) ama parçalar halinde katılıyorum.
Geek

@mojuba - evet, C ++: D
DarenW'nin

2
Buna "Eski Kod" denir ve sorun yalnızca sizin için değildir. Böyle bir canavarı nasıl evcilleştirmek için Michael Feathers kitabına bir bağlantı için en.wikipedia.org/wiki/Legacy_code adresine bakın .

Yanıtlar:


2

Bu karışıklıkla rahat olmanın bir güç olduğu şeylerin tasarım tarafına daha fazla girmeye çalışın, kariyer ilerlemesi açısından benim önerim olacaktır. Yaratıcı olmayı seven biri olarak, bakım üzerinde çalışmak çok uygun olmayabilirken yeni şeyler üzerinde çalışmak mümkünse daha iyi olabilir.

Birinin çalışmasında gurur duymakla ilgili yanlış bir şey olmasa da, ayrıntılarda saplanmamak, geliştirmek için yeni bir yaklaşım bulmak zorunda kalabileceğiniz bir şey olabilir. Aşağı ve kirli olarak bakmak yerine, onu bir şekilde eğlenceli hale getirebilecek başka bir bakış açısı olabilir.


Bazı insanlar yeni bir sisteme koymak yerine mevcut sistemleri değiştirmeyi tercih ettikleri için destek ve bakım muhtemelen hayranlarına sahiptir. Eterden bir şey çıkarmaya çalışmak yerine, değiştirdiğim mevcut bir sistemle daha iyi çalışma eğiliminde olduğumu biliyorum.

Yapmayı deneyebileceğiniz şey, insanların çeşitli sorunlu noktalar ve beyin fırtınası çözümleriyle uğraşmak için fikir istediklerinde not etmek, çünkü bu sizin sevdiğiniz şeyin bir parçası. Bu, hangi kod satırlarının değiştirileceğini bilmekle ilgili değil, birisine "Bu nesneye bakıp iddia ettiğinden daha fazlasını yapıp yapmadığını gördünüz mü?" bir şey.

Başka bir nokta ne yaratmak istediğinizi bilmek: Grafikler, uygulamalar, web siteleri, süreçler veya sistemler? Bunların hepsi, yaratmak istemeniz halinde, "Ne oluşturmalı?"


Bu fikir, patronumla dünkü toplantıdan neredeyse düzeldi. Acaba - herkes tarafından her zaman daha cazip şeyler yaratmak değil ve bakım her zaman tuvaletleri temizlemek gibi mi? Biri etrafta dolaşırsa "Ben bir şeyler YARATMAK tercih ederim!" ciddiye alınır mı?
DarenW

4
Ben gibi kod bakım. Tuvalet temizliğinden ziyade ameliyat gibidir: bir çalışma sisteminin bir kısmını kırmadan düzeltmeniz gerekir.
Frank Shearar

"eterden bir şey çıkar" - bana bir kızı etkilemek için limonlu çörekleri havadan çektiğim bir rüyayı hatırlatıyor: D Ama cidden bu benim için önemli bir nokta - Her zaman düşünmek istiyorum, düşünüyorum, yeni şeyler yaratmak.
DarenW

3
@FrankShearar Bazen tuvalette yapılan ameliyat gibi; (
mlvljr

16

O değil ses kodunuzda gibi (en azından benim için) özellikle nesne yönelimli veya "Modern C ++" özellikle benzer. Aksine, iyi nesne yöneliminin temel unsurlarından biri, birincil amacı belirli bir zamanda izlemeniz gereken şey sayısını azaltmaktır . Benzer şekilde, "çok spagetti benzeri ... yürütme akışı" ne nesne yönelimli ne de modern (hiçbir şey).

Şimdi, baktığınız koda baktığımda, farklı görebilir ve / veya kodumu şu anda koruduğunuza benzer olarak görebilirsiniz - tahmin etmek biraz zor. Kodumun nasıl çalıştığına dair her ayrıntıyı izlemeye çalışırsanız, bunu oldukça spagetti benzeri bir kontrol akışı olarak görebileceğinizi düşünüyorum.

Sadece örneğin, birçok programcıya kıyasla birkaç örtük dönüşümden çok daha fazla hoşlanıyorum (veya en azından hoşgörülü) - Proxy sınıfları gibi şeyleri biraz kullanıyorum. Bu, tek bir işlevi çağırırken farklı türlerde üç veya dört geçici nesne kolayca oluşturulabileceği anlamına gelir (ve işlevi gerçekten yürütmekten bahsetmediğimi , sadece çağırdığımı unutmayın ). Tabii ki, tüm bu geçici nesneler fonksiyon çağrısını içeren ifadenin sonunda tekrar imha edilecektir. Eğer sayarsanız, kodda "gözle görülür" olarak adlandırılan bir fonksiyondan çağrı yapmak / geri dönmek için çağrılan yarım düzine veya daha fazla ayrı fonksiyonunuz olabilir.

Yolu, ancak, bunu yaparken şeylerin noktası kolay hale getirmek için görmezden gibi ayrıntılarla ilgili yer alan bilgi oyunlarına (örneğin) en nasıl belirli bir nesne temsil edilir ve gerçekten neyi Overkill'de olduğunu bunun yerine. Bu kodun çoğuyla yalnızca belirli bir bölümde bir hata görürseniz ilgilenmeniz gerekir. Bununla birlikte, bundan çok fazla kaçınmaya çalışıyorum, çok küçük ve basit, çok az şey yaratan sınıflar oluşturarak, açıkça doğru olduğunu anlamak için bir bakıştan çok daha fazlasını gerektiriyor , bu yüzden bundan sonra göz ardı etmek kolay.


Ihh! Bu tür şeyler beni kandırıyor! Belki de düşünme tarzım bu konuda rahat olamayacak kadar düşük seviyededir, yani "opcode odaklı programlama".
DarenW

2
"Trivia'nın çoğunu görmezden gelmeyi kolaylaştırmak" ise - kodlama tarzı bir trivia yüceltici gibi görünüyor. Bu hafta küçük bir şeyi düzeltmeye çalışırken, gerçekten hiçbir şey yapmayan inanılmaz miktarda ayrıntı vardı.
DarenW

“... sınıfları o kadar küçük ve basit, çok az şey yaratarak, bir bakıştan çok daha fazlasını gerektiriyor ...” Bunun açık kaynak örnekleri var mı?
DarenW

2
@darrenw emin, smalltalk 80
Tim Williscroft

10

Uyarı : Bu cevap çok uzun ve çok fazla psikobabble (ki anlatmaya çalışıyorum ama yine de) var. Ne söyleyebilirim? Psikoloji, programlama dışındaki en sevdiğim konulardan biri.

Kendimi bir sanatçı / fizikçi olarak tanımlasam da çoğunlukla bir sanatçıyım. Matematik yapabilir, kelimelerle başa çıkabiliyorum ve sol beyin olarak kabul edilen "mantıksal" şeyler olsa da, bu bir çaba ve hatalar yapıyorum, oysa iyi bir şekilde yapıyorum ve çoğu zaman sağ beyinle ilişkili şeyler açısından düşünüyorum düşünme - mekansal ilişkiler, bütünsel büyük resim bağlamı, vb. Tabii ki, sağ-sol beyin teorisi aşırı basitleştirildiğinden ve hiçbir zihinsel aktivite bu kadar basit olmadığından, bulanık olan her şey. Yine de, sanatçılar, video yönetmenleri, şefler ve diğer sözel olmayan düşünce, yaratıcı türlerle iyi uyduğumu hissediyorum, "BT" veya hardcore yazılım mühendislerindeki çoğu insanın, farklı ayrıntılara dikkat ederek, akılda birçok ayrıntı ve güçlü rasyonel ve sözel yetenekleri.

Bu aslında biraz güncel bir sinirbilim görüşüne dayanmaktadır. Bir zamanlar, bilim adamları sol beynin sadece mantık ve ham duyusal verilerden sorumlu olduğuna inanırken, sağ beyin sadece sezgi ve histen sorumluydu. Görüldüğü gibi, sol beyin gerçekten sağ beynin her şeye yeteneklidir ve bunun tersi de geçerlidir. Son derece sağ beyinli ama mantıklı, yönleri ve mekansal yönelimi korkunç olan ve geleneksel olarak sağ beyinle ilişkili sanatsal yaratıcılıktan tamamen yoksun olan biri olarak, bunu kanıtlayabilirim.

Sol ve sağ beyin arasındaki farkı düşünmenin en iyi yolu, onları birbirlerinin ayna görüntüleri olarak düşünmektir. Bunu anlamak için bazı arka plan verilerine ihtiyacınız var. Carl Jung adlı bir psikolog, 20'li yıllarda kişiliği birkaç boyut boyunca bölen bir kişilik teorisi geliştirdi. Muhtemelen bunlardan birini duymuşsunuzdur: içe dönüklük ve dışa dönüklük. Bu konuda birkaç blog yazısı yazdım , ancak temelde buna bağlı: dışa dönüklük diğerlerinden farklılaşırken dışadönüklük başkalarına nasıl bağlanabileceğine odaklanıyor. Buna "tutum" denir.

Sonra dört farklı bilişsel fonksiyonunuz var: düşünme, hissetme, duyum ve sezgi. Basitlik açısından, diyelim ki bu işlevlerden ikisi "yargılama" işlevleri (düşünme ve hissetme), diğer ikisi de "algılama" işlevleri olarak kabul edilir. Değerlendirme fonksiyonları karar verir. Hakim bir zihniyet içinde olduğunuzda, sürprizlerden kaçınmaya çalışıyorsunuz. Tüm doğru kararları önceden vermiş olmak istersiniz, böylece sürprizler ortaya çıktığında uyum sağlamanız gerekmez. Önceden çok fazla planlama yaptığınız için, bir karar verildikten sonra katı ve esnek olma eğiliminiz olabilir. Öte yandan, algılayan bir zihniyet, pantolonunun koltuğundan uçmayı ve yumruklarla yuvarlanmayı tercih etme eğilimindedir.

Genel olarak, (yaratıcı bir şekilde adlandırılmış) bir işlev tutumu (içe dönük düşünme, dışa dönük duygu, vb.) Oluşturmak için işlevi ve bir tutumu birleştirirsiniz. İnsanların bilinçli kişilikleri daha çok baskın bir işlev tutumu ve yardımcı bir işlev tutumu ile tanımlanır. Sonunda, psikologlar geniş çapta iki tür insan olduğu konusunda fikir birliğine vardılar: ilk iki işlevi içe dönük bir değerlendirme işlevi ve dışa dönük bir algılama işlevinden oluşan insanlar veya birincil iki işlevi dışa dönük bir değerlendirme işlevi ve içe dönük bir algılama işlevinden oluşan insanlar . MBTI ya da benzer bir kişilik testine girdiyseniz, son mektup hangi kategoriye girdiğinizi söyler. Eğer bir P iseniz, bu içe dönük bir yargıç / dışlanmış algılayıcı olduğunuz anlamına gelir ve J tam tersidir.

Hala benimle mi? İki tarafın birbirinin ayna görüntüsü olması ile ne demek istediğimi burada bulabilirsiniz. O zaman kimse bunu fark etmedi, ama aslında işlevselliğin beyinde nerede bulunduğuna dair bir taslak oluşturuyorlardı. Gerçekten de, Jung'un işlev tutumlarının her biri beyindeki kaba bir konuma eşlenmiştir. Sonuç olarak, tüm P işlevleri (içe dönük yargılama ve dışa dönük algılama) beynin sağ tarafında ve J işlevleri beynin sol tarafındadır.

Ne zaman sol beyinli insanların ayrıntılarda iyi olduğunu ve sağ beyinli insanların "büyük resimde" iyi olduğunu söylediğinizde ("tüm resim" daha doğru olacağını söylesem de), şeylerin dış yüzüne odaklanıyorsunuz . Sol beyinli bir kişi sağ beyinli bir kişiyi yönetirse, solcu, haklı kişinin işlerini nasıl ön ve önceden yapacağına dair tüm detayları bilmek isteyecektir. İhtiyaçların taş olarak belirlenmesini istiyorlar ve zor teslim tarihleri ​​önceden kararlaştırılıyor. Hak, sadece daha sonra ayrıntıları doldurabilmeleri için ne yapmaları gerektiğine dair çok geniş bir fikir istiyor.

Ancak, bunun deneyimlediğiniz gibi olmadığını unutmayın. Görünüşe göre lefties kodu muhtemelen çok iyi düşünülmüş değildi ve bazı öngörüler tarafından önlenebilecek bazı sorunları var. Bunun nedeni, kafanızda kod gibi şeylerin soyut modellerini oluşturduğunuzda , tersine çevrilmiş işlevinizi kullanmanızdır, bu da tersine çalışır. Righty önceden bu modeli oluşturmak ve kolayca gerekli tüm detaylar doldurur veya böyle bir şekilde bunu istiyor olabilir tüm ayrıntıları girin. Ayrıca, alınacak en iyi yaklaşım açısından katı hale gelebilirler (C ++ 'ın daha gelişmiş özellikleri hakkında nasıl hissettiğiniz konusunda sert bir çizgide olduğunuzu unutmayın). Solukların modeli daha ad hoc olacak ve gittikçe doldurulacak.

Benim deneyimlerim, bundan dolayı, lefties, her şeyi aşırı mühendislikle suçluyor, oysa haklar çok hızlı ve kirli olmakla suçlanıyor. Her iki tarafın da gerçekleri vardır, ancak bu yaklaşım aşırıya kaçıldığında. İşte komik olan şu: aynı hedefe ulaşmak için zıt yaklaşımlar uyguluyorlar (yani, işleri halletmek). Haklar, modelin ön tarafa karar vermesini istiyorlar, böylece şeyi uygulamak ve böylece tüm projeyi daha erken yapmak için daha az zaman harcayabilirler. Kaçaklar, işleri daha erken halledebilmek için daha az zaman harcamak istiyorlar.

Bu arada, bu iki tutum proje yönetimi türü şeyler söz konusu olduğunda tersine çevrilir (zaman çizelgelerinin belirlenmesi, gereksinimlerle birlikte gelmesi vb.). Bu, bir tarafın diğerini çok katı olmakla suçladığı gerçekten kafa karıştırıcı bir duruma yol açabilir, diğer taraf diğer tarafın yeterince önceden planlamadığını iddia eder ve daha sonra bir sonraki argümanın her iki tarafı da tam tersi bir tavır alır.

Tüm bunlar hakkında ne yapabilirsiniz? Bu farklılıkların farkında olmak ve karşı tarafın görüşünü mümkün olduğunca karşılamaktan başka bir şey yoktur. Sorun şu ki, bu her iki yöne de gidiyor. LEFT'leri mümkün olduğunca anlayabilir ve ağırlayabilirsiniz, ancak lehine dönmeye çalışmadıkça bu çok fazla fark yaratmaz. Bu her zaman meydan okumadır. Leşler pislik olduğu ve hakların yaşamlarını sefil hale getirmek istedikleri için değil, lütfların programlama alanında egemen olduğu için. Düşünme şekliniz hemen hemen herkes tarafından yankılansaydı, siz de haklı olduğunuza ikna olursunuz.


Güzel derin ve bir süre gerçek iş yapmak ertelemek okumak için yeterince uzun!
DarenW

6
Çok ilginç şeyler. Herhangi bir kaynağınız var mı?
Mason Wheeler

4

Sezginize güvenin. Eğer iyi bir profesyonelseniz, bu "beyniniz" ne olursa olsun (sol veya sağ), sol beyinlerin bilinçli olarak yapabileceği şeyleri sezgisel olarak yapabileceğiniz anlamına gelir. Sonunda aynı şey. Maalesef bilinçaltımızı kontrol etmiyoruz, ama işi bilincimizden daha hızlı yapıyor, eğer yaparsa. Hiçbir yerden ortaya çıkan bu sezgisel içgörüler tam olarak bilinçaltı hesaplamaların sonuçlarıdır.

Oh, ve başarısız olabilirsin, çok güvenilmez. Ama sorduğunuzdan beri ...;)


2

Görsel olarak da düşünüyorum ve tipografi detayları beni üzüyor.

Google terimleri: İngiliz disleksi sitesi de Öğrenme stilleri: görsel mekansal düşünme, kısmen parçaya öğrenme.

Önce Kavramlar, Sonra İpuçları

  1. Doğru beyinli insanlar her şeyi 'zihinlerinin gözünde' hayal ederler.
  2. Görselleştirmeniz gerçeğe iyi uyduğunda, iş kolaydır
  3. Sol beyinli düşünmeyi iyi yapmayan sağ beyinli düşünürler görselleştirmeye güvenmelidir
  4. Doğru beyinli öğrenciler her şeyi aynı anda öğrenir 'aha!' sonra detayları zihinsel yapıya sığdırın. İLK genel bakışa, daha sonra detaylara ihtiyaçları var.
  5. Bağlam için genel bir bakış olmadan, ayrıntılar aklın gözüyle bağlantısız bir boşlukta yüzer - bu yüzden kaba kuvvet ezberlemesi kullanılmalıdır. Sağ beyinli için çok zor.

Bana yardımcı olan İPUÇLARI:

  • 1 Sözdizimi parçalarını ayırmak için Renk kullanma
    1. Hata ayıkladığınız kodun sözde kodunu yazın: bunu yapar, sonra buraya gidin ve eşleşecek kod bölümlerini etiketleyin
    2. nesneler, örneğin gerçek hayvanlar olsaydı, alışkanlıkları ve beklenen davranışları olurdu.Bu kodlama hakkında daha kolay görselleştirilmiş bir düşünme şeklidir.
    3. Kodu, notlarım olarak pseudicode ile bir hikaye olarak hayal ediyorum ve sonra etraftaki süreci takip ediyorum.

  • Şimdi hangi bölüm düzeltilecek?

  • İş akışım

  • Orada kim yaşıyor? (süreç, bağlantılar, veriler vb.)

  • ne yapmaları gerekiyor? (işlev) Tamam

    tamam

  • sözdizimi / yazım denetimi yapılabilecek bir yere kodlayın Tamam kopyalayıp yapıştırın

  • Ölçek

    Sonuç -> Çalışıyor mu? Evet, devam et

    Hayır? Karakterler herkesin öldüğü Hamlet'i canlandırmalı.

  • Çevreye dönüş

  • bir şey bıraktı mı ?, sysntax hataları
  • bir bağlantıya ihtiyaç var
  • veri gerekiyor
  • hata kodunun anlamı var mı?
  • kodun başka bir bölümünde çalışır?
  • Sürüm sorunu mu yaşıyorsunuz?
  • çalışması gerekiyordu
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.