[Kapalı] bir şey tasarladıktan sonra kodu gerçekten yazmak için kendinizi motive edin


27

Sadece bana mı oldu yoksa bu da sana tanıdık geliyor mu?

Bu böyle: Bir şeyler yaratmalısın; bir modül, bir özellik, tüm bir uygulama ... her neyse. Daha önce hiç yapmadığınız bir şey ilginç, bu zorlu.

Böylece nasıl yapacağınızı düşünmeye başlarsınız. Bazı çizimler çizersin. Fikirlerinizi test etmek için bazı prototipler yazıyorsunuz. Tam bir görünüm elde etmek için farklı parçaları bir araya getiriyorsunuz.

Sonunda hoşunuza giden bir tasarımla bitirdiniz, basit bir şey, herkese açık, bakımı kolay, adı .... Her üssü kapattın, her şeyi düşündün. Bu sınıfa, o dosyaya ve o veritabanı şemasına sahip olacağınızı biliyorsunuz. Bunu burada yapılandırın, diğer şeyleri orada uyarlayın vb.

Ama şimdi, her şey halledildikten sonra oturup bir kod yazmanız gerekiyor. Ve artık zor değil .... Orada bulundum, yaptım! Kodu şimdi yazmak sadece "formaliteler" dir ve yeni bitirdiklerinizi tekrarlamak gibi görünmesini sağlar.

Önceki işimde bazen kendimden kaçtım çünkü kodlarımı belirtimlerime göre yapan başka biri vardı, ama yeni konserimde tüm sürecin başındayım, bu yüzden bunu da yapmak zorundayım ('çünkü para kazanıyorum o).

Ama işte evde, işten sonra üzerinde çalıştığım bir evcil hayvan projem var ve sadece ben var ve kimse bunu yapmam için bana para ödemez. Ben yaratıcı işler yapmak ve sefer gibi hissediyorum yok; not gelir sonra zaman (web göz bir az şey sağlayan, üzerinde yenilikleri görmek P.SE üzerine, SO vb.)

Sadece bir sonraki zorlu şeye, sonra diğerine ve diğerine geçmek istiyorum.

Bu senin de başına geldi mi? Bununla nasıl başa çıkıyorsun?

Kendini içeri girip ucube kodunu yazmaya nasıl ikna edersin?

Herhangi bir cevabı alacağım.


Projenizin büyüklüğüyle ilgili tahmininiz nedir? Hedeflerin ne? Başarılı olursa, projeden kimler faydalanacak? Ne tür faydalar?
rwong

2
@ rwong: Öncelikli hedefim bilgimi genişletmek. Kişisel projemde kendini geliştirme amacıyla farklı fikirler, teknikler, kütüphaneler vb. Deneylerim. Ancak ben sadece ilgisiz prototipler değil, gerçek kullanım senaryosu senaryosu ile bir şeyler inşa etmek istedim.

1
Sadece tasarlarsanız ve asla kodlarsanız, tasarım yapıp çalışmayacağınızı nasıl bilebilirsiniz? Kod, bir "tasarımın" uygulanabilirliğini doğrular veya yanlışlar. Başka bir deyişle, belirsiz el sallayarak "tasarım" yapmak kolaydır, ancak aslında uygulamak genellikle çok büyük bir çalışmadır. Bazen sinir bozucu, bazen sıkıcı, ama nihayetinde benim için en azından tatmin edici.
Kevin

Bunu 3 yıldan uzun bir süre önce cevapladım, ancak sorunuzu tekrar okuduğumdan, bunun DEHB'nin bir işareti olup olmadığını merak ediyorum (ki başıma geldi). Ayrıca, sorunuzun tanımladığı şey ile de mücadele ediyorum ve cevapladığım şey bana biraz yardımcı olsa da, hala çok zor. Russell Barkley neden oldukça iyi olduğunu açıklıyor: youtu.be/LyDliT0GZpE
Mark Freedman

Yanıtlar:


6

Sizin için zorluk, tasarımda ve uygulamada değilse, belki de farklı bir motive edici faktöre ihtiyacınız vardır:

Eğer bu bir evcil hayvan projesiyse (işe yaramazsa), aslında onun canlandığını görmek için can atıyorum, bu yüzden tasarlamak benim için yeterli değil. Kendi evcil hayvan projelerinizi bulduğunuzda amaç nedir? Kullanmanız gereken bir şey için mi? Eğer öyleyse, bunu uygulamak için motivasyon olarak kullanabilirsiniz. İşe yaradığını görmek için. Kullanmak istediğiniz işlevselliği sağlamak için.

Başkaları için uygun hale getirmeyi planlıyor musunuz? Motive edici bir faktör, nihai üründen faydalanmalarını sağlayabilir. Sadece tasarım modundaysa, bu programdan yararlanamayacaklar. Ve eğer pazarlamayı planlıyorsanız, tasarım modunda kalmışken evcil hayvan projeniz için kimsenin para ödemeyeceği gerçeğini, motive edici bir faktör olarak kullanın.

Kendi işim üzerinde çalışırken, işte yapabileceğimden daha yinelemeli bir yaklaşım benimsem - bir şey oluşturmadan önce tüm detaylar için endişelenmiyorum. Daha uzun sürebilir, ancak 1) yalnızca benim için (veya henüz herhangi bir biçimde var olduğunu bile bilmeyen biri için), o zaman deneme ve zamanımı alma esnekliğine sahibim. 2) Yeniden yapılanma ve daha iyi şeyler yapmanın yollarını öğrenmek için birkaç döngü geçiriyorum. Kendi paramda, mecazi olarak konuşuyorum.

Sonuçta, yine de, ince havadan çıkan bir şeyi canlandırmakta gerçek tatmin olmaz mı? Bu benim için ne yapar. Bu sizin için işe yaramazsa, motivasyonunuz nihai ürün olmadığı sürece, neden evcil hayvan projesi üzerinde çalışmak istediğinizi anladığımdan emin değilim. Tasarlamak sizi meyve eden şey ise ve bunu işyerinde yapıyorsanız, aradığınız memnuniyeti zaten alıyorsunuz demektir.


6

Evde hızlı prototiplemeye ihtiyacınız var.

Aynı kişisel titizlik seviyesini özel bir kişisel projeye uyguladığınızda, kolayca fazla mühendislikle sonuçlanır.

Kişisel bir proje için yüksek bir standart belirlemek tamamen kabul edilebilir, ancak projede ilerleme kaydetmek için yeterli kaynağa sahip olamayacağınızı (günlük 8 saatlik çalışmanıza ek olarak kodlama saatleri) kullanamayacağınızı anlamalısınız.

Evcil hayvan projenizdeki en temel amaç nedir? İçgörülerinden birinin faydasını kanıtlamak için mi? Bu durumda, projeyi bir konsept kanıtı projesi haline gelinceye kadar kısaltın . Ardından, daha az kodlama ile daha fazlasını başarabilmeniz için hızlı prototipleme kullanın.


5

Sanırım sadece benim, ama ters problemim var. Genellikle, kodu yazmaya başlamadan ve ilgili konulara girmeden önce tüm detayları düşünmekte zorlanıyorum. Gerçekçi olarak, bir şeyi kodlamaya başladığımda genellikle kafamda belirsiz bir tasarımım olur. En büyük zorluğum kendimi tüm detayları düşünmek ve baştan aşağı bir tasarım yapmaktır.


5
Bu neden bu kadar yüksek oy kullandı? Asıl soruyu yanıtlamıyor: “Kendini girip ucube kodunu yazmaya nasıl ikna ediyorsun?”?
dan_waterworth

1
@ dan_waterworth: Bence çoğu insan cevapla ilgili olabilir. Ben küçükken de aynı şeyi yaptım, ilk önce önceden planlama yapmadan önce kafa kafaya kodlanıyordu. O zamandan beri (zor yoldan) yazma aşamasına geçmeden önce oturup oturup düşünmenin daha iyi olduğunu öğrendim.

2

Bununla kesinlikle ilgili olabilirim. Karşılaştımadığım şeylerin üstesinden gelmeyi seviyorum, ama daha önce çözdüğüm herhangi bir şey üzerinde çalışmaya başlamam zor. Yaptığım en büyük şey, kendimi X'in bitmesi ve işleyişi için oturmaya zorlamak. Genelde bir kez gittiğimde eğlenirim ve ilk başta yaptığımdan çok daha fazlasını yaparım, ancak bir hedefi zorlamazsam, saatlerce rahatsız olurum.

Ayrıca bu işte evde, ofiste olduğundan daha fazla olur. Daha fazla dikkat dağıtıcı, işten yanmış mı yoksa ne ...


2

Daha önce kendimden geçerken hayal kırıklığınızı kesinlikle anlıyorum.

Bunun harika bir yaklaşım olmadığını bildiğim için toplumdan bazı alevler görmekten korkmama rağmen, yan projeler için yaklaşımımı sizlerle paylaşacağım . Lütfen bu yöntemin benim için işe yaradığını ve orta / uzun vadeli projelerde kullandığımı, küçük bir şey için yapamayacağımı unutmayın (genellikle tek seferde bitirmek için motivasyonum olduğu için).

Tüm projeyi kapın ve her biri sık sık birbiriyle etkileşime girecek parçalardan oluşan 'paketlere' bölün. Ardından her bir paketi tasarlayıp kodlayabileceğiniz küçük parçalara bölün (en fazla birkaç saat düşünün).

İdeal olarak, her bir parçayı bir gün için yan projeniz için ne zaman ayıracağınız zaman tamamlayabilirsiniz ancak bu gerekli değildir (kişiye göre değişir).

Şahsen, her parça için tahmini bir zaman dilimi ayarlamıyorum, çünkü bir tahminde bulunup hayal kırıklığına uğradım, bu tahminde bulunduğumda başarısız olduğum için, bu yüzden bunu tavsiye etmiyorum. Vaktini al ama çok uzun sürme.

Artık her küçük parça, normal gelişim sürecinizde, tasarlama, test etme, uygulama ve başka ne yapmanız gerekiyorsa, tüm aşamaları alır. Buradaki fikir, her bir parçaya iyi bir başlangıç ​​yapmak ama henüz tam bir son işlem dokunuşu vermek değil.

Bu benim motivasyonumu koruyor çünkü birkaç saatlik gerçek kodlama sıkıcı olaylarından sonra yapacak daha fazla tasarıma sahip olduğumu biliyorum (nefis). Hedeflerinizden uzaklaşmanıza izin vermeyin, sadece bu korkunç görevi yapmaya devam edin, yakında bitecek ve bitecek.

Tüm parçaları inceledikten sonra, pakete bakın. Nasıl çalıştığını, ne yaptığını görün, tüm paketi tekrar gözden geçirin. Eminim değişiklikler ve tweaks olacak, şimdi bunları yapın. Tüm diğer paketlerde çalışırken ihtiyacınız olacak en önemli bilgileri aklınızda bulundurun. Notları da saklayın, çok yardımcı olurlar.

Her bir paketi gözden geçirin ve daha önce yaptığınız diğerlerini hatırlamaya devam edin, yazdığınız yeni kod bir hafta önce yazdığınız şeylerle nasıl etkileşime girecek? Daha önce yazdığınız ve belki de unuttuğunuz şeyleri aramaktan korkmayın.

Sonunda, hepiniz paketlerden çıktığınızda, genellikle birkaç günlüğüne gitmesine izin veriyorum, kendime dinleniyorum ve başka bir şeye odaklanıyorum.

Normalde geri dönüp paketleri birleştirmeye ve eğlenceli testler yapmaya can atıyorum, yazacak çok fazla kod yok ve hedef yakın, bu benim için yeterli bir motivasyon.

Umarım bu çabalarınızda size yardımcı olur.


2

Orijinal varsayımların tamamen yer almadığını ve asıl uygulama yapılırken toplanan deneyimlere dayanarak orijinal tasarımın az ya da çok değiştirilmesi gerektiğini her zaman buldum.

Bazı kutular çizdikten sonra tasarımınızın kesinlikle yanılmaz ve mükemmel olduğunu düşünüyorsanız, ancak gerçekten denemeden önce, bazı proje uygulamaları için mükemmel bir aday olduğunu düşünürüm.

Kargo bir özelliktir. Bütün mesafeyi geçmezseniz, sadece bir mimarsınız.


1
+1 Genel olarak iyi, endişe verici bir mimarın yeri var, "sadece bir mimar" elbette kasıtsız, biraz alçakça geliyor.
Aralık'ta

@Orbling: Thorbjørn ( daha çok küçük düşürücü) mimarlık astronotundan kaçınıyordu .
rwong

@Orbing, iyi olabilirdi. Başkalarına yapmasını istediğin şeyi kendin yapamayacağın gerçeğini nasıl ifade edersin?

1

Bence sorunun yanlış bir amacı var. Hedef "tasarım sistemi" olarak belirlenmiş gibi görünüyor. Ve sonra bunu iyi yapıyorsun ve hedefe ulaşılıyor. Bu yüzden bir öneri, başka bir hedef belirleme "sistemi uygulamaya koyma" dır, ancak o zaman motivasyonla ve bunu nasıl yaptığınızla daha fazla ilgilidir.

Benim için iyi sonuç veren başka bir yol daha var: Başlangıç ​​hedefini "tasarım sistemi" veya "sistem yap" yerine "sistemi belirli kullanıcılara sunmak" olarak belirlemek. Bu şekilde, kullanıcılar değerli bir şey elde edinceye kadar tatmin olmayacaksınız. Ve bunu baştan beri iyi yapıyorsunuz (testler ve diğer modern lüks şeyler dahil).


1

Gerçekten de motivasyon meselesi olmanın yanı sıra, tasarımın ve kodlama sürecinin birleştirilmesinde çözümün bir kısmının bulunabileceğini düşünüyorum. En çok böyle yaparım. Temel olarak, bunu düşündüğünüzde tasarımınızın temellerini uygulamak ve bir sonraki adıma geçmek için aşağı iner.

Örn: Temel sınıflarımı tasarladıysam, onları yazar ve üzerinde bazı testler yaparım. Sonra temel bir veritabanı tasarladım, kurdum ve test ettim. Daha sonra veri tabanına giriş / çıkış işlemleri için ihtiyaç duyduğum yöntem ve fonksiyonlara sahibim. Temel sınıflarımı hazırladığım için testler daha kolay yapılır. Ve sonunda kullanıcı arayüzünü tasarlamaya başladığımda, oynamaya hazır bir kod setine sahibim.

Şimdi bu, arayüzler ile bağlantılı bloklar halinde tasarladığınızı varsayar. Bunun için pahalı bir kelime bilmiyorum, çünkü eğitim programcısı değilim, ama ne demek istediğimi biliyorsun.

Bu yardımcı olur umarım.


1

Sonra sadece tasarım fikirlerinizi yazın, yayınlayın (bir blogda yayınlayın), sorunu ve başkalarına sunduğunuz çözümü açıklamak için elinizden geleni yapın.

Bir püf noktası : tasarımınızı bir okur yazarlık programı olarak açıkla! :) Sonra ilginç kısımla (tasarım fikirleriniz) kendinizi meşgul edersiniz, ancak aslında bunları birlikte verdiğiniz gerçek kodla doğrularsınız.

Ve okuryazarlık programını yeni fikirlerin başkalarına sunumu olarak yayınlayın!


1

Bu kulağa hoş geliyor, ama sadece başla. Muhtemelen geliştirme ortamınızı açmanız gerekecek, öyle yapın. Muhtemelen tasarımınızdaki her bir sınıfı tanımlamanız ve yöntem imzalarını yazmanız gerekecek, öyle yapın. En önemli yöntemleri uygulamaya başlamanız gerekecek, öyle yapın.

Genellikle bu zaman zarfında, başlangıçta sorun yaşadığımı unuttum ve bölgedeyim.

Zamanın yaklaşık% 80'i çalışıyor. Gerisi için, Tetris var.


0

Kesinlikle sadece sen değilsin! Aslında şu anda bir proje yapıyorum.

Kimse seni kendin motive edemez

Gerçekçi bir zaman çizgisi oluşturun ve her bir bölümü zamanında tamamlamak için kendinize sorun. Tasarım aşamasını asla geçemezlerse projeler için gösterecek hiçbir şeyiniz yoktur.


0

Sorunuza göre, probleminiz tekerleği yeniden icat ediyor görünüyorsunuz. Bunların hepsini zaten yaptıysanız, neden tekrar yapmanız gerekiyor? Bunu sizin için yapacak bir çerçeve yok mu? Olmasa da (bu oldukça imkansız olsa da), neden bir tane yazmıyorsun?

Programlamadaki kilit görev tekrar sıkıcı şeyler yapmak değil, bir kez yapmak, doğru şekilde yapmak ve sonra tekrar kullanmaktır. Veya daha da iyisi: Zaten bir kere ve doğru şekilde yapan birini bulmak.


0

Nereden geldiğini tamamen anlıyorum. Sizi ilgilendiren sorun budur ve bir kez anladığınızda, uygulama sadece işe yarar.

Neden sadece çözümü tasarlamıyorsunuz ve başkalarının hayata geçirmesini mi sağladınız?


-1

Yaptığım şeyler:

  • Önüme büyük bir zamanlayıcı koyun (ters modda, 1 saatlik parçalar halinde olabilir)
  • Beni bir hedefe ulaşana kadar ayakta kalmaya zorla (bazen bir birayla, biraz alkolün işe yaradığını buldum)

Her zaman değil, yine de

PS. evden çalışıyorum

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.