Okulumda bir yazılım geliştirme topluluğunu nasıl önyükleyebilirim?


14

Güney Florida Üniversitesi'nde Bilgisayar Bilimleri programındaki eğitim ortamından hayal kırıklığına uğramış bir öğrenciyim. Şu anda "Program Tasarımı" nı alıyorum. Programlarımı okunabilir ve sürdürülebilir kılmak için kaynak kodumu fonksiyonlar ve modüller halinde nasıl organize edeceğimi öğrenmeliyim; bunun yerine, C'de diziler ve özyineleme hakkında bilgi ediniyorum. Gelecek dönem, C ++ ( titreme ) ile öğretilen "Nesneye Dayalı Tasarım" ı almak zorundayım .

İki yıl önce, programlamaya aşık oldum ve o zamandan beri olabildiğince çok şey öğrendim. Başka bir C ++ dersi alma ihtimali beni neredeyse gözyaşlarına boğuyor. Bu nedenle, benzer hırslı öğrencilerle tanışmak, yeni diller öğrenmek, yazılım geliştirme konularını tartışmak ve diğer öğrenci geliştiricileriyle çalışmak için bir programlama kulübüne başlayacağımı düşündüm.

Ancak, yazılım geliştirme deneyimimi paylaşan başka öğrenci olmayabileceğini fark etmeye başlıyorum. Bunun nedeni motivasyon eksikliği değil, fırsat eksikliğinden kaynaklanıyor: Yalnızca bir başka programlama sınıfını ("Programlama Dilleri") biliyorum ve gerçek dünyadaki yazılım geliştirme üzerine hiçbir ders yok. Diğer herkes yalnızca C ve C ++ 'da önemsiz komut dosyaları yazma deneyimine sahiptir.

Diğer öğrenci yazılım geliştiricileriyle çalışmak istersem, bunları kendim eğitmem gerektiğini fark ettim. Şimdi, kulübü modern yazılımlar ve dillerle nasıl yazılım geliştireceklerini öğreten bir yazılım geliştirme önyükleme kampı yapmayı planlıyorum. Açıkçası, gayri resmi bir yazılım geliştirme kursuna başlamak, birçok olası yaklaşımla anıtsal bir görevdir. Sana sorum, sevgili okuyucu,

Saldırı planım nedir?

Yapmalımıyım

  • kulübün kendi içinde anlattıkları, kulüp çalışmasını ev ödevleriyle dengelemeye mi çalışıyorsunuz?
  • CS fakültesinden uzmanlıkları dahilinde üyelerle daha az ilgili konular öğretmesini isteyin?
  • okul içinde veya dışında iş yükümü paylaşabilecek sempatik, deneyimli bir geliştirici bulmaya çalışın.
  • video dersleri göster ( MIT OpenCourseWare , Google Tech Talks , vb.)?
  • uygulamalı programlama atölyeleri düzenliyor musunuz?
  • ödev vermek?
  • başka bir şey yap?

3
Neden C ++ ile öğretilen OOP'ta titriyorsunuz? Üst düzey dillerle uğraşmaktan rahatsızlık duyuyor musunuz? Eğer öyleyse, OOP öğrenmeyi nasıl beklersiniz?
Cam

4
@Evan: Açıkçası, C ++ 'ın düşük seviyeli bir dil olduğunu düşünüyorsanız, bir C ++ kursu sizin için mükemmel olurdu. Çok şey öğreneceksin. Çünkü C ++ başlayanlar için ilk başta düşük seviyeli görünebilir sunduğu düşük düzey özellikleri, ama kesinlikle onları kullanmak gerekmez. Aslında çoğu zaman STL'yi ve tüm üst düzey OOP özelliklerini kullanacaksınız.
Cam

10
C ++, Java, Ruby, Javascript, C # vb. İle karşılaştırıldığında düşük seviyelidir. Diğer birçok dil ile karşılaştırıldığında yüksek seviyededir. Anlamsız bir tartışma gibi görünüyor.
Fishtoaster

2
@fishtoaster: c ++ java ve c # ile karşılaştırıldığında düşük seviyeli diyemem. En azından bu dil kadar üst düzeydir (diğeri hakkında fazla bir şey bilmiyorum). Düşük seviyeli olabilmesinin ek avantajı vardır, böylece her iki dünyanın en iyisini elde edersiniz.
n1ckp

1
@ n1ck: Tabii ki işaretçiler (C # onları vardır biliyorum ama kullanımları nadirdir), manuel bellek yönetimi, hiçbir lambdas (hangi C # adının onlara verdiğinden emin değilim, python lambdas kullanıyor), yerli foreach yok, çok daha küçük bir standart kütüphane, daha sık bit döndürme, farklı platformlar için yeniden derleme, vb. gerekli.
Macha

Yanıtlar:


20

Açıkçası bütün tavrın beni ilgilendiriyor. Grubu bir araya bile getirmediniz ve zaten vermek için herhangi bir bilgiye sahip olan ve grubun ne yapacağına karar vermesi gereken kişi olacağınızı varsayıyorsunuz.

En iyi bahis, intial grubu bir araya getirmek ve bir grup olarak ne yapmak istediklerini beyin fırtınası yapmaktır. Kişisel olarak yapmak istediğiniz şey, grubun ne yapmak istediği açısından önemsizdir. İlk toplantıdan önce diğer grup üyelerinin girişi olmadan ne yapacağınıza karar verirseniz, gönüllü olarak çalışmak istemeyeceğim küstah bir salak olarak karşılaşacaksınız. Böylece grubu başlamadan önce öldürürsünüz.


Kesinlikle haklısın; Klüp için kendi başıma bir taş-mastır master planı formüle etmek ve uygulamak zorunda değilim. Yine de, kulübün geri kalanıyla görüşmek üzere kulüp etkinlikleri ve toplantıları için fikirlere ihtiyacım var.
Evan Kroske

5

Kulübünüzdeki herkes gönüllü olarak geldiğinden, ilginç ve motive edici hale getirmeniz gerekir. Ve ödev tam olarak motive edici değil.

Kimseyi öğretmek zordur, ama niye sonunda bir amaç ile ellerinizi bir şekilde öğretmeye çalışmıyorsunuz? Temelde önce herkesi bir araya getirir ve bir grup projesi ve bir dil bulursunuz. Projenin ilginç olması ve görünür ilerleme göstermesi gerekiyor, ancak çok zor değil. Dili çivilediğinizde, onlara temel bilgileri (sözdizimi, paketler / ad alanları, sınıflar, statik / dinamik yazım vb.) Öğretirsiniz. Daha sonra onlara kaynaklar (kitaplar, çevrimiçi öğreticiler, çevrimiçi belgeler), sizi ele geçirmenin kolay bir yolunu ve üzerinde çalışılacak projenin belirli bir bölümünü verirsiniz. Daha sonra her kişi boş zamanlarında proje üzerinde çalışır, dokümantasyona ve size gerektiği gibi danışır.

Bu sürecin avantajı nedir?

  • İnsanlar sizi dinlemekten sıkılmıyor ya da bir başkası her toplantıda bir şey hakkında iniyor
  • İnsanlar kendi kendine öğretmeyi öğrenir, çok önemli bir gerçek dünya becerisi
  • Tek bilgi kaynağı olmadığın için kendini fazla taahhüt etmiyorsun
  • Öğretebilmeniz için önce tüm dili bilmek zorunda değilsiniz, çünkü onları sadece dile tanıtmanız gerekir. Ve size bir şey sormaları gerektiğinde, hızlı bir şekilde araştırabilirsiniz. Bununla birlikte, diğer herkesin biraz önünde olmanız gerekir, çünkü bazı şeyler 5 adım önde ne olduğunu bilmeyi gerektirir
  • İnsanları motive eden bir şey yaratıyorsunuz

Çalışıp çalışmadığını görmenin tek yolu denemektir.


Kulüp üyeliğini on öğrencinin altında tutabilseydim, bir grup projesi iyi bir fikir olurdu. Bunun ötesinde, takımlar hantal olmaya başlar. Ancak, öğrencilerin kulübe katılmasını engellemek için üniversite desteği alamıyorum ve 10'dan fazla öğrencinin kulübe katılmakla ilgileneceğinden eminim. Bilgisayar korsanlığı kulübümüzün haftalık toplantılarında otuzdan fazla öğrencisi vardır.
Evan Kroske

1
Birden fazla proje mi? Tüm grup üyeleri arasında ortak çıkarlar bulmaya çalışın. İlk toplantı kişisel ilgi alanlarını araştırır ve sonra bu projeler etrafında dönen projeler bulmaya çalışır mı?
Chris

4

Ana dalınız için ders akış şemasına bakarak, bir Bilgisayar Bilimi ana dalının farklı sınıflarında ne bekleyeceğinizi gerçekten yanlış anlıyorsunuz.

Bahsettiğiniz sınıflar, öğrencileri kodlamadaki çeşitli temel kavramlara tanıtan giriş sınıflarıdır. "Programlama Kavramları", gerçek bir kodlama olmaksızın, bilgisayar biliminin tüm temel alanlarının 1 haftalık gözden geçirilmesiyle mesleğe giriş niteliğinde. Oradan 's NORMAL C tanıtıcı bir ders var ve C ++ başka giriş dersidir NORMAL Bilgisayar Bilimleri majör için. Sen bazı kodlama deneyimi olan programa alınıyor olabilir, ancak çoğu insanlar değildir. Program öğretmek zorundaözyineleme ve sınıfların nasıl yazılacağı ve operatör aşırı yüklenmesi gibi kavramlar ve tüm bu şeyler (değişkenler, döngüler için, if-ifadeleri vb. hakkında öğretmekten bahsetmemek için), bu nedenle size bazı programlama dillerinde kod yazmayı öğretir. Ve genellikle üniversitenizin sınıflarının yaptığı yanıltıcı isimler vardır. İstediğiniz organizasyon düzeyini öğreten sınıflara genellikle "Yazılım Mühendisliği" veya "Tasarım Desenleri" adı verilir. Birincisi tipik olarak bir gereksinimdir ve ikincisi tipik olarak bir seçmeli (belki de lisansüstü düzeyde), ancak her ikisi de seçmeli olabilir.

Bilgisayar Bilimleri müfredatının yazılım organizasyonuna olması gerektiği kadar odaklanıp odaklanmadığı, ana dalın yeniden düzenlenmesi gerekip gerekmediği ve Bilgisayar Bilimi ve Yazılım Mühendisliği'nin farklı ana dallar olup olmadığı konusunda akademik ve endüstri tartışmaları var, ancak şimdilik Bilgisayar Bilimi programınız NORMAL .

(Ve orada durun - bir iki dönem içinde, daha önce kendinize öğretmediğiniz şeyleri öğreten daha zorlu sınıflara ulaşacaksınız .)


"Normal" ten memnun değilim. Yazılım geliştirme alanında birinci sınıf bir eğitim alan bir kolejden ayrılmak istiyorum ve bunu başarmak için çok çalışmak istiyorum. USF yerine MIT'e geçmeyi planlamıştım, bu yüzden MIT'nin Bilgisayar Bilimi ve Mühendisliği programını ideal CS eğitimim olarak kullanıyorum.
Evan Kroske

@Evan @Ken heh. Sonra kolejim normal sayılmazdı. Bilgisayar Uygulamalarına Giriş (yani, Word'ü nasıl kullanıyorsunuz) -> Bilgisayar Mantık ve Algoritmaları (yani akış şeması ve boolean mantık. Aslında algoritma yok) -> C ++ ile Programlama (sözdizimi, OOP, temel bilgiler) -> Gelişmiş C ++ 'da Programlama (algoritmalar, özyineleme, işaretçiler) -> Java'da Programlama (temel C ++ ile aynı şey) ->
Cobol'da

1

Programlama yarışmalarına ne dersiniz? Perl Golf (veya PHP Golf) gibi bir şey bile, insanların (veya ekiplerin) mümkün olan en az kod kullanarak bir sorunu çözmek için çalıştığı bir yer mi? Diller ve yarışmalar hakkında daha fazla bilgi edinmenin harika bir yoludur.

Tabii ki sadece yarışmalardan daha fazlasını sunmalısınız, ancak kurulumu oldukça kolaydır ve her zaman onlardan keyif aldım.


1

Bazı yapılara ihtiyacınız olduğu konusunda haklısınız; kendinizi ve diğerlerini öğrenmeye zorlamak istiyorsunuz ve sadece berbat ders seçimi hakkında yazılım / sürtükle uğraşmak değil. Ama bunu öğretmeni olarak gitmek için bir yol olduğu için bunu sizinle bir sınıf olarak görmekten emin değilim; henüz bir uzman değilsiniz ve bir şeyler öğrenmek için de bunun içindesiniz.

Kulübün yazılım projeleri etrafında düzenlenmesine ne dersiniz? Bazı oyuncak ödev programları değil, aslında yararlı bulabileceğinizi düşündüğünüz bir şey. ("Marjinal olarak yararlı" nın hala "yararlı" olarak nitelendirildiğini unutmayın; yaparak öğrenmeye çalışıyorsunuz, bir başlangıç ​​bulamıyorsunuz. :-)) Kulüpte birden fazla takım için yeterli kişi varsa, birden fazla takım oluşturun. Takım hangi dili kullanmak istediğine, teknik özelliklerin ne olduğuna, emeğin nasıl bölüneceğine, vb. Karar verir ve kendi zamanlarında bireysel olarak çalışır. Daha sonra haftalık kulüp toplantınızda yüz yüze nasıl gittiğini, birlikte gösterimlerin nerede olduğunu, öğrendiğiniz temiz şeyleri vb. Tartışıyorsunuz.

Ayrıca siz veya başka birinin paylaşmaya değer olduğunu düşündüğü öğretim üyeleri, profesyoneller veya videolar olsun, konuk öğretim görevlileri getirme fikrini de çok seviyorum. Böylece, böyle bir gece toplantısı düzenleyebilirsiniz:

  1. İyi bilen birinden bazı yazılım konularına konuk dersi.
  2. Konferansta soru-cevap / gab oturumu (umarım öğretim üyesi katılır, ancak videolar için kendiniz arasındadır).
  3. Proje ekiplerine bölün, proje işleri yapın.

Bu bir akşam sürecek ve bilgi geliştirici iyilikle dolu olacak. İnşallah.

Ne olursa olsun, bu projede size şans diliyorum. Onu yerden kaldırdığınızda, umarım buraya geri dönersiniz ve nasıl çalıştığını bize söylersiniz.


1

Grup projesi harika bir fikir. Özellikle proje üniversiteye veya sınıf arkadaşlarınıza yardımcı olabilecek bir şeyse.

Üniversitedeyken öğrenciler için projeler üzerinde çalışan bir gruba katıldım.
En popüler proje kampüsün 360 derece sanal turuydu.
Gerekli ekipmanı satın aldık ve kampüs çevresinde fotoğraf çekmeye başladık. Daha sonra turu düzenlemek için bir web sitesi oluşturduk, barındırma hizmetini anladık ve üniversitenin web sitesinde potansiyel öğrenciler için öne çıktık. Bu proje sadece programlama görevlerinden daha fazlasına yayıldı ve programcı olmayanların da ilgisini çekti.

Yalnızca sizin değil, kampüsteki herkesin kullanmak isteyeceği yeni bir web sitesi veya uygulama belirlemeyi deneyin. Aklınızda bir hedefiniz varsa öğrenmek daha kolay ve eğlenceli.


Bu fikri gerçekten çok seviyorum; Yeni kulübümün kolejin BT sistemlerine ekleyebileceği veya geliştirebileceği birçok yol var. Meraktan, üniversiteye nereye gittin?
Evan Kroske

PA Clarion Üniversitesi. Hatta bir keresinde röportajcının oğlunun kolej araması için turu kullandığından bahsettiği bir röportaja gittim. Çok havalıydı.
Todd Bumbarger

1

Eğer bu ders müfredat dışı bir etkinlik olacaksa, ev ödevi yapmayın. Bu sadece topal.

Muhtemelen sadece bir github grubu kurarak ve okulunuzda poster / e-posta göndererek harika bir şey elde edebilirsiniz (sanırım çocuklar bugünlerde Facebook ve Twitter kullanıyorlar mı? Bu puanlara ulaşmak için iyi bir fikir olabilir). Birlikte gerçekten ilgilenen 5-6 kişilik bir grup aldığınızda, bir projeye karar verin ve sadece üzerinde çalışın.

Herhangi bir ilgi yoksa, makul yetenekli iseniz açık kaynaklı bir projeye katılmak oldukça gülünç kolaydır. Github'da ilgilendiğiniz bir şeyi çatallamak ve geliştiricilerle konuşmaya başlamak kadar basit.

Önceki neslin sahip olmama avantajı, coğrafi olarak çok farklı olsa da, seviyenizdeki ve dilinizdeki programcılara bağlanmak hiç de zor değil. Ve sadece bir e-posta göndermek istemiyorum. Skype / iChat / Ventrilo sesli konferansları kolaylaştırır, git / mercurial (ve ilgili proje sayfaları çevrimiçi) gibi araçlar, atlantiklerin karşı tarafında olsanız bile grup olarak kodlamayı kolaylaştırır. Bu günlerde sosyal olarak kodlamamak için hiçbir neden yok, eğer yapmak istediğiniz buysa.

Son olarak, insanları bildikleri / bilmek istedikleri dillere göre yargılama alışkanlığı edinmeyin. C ++ 'ın programlama sınırını temsil ettiğini düşünen bir insan sürüsünde tek Smalltalker olduğunuzda düşmek kolay bir tuzaktır, ancak size çok fazla arkadaş getirmeyecektir ve belirli araçlara karşı bir önyargı verecektir. Aynı projede LISP, Perl ve C'yi kullanmış, yetenek ve tecrübe konusunda önümde mil olan hackerlarla tanıştım . Profesyonel geliştirici yığınının en üstündeki insanlar, işlerini yaptıkları sürece araçlarının hangi seviyede olduğunu umursama eğilimindedirler.


1

Bu bir ağ oluşturma fırsatı gibi görünüyor, eminim benzer bir deneyim / eğitim seviyesiyle programlama yapmak isteyen birkaç öğrenci var ... sadece onları bulamıyorsunuz ...

Tampa Bay bölgesindeki Kod Kamplarından birine (ücretsiz geliştirici ile ilgili eğitim) katıldınız mı veya yerel programlama kullanıcı gruplarından birine katıldınız mı?

Bu kaynakların her ikisi de size ağ oluşturma fırsatları sağlayacaktır. Ve arkadaşlarınızı eğitmek zorunda hissetmek yerine, arkadaşlarınızı sizinle birlikte davet edebilecek ve neleri kapsadığını tartışabileceksiniz.

Ayrıca, kariyer olarak programlama yapan ve "gerçek dünyada" ne tür durumlarla karşılaşacağınız hakkında bir fikir edinebileceğiniz kişilere de erişebilirsiniz.

Bu yerel kaynakları keşfettikten sonra, yine de kendi sunumlarınızı yaparak bilginizi paylaşma fırsatlarınız olduğunu görebilirsiniz. Bir kullanıcı grubuyla veya bir kod kampı sunumunun konuşmacısı olarak öğrendiklerinizi paylaşmak, öğrendikleriniz hakkında geri bildirim almanın iyi bir yoludur ve sizi daha fazla öğrenmeye açar.

Tampa Bay bölgesinde büyüdüm ve birçok ücretsiz Microsoft sponsorlu etkinliğe katıldım, yerel kullanıcı grubunuz da bu etkinliklere nasıl katılacağınız konusunda bilgi sahibi olmalıdır.

Bu uzun soluklu bir cevaptı ...

Tampa'daki bir sonraki Kod Kampı, tampacodecamp web sitesine göre 13 Kasım 2010'da.

Yerel INETA / programlama kullanıcı grubunuza bir bağlantı:

http://www.tampadev.org/

(Bu grupta yeniyim ve yalnızca bir bağlantı ekleyebildim.)


1

Grubunuzun katkıda bulunmak istediği açık kaynaklı bir proje (veya birden fazla) bulmaya ne dersiniz?

Karşılaşabileceğiniz en büyük zorluk, kod yazma eğlenceli olsa da, hızlı bir şekilde acı verici bir deneyime dönüştürebilen tüm çevre yöneticileri vb. Mevcut bir açık kaynaklı proje bulabilirseniz, en azından destek çerçevesinin bir kısmını hazır bulundurmanız gerekir.

Açık kaynak sizi iyi alışkanlıklara götürecek ve bazı katılımcılara kıyasla kulakların arkasında biraz ıslak olmanıza rağmen, diğer insanlara göre büyük bir avantajınız olacak - hepsi aynı konumda olacak ve normalde açık kaynak topluluk çalışmasıyla en büyük acılardan biri olan ekip üyelerinizle görüşmeler yapın ...

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.