Hiç tanımadığım bir grup insanla programlama


50

AP bilgisayar fen dersimden bir grup projeye atandım ve diğer üç kişiyle çalışmam gerekiyor. Daha önce onlarla hiç konuşmadım, yetenek seviyelerinden haberim yoktu ve sahip olduğum tek şey e-posta adresleri. Özetle, ödev şudur:

"Takım olarak bir sınıfa en az üç Modül ekleyeceksiniz ...."

Hiçbiri birbiriyle temasa geçmediği için "Takım kaptanı" olmaya çalışacağım ama merak ediyorum: bu konuda ne yapmalı? Onlara e-posta gönderdim ve onlara birbirlerini e-posta ile göndermeyi tercih ettikleri herhangi bir iletişim yöntemi olup olmadığını sordum, ancak projeye gerçekten başladığımızda kimin ne yaptığını bulmam gerekecek.

Ne yapmalıyım? Nasıl tanıştım ve tanımadığım üç kişiye nasıl liderlik ederim?

İşte gerçek ödevin bir kısmı:

Bu nedenle, her ekip üyesinin bu projede hafta başında başlayacağı çeşitli rolleri tartışmanız gerekecek. Pronto (veya Blackboard IM), e-posta, wiki, google grubu, blog veya uygun gördüğünüz herhangi bir yöntemle iletişim kurabilirsiniz. Bir grup üyesi haftanın sonuna kadar gruba dahil olmazsa, eğitmeninize bildirin ve ek rehberlik sağlayacaktır.
...
Ayrıca bir projenin sonunda, her bir ekip üyesine bu projenin tamamlanmasına katkısını, önerilen bir notla birlikte puanlayacağınız bir ekip değerlendirmesi yapılacaktır.

Düzenleme: Birçok kişi onlarla bir kafede buluşmamı önerdi. Tek sorun, hepimizin farklı eyaletlerde olması. Ayrıca birinin Facebook / Skype / twitter kullanmasına izin verilmediğini de belirttiğimden, yahoo messenger ve e-postalar aracılığıyla mesajlaşmaya başvurmam gerekiyor.


10
"Bu insanlarla konuşmak", "onları tanımak", "bu projeden ne istediklerini dinleyin" ve "aklınızla düşünmek" yerine SE hakkında yön sormak yerine ... size veremez mi? Burada kimse onları tanımıyor. Demek istediğim, eğer davranışsal bir işlev bozukluğu yaşarlarsa ve güç konumundalarsa, yön sormak mantıklı gelebilirlerdi ... ama bunlar senin gibi adamlar. Kum havuzundasın: işleri çözmenin zamanı.
ZJR

6
@zjr Kazını kim yaktı? Tabii onlarla çalışıyorum ve bir şeyler bulmaya çalışıyorum. Ancak bu projeyi sadece kör bir şekilde yapmak yerine, bu görevi yerine getiren insanlardan bazı tavsiyeler almak istedim. Ayrıca insanlar bazı harika proje yönetimi uygulamalarından bahsetti ve ben de yeni şeyler öğrendim.
Gabriel

2
@ ZJR Onun sorusunun noktası olduğundan emin değilim. Daha önce onlarla gerçekten iletişim kurmadığını söylerken, sorusu bunun bir programlama projesi olduğu ve bununla başa çıkması gereken ekiple nasıl yaklaşması gerektiği ile ilgili idi.
Jarrod Nettles

Yanıtlar:


90

Bu projenin lideri , başında çıkan ve başında görev alan kişi olacaktır .

Bu sadece yazılım geliştirme için değil hayattaki birçok şey için geçerlidir. Diğer herkes kafasız tavuklar gibi koşarken, bir şeyleri düşünen, ileriye doğru adım atar ve “ Yapacağımız şey budur ve bunu nasıl yapacağız ” der . genellikle projenin geri kalanında lider olarak görünen kişidir. Bunu yaparak projenin nihai başarısı veya başarısızlığının sorumluluğunu aldığınızı unutmayın.

Bu projeye liderlik etmek ister misin? İşte size büyük bir etki yaratmak için hemen yapmaya başlayabileceğiniz birkaç şey .

  1. Trello gibi bir proje yönetimi aracı kullanın ve herkese davet gönderin ve projenin bir bölümünü insanlara atamaya başlayın.
  2. Bir hata veritabanı oluşturun ve görev ve hata eklemeye başlayın - tekrar, atamaya başlayın.
  3. Bir sürüm kontrol deposu kurun ve herkesin çalışabileceği iyi bir kod yığınını kontrol edin. Başka bir kod kontrol yöntemi ile uğraşmayı reddetmek.
  4. Sürüm kontrol sistemi ve hata veritabanını nasıl kullanacaklarını göstererek insanların geliştirmeye devam etmelerini sağlayın.
  5. Projenin durumunu ve önceki haftanın ilerlemesini detaylandıran haftalık e-postalar gönderin.

Bu adımların hiçbiri özellikle zor veya zaman alıcı değildir, ancak yolun aşağısında büyük zaman kazandıracaklardır . Dahası, ekibinizin birbirleriyle konuşmasını ve sizi sorumlu görmeye alıştırmasını sağlar.


17
İki ekip üyesi bu yaklaşımı denerse dikkatli olun. Kontrol etme ve önderlik etme mücadelesi bir felaket olabilir - bir grup hiçbir işe yaramayan takım arkadaşından çok daha kötü.
Corbin

3
@CorbinMarch Anlaşıldı. Bu sadece ekipte açık bir liderlik eksikliği varsa işe yarıyor - herkes başkalarının işlerini bitirmesini bekliyor. Önceden lider olarak ortaya çıkan başka bir kişi varsa, projeniz için yapabileceğiniz en iyi şey o kişinin arkasına geçip onları desteklemektir.
Jarrod Nettles

4
Bunu okuduktan sonra Trello'yu kontrol ettim ve anında sadeliği baştan çıkardım. Bağlantı için +1. Bu şeyi yerel olarak kurmanın bir yolu varsa, en mükemmel şey olurdu ...
Radu Murzea

2
The leader of this project will be the person who steps up and takes charge at the beginning.Hepsi Blog Overlord'ı selamlasın :)
yannis

5
Onları ilk etapta bir kafede bulmaya ne dersin? Hangi becerilere sahip olduklarını bilmiyorsanız, onlara nasıl görev atacaksınız? Şahsen, "İşte Trello, işte bir hata izci ve işte sizin görevleriniz" e-postaları istemiyorum, daha önce kimseyle tanışmadan.
Simon

24

Jarrod Nettles'in cevabı, önereceğim şeyi çok fazla özetliyor, bu yüzden benzer bir durumda son deneyimlerimde işe yarayanların bir kısmını atacağım.

E-postayla değil, onlarla konuşmanın bir yolunu bulmanızı öneririm. Aynı bölgede değilseniz, hepsini Skype'a alın. Bölgede iseniz, onlarla bir kafede ya da bir şey buluşalım. İlk toplantılarda bizzat konuşmak, gerçekten karar vermenize ve o zamana ve orada iş yapmanıza yol açar; e-posta konuları, bilgisayarlarında utangaç veya sık olmayan kişilerin bu süreci sürdürmesini sağlar - hepimiz ne kadar tembel öğrencilerin olabileceğini biliyoruz!

İlk toplantınızda, grubunuzu projeye katılmaya çalışırken üzerinde tanımaya çalışacağım - ancak projeyi görmezden gelmeyin! Buz kırma geçirilen 10 veya 20 dakika 4 kişi arasında yeterli olabilir.

O proje hakkında konuşurken gelince, ne çalışan öneririm size proje ilgili olacak. Bence bunun sizin anlayışınız olduğunu açıkça belirtmeniz önemlidir ve onlara tam olarak ne yapmaları gerektiğini söylemediğiniz bir durum değildir. Herkes, eğer varsa, düşüncelerini ve fikirlerini halkaya aktarabilmeli ve bir grup olarak projenin ne hissettiğini yeterince iyi anlayan bir ilk toplantıdan uzaklaşmalısınız.

Gelecekteki (düzenli) toplantılarda, projenin farklı kısımlarına daha ayrıntılı bakmaya başlayabilirsiniz; tam olarak neye ihtiyaç duyduğuna, hangi kaynaklara ve ne kadar zamana ihtiyaç duyulacağına ve kimin ne yapabileceğine bak. Gerekirse parçayı daha da ayırın. Belki bazı yumuşak tarihler belirlemeyi deneyin?


4
Sesli kişiden bahsetmek için +1. Kişi en iyisi, en iyi görüntülü sohbet, konferans görüşmesi hala postadan daha iyi.
Barend

@andybursh Ne yazık ki, bir öğrencinin facebook bile kullanmasına izin verilmiyor. Bu yüzden Skype söz konusu değil ... umarım metinleri çözebiliriz.
Gabriel

10

Hiç çevrimiçi tanımadığınız bir grup insanla çalışma deneyiminiz var mı ve onlarla şahsen tanışamıyorsunuz ama birlikte bir proje tamamlamalısınız?

Düşük bütçeli, saçma tarihler ve nehrin pazarlama yoluyla satılmasını sağlayın; bu, gerçek dünyadaki yazılım geliştirme projelerinin kabaca% 65'i gibi geliyor.

Muhtemelen, tek taraflı olarak görev almak ve görevler yapmak yerine, ilgilenecekleri parçalar için millet gönüllü olacaksa en iyi şekilde hizmet görürsünüz. Muhtemelen orada oturuyorlar, nasıl sorumluluk almaları gerektiğini düşünüyorlar. Veya tüm grup çalışmasını yapmayı çok umursayan bir zavallı sodu nasıl alabileceklerini, böylece kendi sınıfında kullanabileceklerini.


2
Birçoğumuzun daha önce hiç karşılaşmadığımız denizaşırı ekiplerle çalışmak zorunda kaldığını unuttun.
maple_shaft

7

Böyle durumlarda yapılacak ilk şey, bir sorun izleyici oluşturmak ve nasıl kullanılacağını öğrenmektir.

Tanımladığınız gelişmeyle nasıl başa çıkılacağına dair daha temel bir giriş için, en sevdiğim referans Martin Fowler'in Offshore Geliştirme ile Çevik bir Yazılım Süreci Kullanması makalesi için geçerli . Bu makale, dağıtılmış ekip iletişimi kurmanın temellerini ve ileri kavramlarını ana hatlarıyla belirtir:

Use Continuous Integration to Avoid Integration Headaches
Have Each Site Send Ambassadors to the Other Sites
Use Contact Visits to build trust
Don't Underestimate the Culture Change
Use wikis to contain common information
Use Test Scripts to Help Understand the Requirements
Use Regular Builds to Get Feedback on Functionality
Use Regular Short Status Meetings
Use Short Iterations
Use an Iteration Planning Meeting that's Tailored for Remote Sites
When Moving a Code Base, Bug Fixing Makes a Good Start
Separate teams by functionality not activity
Expect to need more documents.
Get multiple communication modes working early

Projeniz için, burada belirtilen tüm ipuçlarını ve püf noktalarını takip edemeyeceğinizden emin olamazsınız (örneğin, sizin için Büyükelçiler veya İrtibat Ziyaretleri olmayabilir) :) ama yine de çalışmaya değer.

  • Yukarıdakilerin hepsine sahip olan birçok takım için kesinlikle bir engelleyici olacaktır. Yine de, bunun gibi kapsamlı bir kontrol listesine sahip olmanın gerçekten yararlı olduğunu düşünüyorum - böylece atlanan eşyalar bile kontrol edilmiş ve reddedilme nedenlerini açıkça belgelemişler - sadece önemli bir şeyin kaçırılmadığından emin olmak için.

6
Bu noktalara katılıyorum, ancak takımı sadece çok kısa bir süre için bir araya geliyor ve bu önerilerin çoğu neye ihtiyacı olduğu konusunda ciddi bir öneme sahip olacak. Kalıcı ekipleri daha ilerletmek için çok uygulanabilir.
Jarrod Nettles

@JarrodNettles bu iyi bir noktaya teşekkürler - Cevabı güncelle
gnat

3
... evet, hadi herhangi bir gerçek kod üretmelerine izin vermek yerine onları bürokrasi cehenneme sokalım. Lütfen.
ZJR

1
@ ZJR Söylediğim gibi, bu tür bir proje için listesinin çok az kapsamlı olmasına rağmen, uygun ekip ve kod organizasyonu sadece ekranlarındaki kod yerine çalışma kodu üretmelerine izin verecektir .
Jarrod Nettles

@ ZJR Fowler tarafından listelenen şeyler için iyi "bürokratik" standartlara uymayı tercih ederim. Fikir nedense sadece etmez hataları izlemek kod değişiklikleri bütünleştirmek ve takım bilgilerini paylaşmak için kendi yaratıcı yollar icat etmek benim ateş yakmak
sivrisinek

5

Bize bunun için ne kadar zamanınız olduğunu veya çalıştığınız dili söylemediniz (tek bir sınıfın çok küçük olduğunu söyleyebilirim, ama belki de sizin dilinizde bu daha iyi bir anlaşma).

Her şeyden önce, ne pahasına olursa olsun bir çalışma ürünü var.

Eğer proje iki hafta veya daha az sürerse, bir şey yapan tek kişi olacağınızı ve aldığınız her yardım için çok mutlu olacağınızı varsayalım. Herkes için bir şeyler planlamaya çalışın, ancak kimse bir şey yapmazsa, hala çalışan bir ürününüz olduğundan emin olun. Birisi bir şeyler yapsa bile, devam etmelerine güvenmeyin: herhangi bir noktada bir yerinden ayrılmak için hazırlıklı olun.

Birden fazla haftanız varsa, ürünün bir kilometre taşı olarak işaretlenmesi ve mümkün olduğunca buna bağlı kalması için haftanın bir gününü planlayın. Tekmeleyebileceğiniz ve eksikliklerini kontrol edebileceğiniz bir şeye sahip olduğunuzdan emin olun: en kötüsü en kötüsü gelirse, elinizde olan şey bu olacaktır. Yarattığınız her şey, sizi ne kadar geliştirebileceğinizi göreceksiniz, sizi gitmek için motive edecek üzerinde. Çok fazla ileriye doğru planlama yapmayın: elbette, neyle sonuçlanacağına dair bir fikriniz olması gerekir, ancak en spesifik planlarınızı kısa vadeli tutun.

Bu ikisinin biraz üst üste geldiğine dikkat edin: bence iki hafta bence iki yinelemenin yapılmasının zor olduğu, ancak sadece bir yinelemede çalışmanın riskli olduğu gri bir alan.

Programlamada çok yeni insanlarla çalışacağınız en kötü durumu kabul ediyorum. Genel tavsiyem:

  • Yakında uygulamak istediğiniz özelliklerin ve bunların üzerinde çalışacak kişilerin bir listesini tutun. Jarrod, Trello’yu önerdi ve ben de şunu tamamen destekliyorum: eğer takım arkadaşların çok deneyimli değilse, çok yardımcı olacak. Böcekleri orada tutmayı da deneyebilirsin.
  • Dört kişilik bir takımda versiyon kontrolüne ihtiyacınız var. Nasıl çalışacağını bilmiyorlarsa, başkalarına katkıda bulunmak konusunda isteksiz olabilir, ancak buna değer.
  • Herhangi bir dış bağımlılık yenileri korkutabilir. Birim testleri yazarsanız, insanlara onları kırmaktan endişe etmemeleri gerektiğini söyleyin. İnsanlara, özellikle ilk başta, yapıyı kırma konusunda endişe etmemeleri gerektiğini söyleyin. Hiçbir kod işlemeyen insanları, buggy kodunu çalıştıranlardan daha düzeltmek daha zordur.
  • Burada önerilenlerin gerçekten sizin için geçerli olup olmadığını kontrol edin. "Sürekli entegrasyon" süslü bir terimdir - küçük bir program için, "bu program çalışır ve tüm özellikler kullanılabilir" anlamına gelebilir. Siteniz var mı? Takımlara ayrılmak size yardımcı olur mu?
  • YAGNI, yüzlerce kez bitti. Gerçekten yapmak zorundaysanız, kendiniz yapacağınız özellikler için önceden şeyler yazın. Çalışmasını sağlayın, sonra yeniden ateşleme yapın ya da çalışmasını sağlamak için buralarda olmazsınız.
  • Elden Geçirme. Bir kez çalışıyorsa, düzeltmek için biraz zaman harcayın. Ekip arkadaşlarınızın da kodunuzu okumak zorunda kalacağını unutmayın: çirkin parçaları tamir etmek ve basit çözümleri daha iyi performans gösterenlerle değiştirmek bir gün boşa harcanmaz.
  • Tüm parçalara bir göz atın. Değişikliklerin kaybedilmesi ve bazen başkalarının kodlarının okunması, her şeyin uygulamanız gerektiğini düşündüğünüz kalite standartlarına uyduğundan emin olmanıza yardımcı olur ve kişi ayrılırsa dalmanın o kadar zor olmamasını sağlar.
  • Belirlediğiniz şeyin aksine, en önemli şey üzerinde çalışmaktan çekinmeyin. Birisi programın gerisinde kalıyorsa, bunu bir yere not edin ve kendiniz yapın. Önce onlara sorun, ancak cevap vermezse devam edin veya bir ya da iki kez sorarsanız ve hala yapamayacaklarını hissederseniz devam edin.
  • Gurur duyduğun bir şeyi yapmaya odaklan. Görevden sapsa bile. Büyük özellikleri kesmek zorunda kalsanız bile neyin daha sorunsuz olduğunu görmek için. Her yineleme "bununla gurur duyuyor muyum?" Diye düşünür ve bir sonraki yinelemede bunları düzeltmeye çalışın.

Son zamanlarda korkunç derecede başarısız olan bir projem vardı; istersen neden başarısız olduğuna dair düşüncelerimi okuyabilirsin , ancak bu, başka bir şansım olsaydı, böyle bir şeyi nasıl yapacağımı özetler.


İlginç okuma, benzer durumlarda bulundum ve bazı başarısızlıkların çok yaygın olduğu görülüyor
Joe Taylor

4

Jarrod Nettles'ın cevabı iyidir. Bunu eklerdim:

  1. Diğer üç kişiden en az birinin tamamen yararsız olacağını bekleyin.
  2. Sadece işin çoğunu (veya hepsini) yaptığınızı hissedeceğinizi kabul edin, ancak herkes eşit kredi alacaktır. Bir şeyleri “adil” hale getirmeye çalışmak, yalnızca gereksiz bir çatışmaya neden olacak ve sizi yavaşlatacaktır.
  3. İyi olan herhangi bir ekip üyesi ile irtibatta kalın. Bu tür insanları bulmak zor ve onlarla tekrar çalışmak isteyeceksiniz.

İlk iki puanına katılmıyorum. İnsanların en kötüsünü beklemeyin yoksa alacağınız şey budur. Kızgınlık inşa edersiniz ve hakaret ettiklerini hissediyorlarsa yararlı ekip üyelerinin desteğini kaybedebilirsiniz. Dile aşina olmayan çocuğa mentorluk yapmak harika bir deneyim olabilir ve iş yükünüzü azaltabilir. (Ama düşünmeyi reddeden sülüklerin peşinde olun.) Ayrıca, projenin bir "ekip değerlendirmesi" var, böylece iş yapan kişi kredi alabiliyor. (Veya herkesi kir gibi hissettiren kişi hiçbir şey almaz.) Acımasızca dürüst olun ve hiçbir şey yapmayan adamın başarısız olmasına üzülmeyin. Bu sadece ekibine adil.
idbrii

3

Çok fazla insan olduğundan emin olduğum için birkaç kez benzer bir pozisyondaydım. Asıl mesele, herkesi memnun etmek ve mutlu etmek için elinizden gelenin en iyisini yapmaktır, bu yüzden yukarıda bahsettiğim gibi, takım liderinin görevini üstlenmenin iyi bir şey olduğunu düşünüyorum. Bunun yerine işi yapmaları gerektiğini düşünebilirler.

Kimsenin birbiriyle temas kurmaya zorlamadığını söylediğini biliyorum, ama bazen bu durumlar insanlar için zor olabilir, tıpkı senin hiç tanımadığın insanlarla çalıştığını söylediğin gibi iletişim kurmak zor olabilir.

Sadece herkese hitap eden ve projenin nasıl ele alınması gerektiğini düşündüğünüzün kim olduğunu bilmelerini ve rollerin, hedeflerin, son tarihlerin, iletişim zamanının, buluşmaların belirlenmesinde projenin sorumluluğunu üstlenmesini istediğinizi bilmelerini sağlayan bir e-posta ile başlardım. istenirse / istenirse) ve proje güncellemeleri.

Diğer insanları tamamen etkileyemeseniz de kimin kimin ne yaptığını, ne yapamadığını takip edebilirsiniz. İşleri devretmek, işin farklı beceri kümeleri veya düzeyleri olan insanlara eşit veya uygun şekilde bölünmesine izin verir.

Bu şekilde, belirli bir iş yapılmıyorsa, işi gerçekten üzerinde çalışmak isteyen insanlar arasında paylaştırmak için kendiniz üstlenebilirsiniz. Bu şekilde sonunda başarısız bir proje ile bitmezsiniz ve tarihler, saatler ve işler ters giderse sonunda gösterebileceğiniz tüm ilgili bilgileri iletmeye çalıştığınız kayıtlara sahip olursunuz. Bazı insanlar kilolarını almazlarsa sizi doğru tutan her şey.

İpuçları açısından:

Şahsen burada bulunan ortak çalışma ortamını seviyorum: https://docs.google.com/

Bu, sözcük belgelerini, elektronik tabloları vb. Paylaşmanıza izin verir. İşbirliği içinde çalışmak için harika bir yoldur. Bunun ne kadar yararlı olduğunu vurgulayamıyorum. Şu an ülkede bulunmayan bazı insanlarla birlikte kullanıyorum.

Umarım bu birine yardımcı oldu, sonsuza dek sürdürebileceğimiz bir projeye öncülük etmenin bir çok yönü var ama bu sadece bir çok şeye bağlı. En azından bu yardım etmek için küçük bir parça.


P.SE’ye hoş geldiniz! Buradaki tavsiyeler için +1. İyi tavsiye.
Jarrod Nettles
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.