20 yıldan fazla bir süredir programlama yapıyorum. Bu süre zarfında, çok şey öğrendiğim birçok insanla çalışmaktan zevk aldım. Ayrıca, üniversiteden yeni gelen ve birlikte öğretmen veya akıl hocası rolünü üstlenmek zorunda kaldığım birçok öğrenciyle çalıştım.
Son zamanlarda, tamamen yeni başlayanlara kodlamayı öğreten bir programa eğitmen olarak dahil oldum.
Nasıl programlanacağını öğrenmek zordur. Genellikle üniversite kurslarının ve eğitim kamplarının programlamanın önemli yönlerini gözden kaçırdığını ve çaylaklara öğretmek için kötü yaklaşımlar sergilediğini görüyorum.
Başarılı bir programlama kursunun üzerine inşa edilmesi gerektiğine inandığım beş temel sütunu paylaşmak istiyorum. Her zaman olduğu gibi, genel web uygulamaları bağlamına değiniyorum.
Bir çaylağın amacı, programlamanın temellerini öğrenmek ve kütüphanelerin ve çerçevelerin önemini anlamaktır.
Bulut, genel olarak işlemler veya derleme araçları gibi ileri düzey konular müfredatın bir parçası olmamalıdır. Tasarım Kalıpları konusunda da şüpheliyim. Yeni başlayanların asla sahip olmadığı deneyimleri varsayarlar.
Şimdi yeni programcıların nereden başlaması gerektiğine bakalım.
İçindekiler
Test Odaklı Geliştirme (TDD)
TDD birçok fayda sağlar . Ne yazık ki, yeni başlayanların tamamen hazır olmadığı ileri bir konu.
Yeni başlayanlar test yazmamalıdır. Bu, temel beceri seviyeleri için çok fazla olacaktır. Bunun yerine testleri nasıl kullanacaklarını ve bunlarla nasıl çalışacaklarını öğrenmeleri gerekir.
Her programlama kursu alıştırmalar etrafında odaklanmalıdır. Alıştırmalarımı ünite testleri ile genişletiyorum ve öğrencilere bu testleri yürütmek için zaten ayarlanmış bir ortam sağlıyorum.
Öğrencilerin tek yapması gereken, kodlarını yazmak ve ardından test görevlisinin ışıklarının kırmızıdan yeşile dönmesini izlemektir. Ortaya çıkan oyunlaştırma güzel bir yan etkidir.
Örneğin: Seçilen teknoloji Bahar ise, bir Bahar projesindeki alıştırmaları ve testleri sunuyorum. Öğrencilerin Bahar hakkında hiçbir şey bilmelerine gerek yok. Bilmeleri gereken tek şey, egzersizlerin yeri ve testleri tetikleyen düğme.
Ek olarak, öğrenciler bir hata ayıklayıcıyı nasıl kullanacaklarını bilmeli ve hazırda bir Oku-Değerlendir-Yazdır Döngüsü (REPL) bulundurmalıdır. Çalışma süresi sırasında kodu analiz etme ve küçük deneyler için bir oyun alanına sahip olma yeteneği TDD’de çok önemlidir.
Ana nokta, öğrencilerin temel programlama becerilerini edindikten sonra temel TDD davranışlarını öğrenmek zorunda kalmamalarını sağlamaktır. Öğrencilerin kariyerinde daha sonra alışkanlıkları değiştirmek, bu alışkanlıkları şimdi öğrenmekten çok daha zor olacaktır. Bu yüzden baştan yaşam ve ünite testleri nefes almalıdır.
Meslek hayatlarının ilerleyen dönemlerinde, birim testleri olmayan projelere karşı bir antipatiye sahip olmaları gerekir. Birim testlerinin yokluğunu sezgisel olarak anti-model olarak görmelidirler.
Önce Temel Bilgiler
Çaylakların hemen bir çerçeve ile başlaması gerektiğini çok sık duyuyorum. Bu, insanlara bir ralli arabasına yerleştirerek ve aşırı dümenlemekten kaçınmalarını isteyerek nasıl sürüleceğini öğretmek gibidir. Bu basitçe, freni hala gaz kelebeği ile karıştırdıklarını görmezden geliyor.
Aynısı, Angular gibi bir çerçeve ile öğrencilere başladığımızda da geçerlidir. Yeni başlayanlar önce programlamanın temellerini anlamalıdır. Başkasınınkini kullanmadan önce temel öğelere ve kod yazmanın ne anlama geldiğine aşina olmaları gerekir.
“Bir fonksiyon, bir değişken, bir koşul ve bir döngü kavramı acemilere tamamen yabancıdır. Bu dört unsur, programlamanın temellerini oluşturur. Bir programın yapıldığı her şey onlara bağlıdır.”
Öğrenciler bu kavramları ilk kez duyuyorlar, ancak öğrencilerin bu kavramlarda uzmanlaşması büyük önem taşıyor. Öğrenciler temellere hakim olmazlarsa, sonraki her şey sihir gibi görünür ve kafa karışıklığına ve hayal kırıklığına yol açar.
Öğretmenler bu temellere daha fazla zaman ayırmalıdır . Ama ne yazık ki çoğu çok hızlı ilerliyor. Sorun şu ki, bazı öğretmenler kendilerini öğrenci rolüne sokmakta zorlanıyor. Yıllardır programlama yapıyorlar ve yeni başlayanların ne tür sorunlarla uğraşması gerektiğini unutmuşlar. Profesyonel bir ralli sürücüsüne oldukça benziyor. Fren yapmadan önce birinin düşünmesi gerektiğini hayal bile edemez. Bunu otomatik olarak yapıyor.
Alıştırmalarımı, dört ana öğenin bir kombinasyonunu kullanarak makul bir sürede zorlayıcı ancak çözülebilir olacak şekilde tasarlıyorum.
İyi bir örnek, Roma ve Arap sayıları için bir dönüştürücüdür. Bu meydan okuma öğrencilerin sabırlı olmasını gerektirir. Zorluğu çözmek için dört unsuru başarıyla uyguladıklarında, motivasyonda da büyük bir artış elde ederler.
Temel bilgiler önemlidir. Onlar yerleşene kadar hareket etmeyin.
Kitaplıklar ve Çerçeveler
Öğrenciler kodlamaya çok zaman harcadıktan sonra, kodların çoğunun bir kütüphane veya çerçeve biçiminde zaten var olduğunu öğrenmeleri gerekir. Bu bir kalıptan çok bir zihniyet.
Daha önce yazdığım gibi : Modern geliştiriciler doğru kitaplığı bilir ve seçerler. Kendi başlarına buggy versiyonunu yazmak için saatler harcamıyorlar.
Bu zihniyet geçişini başarılı kılmak için, “temeller aşamasından” örnekler Moment.js, Jackson, Lodash veya Apache Commons gibi iyi bilinen kütüphaneler kullanılarak çözülebilir olmalıdır.
Bu şekilde öğrenciler, kütüphanelerin değerini hemen anlayacaklardır. Kafalarını bu karmaşık problemlerin etrafında kırdılar. Şimdi bir kütüphanenin alıştırmayı kısa sürede çözdüğünü keşfediyorlar.
TDD’ye benzer şekilde, öğrenciler, meslektaşları Redux’u gereksiz kılan kendi yaptıkları devlet yönetimi kitaplığı hakkında övündüklerinde şüphelenmelidir.
Çerçeveler söz konusu olduğunda, öğrenciler kütüphanelerin yararlılığını anladıklarında önemi anlamada hiçbir problem yaşamayacaklar.
Kursun zaman dilimine bağlı olarak, çerçevelere zaman ayırmak zor olabilir. Ancak daha önce de belirttiğim gibi, en önemli husus öğrencinin zihniyetini her şeyi sıfırdan programlamaktan kitaplıkları keşfetmeye ve kullanmaya kaydırmaktır.
Bu sütuna araçlar eklemedim, çünkü bunlar yalnızca deneyimli geliştiriciler tarafından kullanılıyor. Bu erken aşamada, öğrencilerin araçları nasıl entegre edeceklerini ve yapılandıracaklarını öğrenmelerine gerek yoktur.
Usta ve Çırak
20’li yaşlarımın başında piyano çalmayı öğrenmek istiyordum. Bir öğretmen istemedim ve kendi kendime öğrenebileceğimi düşündüm. Beş yıl sonra profesyonel bir öğretmene danıştım. Peki ne diyebilirim? 1 ayda, beş yıl öncesine göre daha fazlasını öğrendim.
Piyano öğretmenim çalmamdaki duyamadığım hataları işaret etti ve beni asla hayal edemeyeceğim yorumlama şeylerinin farkına varmasını sağladı. Ne de olsa, bana müzik ve sanat zihniyetini aşıladı, her ikisi de teknik bir kişi olarak benim için ulaşılmazdı.
Programlamada da aynıdır. Birinin programlama konusunda deneyimi yoksa, kendi kendine çalışmak kötü bir fikir olabilir. Pek çok başarı öyküsü olmasına rağmen, bunu tek başına yapmanın verimliliğini sorguluyorum.
Bunun yerine bir “usta ve çırak” ilişkisi olmalıdır. Başlangıçta usta çırağın uyması gereken kuralları verir – körü körüne! Usta kuralları açıklayabilir, ancak genellikle akıl yürütme çırağın anlayışının dışındadır.
Bu içselleştirilmiş kurallar bir tür güvenlik ağı oluşturur. Biri kaybolursa, her zaman geri dönecek güvenli bir zemin vardır.
Öğretim bir monolog olmamalıdır. Master, her öğrenciyle bireysel olarak ilgilenmek zorundadır. Öğrencilerin nasıl çalıştığını kontrol etmeli, tavsiyelerde bulunmalı ve kursun hızını ilerlemelerine göre ayarlamalıdır.
Çıraklar belli bir ustalık düzeyine ulaştığında, yeni bölgeleri keşfetmeye teşvik edilmelidirler. Usta, “bilgeliği” paylaşan ve tartışmaya açık bir akıl hocasına dönüşür.
Meydan Okuma ve Motivasyon
“Bir Facebook klonu oluşturalım!” Bu, bir grup kıdemli yazılım geliştiricisi ve multi-milyon euro bütçesi tarafından desteklenen bir CEO’dan gelmiyor. Programcılar için bir giriş dersinden bir alıştırmadır. Böyle bir girişim neredeyse imkansızdır. Daha da kötüsü, öğrenciler harikalar diyarına atılır ve gerçekten ulaşamayacakları becerilere sahip olduklarına inanmaya başlarlar.
Hiç şüphe yok ki öğretmen bunun farkındadır, ancak motivasyonel nedenlerle bu tür alıştırmalar yaratır.
Bir egzersizin temel amacı eğlendirmek değildir. Belirli bir teknik etrafında oluşturulmalı ve öğrencilerin bu tekniği anlamalarına yardımcı olmalıdır.
Motivasyon iyidir, ancak içerikten fedakarlık etmek için değil. Programlama kolay değil. Öğrencilerin içsel bir motivasyonları yoksa, kodlama yapılması gereken yol olmayabilir.
Yeni başlayanlar, profesyonel bir geliştirici olmanın ne anlama geldiğini deneyimlemelidir. Saatlerce yatırım yapmadan önce onları neyin beklediğini bilmeliler.
Örneğin, birçok iş uygulaması karmaşık formlar ve ızgaralar etrafında toplanır. Bunları yaratmak, egzersizlerin verebileceği önemli bir beceridir. Facebook’a benzer bir uygulama geliştirmek, öğrencilerin hemen öğrenmesi için en iyi ders olmayabilir.
Benzer şekilde, programcı olmayan biri, bir geliştiricinin günde ne kadar az kod satırı yazdığına şaşırabilir. Kodu kaldırdığımız veya hiçbir şey elde edemediğimiz zamanlar bile vardır.
Neden? Çünkü işler her zaman ters gider. Basit bir yazım hatası olduğu ortaya çıkan son derece garip bazı hataları düzeltmek için sonsuz saatler harcıyoruz. Bir kitaplık küçük bir sürüm yükseltmesine sahip olduğu için bazı araçlar çalışmıyor olabilir. Ya da birisi git’e dosya eklemeyi unuttuğu için sistem çöküyor. Liste uzayıp gidebilir.
Öğrenciler bu deneyimlerden keyif almalıdır. Zaman baskısı altında bilinmeyen bir kütüphaneyi hedefleyen bir egzersiz tam olarak doğru şey olabilir.
Güneş gerçek hayatta her zaman parlamaz. Yeni başlayanlar, programlama gerçekliğine hazırlıklı olmalıdır.
Son Tavsiye
Son fakat en az değil: İki hafta, iki ay ve hatta bir yılda profesyonel programcı olamaz. Zaman ve sabır gerektirir.
Eğitmenler acele etmemeli veya yanlış sözler vermemelidir. Öğrencilerin kavramları anlayıp anlamadıklarına ve çok hızlı ilerlememelerine odaklanmalıdırlar.
Dilerseniz Bir Sonraki Blog Sayfamıza Göz Atabilirsiniz..
Görüşmek Üzere Hoşçakalın Webodasıyla Kalın…
Hata!
Yorumunuz Çok Kısa, Yorum yapabilmek için en az En az 10 karakter gerekli