Bilgisayar Bilimleri Eğitiminden En İyi Şekilde Nasıl Faydalanılır?

Modern programcıların çoğu eğitimlerini üniversitelerde aldı. Zamanla bu değişecek ama artık durum öyle ki bilişim şirketlerindeki iyi personel hâlâ üniversitelerden geliyor. Bu yazıda Acronis Üniversite İlişkileri Direktörü Stanislav Protasov, geleceğin programcıları için üniversite eğitiminin özelliklerine ilişkin vizyonundan bahsediyor. Öğretmenler, öğrenciler ve onları işe alanlar, kesintinin altında bazı yararlı ipuçları bile bulabilirler.

Bilgisayar Bilimleri Eğitiminden En İyi Şekilde Nasıl Faydalanılır?

Son 10 yıldır çeşitli üniversitelerde matematik, algoritmalar, programlama dilleri ve makine öğrenimi dersleri veriyorum. Bugün Acronis'teki görevimin yanı sıra MIPT'de teorik ve uygulamalı bilgisayar bilimleri bölümünün başkan yardımcısıyım. İyi Rus (ve sadece) üniversitelerinde çalışma deneyimime dayanarak, öğrencilerin bilgisayar disiplinlerine hazırlanmaları hakkında bazı gözlemler yaptım.

30 saniye kuralı artık çalışmıyor

Eminim bir programcının bir fonksiyonun amacını koduna kısaca baktıktan sonra anlaması gerektiğini belirten 30 saniye kuralıyla karşılaşmışsınızdır. Uzun zaman önce icat edildi ve o zamandan beri birçok işletim sistemi, dil, donanım ve algoritma ortaya çıktı. 12 yıldır kod yazıyorum, ancak nispeten yakın zamanda bir ürünün kaynak kodunu gördüm ve bu ilk bakışta bana sihirli büyü gibi geldi. Bugün eğer konuya derinlemesine dalmadıysanız 30 saniye kuralı işlemez hale geliyor. Aksi halde neyin ne olduğunu anlamanız için sadece 30 değil, 300 saniye de yeterli olmayacaktır.

Örneğin sürücü yazmak istiyorsanız bu alana dalmanız ve binlerce satırlık spesifik kodu okumanız gerekecektir. Bir konuyu incelemeye yönelik bu yaklaşımla uzman, bir "akış hissi" geliştirir. Rap'te olduğu gibi, özel bir rasyonelleştirme olmaksızın iyi bir kafiye ve doğru ritim hissi ortaya çıktığında. Benzer şekilde, iyi eğitimli bir programcı, bir stil ihlalinin nerede meydana geldiğine veya optimal olmayan bir yaklaşımın kullanıldığına dair ayrıntılı bir çalışmaya girmeden, etkisiz veya basitçe kötü kodu kolayca tanıyabilir (ancak bu duygunun açıklanması çok zor olabilir).

Uzmanlaşma ve artan karmaşıklık, lisans eğitiminin artık tüm alanları yeterli derinlikte inceleme fırsatı sunmamasına yol açmaktadır. Ancak tam da bu eğitim düzeyinde kişinin bir bakış açısı kazanması gerekir. Daha sonra, lisansüstü okulda veya işyerinde, konu alanının sorunlarına ve özelliklerine dalmak, argo, programlama dilleri ve meslektaşların kodları çalışmak, makaleler ve kitaplar okumak için biraz zaman harcamanız gerekecektir. Bana öyle geliyor ki, üniversitenin yardımıyla gelecek için "çatıyı yükseltmenin" tek yolu bu. T şeklindeki uzmanlar.

Üniversitede öğretmek için en iyi programlama dili hangisidir?

Bilgisayar Bilimleri Eğitiminden En İyi Şekilde Nasıl Faydalanılır?
Ne mutlu ki, üniversite hocaları şu soruya doğru cevabı aramaktan çoktan vazgeçtiler: "Programlamak için en iyi dil hangisidir?" Hangisinin daha iyi olduğu konusundaki tartışma - C# mı, Java mı, Delphi mi yoksa C++ mı - neredeyse ortadan kalktı. Birçok yeni programlama dilinin ortaya çıkması ve pedagojik deneyimin birikmesi, akademik ortamda yerleşik bir anlayışa yol açmıştır: her dilin kendine ait bir yeri vardır.

Bir veya başka bir programlama dilini kullanarak öğretme sorunu öncelik olmaktan çıktı. Dersin hangi dilde öğretildiği önemli değildir. Önemli olan dilin yeterli ifadesidir. Kitap "Çok İşlemcili Programlama Sanatı” bu gözlemin iyi bir örneğidir. Artık klasikleşmiş olan bu baskıda, tüm örnekler işaretçilerin olmadığı ancak Çöp Toplayıcının bulunduğu Java dilinde sunulmaktadır. Neredeyse hiç kimse Java'nın yüksek performanslı paralel kod yazmak için en uygun seçim olmaktan uzak olduğunu iddia edemez. Ancak dil kitapta sunulan kavramları açıklamaya uygundu. Başka bir örnek - klasik makine öğrenimi kursu Andrew Nna, Octave ortamında Matlab'da ders verdi. Bugün farklı bir programlama dili seçebilirsiniz, ancak fikirlerin ve yaklaşımların önemli olması gerçekten ne fark eder?

Daha pratik ve gerçeğe daha yakın

Aynı zamanda son yıllarda üniversitelerde çok daha fazla uygulayıcı bulunmaktadır. Daha önceki Rus üniversite programları gerçeklikten kopuk olduğu için aktif olarak eleştirildiyse, bugün aynı şey BT eğitimi için söylenemez. 10 yıl önce üniversitelerde gerçek sektör tecrübesine sahip öğretmen neredeyse yoktu. Günümüzde, uzmanlaşmış bir bölümdeki dersler giderek daha sık olarak tam zamanlı bilgisayar bilimleri öğretmenleri tarafından değil, boş zamanlarında ana işlerinden yalnızca 1-2 ders veren BT uzmanları tarafından verilmektedir. Bu yaklaşım, yüksek kaliteli personel eğitimi, kursların güncellenmesi ve elbette şirketteki potansiyel çalışanların aranması açısından karşılığını verir. MIPT'de temel bir bölümü desteklediğimizi ve Acronis'te kariyerlerine başlayabilecek öğrencileri hazırlamak da dahil olmak üzere diğer üniversitelerle ilişkiler kurduğumuzu söyleyerek sırrı açığa çıkaracağımı sanmıyorum.

Matematikçi mi yoksa programcı mı?

Bilgisayar Bilimleri Eğitiminden En İyi Şekilde Nasıl Faydalanılır?
Daha önce programlama dilleri etrafında dönen kutsal savaşlar artık felsefi bir yöne doğru kaydı. Şimdi sözde "programcılar" ve "matematikçiler" birbirleriyle tartışıyorlar. Prensip olarak, bu okullar iki eğitim programına ayrılabilir, ancak endüstri bu tür incelikleri ayırma konusunda hala yetersiz ve üniversiteden üniversiteye, biraz farklı bir odak noktasıyla benzer eğitim veriyoruz. Bu, hem öğrencinin hem de çalışmaya devam edeceği şirketin bilgi bulmacasını eksik parçalarla tamamlaması gerektiği anlamına gelir.

Üniversitelerde farklı dillerde endüstriyel kod yazan uygulayıcıların ortaya çıkması öğrencilere daha iyi gelişim becerileri kazandırmaktadır. Standart kütüphanelerin, çerçevelerin ve programlama tekniklerinin uygulamalarına aşina olan programcılar, öğrencilere iyi kod yazma, bunu hızlı ve verimli bir şekilde yapma arzusunu aşılar.

Ancak bu yararlı beceri bazen tekerleği yeniden icat etmekten hoşlananların ortaya çıkmasına da yol açar. Programlama öğrencileri şöyle düşünüyor: “Sorunu doğrudan çözecek 200 satırlık iyi bir kod daha yazmalı mıyım?”

Klasik matematik eğitimi almış öğretmenler (örneğin Matematik veya Uygulamalı Matematik Fakültesi'nden) genellikle sözde bilimsel bir ortamda veya modelleme ve veri analizi alanında çalışırlar. “Matematikçiler” Bilgisayar Bilimleri alanındaki sorunlara farklı bakıyorlar. Öncelikle kodla değil algoritmalar, teoremler ve biçimsel modellerle çalışırlar. Matematiksel yaklaşımın önemli bir avantajı neyin çözülüp neyin çözülemeyeceğine dair net bir temel anlayıştır. Ve nasıl çözüleceği.

Buna göre matematik öğretmenleri programlamadan teoriye doğru bir önyargıyla bahsetmektedir. "Matematik geçmişinden" gelen öğrencilerin iyi düşünülmüş ve teorik olarak üstün çözümler bulma olasılığı daha yüksektir, ancak genellikle dilsel açıdan yetersizdir ve genellikle özensizce yazılmıştır. Böyle bir öğrenci, asıl amacının bu tür sorunları prensipte çözme yeteneğini göstermek olduğuna inanır. Ancak uygulama yetersiz olabilir.

Okulda programcı olarak yetiştirilen çocuklar ya da ilk yıllarında yanlarında “çok güzel bir bisiklet” getiriyorlar, ancak bu bisiklet genellikle asimptotik olarak pek verimli çalışmıyor. Aksine, güzel kodları tercih ederek, derinlemesine teori oluşturma ve en uygun çözümleri bulmak için ders kitaplarına dönme görevini üstlenmiyorlar.

Farklı üniversitelerde öğrenci görüşmeleri sırasında genellikle onun eğitiminin hangi “okul” olduğunu görüyorum. Ve temel eğitimde neredeyse hiçbir zaman mükemmel bir dengeyle karşılaşmadım. Çocukken benim şehrimde matematik olimpiyatlarına hazırlanılabilirdi ama programlama kulübü yoktu. Artık çocuklar kulüplerde "modaya uygun" Go ve Python ile programlamayı öğreniyorlar. Dolayısıyla üniversitelere kabul aşamasında dahi yaklaşım farklılıkları bulunmaktadır. Her iki beceriyi de üniversitede sürdürmenin önemli olduğuna inanıyorum, aksi takdirde ya teorik temeli yetersiz bir uzman ya da öğrenmemiş ve iyi kod yazmak istemeyen bir kişi şirkette çalışmaya gelecektir.

Gelecek için “enine çubuk nasıl pompalanır” T şeklindeki uzmanlar mı?

Bilgisayar Bilimleri Eğitiminden En İyi Şekilde Nasıl Faydalanılır?
Bu gibi durumlarda öğrencinin en çok sevdiği şeyi seçtiği açıktır. Öğretmen sadece kendisine daha yakın olan bakış açısını aktarır. Ancak kodun güzelce yazılması ve algoritmalar açısından her şeyin açık, makul ve etkili olması herkes için fayda sağlayacaktır.

  • BT ufukları. Bilgisayar Bilimleri alanında lisans derecesi mezunu, muhtemelen profilini seçmiş, gelişmiş teknik bakış açısına sahip hazır bir uzmandır. Ancak üçüncü sınıfta ne yapacağını bilmiyoruz. Bilime ya da analitiklere gidebilir ya da tam tersine her gün çok miktarda kod yazabilir. Bu nedenle öğrenciye BT alanında çalışmanın tüm yönlerinin gösterilmesi ve tüm araçların tanıtılması gerekir. İdeal olarak, teorik derslerdeki öğretmenler uygulamayla bağlantı kuracaktır (veya tam tersi).
  • Büyüme noktası. Aşırılıklara gitmesine izin vermemek öğrencinin çıkarınadır. “Matematikçi” mi yoksa “programcı” mı olduğunuzu anlamak zor değil. Bir sorunu çözerken ilk dürtüyü dinlemek yeterlidir: ne yapmak istiyorsunuz - en uygun yaklaşımı bulmak için ders kitabına bakmak mı yoksa daha sonra kesinlikle faydalı olacak birkaç işlev mi yazmak istiyorsunuz? Buna dayanarak öğreniminiz için tamamlayıcı bir yol daha oluşturabilirsiniz.
  • Alternatif bilgi kaynakları. Programın iyi dengelendiği görülüyor, ancak "Sistem Programlama" ve "Algoritmalar" tamamen farklı kişiler tarafından öğretiliyor ve bazı öğrenciler ilk öğretmene, diğerleri ise ikinciye daha yakın. Ancak profesörü sevmeseniz bile bu, bazı konuları diğerlerine tercih ederek ihmal etmeniz için bir neden değildir. Lisans öğrencileri bilgi kaynaklarıyla çalışma iradesini bulmakla ilgilenirler ve hiçbir durumda "matematik bilimlerin kraliçesidir, asıl mesele algoritmaları bilmektir" veya "iyi kod diğer her şeyi telafi eder" gibi radikal görüşlere güvenmezler.

Uzmanlaşmış literatüre ve çevrimiçi kurslara yönelerek teorideki bilginizi derinleştirebilirsiniz. Birçok farklı kursun sunulduğu Coursera, Udacity veya Stepik üzerinden programlama dilleri konusunda becerilerinizi geliştirebilirsiniz. Ayrıca öğrenciler, algoritma öğretmeninin matematiği iyi bildiğini ancak karmaşık uygulama sorularına cevap veremediğini düşünürlerse sıklıkla zorlu dil derslerini izlemeye başlarlar. Herkes benimle aynı fikirde olmayacak ama benim pratiğimde kendini iyi kanıtladı Yandex'den C++ uzmanlığıDilin giderek daha karmaşık özelliklerinin sırayla analiz edildiği. Genel olarak saygın şirketlerden veya üniversitelerden yüksek puan alan bir kurs seçin.

Hassas Yetenek

Bilgisayar Bilimleri Eğitiminden En İyi Şekilde Nasıl Faydalanılır?
Üniversiteden yeni kurulan bir şirketten büyük bir şirkete kadar herhangi bir şirkette çalışmak için gelen öğrenciler, en iyi üniversitelerden gelen öğrenciler bile kendilerini gerçek çalışma ortamına yetersiz adapte olmuş halde buluyorlar. Gerçek şu ki, günümüzde üniversiteler öğrencilere çok fazla “bebek bakıcılığı yapıyor”. Çok sayıda dersi kaçırdıktan, sınavlara ve sınavlara zamanında hazırlanmadıktan, fazla uyuduktan veya sınava geç kaldıktan sonra bile herkes sınavı geçip tekrar girebilir ve sonunda yine de bir diploma alabilir.

Ancak günümüzde öğrencilerin yetişkin yaşamına ve bağımsız mesleki faaliyetlere hazırlanmaları için tüm koşullar mevcuttur. Sadece programlamakla kalmayıp aynı zamanda iletişim kurmaları da gerekecek. Ve bunun da öğretilmesi gerekiyor. Üniversitelerin bu becerileri geliştirmek için çeşitli formatları vardır, ancak ne yazık ki bunlara genellikle yeterince önem verilmiyor. Ancak etkili ekip çalışması becerileri kazanmak için birçok fırsatımız var.

  • Yazılı iş iletişimi. Ne yazık ki üniversiteden ayrılan mezunların çoğunun yazışma görgü kuralları hakkında hiçbir fikri yok. Anlık mesajlaşma programlarındaki iletişimin özelliği, gece ve gündüz mesaj alışverişinde ve konuşma tarzının ve resmi olmayan kelimelerin kullanılmasında yatmaktadır. Ancak öğrencinin bölüm ve üniversite ile iletişim kurması halinde yazılı konuşma eğitimi verilmesi mümkün olacaktır.

    Uygulamada yöneticiler sıklıkla büyük bir projeyi küçük görevlere ayırma ihtiyacıyla karşı karşıya kalır. Bunu yapmak için, genç geliştiricilerin kendilerinden ne istendiğini anlamaları için her görevi ve bileşenlerini açıkça tanımlamanız gerekir. Yetersiz tanımlanmış bir görev çoğu zaman bir şeyi yeniden yapma ihtiyacına yol açar; bu nedenle yazılı iletişim deneyimi, mezunların dağıtılmış ekipler halinde çalışmasına yardımcı olur.

  • Çalışmanızın sonuçlarının yazılı sunumu. Son sınıf öğrencileri eğitim projelerini sunmak için Habr üzerine yazılar, bilimsel makaleler ve ayrıca sadece raporlar yazabilirler. Bunun için pek çok fırsat var; bazı üniversitelerde ders çalışmaları ikinci yılda başlıyor. Denemeleri bir kontrol biçimi olarak da kullanabilirsiniz; bunlar genellikle biçim olarak bir gazetecilik makalesine daha yakındır. Bu yaklaşım halihazırda Ulusal Araştırma Üniversitesi İktisat Yüksek Okulu'nda uygulanmıştır.

    Bir şirket geliştirme konusunda esnek bir yaklaşım uyguluyorsa, çalışmalarının sonuçlarını daha küçük porsiyonlarda, ancak daha sık sunmak zorundadır. Bunu yapmak için, bir uzmanın veya tüm ekibin çalışmalarının sonuçlarını kısaca aktarabilmek önemlidir. Ayrıca, bugün birçok şirket yıllık veya altı ayda bir "incelemeler" gerçekleştirmektedir. Çalışanlar sonuçları ve iş beklentilerini tartışırlar. Başarılı inceleme, örneğin Microsoft, Acronis veya Yandex'deki kariyer büyümesinin, ikramiyelerin ana nedenidir. Evet, iyi programlayabilirsiniz, ancak "köşede oturmak" havalı bir uzman bile başarısını nasıl iyi sunacağını bilen birine karşı her zaman kaybedecektir.

  • Akademik yazı. Akademik yazılar özel olarak anılmayı hak ediyor. Öğrencilerin bilimsel metin yazma, argüman kullanma, çeşitli kaynaklarda bilgi arama ve bu kaynaklara yapılan atıfları biçimlendirme kurallarına aşina olmaları faydalıdır. Uluslararası akademik toplulukta çok daha fazla iyi metin bulunduğundan ve çeşitli disiplinler için bilimsel sonuçların sunulmasına yönelik halihazırda oluşturulmuş şablonlar bulunduğundan, bunun İngilizce olarak yapılması tavsiye edilir. Tabii ki, Rusça yayınlar hazırlarken akademik yazma becerilerine de ihtiyaç vardır, ancak İngilizce'deki iyi modern makalelerin örnekleri çok daha azdır. Bu beceriler artık birçok eğitim programında yer alan uygun bir kurs aracılığıyla edinilebilir.
  • Lider toplantılar. Çoğu öğrenci toplantılara nasıl hazırlanacağını, tutanak tutmayı ve verileri nasıl işleyeceğini bilmiyor. Ancak bu beceriyi üniversitede, örneğin ekip projelerine katılarak geliştirirsek, işyerinde zaman kaybetmekten kaçınabiliriz. Bu, onlara toplantıların nasıl etkili bir şekilde yürütüleceğini öğretmek için öğrencilerin proje çalışmalarının denetlenmesini gerektirir. Uygulamada bu, her şirkete çok fazla paraya mal olur; sonuçta, büyük bir maaş alan birkaç kişi bir mitingde bir saatlik çalışma süresi harcıyorsa, bundan buna karşılık gelen bir getiri olmasını istersiniz.
  • Topluluk önünde konuşma. Pek çok öğrenci yalnızca tezlerini savunurken topluluk önünde konuşma ihtiyacıyla karşı karşıya kalmaktadır. Ve herkes buna hazır değil. Şunları yapan birçok öğrenci gördüm:
    • seyirciye sırtlarını dönerek dururlar,
    • sallanıyor, komisyonu transa sokmaya çalışıyor,
    • kalemleri, kurşun kalemleri ve işaretçileri kırın,
    • daireler çizerek yürümek
    • yere bak.

    Bir kişi ilk kez performans sergilediğinde bu normaldir. Ancak bu stresle daha önceden çalışmaya başlamanız gerekir; ders çalışmalarınızı sınıf arkadaşlarınızın arasında dostane bir atmosferde savunarak.

    Ayrıca şirketlerdeki standart uygulama, bir çalışana bir fikir önerme ve bu fikir için fon, pozisyon veya özel proje alma fırsatı vermektir. Ancak düşünürseniz, bu, kurs çalışmalarının aynı şekilde korunmasıdır, sadece daha yüksek bir seviyede. Neden okurken bu tür yararlı kariyer becerilerini pratik yapmıyorsunuz?

Neyi özlüyorum?

Bu yazıyı yazmamın nedenlerinden biri de şu makaleydi: Tyumen Devlet Üniversitesi web sitesinde yayınlandı. Makalenin yazarı yalnızca Rus öğrencilerin yabancı öğretmenler tarafından fark edilen eksikliklerine odaklanıyor. Farklı üniversitelerdeki öğretmenlik pratiğim, Rus okulunun ve yüksek öğreniminin iyi bir temel oluşturduğunu gösteriyor. Rus öğrenciler matematik ve algoritmalar konusunda bilgilidir ve onlarla profesyonel iletişim kurmak daha kolaydır.

Yabancı öğrenciler söz konusu olduğunda ise tam tersine, bir Rusça öğretmeninin beklentileri bazen çok yüksek olabiliyor. Mesela matematik açısından temel eğitim düzeyinde tanıştığım Hintli öğrenciler Ruslara benziyor. Ancak bazen lisans eğitimlerinden mezun olduklarında uzmanlık bilgisinden yoksun olabiliyorlar. İyi Avrupalı ​​öğrencilerin okul düzeyinde daha az güçlü matematik geçmişine sahip olmaları muhtemeldir.

Ve eğer bir üniversitede okuyorsanız veya çalışıyorsanız, artık iletişim becerileri (kendinizin veya öğrencilerinizin) üzerinde çalışabilir, temel temelinizi genişletebilir ve programlama pratiği yapabilirsiniz. Bunun için Rus eğitim sistemi tüm fırsatları sunuyor; sadece bunları doğru kullanmanız yeterli.

Gönderiye yapılan yorumlarda, eğitimde dengeyi sağlamaya yardımcı olan kurslar ve yöntemlerin yanı sıra bir üniversitede okurken sosyal becerileri geliştirmenin diğer yollarına ilişkin bağlantılarınızı paylaşırsanız memnun olurum.

Kaynak: habr.com

Yorum ekle