Sebagian besar programmer modern telah lulus dari universitas. Seiring waktu, ini akan berubah, tetapi sekarang segalanya sedemikian rupa sehingga staf yang baik di perusahaan IT masih berasal dari universitas. Dalam posting ini, Stanislav Protasov, Direktur Hubungan Universitas Acronis, berbicara tentang visinya tentang fitur-fitur pelatihan universitas untuk programmer masa depan. Guru, siswa, dan mereka yang mempekerjakan mereka bahkan dapat menemukan beberapa tips berguna di bawah potongan.

Selama 10 tahun terakhir saya telah mengajar matematika, algoritma, bahasa pemrograman dan pembelajaran mesin di berbagai universitas. Hari ini, selain posisi saya di Acronis, saya juga Wakil Kepala Departemen Teoritis dan Informatika Terapan di MIPT. Dari pengalaman di universitas Rusia yang baik (dan tidak hanya), saya membuat beberapa pengamatan tentang pelatihan siswa dalam disiplin komputer.
Aturan 30 detik tidak lagi berfungsi
Saya yakin Anda telah menemukan aturan 30 detik, yang menyatakan bahwa seorang programmer harus memahami tujuan suatu fungsi setelah melihat sekilas kodenya. Itu diciptakan untuk waktu yang lama, sejak itu ada banyak sistem operasi, bahasa, perangkat keras dan algoritma. Saya telah menulis kode selama 12 tahun, tetapi relatif baru-baru ini saya melihat kode sumber dari satu produk, yang sekilas bagi saya tampak seperti mantra ajaib. Hari ini, jika Anda tidak tenggelam dalam bidang subjek, maka aturan 30 detik berhenti bekerja. Jika tidak, Anda tidak akan memiliki cukup tidak hanya 30, tetapi juga 300 detik untuk mencari tahu apa.
Misalnya, jika Anda ingin menulis driver, Anda perlu masuk ke area ini, baca ribuan baris kode tertentu. Dengan pendekatan ini untuk mempelajari subjek, spesialis memiliki "sense of flow". Seperti dalam rap, ketika perasaan sajak yang baik dan ritme yang tepat muncul tanpa rasionalisasi khusus. Seorang programmer yang terlatih juga dapat dengan mudah mengenali kode yang tidak efektif atau hanya buruk tanpa pergi ke studi terperinci di mana pelanggaran gaya terjadi atau pendekatan suboptimal digunakan (tetapi menjelaskan perasaan ini bisa sangat sulit).
Spesialisasi dan kompleksitas yang semakin meningkat mengarah pada kenyataan bahwa pembentukan sarjana tidak lagi memberikan kesempatan untuk mempelajari semua bidang dengan cukup mendalam. Tetapi hanya pada tingkat pendidikan ini Anda perlu mendapatkan wawasan. Setelah itu, di magistrasi atau di tempat kerja, Anda perlu meluangkan waktu untuk menyelami masalah dan kekhasan area subjek, mempelajari bahasa gaul, bahasa pemrograman dan kode rekan kerja, membaca artikel dan buku. Tampak bagi saya bahwa ini adalah satu-satunya cara dengan bantuan universitas Anda dapat "memompa palang" untuk
spesialis berbentuk T di masa depan.
Bahasa pemrograman apa yang paling baik diajarkan di universitas?

Yang menggembirakan saya, profesor universitas telah menolak untuk menemukan jawaban yang tepat untuk pertanyaan: "Apa yang lebih baik untuk diprogram?". Perdebatan tentang mana yang lebih baik - C # atau Java, Delphi atau C ++ - benar-benar sia-sia. Munculnya banyak bahasa pemrograman baru dan akumulasi pengalaman pedagogis telah mengarah pada fakta bahwa pemahaman telah didirikan di lingkungan akademik: setiap bahasa memiliki ceruk masing-masing.
Masalah mengajar menggunakan satu atau lain bahasa pemrograman tidak lagi menjadi prioritas. Tidak masalah bahasa apa yang diajarkan kursus. Hal utama adalah ekspresi bahasa yang cukup. Buku "
The Art of Multiprocessor Programming " adalah ilustrasi yang baik dari pengamatan ini. Dalam edisi yang sudah klasik ini, semua contoh ada di Jawa, bahasa tanpa petunjuk, tetapi dengan Pengumpul Sampah. Tidak mungkin ada orang yang berpendapat bahwa Java jauh dari pilihan terbaik saat menulis kode paralel berkinerja tinggi. Tetapi untuk menjelaskan konsep-konsep yang diuraikan dalam buku ini, bahasanya ternyata cocok. Contoh lain adalah
kursus pembelajaran mesin klasik Andrew Eun yang diajarkan dalam bahasa Matlab di lingkungan Oktaf. Saat ini orang dapat memilih bahasa pemrograman yang berbeda, tetapi apa, pada intinya, bedanya jika ide dan pendekatan itu penting?
Lebih praktis dan lebih dekat dengan kenyataan
Pada saat yang sama, dalam beberapa tahun terakhir, lebih banyak praktisi telah menjadi universitas. Jika program universitas Rusia sebelumnya secara aktif dikritik karena bercerai dari kenyataan, hari ini tidak mungkin lagi mengatakan demikian tentang pendidikan TI. 10 tahun yang lalu, hampir tidak ada guru di universitas dengan pengalaman nyata di industri ini. Sekarang semakin sering di departemen khusus, kelas dilakukan bukan oleh guru penuh waktu dalam ilmu komputer, tetapi dengan mempraktikkan spesialis TI yang membaca hanya 1-2 kursus di waktu luang mereka dari pekerjaan utama mereka. Pendekatan ini membenarkan dirinya dalam hal pelatihan yang berkualitas, memperbarui kursus dan, tentu saja, mencari karyawan potensial di perusahaan. Saya rasa saya tidak akan memberi tahu rahasia dengan mengatakan bahwa kami mendukung departemen dasar di MIPT dan membangun hubungan dengan universitas lain, termasuk untuk mempersiapkan siswa yang dapat memulai karir mereka di Acronis.
Matematikawan atau programmer?

Holivars, yang biasa membalikkan bahasa pemrograman, pergi ke arah filosofis. Sekarang "programmer" dan "ahli matematika" bersyarat satu sama lain. Pada prinsipnya, sekolah-sekolah ini dapat menonjol dalam dua program pendidikan, tetapi industri ini masih tidak berbagi kehalusan seperti itu, dan dari universitas ke universitas kami memiliki pendidikan yang sama dengan bias yang sedikit berbeda. Ini berarti bahwa baik siswa dan perusahaan tempat dia akan terus bekerja harus menambah teka-teki pengetahuan dengan potongan-potongan yang hilang.
Kemunculan di universitas praktisi yang menulis kode industri dalam berbagai bahasa memberikan siswa keterampilan pengembangan yang lebih baik. Menjadi terbiasa dengan implementasi perpustakaan standar, kerangka kerja dan teknik pemrograman, programmer praktis menanamkan dalam diri siswa keinginan untuk menulis kode yang baik, untuk melakukannya dengan cepat dan efisien.
Namun, keterampilan yang bermanfaat ini kadang-kadang mengarah pada munculnya penggemar yang menciptakan kembali roda. Siswa komputer berpikir seperti ini: "apa yang harus saya tuliskan 200 baris kode yang baik yang akan memecahkan masalah di dahi?".
Guru yang telah menerima pendidikan matematika klasik (misalnya, matfak atau matematika terapan) lebih mungkin bekerja di lingkungan yang hampir ilmiah, atau di bidang pemodelan dan analisis data. "Matematikawan" melihat masalah dalam Ilmu Komputer secara berbeda. Mereka terutama beroperasi bukan dengan kode, tetapi dengan algoritma, teorema, model formal. Kelebihan penting dari pendekatan matematika adalah pemahaman mendasar yang jelas tentang apa yang bisa dan tidak bisa diselesaikan. Dan bagaimana mengatasinya.
Dengan demikian, guru matematika berbicara tentang pemrograman dengan bias terhadap teori. Siswa yang datang "dari ahli matematika" lebih sering menawarkan solusi yang dipikirkan dengan baik dan secara teoritis lebih baik, tetapi, sebagai aturan, tidak optimal dari sudut pandang bahasa dan, seringkali, hanya tidak akurat. Siswa seperti itu percaya bahwa tujuan utamanya adalah untuk menunjukkan kemampuan untuk menyelesaikan masalah seperti itu pada prinsipnya. Namun implementasinya mungkin timpang.
Orang-orang yang dibesarkan oleh programmer di sekolah atau di kursus pertama mereka membawa “sepeda yang sangat indah”, yang, bagaimanapun, biasanya tidak bekerja dengan sangat asimptotik. Sebaliknya, mereka tidak mengatur sendiri tugas berteori dan beralih ke buku teks untuk mencari solusi optimal, memberikan preferensi pada kode yang indah.
Di berbagai universitas saat wawancara siswa, saya biasanya melihat "sekolah" mana yang mendasari pendidikannya. Dan saya hampir tidak menemukan keseimbangan sempurna dalam pendidikan dasar. Sebagai seorang anak, dimungkinkan untuk mempersiapkan matematika olimpiade di kota saya, tetapi tidak ada lingkaran pemrograman. Sekarang, di lingkaran, anak-anak belajar untuk memprogram dalam Go dan Python yang "trendi". Oleh karena itu, sudah pada tingkat penerimaan ke universitas ada perbedaan dalam pendekatan. Saya percaya bahwa penting untuk mendukung kedua keterampilan di universitas, jika tidak spesialis dengan basis teori yang tidak memadai atau orang yang belum belajar dan tidak ingin menulis kode yang baik akan datang untuk bekerja di perusahaan.

Jelas bahwa dalam keadaan seperti itu, siswa hanya memilih apa yang paling disukainya. Guru hanya menyiarkan sudut pandang yang lebih dekat dengannya. Tetapi semua orang akan mendapat manfaat jika kode ditulis dengan indah, dan dari sudut pandang algoritma semuanya akan jelas, masuk akal dan efisien.
- Cakrawala IT . Lulusan gelar sarjana di bidang Ilmu Komputer adalah spesialis siap pakai dengan pandangan teknis yang maju, yang mungkin memilih profilnya. Tetapi di tahun-tahun yang lebih muda, kita tidak tahu apa yang akan dia lakukan. Dapat pergi ke sains atau analitik, atau mungkin, sebaliknya, menulis sejumlah besar kode setiap hari. Oleh karena itu, siswa perlu menunjukkan semua aspek pekerjaan di bidang TI, untuk berkenalan dengan semua alat. Idealnya, guru dari kursus teori akan menunjukkan koneksi dengan praktik (dan sebaliknya).
- Titik pertumbuhan . Hindari berguling terlalu jauh - demi kepentingan siswa itu sendiri. Memahami siapa Anda, “ahli matematika” atau “programmer,” tidaklah sulit. Cukup dengan mendengarkan impuls pertama ketika menyelesaikan masalah: apa yang ingin Anda lakukan - lihat di buku teks untuk mencari pendekatan terbaik atau menulis beberapa fungsi yang pasti akan berguna nantinya? Berdasarkan ini, Anda dapat membangun lintasan pelengkap lebih lanjut dari pembelajaran Anda.
- Sumber pengetahuan alternatif . Kebetulan programnya seimbang, tetapi "Pemrograman Sistem" dan "Algoritma" adalah orang yang sama sekali berbeda, dan guru pertama lebih dekat dengan beberapa siswa, dan yang kedua lebih dekat dengan yang lain. Tetapi bahkan jika Anda tidak menyukai profesor, ini bukan alasan untuk memalu beberapa mata pelajaran demi orang lain. Bujangan sendiri tertarik untuk menemukan kemauan untuk bekerja dengan sumber-sumber pengetahuan dan dalam hal apapun tidak percaya pada pendapat radikal, seperti "matematika adalah ratu ilmu, yang utama adalah untuk mengetahui algoritma" atau "kode yang baik mengkompensasi semua yang lain".
Anda dapat memperdalam pengetahuan Anda secara teori dengan merujuk pada literatur khusus dan kursus online. Anda dapat meningkatkan kemampuan Anda untuk menggunakan bahasa pemrograman di Coursera, Udacity atau Stepik, di mana banyak kursus berbeda disajikan. Selain itu, siswa sering mulai menonton kursus bahasa hardcore jika mereka merasa bahwa guru algoritma memahami matematika dengan baik, tetapi tidak dapat menjawab pertanyaan kompleks di bidang implementasi. Tidak semua orang akan setuju dengan saya, tetapi dalam praktik saya,
spesialisasi dalam C ++ dari Yandex telah membuktikan sendiri, di mana chip bahasa yang semakin kompleks diurutkan secara berurutan. Secara umum, pilih kursus dengan nilai tinggi dari perusahaan atau universitas terkemuka.
Keterampilan lunak

Berasal dari universitas untuk bekerja di perusahaan mana pun, dari startup hingga perusahaan besar, mahasiswa bahkan universitas terkemuka kurang beradaptasi dengan lingkungan kerja nyata. Faktanya adalah bahwa universitas saat ini banyak "menyusui" dengan siswa. Bahkan setelah melewatkan banyak kelas, tidak siap pada waktunya untuk kontrol dan tes, ketiduran, terlambat ujian, semua orang dapat lulus dan mengulang lagi - dan pada akhirnya mendapatkan ijazah.
Namun demikian, hari ini ada semua persyaratan bagi siswa untuk dipersiapkan untuk kegiatan profesional dewasa dan mandiri. Mereka tidak hanya harus program, tetapi juga berkomunikasi. Dan ini juga perlu diajarkan. Di universitas, ada berbagai format untuk memompa keterampilan ini, tetapi, sayangnya, seringkali mereka tidak mendapatkan perhatian yang cukup. Namun demikian, di gudang kami ada banyak peluang untuk mendapatkan keterampilan kerja tim yang efektif.
- Komunikasi bisnis tertulis . Sayangnya, sebagian besar spesialis yang meninggalkan universitas tidak memiliki petunjuk tentang etiket korespondensi. Spesifik komunikasi dalam pesan instan dalam pesan di malam hari dan di sore hari dan penggunaan gaya percakapan dan kosa kata informal. Namun, dimungkinkan untuk melatih bahasa tertulis dalam komunikasi siswa dengan departemen dan universitas.
Dalam praktiknya, manajer sering menghadapi kebutuhan untuk menguraikan proyek besar menjadi tugas-tugas kecil. Untuk melakukan ini, Anda harus menggambarkan setiap tugas dan komponennya dengan baik, sehingga pengembang junior memahami apa yang diperlukan dari mereka. Tugas yang buruk sering menyebabkan kebutuhan untuk mengulang sesuatu, dan oleh karena itu pengalaman dalam komunikasi tertulis membantu lulusan untuk bekerja dalam tim yang didistribusikan. - Presentasi tertulis dari hasil pekerjaan mereka . Untuk presentasi proyek pendidikan mereka, siswa senior dapat menulis posting tentang Habr, artikel ilmiah, dan juga hanya laporan. Ada banyak peluang untuk ini - sejak tahun kedua, makalah mulai di beberapa universitas. Anda juga dapat menggunakan esai sebagai bentuk kontrol - esai biasanya lebih dekat ke artikel jurnalistik. Pendekatan ini telah diterapkan di Sekolah Tinggi Ekonomi.
Jika perusahaan mempraktikkan pendekatan yang fleksibel untuk pengembangan, perlu untuk mempresentasikan hasil kerjanya dalam porsi yang lebih kecil, tetapi lebih sering. Untuk ini, penting untuk dapat menyampaikan secara singkat hasil pekerjaan dari satu spesialis atau seluruh tim. Juga, banyak perusahaan saat ini melakukan "ulasan" - tahunan atau semi-tahunan. Karyawan mendiskusikan hasil dan prospek pekerjaan. Ulasan yang sukses adalah alasan utama untuk pertumbuhan karir, bonus, misalnya, di Microsoft, Acronis atau Yandex. Ya, Anda dapat memprogram dengan baik, tetapi "duduk di sudut" bahkan seorang spesialis yang tangguh akan selalu kalah dari seseorang yang tahu bagaimana menyajikan kesuksesan mereka dengan baik. - Penulisan Akademik . Secara terpisah, ada baiknya menyoroti tulisan akademik. Berguna bagi siswa untuk mengenal aturan penulisan teks ilmiah, menggunakan argumen, mencari informasi dalam berbagai sumber, dan menghubungkan ke sumber-sumber ini. Dianjurkan untuk melakukan ini dalam bahasa Inggris, karena ada banyak teks yang lebih baik di komunitas akademik internasional, dan sudah ada template yang sudah mapan untuk menyajikan hasil ilmiah untuk berbagai disiplin ilmu. Tentu saja, keterampilan menulis akademis juga diperlukan dalam persiapan publikasi berbahasa Rusia, tetapi ada lebih banyak contoh artikel modern yang bagus dalam bahasa Inggris. Anda bisa mendapatkan keterampilan ini sebagai bagian dari kursus yang sesuai, yang sekarang termasuk dalam banyak program pendidikan.
- Pertemuan terkemuka . Sebagian besar siswa tidak tahu bagaimana mempersiapkan pertemuan, menyimpan protokol, dan memproses data. Tetapi jika kita mengembangkan keterampilan ini di universitas, misalnya, dengan berpartisipasi dalam proyek kolektif, kita dapat menghindari membuang-buang waktu di tempat kerja. Untuk melakukan ini, kita perlu kontrol atas karya desain siswa untuk mengajari mereka cara melakukan pertemuan secara efektif. Dalam praktiknya, setiap perusahaan membutuhkan banyak uang - karena jika beberapa orang yang menerima gaji besar menghabiskan satu jam waktu kerja di rapat umum, saya ingin mereka mendapatkan pengembalian yang sesuai.
- Berbicara di depan umum . Banyak siswa dihadapkan dengan kebutuhan untuk berbicara di depan umum hanya untuk mempertahankan tesis mereka. Dan tidak semua orang siap untuk ini. Saya telah melihat banyak siswa yang:
- dengan punggung mereka ke penonton
- berayun, mencoba memperkenalkan komisi untuk trance,
- istirahat pena, pensil dan pointer,
- berjalan berputar-putar
- lihat ke lantai.
Ini normal ketika seseorang berbicara untuk pertama kalinya. Tetapi dengan tekanan ini Anda harus mulai bekerja lebih awal - dengan perlindungan kursus dalam suasana yang bersahabat di antara teman sekelas.
Selain itu, praktik standar dalam perusahaan adalah memungkinkan karyawan untuk mengusulkan ide, menerima dana, posisi, atau proyek khusus untuk itu. Tetapi, jika Anda memikirkannya - ini adalah pertahanan yang sama dari makalah ini, hanya di level yang lebih tinggi. Mengapa tidak melatih keterampilan karier yang bermanfaat saat belajar?
Apa yang saya lewatkan?
Salah satu alasan untuk menulis posting ini adalah artikel yang
dipublikasikan di situs web Universitas Negeri Tyumen . Penulis artikel ini hanya berfokus pada kekurangan siswa Rusia yang diperhatikan oleh guru asing. Praktik mengajar saya di berbagai universitas menunjukkan bahwa sekolah Rusia dan pendidikan tinggi menyediakan basis yang baik. Siswa Rusia paham matematika dan algoritma, lebih mudah untuk membangun komunikasi profesional dengan mereka.
Dalam kasus siswa asing, sebaliknya, harapan guru Rusia kadang-kadang bisa dilebih-lebihkan. Sebagai contoh, pada tingkat pelatihan dasar dalam matematika, siswa India yang saya temui mirip dengan siswa Rusia. Namun, mereka terkadang tidak memiliki pengetahuan khusus saat keluar dari studi sarjana. Siswa Eropa yang baik lebih cenderung memiliki matematika yang kurang kuat di tingkat sekolah.
Dan jika Anda belajar atau bekerja di universitas, sekarang Anda dapat membangun keterampilan komunikatif (milik Anda atau siswa Anda), perluas landasan dasar dan program latihan. Untuk tujuan ini, semua kemungkinan disediakan dalam sistem pendidikan Rusia - Anda hanya perlu menggunakannya dengan benar.
Saya akan senang jika dalam komentar di posting Anda membagikan tautan Anda ke kursus dan metode yang membantu menyeimbangkan keseimbangan dalam pendidikan, serta dengan cara lain untuk memompa soft skill saat belajar di universitas.