Apa seperangkat keterampilan yang harus dimiliki setiap programmer lulusan perguruan tinggi? [Tutup]

9

Kami memiliki dosen tamu di sekolah kami, ia bersinggungan dengan mereka yang lulus dan tidak sampai pada tingkat keterampilan yang ia harapkan yaitu. pengetahuan tentang satu bahasa besar yang dikompilasi seperti Java, C ++ atau C #, satu bahasa scripting seperti Python atau Ruby, satu kerangka kerja web. Apa keterampilan lain yang menurut Anda harus benar-benar penting untuk siswa yang lulus?


sumber
Saya berasumsi maksud Anda lulus dari universitas?
Michael Shaw
1
@Ptolemy: Di Amerika Serikat istilah college benar.
Macneil
1
Keinginan untuk menendang pantat dan melepaskan pesan teks berbicara, dasar anak muda! socializedpr.com/…
Ayub

Jawaban:

27

Sejauh ini, saya akan mengatakan keinginan untuk belajar. Perguruan tinggi tidak benar-benar dimaksudkan untuk memberi Anda keterampilan yang Anda butuhkan untuk menjadi seorang programmer. Ini dimaksudkan untuk mengajarkan Anda keterampilan yang Anda butuhkan untuk mempelajari keterampilan itu.

Jason Baker
sumber
Tidak bisa mengatakannya dengan lebih baik.
Chris
4

Lulusan baru membutuhkan lebih dari sekadar keinginan untuk belajar, mereka membutuhkan obsesi belajar, pemahaman tentang cara belajar, dan landasan yang kuat dalam realitas perangkat lunak. Saya biasanya tidak peduli bahasa apa yang Anda ketahui, tetapi setiap junior harus:

  1. Pahami sejarah . Ilmu komputer adalah bidang yang diteliti dengan baik, dengan banyak masalah terpecahkan. Mengetahui fakta ini membuka pintu untuk belajar dari apa yang datang sebelum Anda. Bahkan mengetahui bahwa ada sejarah yang kaya untuk menambang pengetahuan dari lebih dari banyak lulusan grok. Ini termasuk hal-hal seperti notasi O besar, sejarah algoritma, prinsip-prinsip para nabi (Knuth, K&R, Hofstdater, dll.), Dan praktik serta pola yang diterima secara umum.

  2. Ketahuilah bahwa itu bisa diselesaikan . Saya selalu terkejut ketika pengembang bingung dengan masalah. Bagian dari belajar untuk belajar adalah prinsip sederhana bahwa masalah selalu mudah dipecahkan. Setelah Anda mengetahui hal ini, itu membingkai pemikiran Anda untuk menemukan jawaban yang waras.

  3. Memahami dekomposisi . Tidak hanya masalah yang dapat dipecahkan, tetapi jalan untuk melakukannya adalah sesederhana membagi dan menaklukkan. Kurangi masalah menjadi komponen yang lebih sederhana, dan jawaban Anda akan selalu muncul dengan sendirinya.

  4. Tahu cara mengukur . Selain bisa menguraikan masalah, pengembang baru perlu tahu cara mengumpulkan fakta tentang masalah ini. Berapa lama? Seberapa besar? Seberapa cepat? Berapa banyak? Fakta sederhana adalah langkah menuju pemahaman dan pemikiran objektif. Membuat asumsi tanpa fakta adalah cara mudah tersesat di ruang masalah.

  5. Jadilah objektif . Semua masalah dapat diuraikan, diukur, dan dipahami secara sederhana. Masalah yang tidak dapat dipahami hanya membutuhkan dekomposisi, pengukuran, dan pemahaman tambahan. Tidak ada gunanya marah atau frustrasi, juga tidak produktif untuk berdebat tentang teori atau menyalahkan tempat. Setiap perilaku atau keyakinan irasional yang terkait dengan proses penyelesaian masalah adalah racun, membuat solusi sangat sulit ditemukan.

  6. Lebih suka pola dan prinsip . Anda akan menemukan lusinan cara yang tepat untuk melakukan berbagai hal, bahasa, model pemrograman, arsitektur komputer, dan bahkan metode teknik. Tidak ada satu cara yang benar, tetapi ada konsep dasar yang kuat yang dapat Anda terapkan berulang kali. Belajarlah untuk melihat pola-pola ini, karena akan memandu pembelajaran dan pemikiran Anda setiap langkah.

Bruce Alderson
sumber
1
  1. Hasrat untuk pemrograman dengan baik
  2. Kerendahan hati
  3. Kemampuan mempelajari hal-hal baru dengan cepat
TaylorOtwell
sumber
0

Sebagai majikan, saya hanya akan mempekerjakan orang sebagai programmer yang:

  1. Memiliki pengalaman melangkah melalui kode tunggal.
  2. Dapat memilih pola desain yang sesuai untuk memecahkan masalah spesifik yang sederhana.
  3. Dapat mengimplementasikan kode yang mencerminkan pola desain yang mereka pilih.

Dalam pengalaman saya, kurang dari 5% lulusan ilmu komputer yang melamar pekerjaan pemrograman sebenarnya memiliki keterampilan ini, pada tingkat dasar. Ini adalah keterampilan minimum yang diperlukan untuk berguna secara komersial, dan yang penting, tidak semua orang mampu mempelajari keterampilan ini.

Bagus lainnya untuk dimiliki adalah:

  • Pengalaman bekerja dalam proyek tim
  • Gunakan kontrol sumber
  • Pengalaman pengujian Unit

Ini membuat integrasi mereka dengan tim pengembangan yang ada lebih mudah, tetapi merupakan mata pelajaran yang biasanya dapat diajarkan di tempat kerja.

Michael Shaw
sumber
0

Saya pernah memiliki tim yang saya "wariskan" dengan sebagian besar staf yang baru lulus dan saya memiliki pengalaman bahwa mereka yang melakukan pemrograman nyata "di samping" belajar di sana (untuk mendapatkan uang tambahan) adalah anggota tim yang paling cakap. Karenanya pengalaman adalah kuncinya dan hanya sedikit bedanya bahasa apa.

Namun jika Anda mencari apa yang dicari oleh perekrut (di semua situs perekrut umum seperti jobserver.com dll.) Menarik untuk mengamati bahwa ada banyak yang diminta untuk C ++, C #, Java tetapi juga ada yang lain dicari dan juga hal-hal "eksotis" seperti COBOL masih ada.

hol
sumber
0
  1. Keterampilan interpersonal dan komunikasi
  2. Pendekatan pragmatis (bukan teori akademis)
  3. Kemampuan berpikir sebagai klien yang tidak memiliki kecenderungan teknis
  4. Kemampuan untuk mengevaluasi apa yang penting / dan apa yang dapat diabaikan, dalam hal biaya / manfaat
  5. Kemampuan untuk bekerja dalam tim
  6. Kemampuan untuk berpikir secara strategis: arsitektur, extensibiliy, skalabilitas
  7. Keterbukaan untuk menerima bahwa ajaran universitas tidak ada hubungannya dengan dunia nyata (tergantung pada universitas - beberapa lebih baik dalam hal ini).

Proses pembelajaran dalam profesi ini tidak pernah berakhir. Seseorang harus terus-menerus belajar dan meningkatkan dirinya sendiri, jika tidak, ia "gagal" dari permainan dengan sangat cepat.

Benteng
sumber
Ini semua bermanfaat. Namun, hampir nol lulusan universitas memilikinya, dan mereka tidak kritis, karena sebagian besar mudah diperoleh di tempat kerja. Saya pikir Anda menjawab pertanyaan yang berbeda.
dbkk
@ dbkk - Saya mohon maaf, tetapi pertanyaannya bukan "keterampilan apa yang dimiliki programmer yang lulus" tetapi "apa ... yang seharusnya dimiliki". Juga, tidak, mereka tidak mudah didapat. Justru sebaliknya - lebih sering daripada tidak, orang-orang dengan pengalaman bertahun-tahun masih kehilangan sebagian besar dari mereka.
Benteng
1
Ini adalah keterampilan umum, dan banyak yang tidak cocok untuk belajar di sekolah.
David Thornley
-1

Jawaban lainnya bagus, tetapi saya akan mengatakan keterampilan # 1 yang diabaikan di universitas tampaknya adalah rekayasa perangkat lunak yang sebenarnya .

Kelas dasar untuk mengajar OOP dan bahasa seperti Jawa sangat bagus, tetapi pada tahun ke-3 dan ke-4 mengapa para siswa (setidaknya di universitas lokal saya) menulis kompiler dan sistem operasi alih-alih belajar bagaimana mengidentifikasi dan membuat arsitektur yang baik, bagaimana untuk membedah persyaratan dan membuat dari itu daftar spesifikasi teknis, dan mungkin yang paling penting, apa perbedaannya antara kode yang baik yang bekerja dan kode yang buruk yang bekerja.

Sepertinya universitas kami hampir ingin membuat kode alih-alih insinyur perangkat lunak . Saya tidak akan pernah mempekerjakan seseorang yang tidak menunjukkan keterampilan / bakat di bidang teknik.

Nicole
sumber
4
Karena apa yang diajarkan orang adalah ilmu komputer, bukan rekayasa perangkat lunak. Masalah ini akan hilang jika universitas dan mahasiswa menyadari bahwa ilmu komputer! = Rekayasa perangkat lunak, ilmu komputer adalah ilmu, ilmu komputer bukan tentang pemrograman, dan rekayasa perangkat lunak lebih dari sekadar pemrograman.
Thomas Owens
-1. Mempelajari bagaimana berbagai hal bekerja di bawah tenda (kompiler, OS, bahasa assembly, dll.) Adalah penting bahkan jika Anda tidak pernah benar-benar bekerja pada level ini, karena Anda akan menghadapi abstraksi yang bocor di beberapa titik.
dsimcha
@dsimcha, jika Anda percaya itu, Anda memiliki pandangan yang sangat sempit tentang jenis insinyur perangkat lunak apa yang dipekerjakan oleh perusahaan saat ini di dunia nyata. Bukan karena hal-hal itu tidak menambah nilai - itu adalah biaya kesempatan untuk tidak mengajarkan sesuatu yang lebih penting.
Nicole