Nasıl daha hızlı bir programcı olunur?


142

Son iş değerlendirmemde sadece bir zayıf nokta vardı: zamanındalık. Bunu geliştirmek için yapabileceğim bazı şeylerin zaten farkındayım, ancak aradığım şey biraz daha.

Kaliteden ödün vermeden çıktılarının hızını artırmak için ne yaptıkları hakkında ipuçları veya tavsiyeler var mı?

Zaman çizelgelerini nasıl değerlendiriyor ve onlara bağlı kalıyorsunuz? Daha kısa sürede daha çok iş yapmak için ne yaparsınız?

Herhangi bir geri bildirim büyük beğeni topluyor, teşekkürler,


96
Bunu yaparken SO'da işte daha az zaman geçirin.
San Jacinto

52
Eğer bunu okuyorsanız, zaten çok geç

32
"Nasıl şişman bir programcı olunur" yazısını okudum. Beni
güldürdü

13
Sana bir takip sorusu sorarım. Kendi düşük performansınızın (AKA, becerilerinizi geliştirmeniz, dikkat dağıtıcı şeylere odaklanmanız ve ortadan kaldırmanız gerekir (SO gibi) vb.), "Daha hızlı bir programcı olma" arzusunuz ya da dikkat dağıtıcı şeylere odaklanmanız ve ortadan kaldırmanız gerekir. bakış açısı (AKA, aklı başında bir kişinin 1 ay alacağını bildiği bir şeyi yapması için size 1 hafta verildi). Her öğenin çok farklı çözümleri var.

3
Tek bir doğru cevap mümkün değil, o yüzden bunu bir topluluk wiki sorusu haline getirin veya soruyu size kapalı tutun.
Donal Fellows

Yanıtlar:


190

Bilgisayarı Kapat. Bir kalem ve biraz kağıt al. Tasarımınızı eskiz. Akranlarınızla gözden geçirin. O zaman kodu yaz.


9
VEYA bilgisayarınızı açık tutabilir ve açabilirsiniz yani MS Visio
sshow

208
Kalem, kağıt veya beyaz tahta, kullandığım çoğu uygulamadan daha hızlı.
Thomas Owens

24
Kağıt üzerinde yapmak akla odaklanır.

100
Neden visio yorumunu oylayamıyorum? Visio kullanmamak, gelişimi hızlandırmanın belli bir yolu!

52
Uh .... Visio. Ne zaman "tasarım belgenizde Visio kullanmam" isteniyorsa, önce kağıt üzerine çizerim, sonra da önümüzdeki iki günü Visio'daki tüm çizgileri düzeltmek için savaşarak geçiririm.
Robert Fraser

149

Bazı fikirler...

  • Altın kaplamadan kaçının - yalnızca sizden istenenleri yapın (gereksinimler açısından)
  • İş gereksinimlerini anlayın ve ilk defa doğru yapın
  • Çevrenizi ve araçlarınızı iyice anlayın
  • Harika bir daktilo ol, fare yerine klavye kısayollarını kullan
  • Tekrarlı bir yaklaşım benimseyin ve doğru yolda olmanızı sağlamak için akıl sağlığı kontrolleri yapın
  • Tekerleği yeniden icat etmeyin, geçmiş işleri ve başkalarının çalışmalarını tekrar kullanın
  • Dikkat dağıtıcı şeyleri kaldırın, e-postalarınızı kontrol etmeye, dışarıya bakmaya, iş arkadaşlarınızla konuşmaya vb. Devam etmeyin.
  • Kendinizi fazla işlemeyin - ne zaman ara vermeniz gerektiğinin farkında olun

7
Tekerleği yeniden icat etmediğim için +1. Başka bir koda takılı ve yeniden yazmak için hiçbiri ile çalışabilen yeniden kullanılabilir kodlar üretmeyi öğrenin. (örn .: kodlama yerine parametrelere sahip fonksiyonlar)

34
"Altın kaplamadan kaçın" için +1 - mükemmeliyetçim / anal-kalıcı eğilimlerim nedeniyle çok fazla zamanın eksik olmasının nedeni bu oldu.
Dinah

7
Yazma - önemli nokta. Yazmayı öğrenmemiş tanıdığım kodlayıcı sayısına her zaman hayran kaldım ...
Paddy

2
+1 distraksiyonları ortadan kaldırıyor. Gördüğüm gibi, en büyük zaman yiyenler bunlar.

2
Mikro iyileştirme ipuçları için +1 (planlama projeleri bakımından makro iyileştirmeler yerine).

132

Kendiliğinden "daha hızlı" bir programcı olma arzunuz övgüye değer. Ancak, zamanında teslim olmamak, yavaş olduğunuz anlamına gelmez, bu, projenin kötü bir şekilde planlandığı anlamına gelir. "Daha hızlı" bir programcı olmak işe yaramaz; bu sadece son teslim tarihini daha hızlı geçen kişi olacağınız anlamına gelir.

Siz (ve ekibiniz) aşağıdaki hatalardan birini (veya hepsini) yapıyorsunuz:

  • yapılması gereken işi küçümsemek ;
  • planlama sırasında büyük bir gereksinimin veya mimari parçanın eksik olması ;
  • iş tahminlerini takvim tahminleriyle karıştırmak ve toplantılar / telefon / diğer ek yükler gibi şeyleri hesaba katmamak;

Yukarıdaki üç yöntemden herhangi birini ele almanın birden fazla yolu vardır. Ancak bunlardan herhangi birini geliştirmeden önce, işlerin neden böyle yürüdüğünü bilmeniz gerekir. Otopsi yapın gerçek zaman alınır ve ekstra zaman nereye gittiğini anlamaya vs son iki veya üç proje üzerinde tahmin ediyor.

Tekrarlıyorum - kod yazarken yavaş olmak , bu durumu hesaba katmayı planlıyorsanız , son tarihin eksik olmasına neden olmaz .


47
Bazı devs gerçekten olsa çok yavaş. Bir sorun olabilir.

12
Evet, bu bir problem olabilir, ama kişisel bir problem. Asla bir proje veya takım problemi olmamalıdır. Başka bir deyişle, kişinin kariyerini etkileyebilir, ancak proje zamanlamasını asla etkilememelidir.
Franci Penov

12
'Zamanında teslim etmemeniz, yavaş olduğunuz anlamına gelmez, bu, projenin kötü bir şekilde planlandığı anlamına gelir' - bu geçersiz bir argümanın bir metin kutusu açıklamasıdır. Zamanında teslim alamamanızın birçok nedeni olabilir, bunlardan bir tanesi yavaş olduğunuz için olabilir.
et

15
Flesh - Eğer yavaş olduğunuzu biliyorsanız, neden bu gerçeği hesaba katmak için zamanlamanızı planlamıyorsunuz? Başka bir deyişle, Usain Bolt kadar hızlı koşamayacağınızı biliyorsanız, 9.7'de 100 metre koşmayı planlıyor musunuz?
Franci Penov

5
@Kibbee - Bu durumda özellikleri kesersiniz. Bir iş yapamayacağınızı ve bir mucize umduğunuzu bildiğiniz zaman belli bir zamanda belli bir işi yapmaya söz veremezsiniz.
Franci Penov

89

Gerçekten, gerçekten editörünü öğren. Bir IDE kullanıyorsanız, sunduğu tüm özellikleri kullandığınızdan emin olun. Seçtiğiniz editörünüz için klavye kısayollarını öğrenmek için bir kopya kağıdı edinin. Sık kullanılan dizinler için bir kabuk ayar kısayolu kullanıyorsanız


3
Bu gerçekten bazen verimliliği büyük ölçüde artırabilir
sshow

6
Gerçek kod yazmak, bir dev'in çalışmasının sadece bir parçası. IDE'yi mükemmelliğe öğrenmek için zaman harcamak bir nokta optimizasyonu; ve optimizasyonlar hakkında ne söylediklerini biliyorsun, değil mi? - "Önce ölçün ve ardından darboğazları optimize edin".
Franci Penov

1
Bunu hiç göremiyorum. Yazma zamanımın% 50'sini düşürürsem, bu bir günde beni ne kadar kurtarır? Tecrübelerime göre, çoğu zaman / test / değerlendirme / hafifçe düzeltme / etc kodunu düşünerek, gerçekten yazmaya kıyasla harcayacağım, bunun bir kazanç olamayacağını düşünüyorum.

4
IDE'nin navigasyonunu düşüncesiz yaptığınız bir şey yapar. Diğer tüm küçük gri düğmelerin yanındaki bir şeyi işaretleyen küçük gri düğmeye geçmek gibi herhangi bir bilinçli çaba gerektiren herhangi bir şey, düşüncenizi durdurarak sizi yavaşlatır. Herhangi bir hareket olmadan parmak uçlarımın altında ctrl-n'ye sahip olmak büyük bir net kazançtır.
Paul McMillan

5
Aynı satırlar boyunca: genel 'kısayol' tuşlarını öğrenin. Örneğin, birçok Windows programında ... Kopyala: Ctrl + c Kes: Ctrl + x ('x' açık bir makas çifti gibi görünür) Yapıştır: Ctrl + v (yukarıdaki 'c' ve 'x' öğelerinin hemen yanında) Satırın başına git: Ana Sayfa Git Satırın sonu: Bitiş İmleci kelimeye göre hareket ettir (karakter değil): [Shift] + Ctrl + sola veya sağ Dokümanın başına git: Ctrl + Home Dokümanın sonuna git: Ctrl + End vs.

38

“Kaliteden ödün vermeden çıktılarının hızını artırmak için ne yaptıkları hakkında ipuçları veya tavsiyeler var mı?”

Pek çok kişi, (a) basit, (b) güvenilir ve (c) doğru olan bir şey pahasına "nihai" kalite için gayret gösterir.

Gelişiminizi hızlandırmanın en önemli yolu , yaptığınız şeyi basitleştirerek , mümkün olduğu kadar basit olmasını sağlamaktır.

Zamanında teslimat yapmada sorun yaşayan çoğu insan çok fazla yol kat ediyor. Ve verilen nedenler genellikle saçma. Genellikle gerçek gereksinimler değil, yalnızca algılanan gereksinimlerdir.

Pek çok kişinin müşterinin "beklediğini" söylediğini duydum. Bu kötü bir politikadır.

Mümkün olan en basit şeyi oluşturun. Müşteri daha fazlasını istiyorsa, daha fazlasını oluşturun. Ama önce mümkün olan en basit şeyi yap.


“Pek çok kişi, (a) basit, (b) güvenilir ve (c) doğru olan bir şey pahasına“ nihai ”kalite için gayret gösterir. Buna bırakabilirdin ve ben ona oy verirdim.
corymathews

"Basitleştir, basitleştir." ~ Henry David Thoreau

2
Evet ... bu da erken soyutlama demektir. Eğer bir şey sadece bir uygulamaya sahip olacaksa, onu bir arayüz yapmayın.
Robert Fraser

3
Benim favori tırnak biri ~ anlatması, Albert Einstein "olarak mümkün olduğunca basit, ancak hiçbir basit bir şey yapmak" bu durumda uygun
Nemi

Basit tutun, çoğu programcının bile doğru şekilde elde edemediği şey: Kolayca tuzağa düşmek için "erken optimizasyon tüm kötülüklerin kökenidir". Normalde en basit program en hızlı veya en yüksek kalitededir.

32

Kodunuzu mükemmelliğe göre cilalamaktan kaçının, çalışmasını sağlayın. İşin beklediği bu.

Ancak çoğu zaman, artan hız kaliteden ödün vermeden anlamına gelir.


10
"İşe yaramasını" öneriyorum ve eğer zaman mükemmelleştirmek için etrafta dolaşmaya izin verirse!
Preets

28
-1: Kaliteden ödün vermek için bir neden yoktur. Her zaman özellikleri feda edebilirsiniz.
S.Lott

6
Tekrar tekrar olduğunu gördüm. Geliştiriciler, verilen bir özelliğin son% 1'ine kapatılır ve kalan özellikleri tamamlamaya çalışırken yakalama ve geride kalır. Önce sizden beklenenleri tamamlayın, sonra geri dönün ve cilalayın.

3
Genellikle, artan kalite, artan hız anlamına gelir. Doğru olanı yapmak için biraz zaman alırsanız, test etme ve hata ayıklama konusunda daha fazla zaman kazanabilirsiniz.
David Thornley

2
Bir özelliğe takılı kalmışsanız, farklı bir şey üzerinde çalışın.

29

Yeniden kullanma - Önceki projelerdeki akıllıca bitleri ayırmaya çalışıyorum, böylece bunları gelecekteki girişimlerde tekrar kullanabilirim. Kendine "Her gün yine bunu kullanabilir miyim?" Diye sormaya değer.


Uzun vadede daha hızlı programlama için mükemmel zihin durumu, ancak ilk başta daha fazla zaman alabilir.

8
+1: Yine de dikkat et, başka bir gün tekrar kullanabilmem için bir şeyi genelleştirmeyi ve soyutlamayı yakaladım ... ve o günün son tarihini kaçırdım ya da hatanın düzeltilmesi için gereken süreyi iki katına çıkardım ... "belki" daha sonra zaman kazanır.
Steven Evers

2
Bir "hile çantası" olması anahtardır. Eğer bu sizin için bir iş meselesi haline geliyorsa, zamanınızın bir kısmını yeniden kullanılabilir parçalar geliştirmek için harcayacağınız bir değerdir (çalıştığınız alanın yeniden kullanım için uygun olduğunu varsayarak).

24

Basit tut.

TDD kullanıyorsanız, " kırmızı, yeşil, refactor " ifadesini izlemelisiniz :

  1. Başarısız olan bir test yazın ( kırmızı ). (Genellikle işlevler için kodunuzda yoktur.)
  2. Testlerinizi geçmek için korkunç yeşil kodlama suçları işleyin ( yeşil ). Gerekirse sabit kod.
  3. Refactor , muhtemelen kısa bir süre için testleri çiğniyor , ancak tasarımı genel olarak iyileştiriyor.

3
TDD yaparken, geçip geçmediklerini belirtmek için test başına kırmızı / yeşil rapor üreten bir test çalıştırıcınız vardır.

2
@Konstantin: TDD kullanarak bir kod yazmak% 20 daha uzun sürebilir, ancak daha iyi kod da sağlar ve uzun vadede, sistem büyüdükçe değişiklik yapma hızı aynı kalır. TDD, sizi yavaşlatan teknik borçlardan kaçınmanıza yardımcı olur.

3
Yazma hiçbir zaman programlamanın yavaş bir parçası olmamıştır. TDD ile daha fazla yazmanız gerekse de, sizi yavaşlatmaz. Hatta sizi hızlandırabilir, çünkü ilk önce bir test yazmak, onu nasıl uygulayacağınızı düşünmeden önce neye ihtiyacınız olduğuna odaklanmanıza yardımcı olur .

1
Yönetim bazı temel kavramları anlamıyorsa, onlara açıklamanız gerekir. Örneğin martinfowler.com/bliki/TechnicalDebt.html

3
@Konstantin, "gelişme" yi kod ifadesini yazma eylemi olarak görürseniz, sizinle aynı fikirdeyim. Bununla birlikte, paketleme, derleme notları hazırlama, dağıtma, test etme, hata raporları üretme, hataları gözden geçirme ve önceliklendirme, görev atama, inceleme, hata ayıklama ve yeniden başlatma ve işlemeyi yeniden başlatmayı "geliştirmeyi" düşünürseniz - 15 dakika Birim testinin, 1000x üzerindeki müşteri güveninin gün ve ağırlığından daha ağır olduğunu yazın.

22

Tüm dilleri / kitaplık belgelerini yerel olarak bilgisayarınıza indirin, sonra ağ kablosunu çıkarın / Wi-Fi'yi kapatın .

Burada komik olmaya çalışmıyor. Bu gerçekten bana yardım ediyor!


Ben de aynısını yapıyorum.

Çevrimiçi belgeler ve sorun giderme aramaları zaten çok abartılıyor.

Bir güvenlik duvarı kurun ve neredeyse tüm web erişimini engelleyecek şekilde yapılandırın (birkaç etki alanı için istisnalarım var, örneğin MSDN)
finnw

Gerçekten bunu yapmayı düşünüyorum (bu yorumu bırakmam gerçeği ispat ediyor)
Ikke

Ve SO kaybetmek? cehennem hayır

20

Yığın Taşması'nı çok uzun zamandır okuduğunuzda dikkat edin. "Derleme" bahanesi yalnızca çok uzun süre çalışır. :)


15
Derleyicinizin ne kadar hızlı olduğuna bağlı olarak değişir. Yani belki "çözüm" yavaş derleyici bulmak ve Pentium 2 w / 128MB bellek üzerinde çalıştırmak için? :-)
Franci Penov

@Franci, belki de bir diskete takas alanı koyarak bile. Ya da RAID'de iki tane.

20

Görevleri çok sık değiştirmekten kaçının. Dikkat dağıtmak ve görev değiştirmek, görevlerinizi yönetmek için Mylyn gibi araçlar kullanıyor olsanız bile bir günü öldürebilir .

Bir ayrıntı düzeyi belirleyin (örneğin, 30 dakika) ve yalnızca eldeki görevle ilgili şeyler üzerinde çalışın. Başka bir şey (yeni hata raporları, diğer konular hakkında e-postalar, ilgisiz olan usule ilişkin konular) en azından "bir sonraki kontrol noktasına" kadar ertelenir. Açılır e-posta bildirimlerini devre dışı bıraktığınızdan emin olun, böylece emilemezsiniz.

Ekibinizde, eğer bir şeyler gerçekten erimişse ve derhal ilgilenmeniz gerektiğini size bildirecek bir arkadaşınız varsa, özellikle etkilidir.


Bu, e-postalara 10 dakika içinde yanıt vermeyi bekleyen bir patronunuz varsa işe yaramaz.
finnw

Bu aslında çok alakalı. Makul olabileceği sürece, bencil dikkat çekici kişileri ele geçirmek ve asıl görevinize bağlı kalmak için kendinize kurban gitmenize izin vermeyin. Kendinizi farklı yönlere çekmenize izin verirseniz, sonuç, bir şey yerine hiçbir şey elde etmemenizdir.
AndyUK

14

Doğru yapın, en iyi yol, ilk defa. Bu, başlamadan önce bir süre durup düşünmeniz gerektiği anlamına geliyorsa, o zaman yapın. Zamanın% 90'ı çalışıyor.


2
+1 Bu çok doğru. "Mükemmel" olmanız gerektiği anlamına gelmez; hepimiz hata yapacağız. Ancak, ilk seferinde mümkün olan en iyi şekilde işleri yaparsak, bu hataların sonucu daha küçük olacaktır.

+1 - İyi programcılar ve kötü programcılar arasındaki farkın hızda olmadığını bir yerde okuduğumu hatırlıyorum. Aradaki fark, iyi programcıların kodlarını daha fazla koruyacaklarıdır.
Jason Baker

Bu benim sloganım, ilk defa doğru şekilde yap. Her zaman geri dönüp kodunuzu düzeltmek zorunda olma alışkanlığına kapılmayın, çünkü özelliklere göre doğru şekilde yapmadınız.

"Doğru yapmak için zamanınız yoksa, bunu yapmak için nasıl vaktiniz olacak?"
Alex Feinman

En iyi yolun ne olduğunu belirleyebilmek için gerçek yazılımdaki deneyimlere ihtiyaç duyabilirsiniz . Bu durumda, ilk seferinde doğru yapamazsınız.

14

2
Bu güzel bir bonus ... ama genel olarak pek bir etkisi olacağını sanmıyorum. Kod yazmak muhtemelen en az zaman alan bölümdür. (Evet, bağlantıyı takip ettim ve okudum. Sadece onunla aynı fikirde değilim.)

Kodlamanızın sınırlayıcı faktörü, ne kadar hızlı yazdığınız ise, muhtemelen yanlış bir soyutlama düzeyinde çalışıyorsunuzdur.
Pete Kirkham

+1. Büyük bir bağlantı, sonuna kadar okumak isteyenler için harika bir makale;) ben de yazarak, ama o Programcı Dvorak klavye düzeni geçmek için bana ilham en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard (ama açık '" ve -_ tuşları, Microsoft Keyboard Layout Creator ile), ve yakında çok daha hızlı yazacağımdan eminim
Roman Boiko


12

Pratik ve sıkı çalışma.

Zamanı ve çabayı harcamalısınız. Kullandığınız araçlarla daha rahat ve kendinize güven duyduğunuzda, hız ve yaratıcılığın izlemesi gereken araçlar.

Herhangi bir beceriyi geliştirmek istiyorsanız, özellikle bunun üzerinde çalışmanıza izin verecek alıştırmalar tasarlamanıza da yardımcı olabilir. Yavaşlığınız tasarım aşamasındaysa, çevrimiçi olarak çalışmak için tasarım sorunlarını bulmaya çalışın. Aynı egzersizi tekrar yapmak daha hızlı tamamlamanıza ve pratik yapmanıza izin verir. Şahsen, TopCoder'ın algoritma egzersizlerini , saf programlama hızını uygulamak için seviyorum . Tasarım zorlukları da var ama denemedim.


Programlamada uygulama genellikle hafife alınmaktadır. Bu ilk 5 cevaptan biri olmalıydı.

Vay. Neden daha yüksek olmadığından da emin değilim. Bunu daha önce hiç denemedim. Bir şans vereceğim!
David

11

Bölge hakkında bilgi edinin, kendinize nasıl gireceğinizi ve ne zaman olmadığınızı nasıl tanıyacağınızı öğrenin.

Bir kez "bölgeye girdiğimde" son derece üretkenim ve kod sadece benden akıyor, genellikle 1 günde 2 veya 3 gün kodlama yapıyorum. Ancak bu yere gitmenin genellikle zor olduğunu, kendimi ertelediğimi, başka şeylerden rahatsız ettiğini görüyorum (örneğin Yığın Taşması).

Bölgede ne-kendin-almak-kullanmak-kullanmak-neyin alıntı


Ve bölgedeyseniz öğle yemeğini atlayın ... veya geç kalın ... Bölge MMMmm. drool

10

IDE'nizi ve çerçevenizi iyi bilmek. Her küçük şey için Google’a başvurmak zaman alıyor.


Ancak Google’a ne zaman ihtiyaç duyduğunuzu anlamak ve bunu hızlı bir şekilde yapabilmek önemlidir.

9

1
Lütfen bunu düzenleyebileyim, böylece oyum kaldırabilir, şu anda "çok eski".
kmarsh

1
Ne için kullanmanız gerektiğine kesinlikle bağlı.

8

Gelişmeye başlamadan önce:

  • Posta kutunuzdan çıkın
  • IM istemcilerini kapatın
  • Kibarca, meslektaşlarınıza konsantre olmanız için zaman vermelerini isteyin
  • Tabii ki, internette sörf yapmayı bırakın

Ne zaman kesintiye uğradıysanız, düşünceleriyle yeniden harekete geçme zamanınızı alırken yavaşlarsınız. Her kesinti için, kesintiden önce sahip olduğu düşünce sürecine geri dönmenin insan aklının 5-10 dakika sürdüğünü anladım. Kesinti başına bu kadar zaman harcadığı zaman, bütün gününü boşa harcamak çok fazla zaman almaz.

Şirketimizdeki insanlar aslında takvimlerindeki zamanını kapatıp her gün birkaç saat boş bir konferans salonuna geçtiler.


7

Geliştirme IDE'nizi giriş ve çıkış olarak öğrenin. Kısayol tuşlarını öğrenin. Fareyi daha az kullanmayı öğrenin. Bunun benim için zaman kazandırdığını buldum.


7

Meslektaşlarınızdan daha mı yavaş ya da tahminleriniz daha aşırı zamana mı dayanıyor?


7

Yazılımı daha hızlı üretmek için, yapmam gereken en iyi şeyin çalışma zamanınızdaki API'yi olabildiğince iyi öğrenmektir. Bir LINQ uzantısı ne zaman yapacağını liste mantığı yazmayın; Bağlamanın işe yarayacağı bir sürü olay dinleyicisi kurmayın.

Tahmini gelince, bu deneyim ile geliyor. Daha iyi tahminler bulmanıza yardımcı olmak için tahmin yazılımını kullanabilirsiniz.

Şahsen, genç seviye geliştiricilerle buldum, ilk tahminin ne olduğu olursa olsun bunu 2 ile çarpıp iki katına çıkardım. Bu, tüm öğrenmeleri, toplantıları, boşa harcanan zamanı vb. Hesaba katacaktır.

Çoğu zaman, soru, tahmininizin yanlış olup olmadığı değildir. Bütün doğru şeyler için tahmin hesabın var mı? Tahmin ve zaman çizelgelerini kodlama çalışması veya takvim zamanı olarak mı veriyorsunuz? Gününüzdeki her zaman ve bunun ne kadarının gerçek, verimli kodlama vs. toplantılar, öğrenme, hata ayıklama, vb. Olduğunu düşünün.


3
"... 2 ile çarp, sonra ikiye katla." Zaman kazanmakla ilgilendiğiniz için, kullanabileceğiniz bir matematik

LOL - Ne dediğini biliyorum. Ancak, "4 ile çarpma" demesinin aksine, fark edilmeden bu fişlerden sıkça şaşıracaksınız.

7

İma edilebilecek iki şey, ancak burada cevaplar arasında henüz üretkenliği artıran görmedim:

  • Bir çeşit derleme ve dağıtım komut dosyası kullanın. App-server'ı derlemek, dağıtmak, yeniden başlatmak ve zaman kaybetmek ya da odaklanmamak, tek tıklamayla bir şey olmalı.

  • Bir çeşit versiyon kontrolü var. Bir değişikliği geri alamadan kodlama yapmak yumurta üzerinde yürümeye çalışmak gibi bir şeydir


7

Akla birkaç fikir geliyor:

  1. Tahminleriniz hakkında başka görüşler alın - "Hey, böyle bir özelliği bu zaman diliminde yapabileceğinizi düşünüyor musunuz?" Gibi bir şey sorabileceğiniz başka geliştiriciler var mı? Başkalarının girişinin, bazı durumlarda tahmin yaparken kaçırdığınız şeyleri not edebileceğinden, bazı durumlarda doğrulukta yardımcı olabileceği fikri.

  2. Kestirim becerilerinizi geliştirin - Kestirmelerde ne kadar kaldığınızı ve neden kapalı olduğunuzu izlemeye başlayın: Diğer iş kalemleri teslim tarihlerinin karşılanmamasına neden oluyor mu? Bir şeyin ne kadar karmaşık olduğunu sürekli olarak hafife alıyor musunuz? Pratik olmadığında bütün bir zaman çizelgesi veriyor musunuz, örneğin sadece bir prototip hazırlamanın haftalar alacağı ve daha sonra ne yapılması gerektiği konusunda bir yeniden değerlendirme yapılması gereken şeyin ne kadar belirsiz olduğu soruluyor mu? Bunu yapmak, bu beceriyi geliştirmede en çok yardımcı olabilir, böylece bir şeyin x saat alacağını söylerseniz, buna tekrar güvenebilirsiniz, çünkü tekrar tekrar yaptınız. Bunu belirtmenin alternatif bir yolu sadece pratik, pratik, pratiktir.

Muhtemelen bunları zaten göz önünde bulundurduğunuzu kabul ettim, fakat sadece bu fikirleri düşünmemiş olanlar için bunu belirtmenin faydalı olacağını düşündüm.


7
  1. İçte ve dışta teknolojiyi bilir.
  2. Dur! Düşünün! Git!
  3. Ortaya çıkacak olanı seçin, ancak yalnızca gerçekten isteneni uygulayın.
  4. KISS - Basit Aptal Tutun
  5. Çok karmaşıklaşıyorsa, muhtemelen iyi düşünülmez. (2 ve 4'e geri dön)
  6. 5. Sıkışmış olmayın Sık sık sıfırdan başlamak için öder (2 ve 4'e geri dönün)
  7. 1’e geri dön.

7

Bence burada anahtar kelime "zamanındalık". Zamanında olmadığını, çok yavaş olduğunu söylemediler.

Proje yönetiminde, yöneticinin iş kalemlerinizi ne zaman tam olarak tamamlayacağını tahmin edebilmesi önemlidir. Çabalarınızın zamanında alınmamasının ana sebebinin, sık sık programda teslim edilmeyen ve planlandığından çok daha sonra teslim edilmiş öğelere sahip olmanızdan şüpheleniyorum.

Zamanlılığınızı artırmak için, becerileriniz, deneyiminiz ve etki alanınız verilen belirli bir iş öğesini tamamlamanın ne kadar süreceğini anlamak için daha fazla zaman harcamak isteyebilirsiniz. Bu, proje yöneticinize daha iyi tahminler vermenizi sağlayacaktır. Buradaki anahtar "daha iyi" ... her şeyi bir şekerleme faktörü ile doldurarak daha sık zamanında teslim edebilirsiniz, ancak gerçekten çabalamak istediğiniz şey daha doğru bir tahmindir.

Bunun gerçekten sorun olup olmadığını anlamak için bunu yöneticinizle görüşeceğim. Aksi takdirde, tahminlerin hala aynı hata faktörüne sahip olacağından, iki kere daha hızlı bir şekilde programlama yapabilir, zamanın yarısında şeyler vaat edebilir ve zamanlamanız için eleştirilmeye devam edebilirsiniz.


“... Becerilerinizi, deneyiminizi ve etki alanınızı dikkate alarak belirli bir iş öğesini tamamlamanızın ne kadar zaman alacağını anlamak için daha fazla zaman harcayın.” -> Doğru, bu ayrıca kapsamı azaltmanıza ve daha fazla zaman kazanmanıza yardımcı olur.
Jim G.

Ayrıca yöneticinizin etrafınızdakilere iyi görünmesine de yardımcı olur - Ayrıca, pazarlama gibi destekleyici malzemelerin projenizle senkronize olarak tamamlanmasını sağlar.
Tom

7

Kararlı ol, istikrarlı ol.

İşlevselliğin küçük bir bölümünü uygulayan bir şey oluşturun ve çalıştığından, baştan sona emin olun. Ardından, yeni işlev parçaları eklerken çalışmaya devam edin. Evet, bu kısmen bir TDD uygulamasıdır, ancak TDD yapmasanız bile mantıklı gelir.

Mantığı ben kararlı olmamıştı kod 2 hafta olan biri gördüğüm her zaman, her zaman için başka bir 2 hafta sürer olmasıdır olsun kararlı.

Eğer varsa kalmak kararlı, o belirsizliği kaldırmak ve gerekirse ayrıca tarihine yakın kendinize kapsam için bir yol aşağı verir.

Açıkça söylenen karşıt argüman, bunu yapmanın sadece bir kere yazmaktan daha fazla zaman alacağı, çünkü ekstra çalışma yapmadığınız için son olmayan kodu dengeleyebilirsiniz. Bunu bir saniyeliğine satın almam. Eğer kod varsa çalışır , sen 5 satırları değiştirmek ve bir şey biliyorsun, kırar tam kırılma olmuş olmalı nerede.

Hiç çalışmayan 10.000 kod satırınız varsa ve bir ara bulmanız gerekiyorsa, aramanız gereken bir ton kodunuz vardır.

Sürekli istikrarlı FTW olan bir sistemde küçük, artımlı değişiklikler. Hızlı gitmek için yavaş git.


7

Benim için iyi bir üretkenlik elde etmek, neyi başarmaya çalıştığınız ve oraya nasıl ulaşacağınız hakkında net bir fikir sahibi olmaktır.


1
Norveç kırsalında çalışmak için yaptığım 30 dakikalık bisiklet turu aynı zamanda zihni temizlemekte ve yaratıcı süreçleri sürdürmekte oldukça başarılı.

6

Hemen hemen tüm cevapların burada ve başka yerlerde sayısız yerde öldüğü söylendi. Ya da en azından ölümüne duydum. IDE'nizi öğrenin, daha hızlı yazmayı öğrenin, çerçeveler kullanın, kod üretmeyi kullanın vb. Ancak bu soruları soran ve Stack Overflow gibi sitelere sıkça rastlanan programcı türü olarak zaten bunları biliyordunuz . Sadece onları tekrar etmek mi istedin yoksa biraz havalandırmak mı istedin?

Ama ya o duruma ulaşabilseydik? Tüm bu önerileri usta mı demek istedim? O zaman ne olurdu? İyi. Tahmin ediyorum ki zaman çizgileri daha da azalacak. Ve yine, kalite algısına geri döneceğiz. Yani, zanaatımız kesinlikle ilerledi ve on yıllar boyunca gittikçe daha verimli hale geldi. Ancak bu süre zarfında kalite arttı mı (tabii ki çok erken yıllar hariç)?

Cevabım basit: kaliteli yazılım zaman alır ! Sadece birini diğeriyle takas edebilirsiniz (kalite / hız). Ama evet, hepimiz biliyoruz ki, bu değişimin, ölçeğin hızıyla ne kadar sona erdiği konusunda dürüst değiliz. Ve projelerin başlarında bile daha fazla yalancıyız!

Burada hatalı olmadığını söylüyorum . Buradaki sorun insanların kaliteli yazılımın ne kadar sürmesi gerektiği konusundaki algısı . Yöneticilerimizin zaman çizelgesi türleriyle kaliteli yazılım oluşturabileceğimize ve hatta tahmin edebileceğimize inanıyoruz. Kaliteli bir yazılım üretmiyoruz . Bir uygulamanın bazı köşelerinde çalışan, ancak bazen kaliteli flaşlarla çalışan bir yazılım yazıyoruz.

Peki bu konuda ne yapabiliriz? Patronlarımızı, her bir projemizdeki yatırımı ikiye veya üçe katlamamız gerektiğine ikna edemiyoruz. Ben örnek olarak kurşun diyorum. Yan proje olarak gerçekten harika bir yazılım parçası oluşturun. Buna kendi zamanınızı koyun ve ödün vermeyin. Tüm bunlar, nasıl ilerlediğinize dikkat edin. Beklenmedik bir süre koymak zorunda kaldığınız ve ilgisiz olup olmadığınızı görmek zorunda olduğunuz açıkça ilgisiz işleri not edin . Bunu, çalıştığınız diğer tüm projelerle karşılaştırın. Be vahşice dürüstKendiniz ve bu analizin tüm yönleriyle. İşyerindeki "gerçek" projelerde kaliteli yazılımınızla yaptığınız ekstra şeyler ihmal edilebilir mi? Ama belki senin girişimin başarısız oldu. Sebep neydi? Sıkıldınız mı ve sadece temel özellikleri yerine getirmek için acele ettiniz mi? Henüz kendim böyle bir şey yapmadım, bu yüzden bu düşünceyi bazı şüphelerim ile sonlandırıyorum - ama gerçek anlamda bir şans vermeyi düşünüyorum. Seni haberdar edeceğim :).

Son olarak, çoğu (tümü olmasa da) performans değerlendirmelerinin bükümlü ve olağanüstü derecede manipülatif olduğunu düşünüyorum. Kaliteyi ve hızı% 100 kısaltamazsınız. Patronunuz sizi organizasyonun belirlediği bir standarda karşı atıyor olmalı. Kuruluşun kalite ve hız arasındaki değiş tokuş standardı. OrangeSoft Inc.'in% 33 kalite ve% 66 hız beklediğini düşünelim. Bu nedenle, ünite testlerinin üçte biri olan bir kod yazıyorsanız, bunu hızlandırması ve düşük teslimat süresi ile telafi etmesi gerekir; (Bunlar oldukça kaba analojiler ama sen anladın). Fakat bunun yerine, Bob'un son derece hızlı kod yazdığı, ancak kötü niyetli bir şey olduğu söyleniyor. Bu yüzden performans incelemesinde kalite için 3/5, hız için 5/5 olacak. Öte yandan Carol, kodu çok daha yavaş yazıyor ancak önemli ölçüde daha az hata üretiyor. Kalite için 5/5 ancak hız için 3/5 puan alıyor. Her iki şekilde de, Bob ve Carol zamlarını aldılar. Herhangi bir çalışanın mükemmel bir puan alması mümkün mü? Bu adil mi?


5

Kullandığım teknik evrimsel prototip oluşturma

Daha fazla bilgi için google’a gidebilirsiniz - ancak hızlı bir şekilde bir şeyler üretme ihtiyacı varsa, gitmesi gereken tek yol budur. Artı, kullanıcılar bundan hoşlandığını söylediğinde, senin yaptığını (... ve dokümantasyonu yapmaya başlayabilir) yararı var.

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.