Yoğun teslim tarihlerine rağmen etkili kod nasıl yazılır


28

Teslim tarihlerinde kesin teslim tarihine sahip birçok projemiz olduğu bir ortamda çalışıyorum. Hatta doğrudan müşterilerle konuşuyoruz, bu yüzden işlerin hızlı ve hızlı bir şekilde yapılması şart.

Benim meselem, aklıma gelen ilk çözüm için her zaman kod yazmamdı, elbette o anda en iyisini düşündüm. Her zaman çirkin olsa bitiyor ve daha sonra fark ettim ki bunu yapmanın daha iyi yolları olduğunu ancak zaman kısıtlamaları nedeniyle değişmeyi göze alamaz.

Kodumu verimli hale getirip henüz zamanında teslim edebilmem için herhangi bir ipucu var mı?


11
Verimli koda odaklanmayın, daha doğrusu doğru koda odaklanın . Bu çok daha fazla gider. Sonraki sürümler için verimliliğinizi kaydedin.
Jesse C. Dilimleyici

Yanıtlar:


23

Kodun sürdürülmesi gerekiyorsa, kodu daha sürdürülebilir hale getirmek için ek zamana gerek duyulduğunu açıklayın, bu da arka planda tasarruf etmenizi sağlar. Başka bir deyişle, sürdürülebilir kodu bir gereklilik haline getirin.

Bunu umursamıyorlarsa, her zaman daha iyi olmak ve mümkün olduğunda en iyi uygulamaları dahil etmek için elinizden gelenin en iyisini yapmak dışında farklı bir şey yapmanıza gerek olmadığını düşünüyorum.


3
Doğru, nadiren bu şekilde işe yaraması dışında, hepsine katılıyorum. Patronun X tarihine göre bir şeyler yapmak istiyor ve ödün vermiyor Çok kötü, hala halletmek zorundasın, ya da belki başka bir yerde iş bulabilirsin, bu genellikle bir seçenek değildir.
Ed S.

4
@EdS. Başka bir yerde iş bulmak her zaman bir seçenektir ... "kariyerini sürdürmek" olarak adlandırılır ve bunu yapmak için zaman ve çaba harcar.
Spoike

17

Tamam, bu biraz çılgınca gelebilir ama yemin ederim işe yarıyor. Bu sadece programlama için değil, artan yaratıcılık, konsantrasyon ve hafıza için bir reçetedir:

  • İyi ye
  • Meditasyon
  • Bolca uyuyun (kişiye bağlı olarak 7-9 saat)
  • Beyniniz bulanık olduğunda şekerleme
  • Çözülmemiş bir sorunla uyu. Her şeyi tamamladıktan gününüzü bitirmeyin. Bekleyen zor bir görevi bırakın - bilinçaltınız oldukça etkilidir.
  • Rahat kıyafetler giyin
  • Egzersiz
  • Zihinsel alıştırmalar yapmak için zaman ayırın - sudoku (programlanmamış), bulmacalar, matematik tatbikatları, mekansal bulmacalar, vb.
  • Davranışlarınızın hangisinin performansı etkilediğini görmek için kendiniz üzerinde nesnel deneyler yapın (bunun işe yaraması için performansı test etmek için güvenilir bir yol gerekir).
  • Ruhsal sağlığınıza katılın
  • Pamuklu külot
  • Cinsel sağlığınıza katılın
  • Ailene ve arkadaşlarına zaman ayır
  • Mesleğinizin dışında bir şeyde (müzik, yemek pişirme, spor vb.) Uzmanlaşın ve aynı şeyi yapan diğer insanlarla sosyalleşin
  • Bazı insanlar için, bir evcil hayvan bir zorunluluktur

Bunu bilmeden önce, programlama verimliliğinde ve çözüm kalitesinde belirgin bir gelişme göreceksiniz (diğer alanlardaki gelişmelerden bahsetmiyoruz).

Kaynaklar:

  1. Mucize Beyininiz: Beyin Gücünüzü En Üst Düzeye Çıkarın, Belleğinizi Arttırın, Ruh Halinizi Yükseltin, IQ'nuzu ve Yaratıcılığınızı Geliştirin, Zihinsel Yaşlanmayı Önleyin ve Tersine Çevirin
  2. Ölçülen Benlik
  3. Seth Roberts - Bilimsel Amerikan'da

6
Unuttun: Kafein yok.
Christopher Mahan

Unuttun: Kod yazarken PORN'u İzlemeyin! Teşekkür ederim!
AmirHossein

9

Karşı sezgiseldir, ancak muhtemelen yavaşlamanız gerekir. Akla gelen ilk çözümü uyguladığınızda, yolun aşağısında kendiniz için birçok ekstra çalışma yaratırsınız. "Yolun aşağısında" derken, öğleden sonra o kadar erken demek istiyorum. Kendiniz için yarattığınız sorunların gelişmesi aylar almaz. Seçeneklerinizi düşünün. Daha az yazın ve daha fazla düşünün. Kısa bir projede bile, daha az kodlamanın gerçekten sizi hızlandıracağını göreceksiniz.

Müşterileriniz belirli sektörlerde kümeleniyorsa, yeniden kullanılabilir bileşenleri olan projeler oluşturmaya çalışın. Kod yazmamak, yazmaktan daha hızlıdır.

Müşterinizin bakış açısından bu biraz " Hızlı, iyi ve ucuz, iki tane seç " gibi kokuyor . Tabii ki, hepimiz hemen istediklerimizi istiyoruz, ancak müşterilerinizin bunun uzun vadede en iyisi olup olmadığını düşünmeleri gerekir. Takas işlemlerini ifade etmeye çalışın ve iyi kararlar vermelerine yardımcı olun.


Buna katılıyorum. Kodlamaya başlamadan önce iki veya üç olası yaklaşımı göz önünde bulundurun. Ardından, uygulama kolaylığı, test kolaylığı, verimlilik ve genişletilebilirlik kombinasyonuna dayanarak seçiminizi yapın.
Omega Centauri

8

Başka bir iş ara.

Bunu yaklaşık 6 saat sonra bulacaksınız. Yaptığın işten gurur duymayacağın bir yıla. Ayrıca, yeni teknikler, teknolojiler veya çerçeveler hakkında bilgi sahibi olmak için hiçbir zaman harcayacaksınız - yani bir yıl sonra yeni teknolojilere ayak uyduramayacaksınız. Piyasaya göre bir yıl sonra başladığınızdan daha kötü bir programcı olacaksınız.

Çok fazla zaman geçerse (birkaç yıl veya daha fazla söylerseniz), kalite kodunun takdir edilmediği bu tür hızlı tempolu işler dışında sadece hız konusunda çok zor bir zaman geçireceksiniz.

Bu, "gerçek dünya" öğrenme deneyimi olarak, hızlı tempolu ortam için söylenecek bir şey olduğunu söyledi, ancak şunu söyleyebilirim ki yaklaşık 6 mos. yeterlidir. Bunun ötesinde, birkaç işverenle bağlantı kurmalı ve daha iyi bir yer aramalısın. Çok daha mutlu ve dürüst olacaksın.


2
"Mos" ile ne demek istiyorsun? ?
Darius.V

mos. = aylar. Gitmek için iki karakter daha ...
gnasher729

Seni tanımıyorum ama Farsçadaki "mos" un kötü bir anlamı var. popo demek. ;)
AmirHossein

3

Müşterilerinizden görünüm kod verimliliği bu kadar önemli olmayabilir ve oldukça pahalı olabilir. Kod yapmak için harcanan bu günlerde, zamanınızın bir saatini doğrulamak için saatlerce CPU zamanından tasarruf etmeniz gerekir. Çoğu program için verimlilik o kadar önemli değil. Olduğu yerlerde bile, kodun çoğunun bu kadar verimli olması gerekmez. Seçim göz önüne alındığında, tercihim kodun sürdürülmesi daha verimli ve zor olmaktan ziyade bakımı kolay bir çözüm olacaktır.

Başlamadan önce kodunuzu planlamak için zaman ayırmak, çözümleri değerlendirmek ve alternatif yaklaşımları değerlendirmek için zaman verebilir. Bu size kodlama ve test konusunda zaman kazandırmalıdır. Genellikle daha basit kodun daha verimli olduğunu buldum.

Kodu, gerektiği kadar çok satır kullanarak temiz bir şekilde yerleştirin. Karmaşık kod, optimize edicinin kafasını karıştırabilir ve daha yavaş kodla sonuçlanabilir. Modern derleyiciler kodu optimize etmede çok iyidir, işini yapmak için ona güven.

Yeterince iyi olduğunu kabul et, yeterince iyi. Daha verimli yaklaşımlar bulduğunuzda kendinize bir not yazın. Biraz zaman kazanırsanız, daha verimli tasarımlarınızdan birkaçını uyguladıklarınızla karşılaştırın. Bunları küçük (yalnızca etkilenen kod) ve büyük olanı (bunları kullanan program) deneyin. Bu, daha verimli bir yaklaşımın ne zaman uygun olduğu konusunda size bir fikir verecektir.

Birçok insan erken optimizasyonun kötü bir yaklaşım olduğunu düşünüyor. Uygulanması maliyetli olabilir. Ne yazık ki, birçok erken optimizasyon aslında optimize ettikleri kod kadar etkili değildir. Kodu doğru şekilde optimize etmek için, verimliliğinizi gerçekten arttırıp artırmadığınızı görmek için değişiklikten önce ve sonra kodu göstermeniz gerekir.

Düşük kavrama ve yüksek uyum ile daha temiz kod yazmanıza yardımcı olacak çalışma tekniklerini öğrenin. Çoğu durumda, karmaşıklığı azaltmak verimliliği arttırır. Geliştirme sırasında düzeltmeniz gereken hataları en aza indirmenize yardımcı olan teknikler, daha hızlı teslimat yapmanıza yardımcı olacaktır. Bu, alternatif yaklaşımları test etmeniz için zaman kazandırabilir.


1

Robert en önemli yönleri ele aldı.

Bu tür ortamlarda çalıştım, ki burada kod altı aydan fazla bir süredir yaşamıyor (olamaz). Aklıma gelen birkaç kural var:

  1. Açık kaynak kitaplıkları, üçüncü taraf çözümleri vb. Kullanın. İlgili öğrenme, daha az bakım ve hata ayıklama ile ödenir. Bununla birlikte, bir buggy kütüphanesi ile sıkışmışsanız, mahkumdur.
  2. Tasarımınızın genişletilebilir olduğundan emin olun. Zorunlu bir gereklilik: işin çoğu yeni özellikler değil, iyileştirmeler olarak geliyor.
  3. Sıkı test planları oluşturun. Bir QA alın veya regresyon testini sağlamak için testleri otomatikleştirin.
  4. Akıllı araçlar kullanın - IDE'ler, kod oluşturma yardımcı programları, vb.
  5. İşleri mümkün olduğunca yapılandırılabilir tutun. (Çevirme tarafı test çabalarının artmasıyla)
  6. Yazma hızınızı artırın :-)

1

Tasarım aşamasında meslektaşlarınızla konuşun .

Tasarımınızı ve nasıl yapmak istediğinizi tartışın ve kararlarınızı incelemelerini sağlayın. Neyin akıllı olduğu konusunda hemfikirseniz ve çok daha sağlam bir tasarıma sahip olursunuz.


1

Uygulama. İkinci niteliğe gelinceye kadar iyi kod yazma alıştırması yapın. Sonra daha hızlı kodlamada pratik yapın. O zaman daha iyi kodlama alıştırması yapın. Ve işin bitince ... biraz daha çalış.


0

Benim meselem, aklıma gelen ilk çözüm için her zaman kod yazmamdı, elbette o anda en iyisini düşündüm.

Hayır, bu senin sorunun değil. Bu bir erdemdir. İşe yarayabilecek en basit şeyi yapıyor. Ancak, yalnızca yeniden düzenleme ile birleştirildiğinde çalışır. Bu sürekli bir süreçtir: tekrar tekrar çalışabilecek en basit şeyi yapmak, böylece sisteminiz daima çözüm alanı hakkındaki mevcut anlayışınızın bir ifadesidir.

Sorun, yazılım sistemlerinin gerçek kullanım ömrü maliyetini anlamayan bir yönetiminiz olması. Bu maliyetin% 90'ı ilk uygulama değil bakımdır. Test etme ve yeniden düzenleme, bir yazılım sisteminin toplam kullanım ömrü maliyetini azaltmak için en iyi araçlarımızdır . Yöneticileriniz bu şeyleri yapmanıza izin vermezse, sorumsuzdurlar ve yeniden eğitilmeleri gerekir. Ya da yeni bir iş bulmalısın.

Sonunda: daha önce de söylediğim gibi, hayır demeyi öğrenmeniz gerekir .

* Çok sıkı bir program nasıl kodlanır?


0

Kapsamı ve zamanı sabitlerlerse, son teslim tarihini düşürmek için yapabilecekleriniz düşüyor.

Mümkünse, dış kaliteyi, paydaşların görebileceği şekilde düşürmek, iç kaliteden ödün vermeyin;

Kendimi geliştirmenin bu durumda size biraz yardımcı olacağını sanmıyorum. Bir şey varsa, söylediğim için üzgünüm, genellikle iddialı.

İş tahmin edildiğinde kapıya bir ayak basmaya çalışın. Patronunuz bir şeyi yapmanın ne kadar zaman alacağını nasıl tahmin edebilir?

Patronunuza ve / veya müşterinize seçenekler getirin. Çoğu zaman, hiçbir şey iletmeden kaliteyi düşürmeyi seçen geliştiriciler kendileridir. Geç projeler / iş çok yaygındır ve genellikle 'yönetilir'. Zamanında hareket edin, cevapsız bir son tarih geldiğini görürseniz, insanları uyarın.

Hiçbir şey söylemezseniz kapsamı kesemezler veya tarihi dolduramazlar.

Herhangi bir biçimde kaliteden ödün verecekseniz, bunun kararı olmasına izin verin. Onlara birbirlerine karşı kilo vermelerini sağla.

Bazı şeyler sadece SİZE karar verebilir. Eğer işe yarayacaksa. Ama bu çok anlaşılmaz. Belki de her durumda işe yarayıp yaramadığından emin değilsiniz. Kimseye bittiğini söyleme. Tekrar yap. Çok sık, sadece sizin verebileceğiniz bir karardır. Ya problemin açıklanması çok zaman alıyor ya da teknik olmayan bir yöneticiniz var.

Bazen iş etiğinin bir parçası, bir hastayı ellerini yıkamaksızın dikmek mi istiyorsunuz, çünkü 'zaman yok'?

Her şeyden önce, unutmayın: daha sonra yoktur.


0

Ben web uygulamaları üzerinde çalışan bir Net geliştiricisi.

Yapmaya başladığım şeyler -

C # kodu ise, ilk önce LinqPad'e (mümkünse) bu kodu yazmaya çalışıyorum.

Javascript kodu ise, önce bu kodu yazıp jsfiddle / jsbin (mümkünse) ile test ediyorum.

Bunun kod kalitesine yardımcı olduğunu buldum ancak beni yavaşlatmıyor (ve bazı durumlarda daha hızlı buldum).


Bu yazı okumak oldukça zordur (metin duvarı). Sakıncası var düzenleyebilir daha iyi bir şekle ing?
gnat

@gnat - Öneri için teşekkürler. Aşağı oy ile öneri almak için yardımcı olur. Biçimlendirme şimdi daha iyi olur umarım.
user637563 27:13

Tüm ortamın dışında bir çözüm bulmak avantajlara sahip olabilir. İşe yarayacak bir şeye sahip olacaksınız, böylece tam sistemde çalışmazsa sorunun sistemin geri kalanıyla bir çelişki olması gerektiğini bileceksiniz. Ardından, çözümün hala tüm ortam dışında çalışıp çalışmadığını görebiliyorken, anlaşmazlığı gidermek için çözümü değiştirmeyi deneyebilirsiniz. Akıl sağlığınız, bunun için size teşekkür edebilir.
Bent
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.