Tek kişilik bir proje nasıl düzenlenir? [kapalı]


21

Arada bir (her gün okuyun: yaklaşık her gün) Yeni bir fikir buldum, favori editörüm / IDE'de yeni bir projeye başladım, kodlamaya başladım ve ertesi gün onu silip yeni bir şey başlattım. Yaklaşık altı yıldır programlama yapıyorum ve bu altı yılda sadece çok küçük bir projeyi (Pastebin.com için bir Dashboard widget'ı) tamamladım. Bu kodlamayı öğrenmek için harika olsa da gerçekten bir şeyi tamamlamak istiyorum.

Gerçek kodlamanın öncesinde, sırasında ve sonrasında yapmam gereken bazı şeyler nelerdir? Bana bu tür tek kişilik projelerin nasıl organize edileceğini öğreten iyi kaynaklar nelerdir?


Önemli olursa, web veya Mac geliştirme yapmak istiyorum.


8
Gönderdiklerinize göre, bir organizasyon eksikliği gibi görünmüyor. Bunun yerine, ilgi eksikliği veya projeyi tamamlama isteği gibi geliyor. Projeleri takip etmek yerine silmenin bir nedeni var mı? Projeye veya kullandığınız teknolojilere gerçekten ilgi duymuyorsanız, izlemeniz gereken hiçbir şey yoktur, aksi takdirde bir angarya olur.
Thomas Owens

1
@Thomas Owens, tamamlanmamış projeleri silmemin ana nedeni, programlama klasörümü dağınık hale getirmeleridir (yani, bir daha asla kullanmayacağım dosyaları içerir). Teknolojilerle çok ilgileniyorum, sanırım motivasyon eksikliği o zaman.
sağa doğru

Yanıtlar:


18

Bence asıl sorun, uzun vadeli, organizasyondan ziyade motivasyon.

  1. Kullanıcıları bulun ve onlarla konuşun. Projenizi bu insanlara bir tür hediye (veya satılabilir ürün) olarak görün. (Düşüncelerinizden vazgeçecek biri de, gerçekten de sizinle kod geliştirmeseler bile harikadır.)

    Bu sosyal motivasyona sahip olmak , projeyi uzun vadede ilgi çekici hale getirmek için kişisel meraktan çok daha güçlü olacak.

  2. Amacınız, yararlı işlevselliğe sahip küçük ısırık büyüklüğünde parçalar olmalıdır. SourceForge veya GitHub'a ekleyin ve bir meteor çarptıysa bile projeyi hayatta kalma şansı gerektiren bir şey olarak kabul edin.

    Bu, daha fazla bültenlere (kullanıcılardan daha fazla geri bildirim ve coşku anlamına gelir) ve ayrıca başka bir kişinin projeye katkıda bulunmaya karar verebileceği ihtimalini artırır.

  3. Kendiniz için özel bir öğrenme hedefi seçin. Proje hangi teknolojiyi veya tekniği öğrenmenize yardımcı oluyor? Tekniğin problem alanına uygun olmadığı ortaya çıkarsa, en azından sürüm 1.0'ı bir kenara koymadan önce bitirmek için yeterince ilgilenir misiniz?

    Bu tür hedeflere örnek olarak, ortak yazma, ağ protokolleri, AI oyununun özellikleri, öğrenme çerçeveleri veya araç setleri, yeni bir dil vb.

En kötü senaryo, her üçünün de eksik olması, burada sürekli olarak, kodları içeren, hiç kimsenin, emin olmadığınız kişiler için ilginç bulmadığınız bir "büyük yeniden yazma" kodu içeriyor.


2
"Birdenbire bir meteor çarptığında" için +1. Erteleme karşı hayır, cidden, mükemmel ipuçları.
Randolf Rincón Fadul,

Tecrübenin yararından sonra eklenecek bir şey: Yardım istiyorsanız, tek geliştirici olarak kalmak istemiyorsanız, açık kaynaklı projenizi tanıtmanız gerekecektir . “Eğer inşa edersen, gelecekler” çok güvenilmez.
Darien

2

Bir proje üzerinde çalışırken yeni bir proje için bir fikir bulduğunuzda, sadece proje fikirleri listesine not edin. Ardından mevcut projeye geri dönün. Eğer proje değerliyse, yeni bir projenin dikkatini dağıtmana izin verme. Aşağıdaki adımları yalnızca çok iyi bir fikir ise kullanın.

Projemize başlamadan önce planlayın. Ne yapacak? Bunu yapmak ne kadar zor olacak? Bilinenler ve bilinmeyenler nelerdir? Yanlış gitme olasılığı nedir? Ne kadar sürer? [Şimdi devam edip etmeyeceğinize şimdi karar verebilirsiniz.] Planınızı koruyun. [Bir proje üzerinde çalışıyorsanız, yeni projeyi bir kenara bırakın ve diğer orijinal projeyle devam edin.]

Projenize başladığınızda IDE'nizde ayrı bir proje olarak ayarlayın. (Böylece bir sonraki projenizi başlatmak için silmeniz gerekmez.) Yeni sürüm olarak bazı sürüm kontrol yazılımlarına bakın. (Şimdi başka bir projenin önüne geçerse onu silebilirsiniz.) Projenizi doğru bir şekilde yaptığınız zaman kontrol edin. (Artık raydan çıkarsanız geri dönebilirsiniz.)

Projenizde ortaya çıkan sorunları takip edin. Bu, projeyi içeren birkaç metin dosyası ile yapılabilir. TODO, Changelog, README (bilinen hataları ve sorunları içerebilir) gibi dosyalar uygun olabilir.

Kodunuzu çalıştırdığınızda etiketi kontrolünüzde etiketleyin. Eğer onun değeri paylaşmaya değerse.

Planına geri dön ve ne kadar iyi yaptığını gör. Kendin için öğrenilmiş bir ders al. Ne öğrendin, ne kadar iyi tahmin ettin? Hangi problemleri özledin? Hangi sorunları abarttın? Önemli bulduğun başka bir şey.

Bir projeyi terk ettiğinizde, öğrenilen dersleri işlemden geçirin. Projeyi neden terk ettiğinize dair bir not ekleyin.

Ayda bir kez öğrenilen derslerinizi gözden geçirin. Zaman geçtikçe incelemeler arasındaki süreyi artırabilirsiniz.


2

İşte " Bir Takımda Çevik Yapmak " bağlantısı . Bu ilginç bir okuma!

Ayrıca, "işte" yaptığımız dev yazılım disiplinlerinin neden önemli olduğunu düşünebilirsiniz. Takımda sadece 10 kişi varsa, bunlar önemli mi? Hayır, önemliler çünkü projenizi düşünmenize yardımcı oluyorlar.

Hedef kitleniz kim? (Eğer siz, o zaman harikasınız - ama aslında uygulamanın ne istediğini hatırlayın)

Bir kullanıcı arayüzü yapıyorsanız, hedef kitlenizin ihtiyaçlarını düşünün, daha sonra temel kullanıcı arayüzü geliştirme sürecine geçmeden önce bazı sahte işlemler yapın.

İş mantığınıza bakıyorsanız, TDD veya BDD'yi deneyin. Uygulamanıza saldırmadan önce nasıl çalışmasını istediğinizi düşünün. Fitnesse veya benzeri bir kablo demetine sarmayı düşünün. Uygulamanızı test etmek istiyorsanız, başlamak için en kolay yer başlangıçtır .


1

Yorumunuz verildiğinde, projelerinizi silmeyi bırakın!

Genellikle bilgisayarımda aktif olarak geliştirmediğim (veya yakın bir gelecekte aktif olarak öngörülmekte olan) projelerimi tutmuyorum, ancak kaynak dosyalar bir SVN deposunda var ve her şey (IDE yapılandırma dosyaları dahil) yedekleniyor harici bir HDD. QuestiS'inize işinizi silmeyi durdurmaz ve kendinizi motive etmeye odaklanır.

Barındırılan bir depo arıyorsanız, Google Code, SourceForge, GitHub ve BitBucket’e bakın. Dosyalarınızı yükleyin, bir yerde saklayın ve ilgi duyduğunuzda, onları aşağı çekin. Onları özel yapabilmenize rağmen, onlardan utanmıyorsanız herkese açık yapabilirsiniz. Belki birileri çalışmanızı yeniden başlatmakla ya da örneklerden ders almakla ilgilenecektir (özellikle ilginç bir kütüphane veya çerçeve kullanıyorsanız).

Zamanla motivasyonunuz üzerinde çalışın. Her seferinde bir şeye odaklanmaya çalışın. Kodunuzu üretim kalitesine getirmeyebilirsiniz, ancak belki de örnek kaliteye veya başkalarının beceri setinizi, bilginizi görmek veya belirli bir işlem yapmanın yolu hakkında bilgi edinmek için bakabileceği bir şeyi elde edebilirsiniz.


1

Her şeyden önce, projeler ve projeler var. Bir teknoloji veya kütüphane ya da başka bir şey denerseniz, muhtemelen IDE'nizde bir proje yaratırsınız, bu şeyin sizin için ilginç olup olmadığını öğrenin ve projenizi silin. Sorun değil, herkes bunu yapıyor.

Başka bir proje türü de gerçek yazılım / siteler / vb. Olup, bu 'projeler', dosyalar, programlar sadece bir araçtır ve bu tür karmaşık şeyleri geliştirmek motivasyon ve hedefler gerektirir :

  • ne geliştirirseniz (web sitesi / metin editörü / mobil uygulama / ...)
  • ne için ihtiyacınız var (para kazanın, yeni bir teknoloji edinin / açık kaynağa katkıda bulunun ...)
  • ne zaman yapardın (projene ne kadar zaman ayırıyorsun, ne kadar zaman yapmayı düşünüyorsun)

Ne geliştirmek olmalıdır yeni . Talep ettiğiniz bazı özelliklerin eksik olduğunu düşündüğünüzden başka bir metin editörü daha yapmak istiyorsanız, muhtemelen bunu yapmanız gerekmez. Yüzlerce açık kaynak aracı var, bunlardan birine katkıda bulunuyoruz.

Bir komut dosyası gibi küçük bir tek kullanımlık araç yapmış olsanız bile, listelenen şeyleri belirtmelisiniz, sorunu çözmek daha kolay olacaktır.

Kod yazma zorunluluğu varsa (örneğin, kodunuzu büyük ölçüde yeniden yazın), muhtemelen bunu yapacak kadar deneyimli değilsinizdir. Yazılım mühendisliği, platformunuz (mac / web / etc), benzer şeyler yapan daha deneyimli geliştiriciler tarafından yazılmış kodları okuyun. Bunu şimdi yapacak çok fazla yer var (github, google code, blogları programlama, stackoverflow).

Çok karmaşık bir sorunu (örneğin bir derleyici ya da işletim sistemi yazar) sıfırdan çözmeye çalışmayın, ilk önce daha küçük işlere ayrıştırın, çoğunlukla çoğu zaman birileri sorununuzu çözmenize yardımcı olacak kütüphaneler oluşturmuştur.


0

Sevilen birine bir web aracı için gerçekte neye ihtiyaçları olduğunu sormayı düşündünüz mü ve sonra gerçekten onun için yapmayı düşündünüz mü ?

Bu, bunun en zor kısmı olan işi bitirmek ve sunmak için motivasyon sağlamalıdır . Ayrıca, sevdiklerinize faydalı olması durumunda uygulamayı desteklemekten ve sürdürmekten de faydalanabilirsiniz. İşe yaramazsa, neyin yanlış gidebileceğini deneyimlerden öğrenebilirsiniz.

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.