Kendi kendine öğretilen kodlama pratiğime devam mı etmeliyim yoksa profesyonelce kodlama yapmalı mıyım? [kapalı]


36

Son zamanlarda profesyonel olarak çalışıyorum, diğer programcılarla takıldım ve sektörde arkadaşlıklar kurdum. Tek şey,% 100 kendi kendime öğrendim. Tarzımın, yeterince eğitilmiş olanların tarzından oldukça sapmasına neden oldu. Kodumun teknikleri ve organizasyonu farklı.

Yaptığım birkaç şeyin karışımı. Birkaç programlama paradigmasını birlikte harmanladım. İşlevsel ve OO gibi. İşlevsel tarafa OO'dan daha fazla dayanıyorum, fakat bir şeyin soyut bir varlık olarak daha anlamlı olacağı durumlarda OO kullanımını görüyorum. Bir oyun nesnesi gibi. Sonra bir şey yaparken basit rotaya da gidiyorum. Buna karşılık, bazen profesyonel programcılardan gördüğüm kod, onun iyiliği için karmaşık hale geliyor! Çok fazla kapak kullanırım. Ve son olarak, ben en iyi yorumcu değilim. Sadece kodu kullanarak okumayı yorum okumaktan daha kolay buluyorum. Ve çoğu durumda, yorumlar olsa bile kodu okudum. Ayrıca, kodumu ne kadar basit yazdığımdan dolayı onu okumak çok kolay oldu.

Profesyonel olarak eğitilmiş programcıların birim testleri gibi şeyler hakkında gittikçe devam ettiğini duyuyorum. Daha önce hiç kullanmadığım bir şey bu yüzden ne oldukları ve nasıl çalıştıkları hakkında en ufak bir fikrim bile yok. Çok fazla ve çok sayıda alt çizgi "_", ki bu benim zevkim değil. Kullandığım tekniklerin çoğu doğrudan benden, ya da birkaç kitap okudum. MVC hakkında hiçbir şey bilmiyorum, backbone.js gibi şeyler olsa da bu konuda çok şey duydum. Bence bu uygulamayı organize etmenin bir yolu. Bu sadece beni şaşırtıyor çünkü şimdiye kadar kendi organizasyon yapılarını yaptım.

Bu biraz acı verici. Ubuntu's Quickly gibi yeni bir şey öğrenirken şablon uygulamalarını hiç kullanamıyorum. Eğitebileceğim birinden anlatabileceğim kodları anlamakta zorluk çekiyorum. Komple OO programlaması gerçekten ağzımda kötü bir lezzet bırakıyor, ancak bu, HERKESİN kesinlikle kullandığı şey gibi görünüyor.

Koduma bakmamda kendime güvenmediğim ya da bir şirkete katılırken kıvılcım yaratmayacağımı ya da açık kaynak projelerine katkıda bulunup bulunmayacağımı merak ettim. Aslında insanların sonunda kodumu kontrol etmesinden korkuyorum. Bu sadece normal bir şey midir, herhangi bir programcı geçer mi yoksa gerçekten tekniklerimi değiştirmek için mi bakmalıyım?


2
Hiçbiri bir hafta / ay içinde sağlam bir geliştirici haline gelmedi. Kodun nasıl güvenilir ve sürdürülebilir bir tarzda teslim edileceğini bilmek zaman alır. Öğrenmeyi ve işlerin nasıl daha iyi yapılacağını merak ediyorsanız, kesinlikle bir "rock yıldızı geliştiricisi" olacaksınız!
EL Yusubov

11
Üretim yazılımının asıl yazarını geride bırakma eğiliminde olduğunun farkında olmalısınız - korumak için başkalarının anlayabileceği kod yazabilmek çok önemli bir beceridir. Başkalarını kodunuzu okumalarını ve ne düşündüklerini söylemeleri için teşvik edin ve ondan öğrenin .

1
"burası nerede eğitiliyor?" uygun şekilde eğitilmişlerin tarzından son derece sapma ". Hiç bir zaman, uygun şekilde eğitilmiş bir derece bulamadım.
Reactgular

2
İşlevsel programlamayı kullanmayı düşünen tek başlarına, kapanışları anlayan daha fazla insanla çalışmaktan mutlu
olurum

Madem diğer programcıları izin olarak / işveren biliyorum ince olmalıdır arka plan. Kendi kendini öğretme ve iyi eğitilmiş biri gibi kodlama yapmama ve eğitimli olma ve benzer şekilde eğitilmiş olanların kodlama yapmama arasında bir fark vardır.
Pureferret

Yanıtlar:


62

Aslında insanların sonunda kodumu kontrol etmesinden korkuyorum.

İyi. İnsanların kodunuza bakacaklarının bilincinde olmak sizi daha çok zorlayacaktır.

Programlama inanılmaz derecede geniş bir alan haline geldi. Bazıları kendi başlarına kariyeri olan düzinelerce konu, araç, niş ve uzmanlık var. Öğrenecek ve bilecek çok fazla şey var ve diğer programcılarla çalıştığınızda, bilmediğiniz ve bilmediğiniz şeyleri daima bileceksiniz. Bu iyi birşey.

Deneyiminizin eksik olduğundan endişeleniyorsanız, örgün eğitim ve eğitimli uzmanlarla işbirliği yaparak bunu düzeltmek için atmanız gereken birçok adım var. Ama kulağa korkuyor gibisin, daha sonra insanlar "Tamam, şimdi usta olduğum için resmen bir programcıyım" diyen ölçülebilir bir dönüm noktası var. Böyle bir dönüm noktası yoktur. Kesinlikle yeni bir şey öğrendikten sonra "evet, şimdi bir yerlere gidiyorum" diye düşündüğüm anlar yaşadım, ama kendinize bir programcı demek için bilmeniz ve yapmanız gereken şeylerin sihirli bir listesi yok.

Programlama hakkında pek çok şey biliyorum, birçok projede bir düzine dil kullandım, ancak kendi diyebileceğim programlama bilgisinin alt grubu küçücük. Ve bundan hoşlandım. Açıkçası, bir programcı senin olduğun bir şey değil. Bir programcı sürekli olmayı öğrendiğiniz bir şeydir.

Dürüstlük becerilerinizi, güçlü ve zayıf yönlerinizi alın. Sizden daha fazla deneyime sahip insanlardan geri bildirim alın. Olduğunu düşündüğünüz yere göre oldukça iyi sıradaki pozisyonları arayın - ama şu anki ustalığınızın biraz dışında kalan işlere gitmekten çekinmeyin. Yalnızca hakkında her şeyi bildiğiniz işleri yaparsanız, işte asla öğrenemezsiniz.


44
Bir programcı sürekli olmayı öğrendiğiniz bir şeydir . Bunu Çince tercüme edip bir dövme yapmalı mıyım?
Radu Murzea

1
@SoboLAN Size bunu yapma iznimi veriyorum. Yine de fotoğraf istiyorum!
asfallows

2
codereview.stackexchange.com , önceden bildiğim tek web sitesi, ancak başkaları da olduğundan eminim. Birinin kişisel olarak incelemesine ve onlarla birebir konuşmasına çok değer veriyor. Belki yakınınızda kolej / üniversite var, dost bir profesör ile sizinle tanışmak isteyen var mı? Bu noktada düşünebileceğim en iyi şey budur - belki başkalarının daha iyi fikirleri olacaktır.
asfallows

1
Benim düşünceme göre, gerçek test, başkalarının kullandığı kodları gönderip almadığınızdır .

4
@ ThorbjørnRavnAndersen: ve insanların ürettikleri şeyi gerçekten kullandıklarını ilk kez anladığınızda , ilk başta çok korkutucu olabilir. Ve sonradan çok güçlendirici. Ve sonra tekrar korkutuyorsun, yaptığın o büyük hatayı bulursun ;-)
Joachim Sauer

16

Diğer geliştiricilerle işbirliği içinde uygulamalar geliştirmeye başladığınızda, bu kişisel stil fobilerinden bazıları işe yarayacak.

Alt çizgi kullanan bir mağazada çalışmaya başlarsanız, alt çizgi kullanacaksınız. Önceki geçmişlerine bakılmaksızın herkes kodlama stili için mağaza standardını izler.

Kodlama stiliniz çok açık değilse, diğer geliştiricilerin izleyebilmesi için kodunuzun nasıl çalıştığını açıklayan net ve özlü yorumlar yazmaya alışsanız iyi edersiniz.

Ünite testleri hakkında hiçbir şey bilmiyorsanız, iyi bir kitap alın. Birim testlerinde çok sayıda iyi kitap var. MVC ile aynı.

Profesyonel yazılım geliştiricileri, sanal alanı daraltmadan başkalarıyla nasıl iyi oynayacaklarını biliyorlar. En iyileri, stile bakılmaksızın kod yazmayı ve okumayı biliyor.


5

Programlamanın bir sanat bileşeni ve bunun için bir disiplin bileşeni vardır. Sanat bileşeni, en iyi yaklaşımları düşünerek ve uygulayarak; disiplin, doğru yaptığınızdan ve başkalarının kodunuzu anlayabildiğinden ve gerektiğinde geliştirebildiğinden emin olmaktır.

Sanat bileşeni eğlencelidir: Yaparsınız çünkü tadını çıkarırsınız. Doğal olarak, ilk önce kendinize öğrettiğiniz kısım budur.

Disiplin bileşeni daha fazla sıkıntı vericidir: zorunluluktan çıkar. Takımda çalışmanın hayati bir bileşeni olsa da: en azından bir dereceye kadar bunu yapmaktan kaçamazsınız. Kodunuz ekip arkadaşlarınızınkiyle bütünleştiğinde, “istediği zaman değişiklik yapma” esnekliğiniz bir burun dalışı olur. Yine de, değişen gereksinimlere yanıt olarak kodunuzu güvenle değiştirme yeteneğine ya da hataları gidermeye ihtiyacınız vardır. Bu, çeşitli "sıkıcı" testlerin yapıldığı yerdir: birçok test yapıldığında, en son değişikliğinizin bir şeyleri kırıp kırmadığını kontrol etmek kolaydır.

Kod stili de önem kazanıyor, çünkü ortak bir stile bağlı kalmak kodu herkes için okumayı kolaylaştırıyor. Daha büyük şirketlerde, kodlama standartlarına uyumu otomatik olarak test eden gece işleri bulursunuz ve saptığınızda kötü uyarılarınızı e-posta ile gönderirsiniz.

Sorunuza dönersek, sanat bileşenine odaklanmak, programcının gelişiminin doğal bir erken aşamasıdır. Disiplin bileşenini takdir etmeye başlamadan önce sektörde çalışmanız yıllar alabilir. Bununla birlikte, aktif olarak "tekniklerinizi değiştirme" ye bakmanıza gerek yok: takım halinde çalışma sürecinde doğal olarak canlarını sıkacaklar.


3

Sorunuza göre, benzersiz projeyi ve ortaya çıkan teknolojiyi benimsemek için her zaman tekniğinizi değiştirmeyi düşünmelisiniz.

@ assfallows'ın anlamı: “Açıkçası, bir programcı olduğun bir şey değil. Bir programcı sürekli olmayı öğrendiğin bir şey.” Gerçekten hepsi budur ve tüm kodlamanın sonu.

Özellikle bir standart olduğunu görünce, diğerlerinden farklı bir şeyler yaptığınız alanları fark etmeniz harika. Unit Testing ve MVC'yi gördünüz - ve şimdi bir sonraki adımınız, onları öğrenmek için olmalı. Nasıl çalıştıklarını, bunları uygulamak için neye ihtiyacınız olduğunu görün ve bunları uygulamanın iyi bir tasarım olduğu zaman bir anlam kazanmaya çalışın.

Bu, yeni diller ve yükselen ve düşen kalıplarla sürekli gelişen bir alandır. Kodlama konusunda rahatsanız, tasarım bölümünü incelemeye başlayın. Onları neyin iyi yaptığını ve ne zaman kullanacaklarını öğrenin.

Kesinlikle bir takıma katılmak büyük bir avantaj - her zaman koştuğunuz veya tam sonuçları göz önünde bulundurmadığınız alanları bulmak için kodunuza bakmak için başka gözlere ihtiyacınız vardır.


2

Daha iyi bir yorumcu olmanıza gerek yok. Ama iyi bir taahhüt vermelisin (evet, bir çeşit VCS kullanmaya başla - Git'i tavsiye ederim).

Stil, HER ZAMAN gelişen bir şeydir. Endişelenme. Yeniden kullanılabilir kodun ne olduğunu ve ne olmadığını öğreneceksiniz. Fakat pratik yapmalı ve bunun için yardım almalısın.

Github'daki bazı Açık Kaynak projelerinde yardım etmeyi deneyin. Bazı insanlar orada gerçekten çok hoş ve size yardım etmeye çalışacağız. Bu sana verebileceğim en iyi ipucu.


2

Aslında insanların sonunda kodumu kontrol etmesinden korkuyorum. Bu sadece normal bir şey midir, herhangi bir programcı geçer mi yoksa gerçekten tekniklerimi değiştirmek için mi bakmalıyım?

Daha deneyimli programcıların geri bildirimleri olmadan nelerin değişeceğini nasıl bilebilirdiniz?

Başkalarının çalışmanızı incelemesini sağlamak, özellikle ilk birkaç kez göz korkutucu olabilir, ancak yeteneklerinizi geliştirmek için ihtiyacınız olan yapıcı eleştiriyi almanın en iyi yolu budur. Kod incelemeleri için faydalı bulabileceğiniz bir SE sitesi var . Akıllı arkadaşlardan kodunuza bakmasını istemek, geri bildirim almak için başka bir iyi yoldur.


2

En önemli şey esnekliği geliştirmektir. Temel kavramlara ne kadar aşina olursanız, herhangi bir dilde, programlama yaklaşımında, tarzında veya ortamda daha duyarlı olabilirsiniz.

Ustalık, çeşitli durumlarda, öğrenmek için her şeyi / var olanı ve öğrenmek / nasıl / bir sorunu çözmek için gitmek hakkında daha az şeydir.

Ve bunun için en iyi reçete pratiktir. Her zaman bir projeniz olmalı; Ücretli konserler arasındaysanız, kişisel bir oyuncak alın. Boş zaman bir hafta sonu? Daha önce hiç kullanmadığınız bir dil veya platform için 'merhaba dünyasında' çalışın. Aynı anda çok şey öğrenmenin yollarını arayın. Örneğin, Google App Engine'de bir şey oluşturun; Python, BigTable ve sütun odaklı veritabanları hakkında bir kerede hepsini öğreneceksiniz. İyi bir "profesyonel" Google tarzı dozu da alacaksınız.

İyi bir general, öğrendiği taktiklerini ve birikmiş deneyimini çeşitli arazilerde nasıl kullanacağını bilir. Bazı taktikler ve deneyimleriniz var gibi gözüküyor, ancak yabancı bir arazi ile karşılaşmanız gerekiyor. Muhtemelen bildiklerinizi ve daha sonra öğrenmeniz gerekenleri tespit etmenin en iyi yolu budur.

Ve eğer "profesyonel" tarz peşinde olduğun şeyse, bazı "profesyonel" projeler üstlen. Beğendiğiniz, açık kaynak kodlu bir proje bulun, kendinize bir değişiklik yapın ve bu konuda ayarlayın. Soygun gözden geçirenlere hazırlıklı olun, ancak bu alandaki kişilerin çoğunluğunun düzgün sosyal becerilere sahip oldukları yerlere gelmediğini unutmayın. Mesele, mümkün olduğunca ne olmak istediğinizi kendinize göstermektir. Ve kendin yapacak kadar kendini geliştirmelisin. Hiçbir sınıf size gerçekten öğretemez. Aslında, bugün çok fazla sınıf öğrenmesi oluyor ve gerçek dünyadaki yeterlilik yeterince katı değil.


İlk gönderdiğiniz cevabı yaptığınız için teşekkürler ve Stack Exchange'deki Programcılar grubuna hoş geldiniz. Lütfen Stack Exchange sitelerinde soru ve cevaplar için bu faydalı yönergelere göz
DeveloperDon

1

Koduma bakmamda kendime güvenmediğim ya da bir şirkete katılırken kıvılcım yaratıp yaratmayacağımı ya da açık kaynak projelerine katkıda bulunup bulunmayacağımı merak ettim. Aslında insanların sonunda kodumu kontrol etmesinden korkuyorum. Bu sadece normal bir şey midir, herhangi bir programcı geçer mi yoksa gerçekten tekniklerimi değiştirmek için mi bakmalıyım?

Bence, kalitesinin objektif ölçütlerine odaklanırsanız, başkalarının sizin kodunuz hakkında ne düşündüğü konusunda endişelenmenize gerek yok. bu mu

  • Doğru?
  • Anlaşılabilir?
  • Bakımı?
  • Verimli?

İlke olarak, başkalarının görüşlerinden ziyade nesnel niteliklere odaklanmak her zaman hedefiniz olmalıdır. Başkalarının görüşlerine odaklanmak sıradanlığa ve yaşadığın gibi endişeye giden yoldur.

Başkalarının düşünceleriyle ilgilenmenin tek nedeni, onlarla sosyal olarak (veya bir iş ortamında) iyi bir şekilde bütünleşebilmektir. Aklınızın ön saflarında, çalışmanızın nesnel niteliklerini geliştirme hedefine sahipseniz, başkalarının tepkilerinden korkmaya gerek yoktur - bunlar sadece öğrenme fırsatları veya en kötüsüyle uğraşacak pratik detaylardır. .

Kendine dürüst ol!! Öğrenmeye devam edin ve yaptığınız şeyden zevk alın.


İlk gönderdiğiniz cevabı yaptığınız için teşekkürler ve Stack Exchange'deki Programcılar grubuna hoş geldiniz. Düşünce tarzın için çok fazla saygım var. “İnsanların yapamayacağınızı söylediği şeyleri yapmayı dener ve bulursunuz.” Henry David Thoreau. Lütfen Stack Exchange sitelerinde soru ve cevaplar için bu faydalı yönergeleri inceleyin: programmers.stackexchange.com/questions/how-to-answer
DeveloperDon

1

Bana Yazılım Mühendisi olmak için üniversiteye gittikten sonra kendimi hatırlatıyorsun. Eğer programcı olmak istiyorsan, pozisyon al derim. Kodunuzu yorumlamanız, birim testleri yazmanız, anlamanız, tamamen nesneye yönelik kod yapmanız gerekecektir. Ama şu anda bunu yapmak için gerçek bir nedeniniz yok. Kişisel küçük projeler üzerinde çalıştığınız sürece. Kendinden başkasına cevap vermek zorunda değilsin. Bir geliştirici olarak daha fazla büyümeyeceksiniz.

Birçok insanın üzerinde çalıştığı büyük projeleri ele alarak ve "Bu sürüm ücretsiz mi? Çünkü bunu müşteriye bırakacağız" gibi sorulara cevap vermek zorunda kalıyoruz. Bir programcı / mühendis olarak büyüyeceksiniz. Bazı sert darbeler alacaksınız. Bahsettiğiniz şeyleri daha değerli bulabilir ve daha önce kimsenin düşünmediği yeni şeyleri bulabilirsiniz. Büyüyeceksin.

Kolejim bile denese bile bana bunları öğretemedi.

Birim Testi için, Test Odaklı Geliştirme konusuna bakın.

Yorum yapmak için gittikten sonra yazdığınız kodu düşünün. Ve diğer insanların harcadığı zaman bunu tersine çevirir.

Nesneye Yönelik Diller İçin. En azından anlayın. Sorunları daha okunaklı bir şekilde çözmek için kullanabileceğiniz bir araçtır.

İyi şanslar: d


0

Kısacası, öğrenmenin en iyi yolu öğrenebilirsiniz biriyle takılmak genellikle den . Becerilerinizin çizilmediğini düşünüyorsanız, elinizden gelenin en iyisi olan insanlarla takılmak en iyisidir. Kesinlikle kendini geri çekmekten ve tecrit etmekten daha iyidir.

Ancak bence çok basitleştirilmiş ve yanıltıcı bir tablo çiziyorsunuz. Her şeyden çok "profesyonelce öğretilmiş" programcılar gerçekten çok iyi. Sadece bir şey yaptıkları için mutlaka yapılması gereken şey olduğu anlamına gelmez.

Ve söylediklerinizin çoğu (ancak hepsi değil) gerçekten onlara bir ya da iki numara öğretebilecek olan kişisin gibi geliyor .

İşlevsel tarafa OO'dan daha çok dayanıyorum, fakat bir şeyin soyut bir varlık olarak daha anlamlı olacağı durumlarda OO kullanımını görüyorum.

Bu benim için harika geliyor. En iyi kodlayıcılar iş için doğru aracı kullananlardır. Her zaman her iki paradigmayı da tanıyan birini seçer ve her birini dini olarak yalnızca bir paradigma kullanan biri üzerinde mantıklı olduğu yerlerde kullanırım.

Sonra bir şey yaparken basit rotaya da gidiyorum. Buna karşılık, bazen profesyonel programcılardan gördüğüm kod, onun iyiliği için karmaşık hale geliyor!

Yine, basitlik iyidir . O kadar kod karmaşık yapmayın ihtiyacı karmaşık olması. Bazı insanlar do şeyler şıklığın bazı yanlış düşüncenin karmaşık out yapma eğilimindedir ya çünkü "bunu sonra ek işlevler gerekir". Genel olarak, probleminizi çözen en basit şeyi yapmak daha iyidir.

Çok fazla kapak kullanırım. İyi. Bu yüzden oradalar. 1990'larda ve Java'nın modası geçmiş yarı-OOP modelinde sıkışıp kalmış bazı insanları korkutuyorlar, ama gerçekten, bu onların sorunu.

Ve son olarak, ben en iyi yorumcu değilim.

Ne yorumlanmalı ve nasıl bir derece özneldir. Orada gerçek bir "doğru" ya da "yanlış" yoktur, ancak bir ekip üzerinde çalışırken, yalnızca kodun yazarının değil tüm ekibin anlayabileceği bir kod yazmak önemlidir. Ve bazen, takımın kodlama stiline uymak için uzlaşmalar yapılmalıdır. Bu mutlaka daha fazla yorum yazmanız gerektiği anlamına gelmez, bu sadece sizin ve ekibinizin üzerinde anlaşmanız gereken bir şey olduğu anlamına gelir.

Profesyonel olarak eğitilmiş programcıların birim testleri gibi şeyler hakkında gittikçe devam ettiğini duyuyorum. Daha önce hiç kullanmadığım bir şey bu yüzden ne oldukları ve nasıl çalıştıkları hakkında en ufak bir fikrim bile yok.

Onlara sor. :) Kodunuzu test etmek önemlidir ve birim testleri bunun için popüler ve faydalı bir araçtır.

Çok fazla ve çok sayıda alt çizgi "_", ki bu benim zevkim değil.

Yorumlarda olduğu gibi, bu özneldir ve dile bağlıdır. C ve C ++ lowercase_with_underscores'da oldukça yaygın bir adlandırma kuralıdır. Diğer birçok dilde, neredeyse hiçbir zaman alt çizgi görmezsiniz. Ama günün sonunda, bu gerçekten önemli değil. Bir işlevin çağrılıp çağrılmadığı write_to_logya WriteToLogda aslında bir fark yaratmayacağı. Birisinin onu emmesi ve ekibin orada kararlaştırdığı şeye uyması gerekecek.

MVC hakkında hiçbir şey bilmiyorum, backbone.js gibi şeyler olsa da bu konuda çok şey duydum. Bir uygulamayı organize etmenin bir yolu olduğunu düşünüyorum. Bu sadece beni şaşırtıyor çünkü şimdiye kadar kendi organizasyon yapılarını yaptım.

Birim testlerinde olduğu gibi, öğrenmeyi asla bırakmayın. Bilmediğiniz ve bildiğinizden farklı bir arka plandan gelen insanlarla birlikte çalışıyorsunuz. Birbirlerinden öğrenin. Onlara öğretebileceğiniz açıkça net şeyler var, fakat bilmediğiniz veya hiç duymadığınız, size öğretebilecekleri şeyler de var. Bu, sizin (veya onların) kötü bir programcının olduğu anlamına gelmez. Bu, iyi bir programcının, geliştirmek ve başkalarından öğrenmek için çabalayan biri olduğu anlamına gelir.

Komple OO programlaması gerçekten ağzımda kötü bir tat bırakıyor

Burada da aynı, "profesyonelce eğitilmiş" (CS derecesi) olarak adlandırdığınız şey benim. Programlama öğretilen insanlar, kendi kendini yetiştiren insanlar kadar farklıdır. Gerçekten birkaç yeni numara öğrenmeye ihtiyaç duyan kişilerle çalışıyorsunuz.

Aslında insanların sonunda kodumu kontrol etmesinden korkuyorum. Bu sadece normal bir şey midir, herhangi bir programcı geçer mi yoksa gerçekten tekniklerimi değiştirmek için mi bakmalıyım?

Her ikisi de. Elbette, başkalarının yaptığınız şeye bakması (ve yargılaması) korkutucu. Ama aynı zamanda çok eğitici. Size başka türlü ne yaptıklarını veya neden başka şekilde yaptıklarını söyleyebilirler. Geliştirmenize yardımcı olabilirler ve kendileri de bir şeyler öğrenebilirler. Onlara bir problemi “tercih ettikleri” çözümden daha iyi çözen kodları gösterin ve umarız giderler ”ah, bu temiz. Bunu nasıl bildin? Bunu nasıl adlandırıyorsun? Bu tekniği kendim kullanmalıyım "


0

Bu tam bir cevap değil, zaten birkaç tane iyi cevabınız var. Ancak, bana biraz şaşkın görünen ve ele alınmayan birkaç nokta var.

Yaptığım birkaç şeyin karışımı. Birkaç programlama paradigmasını birlikte harmanladım. İşlevsel ve OO gibi. İşlevsel tarafa OO'dan daha çok dayanıyorum, fakat bir şeyin soyut bir varlık olarak daha anlamlı olacağı durumlarda OO kullanımını görüyorum. Bir oyun nesnesi gibi.

Bana göre İşlevsel Vs Nesne Yönelimli programlama yerine, bildirimsel ve zorunlu programlama ile ilgili kafa karıştırıyormuşsunuz gibi görünüyor . Eğer bildirimsel programlamaya eğilimli ve zorunluluktan uzak duruyorsanız, o zaman bu iyi bir şey. Beyanname, kodunuzun anlaşılmasını kolaylaştıracak yan etkileri ortadan kaldırmaya çalışır.

Modern programlama dilleri genellikle bildirimsel programlama modelini destekler. Örneğin, C # 'da Linq kullanımı bildirimsel bir stille sonuçlanır, çünkü istediğinizi nasıl elde edeceğinizi söylemiyorsunuz; sadece ne istediğini söylüyorsun.

Komple OO programlaması gerçekten ağzımda kötü bir tat bırakıyor, ancak bu, HERKESİN kesinlikle kullandığı gibi görünüyor.

Modern diller genellikle çoklu paradigma dilleridir. Herkesin "saf" bir dil kullanması nadirdir. Birçok İşlevsel dil, nesneleri ve yan etkileri destekler. Nesneye yönelik olarak kabul edilen diller çoğu zaman her şeyin bir nesne olduğu kısıtını dayatmaz.

Tam OO ile ne demek istiyorsunuz? Asla "saf" OO kodu üzerinde çalışmadım. Belki bize sevmediğiniz şeyler hakkında daha ayrıntılı bilgi verebilirsiniz. Açık kaynaklı bir projeden bir örnek yardımcı olabilir.

OO programlaması bize aşağıdakileri destekleyecek birçok özellik sunar: veri soyutlama, kapsülleme, mesajlaşma, modülerlik, polimorfizm ve kalıtım. Bundan faydalanmayan bir kod tabanına bakacak olursam, ağzımda kötü bir tat bırakacaktı.


Neden aşağı oy?
Dave Hillier

0

Kısa cevap: evet.

Kendine öğretmek neredeyse tamamen iyidir.
İyi anlamda, iyi tavsiye ile süzün.

WRT profesyonel programlama öğrenme, evet.
Aklında ne var?
Konferanslar, seminerler, belgelendirme, derece?
Her birinin bir maliyeti / avantajı vardır.
Yatırım getirisi iyi olduğunda, kaynaklara sahipseniz, bunun için gidin.

Kaynağı göz önünde bulundurarak derecelerle ilgili tavsiyelerde bulunun: kendileri olan / olmayan insanlar kendi çıkarlarına sahip.
Her birine yarım düzine kadar konuş.

Akademi sanayiden yalıtılmış mı? Genellikle.
Bir derece değersiz mi? Dolar bazında, tartışması zor.
Neredeyse her zaman daha fazla para kazanmak, ancak üniversite kredilerine dikkat edin.

Bilgi-bilge? Olabilir.
Okuldan nefret edersen, koyduğundan daha fazla çıkamazsın.

Derecesi sizin için değerli bir hedef gibi hissediyorsanız, muhtemelen öyle.

Daha derine inin ve çalışma programı, maliyetler, çevre hakkında bilgi edinin. İlgi, bağlılık, zaman ve kaynaklara sahip olduğunuzdan emin olun. Muhtemelen on üç yıl okula gitmiştin, öyleyse başka dördü nedir? En pahalı olacaklar ve onları en değerli hale getirmek için güveneceğiniz asıl kişi sizsiniz.

Maliyetler oldukça korkutucu olabilir, ancak hikayenin sadece bir bölümünü anlatıyorlar çünkü liyakat, ihtiyaç ve yüzlerce sebep için çok fazla burs ve burs var.

Eğer gidersen, akıllı kar ve tomurcukları seç.


0

İkinci Soru - Kendi tarzımı kullanabilir miyim?

İki sorum var.

İlki senin unvanında. Lütfen önceki cevabımı gör.

İkincisi, stilinizin profesyonel stilden aşağıda sıralanan noktalarla nasıl farklılaştığını nitelendirdiğiniz beş paragrafta detaylandırılmıştır:

  • % 100 kendini öğretti.
  • Teknik ve organizasyon bakımından farklı.
  • İşlevsel ve nesne yönelimli karışımı.
  • Daha az karmaşık.
  • Bir sürü kapanış.
  • Birkaç yorum.
  • Ünite testi yok.
  • Birkaç alt çizgi.
  • MVC yok.
  • Omurga.js yok.
  • Şablon uygulaması yok.

Özetle, Frank Sinatra yaklaşımını kullanmanın doğru olup olmadığını sorduğunuzu düşünüyorum - "Benim yöntemimle yaptım". Başkalarının kod uzmanı olarak adlandırdığınızda kararsızlığı hissediyorum, ancak buna dahil değilsiniz. Stil yapışkan bir kişisel meseledir ve iyi kodun ne olduğu konusundaki tartışmalar sonsuzdur ve çoğu zaman zaman kaybıdır. Grubunuz yazılı bir kodlama kuralı kullanıyorsa, bazı konular daha kolay olabilir. Lütfen kontrol edin:

http://en.wikipedia.org/wiki/Coding_conventions

Başkasının kodunu öldürmenin bir kuralları vardır ve bu, ekibinizle birlikte üzerinde çalışmanız gereken bir başka şeydir. Kalın derini giy ve acımasız olmadıklarını um, ama ne yaparsan yap, savaşa girme.

Kodunuzu gören diğerlerinin kaygıları hakkında yorum yaptınız. Hazırlanın çünkü sadece görmeyecekler, aynı zamanda yeniden yazacaklar ve tarzınıza neyin yanlış olduğunu söyleyecekler. İş arkadaşlarınız esnek veya katı olabilir. Her iki durumda da, stillerini kodlarını yeniden yazmamanızı veya stilin her noktasını bir pazarlık yapmamanızı öneririm.

Tek tip kod (ve tek tip eğitim) almanın nedenleri, gelişimin hızını ve verimliliğini artırmak ve bir şekilde en iyi uygulamaların öğrenilmesini kurumsallaştırmaktır. CamelCase veya use_underbars gibi konular önemsiz ve küçük görünebilir, ancak tutarlılığın faydaları vardır.

Lütfen ünite testine ve test odaklı gelişime açık olun. Yalnız olduğunuzda, ödeme için projeler yapmanın bir parçası değil, daha çok hobi gibidir. Eşyalarının, başkalarının yaptığı şeylerle uğraşmasına gerek yok. Kodunuz çökerse, önemli değil. Ancak bir takıma dahil olduğunuzda, yazdığınız kod tüm müşterileri etkileyebilir, özellikle de müşterilere ulaşırsa.

Benzer şekilde, eğer ekibiniz MVC kullanıyorsa, lütfen bunu referans aldıkları kaynaklardan öğrenin. Program yapılandırma yöntemleri, denemenin gösterdiği gibi büyük bir fark yaratabilir. Yine, ekibinizden örnek ve liderliği alın.

Ekibiniz backbone.js kullanıyorsa, siz de kullanabilirsiniz. Ekibiniz oluşumunda uçan ördekler gibidir. Bir araya gelmek, daha az enerji harcamasına yardımcı olur, daha güvenli hale getirir ve gittikleri yerlere daha etkin bir şekilde ulaşmalarına yardımcı olur. Çok fazla baskı yaparsanız analoji kopar, ancak ortak araçlar, teknikler kullanmak ve ekip kararlarının ardında uyum sağlamak için büyük avantajlar vardır.


0

Verilen tavsiyeler oldukça kullanışlıdır, ancak asıl amacımın kullanıcılarım için yararlı olan 'çalışan yazılım' yaratmak olduğunu hatırlamaya çalışıyorum. İzleyicilerim genellikle bir grup programcı DEĞİLDİR - otomatik bir çözüm için para ödemek isteyen iş insanlarıdır (Kullanıcılar, OO Metodolojileri, Altyapıları, Ünite Testleri, kod yorumları vb. İle ilgilenmezler. kapattım.)

Çevik Manifesto'nun ideallerini kariyerimde yararlı buldum (www.agilemanifesto.org)

  • Bireyler ve süreçler ve araçlar üzerindeki etkileşimler
  • Kapsamlı dokümantasyon üzerinde çalışan yazılım
  • Sözleşme müzakere konusunda müşteri işbirliği
  • Bir planı takip etmeyi değiştirmeye cevap vermek

0

Bu soru ile tamamen ilgiliyim. Ben de tamamen aynı hislere ve çok benzer bir geçmişe sahibim (ama tamamen aynı değil). Profesyonel olarak (ya da daha çok akademik olarak) eğitilmem gerekiyordu, bu yüzden OO programlaması vb. Hakkında bilgi sahibi olmam gerekiyordu. Bazı derslerimde OO'yu öğrendim ve neden hiçbir sebep anlamadım. Etki, OO’yu anladığım tek zaman, ticari işler yaptığım ve buna iki büyük danışman tarafından zorlandığım zamandı.

Profesörümün aynı derecede zekice olduğundan eminim ama pratikte ticari bir ortamda işlevsel programlamanın gerçek faydasını görüyorsunuz, ancak birkaç ay içinde çalıştırmak ve öğretmek ve bitirmek için tasarlanmış bir kursta görme şansınız yok. . MVC tabanlı yapı üzerinde çalışma şansım olmadı ama aynı olacağından eminim, yani bir kitaptan çalışan kavramları seçebileceğimden eminim, ancak bir kullanımda gördüğümde faydasını anlayacağım ticari ortam Ve ben tamamen sana katılıyorum, bir problemi daha basit bir şekilde çözebiliyorsan neden OO ve MVC ve diğer karmaşık yapıları kullan. Benim tavsiyem, utangaç olmamanız çünkü sizi farklı durumlara maruz bırakacak ve aynı şeyleri farklı bir ışıkta anlamanıza izin verecek.

Elbette, akademik geçmişimdeki sözdizimi ve kavramları öğrendim, ancak programlamayı öğrenmeye başladığım ticari dünyada.


Gerçek dünya deneyiminin yerini hiçbir şey tutamaz, öğretim ne kadar iyi olursa olsun
Andrew
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.