Küçük programcılar bugünün (karmaşık) web ortamı için nasıl eğitilir?


39

Şu anda şirketimiz, çoğu zaman Ruby'de Rails web sunucularında ve Java'daki kiosk sistemlerinden C / C ++'daki gömülü cihazlara (standart web tarayıcıları için arabirimlerin yanı sıra) çeşitli REST istemcilerinden oluşan uygulamalar geliştiriyor. Ekibimizi genişletmeliyiz ve iyi kıdemli programlar bulmakta başarısız olduklarında, şirketle birlikte büyüyecek olan genç programcıları eğitmek için biraz çaba sarf etmeye karar verdik.

Onlara zaten bazı Ruby ve Rails kitapları verdik ve bazı oyuncak programları oluşturmalarını istedik, ancak şimdi web programlamanın şu anki durumu için öğrenme eğrisinin ne kadar dik olduğunun farkındayım.

15 yıl önce programlamaya başladığımda sadece Delphi ve Source Safe kullandım ve en başından itibaren kullanılabilir yazılımlar üretebildim. Her ikisi de basit araçlardı ve çevrenin iç işlerine dalmak kolaydı. Yavaş yavaş üçüncü parti çerçeveleri kullanmaya başladım, CVS, SVN ve sonunda Git’e geçtim, Git, bugünün ağını oluşturan, HTTP, JavaScript, CSS, REST vb. Parçaları öğrendim. Bugün, yılların deneyiminden sonra bile bilmiyorum Ruby on Rails'in geçmişte Delphi hakkında yaptığım gibi içinde nasıl çalıştığı ve benim için önemli olan bu yüzden temel öğrenme bloklarını kullandığım araçlara bağlayabildim.

Bana göre işe aldığım programcıların ekiple bütünleşmesi ve kullanışlı bir şeyler üretmesi uzun zaman alacak çünkü tek bir çerçeveyi kullanmayı öğrenecek çok şey var (Rails): Ruby, HTML, CSS, JavaScript, REST, test durumları, veritabanına erişim (SQL'in çerçeve içinde sihirli bir şekilde oluşturulmuş!), MVC, üç farklı paket yöneticisi (Ubuntu için uygun, Ruby için mücevher ve paketleyici), ssh, git, Apache ve dağıtmak için Phusion Yolcu, vb.

Doğrudan genç programcılar ile başa çıkmak zorunda olduğum için kaybolduğumu hissediyorum. Genç programcıları, bugünün en iyi uygulamalarında web geliştirme konusunda eğitmek için en iyi yol nedir?


8
Son paragraftan ikinciye, son 15 yılda meydana gelen önemli bir değişikliği fark etmemiş olabilirsiniz gibi geliyor: Generalist programcılar neredeyse tamamen gitti . Bahsettiğiniz tüm ayrıntıları bilmesi için, 15 yıldır sektörde olması gerekirdi. Çok yakından listelediğiniz şeylerden birini veya ikisini tanıyan uzmanları bulma / eğitme ve ihtiyacınız olan çeşitli uzmanlardan bir takım oluşturma ( sonra çaprazlama) konusunda daha iyi sonuçlar elde edebilirsiniz . Alternatif olarak, kendiniz gibi 15 yıllık deneyime sahip kıdemli mühendisler bulun, ancak bu kolay bir iş değildir.
Jimmy Hoffa,

Sadece FYI, dik bir öğrenme eğrisi gerçekten hızlı bir şeyler öğrendiğiniz anlamına gelir. Yanlış kullanıldığında bazı insanların kafasını karıştırır :)
Alternatex

Ben her zaman "zor" anlamına gelen ifadeyi kullandım (İngilizce
anadilim

Yanıtlar:


39

Pek çok insan bu fikri beğenmeyecek, ancak bunu yapabildiğim her yerde savunuyorum: programlama dili ve ortamı ne olursa olsun, herhangi bir deneyimi yoksa ve müşterilerin gerçek dünyadaki hata raporlarından çıkan bakım görevleri varsa Sizinkinden, zamanlarında en az% 30-40 (+) oranında bu tür bir göreve atandıklarından emin olun. “İşte hata raporu, bir göz atın, çözün. Bunların ne olduğunu bilmiyorsanız, deneyimli meslektaşlarınızla iletişim kurun, google, her neyse”. Gerçek problemlerde gerçek iş, hayıroyuncaklar, en azından: sadece oyuncaklar değil. Çok fazla tecrübesi olan birinin, piyasaya sürülmeden ve müşteriye sevk edilmeden önce ne yaptıklarına bir göz attığından emin olun. Yeni meslektaşınızın meslektaşlardan ve müşterilerden yaptıkları hakkında dürüst geri bildirim aldığından emin olun. Aşırı yüklenmemek için bu görevleri dikkatlice seçin, ancak bir gün işlerini bağımsız yapmalarını istediğinizi unutmayın.

Hata düzeltme yapmak, işin gerçekten yürütülen ve bazı alaka düzeyine sahip kod üzerinde çalışmasına izin veren (başka bir hata raporu olmaz) olan ve bunları yapmamaları konusunda pek çok örnekte gösterecektir.

Odak otomatik olarak ağrı noktalarına yerleştirilir. Gerçekten sorun çıkartan bu detayları öğrenmeye başlayacaklar. Ayrıca en başından itibaren omuzlarına gerçek bir sorumluluk yükler; bu (eğer bakımları gerçekten çekici olmasa da) müşteri / son kullanıcının memnuniyetini yerine getirirse motive edici olabilir. Yaptıklarını araştırmak, yaşlılar tarafından daha ciddiye alınacak, çünkü işler ters giderse etkilerini biliyorlar ve bu şekilde de takımla bütünleşmeyi kolaylaştıracak, çünkü onların da birbirleriyle otomatik olarak konuşmasını sağlayacak.

Önemli olan, onları ilk andan itibaren üretken kılmak değildir (göründüğü gibi). Önemli olan, ilk andan itibaren değerli bir şey yapmaları gerektiğini bilmelerini sağlamak ve aslında bir liste oluşturmaya gerek kalmadan en çok neyin önemli olduğuna odaklanmak.

Her gün ve sonrasında doğrudan üniversiteden yeni geliştirici işine gelen insanlarla çalışma konusunda uzun yıllara dayanan deneyime sahibim ve görmem gereken en kötü sonuçlar genellikle bakım konusunda en az bir tecrübeye sahip olmayan birinin yeni uygulama geliştirme yapması istendiğinde oldu . Sadece her zaman kaybolmuş hissederse destek isteyebilecekleri birileri olduğundan emin olun.


Ben de aynı şeyi yapıyorum. İyi cevap.
Rocklan

Kariyerimin ilk yılındaki kusurlarımı tamir etmeye başladım. Ben diğer projeler geçti, ben biliyordum çünkü hata düzeltme bunda çok daha iyi bana yapılan hissediyorum değil yapmak.
Brandon

8

Her şeyden önce, aslında yetkili olan genç programcıları işe aldığınızı varsayalım. Bu mutlaka güvenli bir varsayım değildir, çünkü özellikle "benden daha az deneyimli biri" ile röportaj yapan üst düzey programcıların temel yetersizlikleri görmezden gelmeleri muhtemeldir.

Ancak, yetkin olduklarını varsayarsak, ilk adım onları bir sınıfa göndermek. Bir haftalık bir ders size 2.000 - 3.000 ABD Doları (ABD) tutarındadır. Bununla birlikte, materyali (umarız) anlayan bir eğitmen ve onları hızlandırmak için tasarlanmış bir ders planı ile onlara uygulamalı deneyim verecektir. Birini bir kitapla gönderme ve "bunu öğrenme" yönergesi değerli bir yere yakın olmayacak ve daha pahalıya mal olacak (sınıfın maliyeti, boşa harcanan bir programcı haftasına eşit).

Temel bilgilere sahip olduktan sonra, onlarla çalışın. Bitişik bir masada oturun ve işinizi ve bir şeyleri yapma şeklinizi anladığından emin olmak için zamanınızın en az yarısından vazgeçin. Evet, en azından başlangıçta verimliliğinizi düşürecek, ancak uzun vadede ekibinizi bir bütün olarak daha üretken kılacak. Ve eğer yine, maliyetler hakkında düşünürseniz, eğer bir çocuk yanlış bir şey yaparak bir ayını boşa harcarsa, bu muhtemelen maaşınızın yarısına eşit olacaktır.


4

Onlardan yapmalarını istediğiniz oyuncak uygulamaları bazı temel CRUD işlevlerini yerine getirmeli ve her geliştirici kendi kodunu yazmalıdır. Ancak uygulamayı kod incelemelerinde tartışabilir ve ipuçları sunabilirsiniz. Herhangi bir makul verimlilik beklentisi varsa, önce bir MVC uygulamasının genel yapısını anlamaları gerekecektir.

Oradan, her geliştiricinin Javascript, CSS, DAL'ler, şablon üreticileri, yönlendirme ve benzeri gibi ilgili konulara kendi başlarına vurabilmesi gerekir. Onlara hangi konuların çalışılacağına dair rehberlik verebilir (şirketinizin en acil ihtiyaçlarına dayanabilir), onlara rehberlik edebilir ve ilerlemelerini izleyebilirsiniz. Gerekli becerileri bir an önce gösterdikleri anda, geliştiricileri tek tek, gerçek gelişim çabanızı ileriye taşıyacak işlevsellik üreten basit projelere taşıyın.

Deneyimli geliştiricilerinizden bazılarını bir tür mentorluk programı olarak bir çırakla eşleştirebilirsiniz. Genç geliştiriciler için rehberlerini ne zaman arayabileceklerini ve ne kadar süreyle ne zaman arayabileceklerini bilmeleri için kılavuzlar olmalıdır. Akıl hocaları, gerçek kod yazmaya başladıklarında çalışmalarını denetleyebilirler.

Çok akıllı, entelektüel meraklı ve kendi kendine başlayan gençleri bulabilirseniz daha iyi bir zamana sahip olacaksınız. Bu süreç çalışmasını gördüm; Bu benim önceki işverenimin yaklaşımıydı, çünkü uzmanlar için büyük paralar ödemek istemiyordu, çünkü daha çok "batmak ya da yüzmek" gibi bir şeydi (bunun gibi resmi bir eğitim programı yoktu). En büyük zorluğu, yatırımlarını telafi edecek kadar uzun kalmalarını sağlamaktı; her zaman başka bir yerde daha iyi ödemenin cazibesi vardı.

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.