Bagaimana menjadi programmer yang sukses tanpa gelar CS [ditutup]

46

Penafian (Harap baca sebelum melompat untuk menjawab):

Saya telah melihat sejumlah pertanyaan yang mirip dengan yang ingin saya tanyakan, jadi inilah beberapa pertanyaan serupa .

IMHO Mereka tidak sepenuhnya apa yang saya minta, juga tidak selengkap yang saya harapkan (saya tidak bermaksud menepis jawaban untuk pertanyaan di bawah ini, juga saya tidak mendiskreditkan para penanya, saya hanya ingin menjadi sedikit lebih teliti):

Bisakah gelar CS menguntungkan programmer yang lebih tua?

https://softwareengineering.stackexchange.com/questions/80024/importance-of-certifications-for-java-programmer-without-bs-degree

https://softwareengineering.stackexchange.com/questions/81591/in-the-absense-of-a-cs-degree-how-can-i-fill-in-the-gaps-so-to-speak

Pentingnya gelar CS saat melamar pekerjaan pengembangan?

Biar saya perjelas, saya tidak menanyakan yang berikut:

  • Cara mengajar diri saya pemrograman dari awal (tanpa gelar CS)
  • Bagaimana memasarkan diri saya sebagai pengembang perangkat lunak yang baik (tanpa gelar CS)
  • Cara mendapatkan pekerjaan bergaji tinggi yang bagus sebagai pengembang perangkat lunak (tanpa gelar CS)

Sedikit konteks:

Sekarang setelah saya menyangkal, biarkan saya menyempurnakan pertanyaan saya, dimulai dengan sejarah singkat pengalaman saya sebagai pengembang perangkat lunak.

Pertama, saya sangat beruntung. Saya telah diberikan beberapa kesempatan kerja (beberapa proyek PHP / MySQL backend berat, dan beberapa aplikasi WP7 di XAML / C #) di mana saya benar-benar belajar semua yang saya ketahui tentang pengembangan perangkat lunak. Hampir semua pekerjaan pengembangan perangkat lunak yang saya miliki adalah pekerjaan yang saya tidak memenuhi syarat untuk dimiliki (dan saya menjelaskan kepada majikan saya sebelum mereka mempekerjakan saya). Saya tidak ingin memberi diri saya penghargaan di mana itu bukan karena jatuh tempo, tetapi saya akan mengatakan bahwa kerendahan hati yang sempurna membuang kesederhanaan .

Di hampir setiap pekerjaan pengembangan yang pernah saya miliki, saya telah melampaui harapan majikan saya, dan terbukti menjadi aset yang berharga. Tentu saja ada pengecualian 1 . Tetapi poin saya adalah saya cukup cerdas dan mampu mengajari diri sendiri apa yang perlu saya ketahui agar bisa sukses di pekerjaan saya. Dengan setiap pekerjaan yang saya miliki, saya semakin tertarik.

Saya menghadiri kampus Seattle di University of Washington , dan saat ini berada di tahun keempat saya dengan dua tahun tersisa, bekerja pada gelar Matematika. Selama berbagai pekerjaan yang saya miliki (lihat resume saya jika Anda menginginkan daftar itu) saya juga pernah bersekolah sebagai siswa penuh waktu.

Seperti yang saya pikir sebagian besar pengembang akan setuju, mempelajari kursus sarjana umum ed umum, termasuk kursus pemrograman pengantar PALSU PALSU dibandingkan dengan menulis kode nyata, membangun 2 produk nyata , bekerja dengan orang - orang hebat , dan secara positif mempengaruhi kehidupan pengguna 3 .

Jadi ... seiring berjalannya waktu ... Saya menghabiskan lebih banyak waktu dan energi saya untuk bekerja daripada berfokus pada studi saya. Pada saat saya tampil sangat mengerikan , tetapi untuk sebagian besar saya mampu untuk tetap bertahan dengan nilai saya.

Namun program ilmu komputer di UW sangat , sangat , sangat , sangat kompetitif.

Jadi, tidak mengherankan bagi saya ketika saya ditolak oleh program. Dua kali. Ironisnya, jendela setengah jam yang sama di mana saya menerima pemberitahuan penolakan yang selalu sopan, meskipun mengecewakan melalui email, saya mendapat telepon dari Amazon yang menawarkan saya magang musim panas 4 sebagai SDE.

Ketika saya melihat-lihat pria lain seusia saya (21), yang memiliki tujuan yang sama seperti saya dalam pengembangan perangkat lunak, saya merasa cukup baik tentang di mana saya berada, apa yang saya pelajari, siapa saya, dan apa Dapat saya lakukan. Tentu saja ada jauh lebih banyak, jauh, jauh lebih cemerlang dari 21 tahun di luar sana daripada saya sendiri, saya tidak bermaksud mengatakan saya menonjol di tengah orang banyak, hanya karena saya merasa seperti saya tidak berada di belakang kemajuan rekan rata-rata saya .

Saya merasa yakin dengan kemampuan saya untuk menjadi sukses di dunia perangkat lunak. Lebih penting lagi saya merasa yakin dengan kemampuan dan keinginan saya untuk terus tumbuh, belajar, dan merasa rendah hati ketika saya benar-benar membutuhkannya.

Gelar Matematika

Saya menemukan diri saya mengejar gelar Matematika dengan satu-satunya tujuan memiliki gelar. Ada yang mengatakan saya harus keluar dan mulai bekerja sekarang (karena saya memiliki kesempatan untuk melakukannya), dan ada yang mengatakan saya harus benar-benar menyelesaikan gelar saya. Saya sudah memutuskan untuk melanjutkan dengan gelar saya karena alasan yang sama sekali berbeda dari yang cenderung diangkat oleh salah satu kamp, ​​jadi tolong jangan mendorong saya satu atau lain cara dalam hal ini. Pertimbangkan masalah "ditutup" :)

* DEEP BREATH * ... maaf ini lebih lama dari yang saya perkirakan.

Ini pada dasarnya, adalah pertanyaan saya:

  • Bagaimana saya menentukan secara objektif bidang studi apa, pengetahuan umum, dan keterampilan lain yang akan saya peroleh melalui gelar CS yang mungkin belum atau belum saya miliki saat ini?
  • Bagaimana cara saya mengurutkan keterampilan ini agar paling penting?

  • Apa cara terbaik (selama dua tahun ke depan) untuk melengkapi pendidikan saya untuk mendapatkan atribut-atribut tersebut sedemikian rupa untuk menyamai atau bahkan melampaui tingkat sarjana S1 dari universitas top?

Inilah langkah-langkah yang sudah saya ambil:

  1. Tanyakan komunitas pengembangan (posting ini)
  2. Kejar mentorhip dengan pengembang berpengalaman yang berbagi jalur karier yang sama dengan saya
  3. Tetapkan tujuan "belajar" jangka pendek dan panjang dan silabus berikutnya yang menguraikan topik studi
  4. Terus menulis kode dan mengerjakan proyek yang saya sukai

Jika Anda sudah sejauh ini, Anda layak mendapatkan kue :) Saya menghargai Anda mendukung saya.

Jadi ... komunitas pengembangan, pengembang berpengalaman, sesama siswa yang berada di kapal yang sama dengan saya, saran apa yang akan Anda miliki?

Juga ... harap ingat sanggahan saya di bagian atas posting ini tentang apa yang saya TIDAK minta.

Memperbarui:

Saya menyadari bahwa saya tidak memberikan parameter yang sangat konkret untuk apa yang saya anggap sebagai "jawaban" yang berhasil untuk pertanyaan saya. Saya pikir pertanyaannya sangat kabur, dan dapat menjamin sejumlah jawaban "benar".

Setelah jangka waktu yang wajar saya akan memilih jawaban yang sesuai dengan atribut berikut:

  • Jelaskan alasan di balik jawaban mereka
  • Dapat berbicara dari beberapa tingkat pengalaman (baik itu mempekerjakan / berinteraksi dengan atau menjadi seseorang yang memiliki / berada di posisi saya)
  • Ringkas tetapi teliti, memberikan prinsip luas lebih disukai digabungkan dengan contoh-contoh spesifik
  • Terakhir, mengingat panjang yang cocok dengan yang di atas tampaknya perlu, harap jadikan itu jawaban yang dikomunikasikan dengan baik dan menyenangkan untuk dibaca. Orang lain yang mungkin tertarik dengan hal ini di masa depan saya harap akan dihibur serta dididik oleh tanggapan.

Jadi ada beberapa parameter untuk "benar". Mereka sangat tinggi, saya pikir, tetapi saya telah merancang mereka sebagai semacam garis besar untuk apa yang saya bayangkan sebagai jawaban "terbaik". Tentunya diberi waktu yang cukup saya akan memilih respons pencocokan terdekat sebagai "jawaban".


(1) - Saya mengerjakan versi sebelumnya dari situs web ini, dan sementara kami tidak memiliki yang eksplisit 
      berbicara tentang hal itu, saya merasa bahwa saya tidak dapat melakukannya dengan baik sama sekali (ini bisa terjadi 
      dibuktikan oleh fakta bahwa mereka telah mengubah situs web mereka sepenuhnya)
(2) - Pertama, ya, ini produk nyata (walaupun saya menulis posting ini di Chrome ...), dan
      itu menendang pantat. Kedua, saya adalah pengembang magang sekolah menengah dalam ujian, menulis bukti
      kode konsep untuk beberapa fitur baru untuk IE8 ... jadi beberapa waktu yang lalu.
(3) - Pada saat posting ini saya adalah pengembang yang menulis aplikasi ini, saya tidak lagi
      bertanggung jawab untuk basis kode itu
(4) - Magang saya akan dimulai pada Juni 2012, dan saya akan bekerja di Web Store 
      tim.
Paul Hazen
sumber
17
Dunia membutuhkan lebih banyak programmer dengan gelar matematika. Kata Nuff.
Pieter B
1
Pasar untuk psikolog dan layanan konsultasi atau saran individu lainnya harus besar. Saya berpikir untuk berganti pekerjaan ....
Ingo
16
Mulailah dengan mengedit pertanyaan ini dan potong menjadi dua.
JeffO
8
@ PaulHazen setelah Anda menghapus latar belakang yang sangat bertele-tele dan konten penafian dan sampai ke pertanyaan Anda yang sebenarnya, Anda menanyakan tiga hal: bagaimana Anda menentukan apa yang Anda lewatkan karena tidak memiliki gelar CS, bagaimana mendapatkan apa yang Anda lewatkan , dan bagaimana memprioritaskan apa yang Anda lewatkan. Ketiga pertanyaan sepenuhnya tercakup oleh pertanyaan yang digandakan. Jika Anda tidak menyukai jawabannya, tawarkan hadiah : itulah tujuan mereka.
7
@ PaulHazen Atau, jika Anda tidak tertarik dengan pertanyaan yang Anda cantumkan (yang merupakan duplikat dari pertanyaan sebelumnya), perbaiki pertanyaan Anda untuk secara khusus hanya menanyakan tentang sesuatu yang baru. Pertanyaan Anda memiliki terlalu banyak informasi — sebagian besar di antaranya mungkin tidak perlu untuk masalah yang Anda hadapi — dan harus dipasangkan untuk menanyakan tentang masalah spesifik yang Anda alami yang belum dicakup oleh pertanyaan lain.

Jawaban:

17

OK, saya merasa terlalu menggoda untuk tidak menjawab pertanyaan Anda, jadi inilah saya ...


Beberapa hal tentang saya terlebih dahulu


Saya berumur 26 tahun , dan terima kasih kepada ayah saya (btw, ahli matematika dan saat ini bekerja sebagai profesor) Saya memiliki kesempatan dari tahap awal kehidupan saya untuk berada di dekat komputer. (kembali pada tahun 1986 ketika saya lahir, meskipun bukan hal yang paling umum pada masa itu, kami selalu memiliki satu atau dua komputer di rumah). Itu dikatakan, dan - jelas karena penasaran saya dan cenderung berorientasi matematika / pemecahan masalah - tidak lama sebelum saya menemukan diri saya jatuh cinta dengan pemrograman. Pertama dengan Pascal, pada usia 7-8 dan kemudian hampir semua yang lain mengikuti.

Pertama, izinkan saya mengatakan bahwa, ketika di sekolah, saya selalu unggul dalam hal apa pun yang berhubungan dengan matematika, hanya karena saya menyukainya, dan jujur ​​saya dapat dengan mudah mengikuti contoh ayah saya dan menjadi ahli matematika juga. Tetapi itu tidak terjadi.

Apa yang terjadi mungkin adalah kesalahan terbesar dalam hidup saya (sejauh ini): Apa yang akan Anda sebut ketika seseorang jatuh cinta dengan kode , yang berbicara lebih dari 15 bahasa dan telah menulis ribuan baris kode (dari kompiler ke kernel mikro dan web kerangka kerja) pada usia 18, tiba-tiba (alasannya masih terlalu jelas dalam pikiran saya, tetapi secara umum, bahkan jika halus, pengaruh lingkungan Anda tidak pernah terlalu diabaikan) memutuskan untuk mengejar karir di bidang Kedokteran ? Saya kira "kesalahan".

Hasil? 5 tahun kemudian (pada usia 23), dan 1 tahun sebelum menyelesaikan gelar Med saya (masih mengerjakan proyek pemrograman sumber terbuka pribadi sebagai hobi sepanjang waktu), saya memutuskan bahwa saya sudah cukup dan memutuskan untuk berhenti. Dan bukan saja saya sangat membenci bidang baru ini (Kedokteran), tetapi juga bahwa ada sesuatu yang meresahkan dalam seluruh situasi ini, gatal yang tak terpuaskan tersembunyi jauh di dalam ... ( apa jadinya jika ...? ) Selain itu, saya baru menyadari bahwa hobi saya , apa yang saya anggap hebat tetapi bahkan tidak dibayangkan sebagai pekerjaan nyata, tidak hanya dapat menghasilkan uang tetapi juga memberi saya banyak hal + membuat saya bahagia sebagai individu. Jadi, saya memutuskan untuk berhenti. (= pilihan terbaik, meskipun agak terlambat, saya pernah membuat).

Jadi, di sinilah saya sekarang, seorang psikiater yang tadinya akan menjadi dokter (seorang psikiater yang mengalami gangguan saraf, tepatnya; saya bodoh!) Meraih gelar CS (pada tahun ke-3 saya sebenarnya; dan, sejujurnya, mengejar itu agar tidak berakhir dengan kekurangan dalam kualifikasi tipikal yang ditakuti itu ...) dan seorang profesional yang lebih senang mengerjakan sesuatu yang saya kagumi dan pasti subjek yang paling saya tawarkan.


Beberapa pengamatan (dari pengalaman saya sendiri)


  • Pemrograman adalah salah satu dari sedikit bidang di mana yang benar-benar baik akan selalu naik, tidak peduli apa. Dan ini jelas BUKAN masalah kualifikasi yang khas (jujur, jika saya memiliki perusahaan dan ingin merekrut programmer, saya dapat dengan mudah mengatakan siapa yang baik dalam hitungan menit - terlepas dari apakah ia memiliki gelar apa pun atau tidak)

  • Yang diperlukan untuk menjadi seorang programmer yang baik adalah: kecerdasan berorientasi matematika (tapi BUKAN matematika itu sendiri) dan semangat (yang akan membuat berjam-jam belajar kesenangan bukan beban, dan, bahkan jika saya belum menyadarinya, kepercayaan saya, saya sudah belajar BANYAK materi tentang subjek dalam hidup saya, murni pada saya sendiri) . Pendidikan formal adalah hal yang baik, tetapi agak berlebihan. Unsur inti kesuksesan adalah dua yang pertama.

  • Matematika jelas merupakan tempat kelahiran CS. Tapi CS bukan hanya matematika lagi. Saya selalu memiliki otak berorientasi matematika yang kuat, tetapi saya tidak berarti seorang guru matematika. Dan jujur, dalam pemrograman setiap hari, (kecuali jika Anda ingin membangun mesin grafis atau sesuatu yang terlalu lokal) Anda kemungkinan besar tidak akan pernah membutuhkan selain aritmatika sederhana (penambahan, pengurangan, perkalian, pembagian, modulo) dan beberapa hal tentang array. (banyak yang akan tidak setuju dengan saya, mungkin matematikawan atau programmer yang terlalu berorientasi akademik, tapi pasti menguasai kalkulus BUKAN apa yang diperlukan untuk menjadi programmer yang baik). Memiliki latar belakang matematika yang baik mungkin akan membantu Anda, tetapi BUKAN karena matematika itu sendiri; itu akan membantu Anda hanya berdasarkan pada satu hal umum yang dibagikan kedua bidang ini: keterampilan memecahkan masalah.

  • Matematika adalah ilmu (dan ilmu yang saya hormati).

  • Pemrograman adalah seni. (Dan ilmu terapan juga, jika Anda bersikeras) Tapi ingatlah itu: seni - dan itulah sebabnya saya selalu memperlakukannya. Dan seperti halnya semua seni, itu tidak bisa diajarkan. Saya mungkin mengajari Anda cara formal menggambar wajah dan membuat Anda lebih baik dari rata-rata tetapi itu tidak akan membuat Anda bukan seorang Da Vinci, atau seorang Klimt. Mona Lisas dilukis oleh Da Vincis, dan bukan oleh pelukis yang terdidik dengan cermat. Kode hebat ditulis oleh seniman kode hebat. Dan keterampilan dan pengabdian dapat dengan mudah mengimbangi pendidikan formal.


Jadi, apa yang diperlukan untuk menjadi programmer yang benar-benar * baik?


  • Menjadi cerdas, keterampilan memecahkan masalah yang hebat dan hasrat untuk subjek (jika Anda tidak memilikinya, tinggalkan saja; menjadi biasa-biasa saja bukan alasan)
  • Banyak waktu untuk dikhususkan untuk subjek
  • Belajar setiap saat ('karena Anda tidak akan pernah tahu semuanya, dan perhatikan: mengapa' belajar 'harus dikaitkan dengan tingkat tertentu? Saya selalu merasa jauh lebih senang melakukan sesuatu dengan langkah saya sendiri ... )
  • Menulis kode sepanjang waktu (tidak peduli berapa banyak buku yang telah Anda baca; tingkat pengkodean Anda secara langsung setara dengan jumlah kode yang Anda tulis)
  • Dan lagi, CINTA untuk subjek (jika Anda tidak cukup menyukainya, dan maksud saya benar - benar menyukainya, semua di atas cepat atau lambat akan menjadi tak tertahankan; bagi saya, pengkodean sebagai pekerjaan masih seperti dibayar untuk .. (menonton film: benar-benar absurd tapi juga hebat)

Tentang pertanyaan Anda


  • Bagaimana saya menentukan secara objektif bidang studi apa, pengetahuan umum, dan keterampilan lain yang akan saya peroleh melalui gelar CS yang mungkin belum atau belum saya miliki saat ini?

Meskipun, saya harus benar-benar tahu apa yang termasuk gelar Matematika, biarkan saya meringkas apa yang kemungkinan besar akan Anda lewatkan dari gelar CS (sebagai program / mata pelajaran / dll - terinspirasi oleh program studi uni saya ) tanpa urutan tertentu :

  • Desain Logika Sistem Digital (beberapa hal sirkuit tingkat rendah, dan / atau / xors / etc - tampaknya tidak terlalu terkait, tetapi masih sangat mendidik)
  • Arsitektur Komputer (bersama dengan beberapa coding Perakitan; Anda kemungkinan besar tidak akan pernah menggunakannya, tetapi Anda tidak bisa mengatakan seberapa besar itu dapat membentuk sikap Anda sebagai seorang programmer)
  • Struktur Data (dari daftar yang ditautkan, ke pohon yang kompleks, dll; sesederhana kelihatannya, cepat atau lambat Anda akan memerlukan latar belakang yang baik tentang ini; menggunakan solusi siap pakai yang tidak Anda pahami bukanlah sesuatu yang baik programmer akan melakukan)
  • Kompiler (ya, kompiler! Apakah Anda pernah menulis kompiler? Mungkin tidak; tetapi kecuali jika Anda bisa menulis satu, Anda tidak akan pernah benar-benar tahu cara kerja ...)
  • Sistem Operasi (sama seperti di atas)
  • Jaringan komputer
  • Inteligensi Buatan dan Sistem Pakar (kemungkinan besar Anda tidak akan pernah membuat kode di Prolog juga; tetapi itu masih merupakan salah satu hal yang dapat membentuk otak pengkodean Anda dan membuatnya melihat sesuatu dari perspektif yang sangat berbeda)
  • Bagaimana cara saya mengurutkan keterampilan ini agar paling penting?

Mengetahui apa yang harus diprioritaskan di bidang yang selalu berubah karena CS akan selalu menjadi pertaruhan - permainan menebak .

Kenali apa yang ingin Anda lakukan, dan percayalah pada instat Anda. Tentu saja, memiliki pengetahuan dasar yang kuat adalah suatu keharusan. Tapi apa yang akan Anda selidiki, sepenuhnya terserah Anda. Juga, rencanakan karier Anda dengan hati-hati: jika Anda ingin dipekerjakan, maka pilih target Anda dan jadilah hebat (mis. Ingin dipekerjakan oleh Google dan tidak tahu cara membaca skrip Python sederhana mungkin adalah salah satu dari situasi tanpa jalan itu ) . Jika Anda memulai sesuatu sendiri (perusahaan), maka Anda tidak memiliki "bos" untuk memuaskan; pilih saja yang paling cocok untukmu.

Sebagai contoh, jika Anda ingin melakukan sesuatu yang berhubungan dengan web, saya pasti akan menyarankan Anda untuk: PHP / MySQL / HTML / CSS / JavaScript (+ jQuery / AJAX) . Tapi itu hanya aku. Seseorang mungkin menyukai (atau melihat lebih banyak di masa depan) Ruby / Rails daripada di PHP.

Saya, misalnya, sekarang terutama mengkode dalam Objective-C / Cocoa . Apakah saya menyarankan Anda untuk mengejar itu? Tentu saja tidak. Yaitu: kecuali Anda suka Mac atau menginginkan karier yang menjual perangkat lunak terkait Mac / iPhone. Jika Anda tertarik pada pengembangan Windows, memilih C # / .NET Framework mungkin akan menjadi pilihan terbaik Anda. (jika Anda ingin mendapatkan gambaran tentang apa yang paling saya sukai, lihat saja di Profil StackOverflow saya )

  • Apa cara terbaik (selama dua tahun ke depan) untuk melengkapi pendidikan saya untuk mendapatkan atribut-atribut tersebut sedemikian rupa untuk menyamai atau bahkan melampaui tingkat sarjana S1 dari universitas top?

Belajar banyak (buku, internet, kode orang lain, apa pun) dan tulis kode sebanyak yang Anda bisa.

Ah, dan cobalah untuk mendapatkan pekerjaan dalam kode apa pun yang terkait. (Saya pertama kali mulai bekerja sebagai pekerja lepas dan ini merupakan pengalaman yang sangat berharga, hanya untuk melihat bagaimana semuanya bekerja di dunia nyata).


Hanya 0,2 sen ramah saya ... :-)

Sidenote: Saya tahu bahwa beberapa poin saya mungkin tampak kontroversial, dan saya yakin akan ada banyak yang akan tidak setuju dengan saya. Itu bisa diterima. Tapi itu tidak mengubah cara saya melihat sesuatu - dan terutama hal yang saya sukai.

Dr.Kameleon
sumber
Ini persis apa yang saya cari. Terima kasih! Hampir setiap tanggapan lainnya juga baik, sangat sedikit yang berisi sesuatu yang salah atau tidak membantu. Saya akan memperbarui pertanyaan untuk memasukkan bagian kecil tentang mengapa saya memilih ini, dan tautan ke posting blog yang menyempurnakannya secara lebih rinci (alasan untuk menempatkan penjelasan seperti itu di blog saya alih-alih Pemrogram karena sudah BESAR panjang posting, serta meningkatnya jumlah moderator yang peduli yang sudah merasa pertanyaannya tidak cocok untuk situs ini). Tetap diposting. Dan terima kasih lagi.
Paul Hazen
@ PaulHazen Terima kasih! Senang telah membantu (JIKA saya melakukannya) ... (Sekarang, untuk jawaban BESAR dari saya ... argh ... Sistem otomatis mengenalinya sebagai pos "komunitas wiki" dan saya mencoba untuk mendapatkan moderator mengembalikannya ke kondisi
semula:
Di meta ( meta.programmers.stackexchange.com/questions/3513/... ) Saya sebenarnya mendorong mereka untuk memindahkannya ke tujuan yang lebih tepat. Menurut FAQ resmi, pertanyaannya tidak sesuai untuk forum ini. Namun, mengamati penggunaan Programer secara de facto , saya merasa pantas untuk berada di sini. Para moderator dapat memutuskan di tempat yang paling cocok. Untuk meringkas pikiran saya pada pindah: Menurut apa Programmer yang seharusnya itu tidak milik di sini, tapi menurut apa Programmer adalah sangat cocok.
Paul Hazen
@ PaulHazen Yah, setidaknya bagi saya (meskipun saya tidak ahli dalam hal-hal SO), sepertinya benar-benar tepat.
Dr.Kameleon
Ya, saya hanya akan mengangkat tangan saya ke atas. Selama orang bisa menggunakan pertukaran google atau stack untuk setidaknya menemukan jawabannya, saya senang. Konten perlu mudah ditemukan di masa depan oleh orang-orang yang memiliki pertanyaan yang sama.
Paul Hazen
18

Bagaimana saya menentukan secara objektif bidang studi apa, pengetahuan umum, dan keterampilan lain yang akan saya peroleh melalui gelar CS yang mungkin belum atau belum saya miliki saat ini?

Jelajahi kurikulum departemen CS di UW, pinjam dan telusuri bacaan yang diperlukan, lihat ujian sebelumnya dan latihan lab (tugas pekerjaan rumah). Jika Anda tidak tahu bagaimana Anda akan mendekati masalah, Anda memiliki lubang dalam pengetahuan Anda.

Bagaimana cara saya mengurutkan keterampilan ini agar paling penting?

Pikirkan pemrograman seperti apa yang ingin Anda lakukan di masa depan. Jika Anda senang membangun situs web dan aplikasi CRUD, tampaknya Anda sudah memiliki semua pengetahuan yang Anda butuhkan.

Pendidikan CS memasuki gambar jika Anda tertarik memahami bagaimana [didistribusikan] database, server web, kompiler dan interpreter, sistem operasi, protokol jaringan dll. Bekerja di bawah tenda , dan tertarik untuk membangun sistem seperti itu sendiri.

Apa cara terbaik (selama dua tahun ke depan) untuk melengkapi pendidikan saya untuk mendapatkan atribut-atribut tersebut sedemikian rupa untuk menyamai atau bahkan melampaui tingkat sarjana S1 dari universitas top?

Saya tidak tahu. Bagi saya, manfaat terbesar dari universitas adalah 1) memperluas wawasan saya (saya sudah lupa 90% dari perincian yang saya pelajari di universitas, tetapi saya ingat konsep dan ide), dan 2) menjaga motivasi intrinsik saya untuk mempelajari hal-hal dari memudarnya: Lebih mudah untuk menjaga motivasi ketika Anda bekerja menuju tujuan - ujian, ujian lain, dll sampai Anda lulus. (Juga, menyusun pendidikan mandiri bukanlah tugas yang mudah.)

[Ditambahkan: pilih universitas yang program CS-nya ingin Anda ikuti, pilih mata kuliah dalam topik yang Anda minati dan ikuti sendiri kurikulumnya: tugas pekerjaan rumah, ujian, dll. Sebagian besar program menerbitkan slide kuliah dan tugas / ujian dari tahun-tahun sebelumnya. .]

Namun, sepatah kata nasihat: JANGAN menyerahkan gelar matematika Anda. Setiap orang yang cerdas dapat mengajar diri mereka sendiri untuk memprogram, tetapi matematika akan memberi Anda keunggulan kompetitif jika Anda ingin bekerja pada aplikasi selain CRUD / frontend, misalnya simulasi cairan dan mekanis, grafik komputer, pemrosesan gambar, pengenalan dan aplikasi pembelajaran mesin, (bahkan membiayai!) dll.

PEMBARUAN 2 - pengalaman [lama]: Saya memperoleh gelar master di fakultas EE: dua tahun pertama adalah kurikulum umum (fisika, teknik elektro, elektronik analog & digital, dan banyak matematika - aljabar linier; matematika diskrit; matematika diskrit; nyata, vektor dan analisis terapan kompleks.) Ini sangat berharga, esp. bagian EE dan elektronik - memungkinkan saya untuk bekerja pada proyek campuran HW-SW, dan bekerja sama dengan desainer HW sangat menarik. Saya tidak berkontribusi apa pun untuk desain HW, tapi saya bisa mengikuti perancang HW "men-debug" diagram skematiknya dan mengajukan pertanyaan yang masuk akal [kami tidak yakin apakah bug ada di SW atau HW - ternyata ada di HW: -)].

Kemudian garis bercabang dan saya memilih garis CS. Beberapa "detail" berkontribusi pada pengembangan konsep (misalnya, "menjalankan" algoritma Dijkstra dengan tangan). Saya juga mempelajari detail tentang cara kerja CPU (sinyal bus, menafsirkan diagram bus, eksekusi, dll.) Pada contoh Motorola 68000 yang sudah usang, tetapi konsep yang dipelajari melalui detail tidak jauh berbeda dengan CPU modern juga.

Rincian lainnya, khususnya. Implementasi SW (misalnya, mengimplementasikan Dijkstra), bagi saya [karena saya sudah cukup mahir dalam coding di sekolah menengah] latihan sia-sia dalam debugging dan berkontribusi NOL untuk memahami konsep.

Dan kemudian saya mendaftar ke program PhD, di mana saya harus mengambil kursus wajib. Saya kecewa dengan pilihan program studi, karena banyak dari mereka tampaknya lebih berorientasi pada tuntutan industri (misalnya, menggunakan Python untuk analisis data ilmiah - terima kasih, saya dapat memprogram dan saya sangat mampu mengajari diri sendiri bahwa - - yang lagi-lagi melibatkan banyak pengkodean tidak berguna) daripada mengajarkan konsep-konsep dasar (untungnya, saya menggali kursus tentang optimasi diskrit, analisis statis program, dan analisis formal dengan Promela).

Jadi, beberapa detail berguna untuk konsep ingraining, dan beberapa ada beban langsung yang tidak perlu (contoh lain: pemrograman komunikasi port serial antara dua komputer. Saya sudah terbiasa membaca dan menafsirkan spesifikasi HW dan pemrograman HW melalui register, jadi itu adil. (membosankan. Mungkin saya naif dengan asumsi bahwa rata-rata menjadi insinyur CS tidak perlu dididik tentang cara membaca dokumen HW).

Kesimpulannya: paparkan diri Anda pada banyak konsep berbeda (ide tingkat tinggi) dan perincikan bagi mereka yang ingin Anda prioritaskan dan menjadi sangat pandai. [Kamu TIDAK BISA sangat pandai dalam segala hal!]

zvrba
sumber
+1 pasti. Terlepas dari kenyataan bahwa Anda lupa 90% dari perinciannya, apakah Anda akan mengatakan bahwa pengalaman mempelajari perincian-perincian itu adalah apa yang tertanam dalam konsep dan gagasan, atau akankah lebih berharga untuk menginvestasikan waktu dalam mempelajari lebih sedikit perincian dan lebih banyak gagasan konseptual / tingkat yang lebih tinggi ?
Paul Hazen
@PaulHazen Lihat hasil edit baru (mulai dari UPDATE2 - ini tidak cocok dengan kolom komentar;))
zvrba
Sangat menegaskan langkah-langkah yang saya ambil saat ini. Bagian yang ditambahkan sangat berharga. Saya merasa seperti daftar hal-hal yang ingin saya pelajari detail terlalu lama untuk masuk akal, saya secara historis memiliki masalah pelingkupan dalam hal itu. Apakah ada cara yang baik untuk melihat industri ini, dan mengidentifikasi topik mana yang menarik minat saya untuk mempelajari detail? Atau apakah Anda akan mengatakan itu tidak masalah yang saya pelajari, selama saya menyelam lebih dalam di set yang lebih kecil? Tampaknya industri bisa sulit untuk memperkirakan dalam hal ini.
Paul Hazen
1
Mencoba meramalkan industri adalah permainan yang hilang dimuka [misalnya, saya tidak yakin ada yang bisa menebak bahwa Twitter - (hampir) klon IRC untuk web - akan menjadi tren seperti itu. Bagi saya masih merupakan misteri bagaimana mereka akan menghasilkan uang dalam jangka panjang.]. Anda harus mengambil pilihan proaktif tentang pekerjaan seperti apa yang ingin Anda lakukan dan mencari tahu apa yang diperlukan untuk mendapatkannya. Bagaimana? Temukan seseorang yang sudah bekerja di industri target Anda dan bicarakan dengan mereka.
zvrba
1
@ Paul Konsepnya vital, tetapi detailnya (biasanya) tidak. Anda dapat melihat detailnya saat Anda membutuhkannya, tetapi Anda harus mempelajari gambaran besarnya untuk mengetahui bahwa ada sesuatu yang layak dicari di area tersebut.
Donal Fellows
7

Saya mewawancarai dan berpartisipasi dalam merekrut banyak orang muda yang baru lulus dari perguruan tinggi. Saya belum mempekerjakan orang berdasarkan keterampilan subjek yang mereka ambil dari program apa pun yang mereka ambil. Alasannya sederhana: tidak ada program CS (atau program lain) yang saya temui mengajarkan keterampilan konkret yang terkait dengan pemrograman atau pengembangan perangkat lunak yang ada di level profesional, komersial . Mampu membuat model dan solusi untuk persamaan diferensial yang kompleks dan menulis algoritma pengurutan tujuan khusus yang dioptimalkan mungkin memiliki nilai akademis dan / atau ilmiah, tetapi tidak berpengaruh pada pengembangan perangkat lunak umum.

Apa yang AKU cari saat itu? Yah, saya berharap lulusan perguruan tinggi telah menyempurnakan seni belajar. Lagipula, perguruan tinggi yang baik itu seharusnya mengajar murid-muridnya. Bagaimana menganalisis dan memecah masalah-masalah umum menjadi komponen-komponen logis dan diskrit yang dapat dipecahkan. Pendekatan metodis untuk menemukan, mengevaluasi, mengatur dan menerapkan pengetahuan dan informasi menuju solusi.

Juga, saya mencari orang-orang yang mengerti bahwa sekelompok orang, bekerja bersama dan berkomunikasi, bernilai jauh lebih banyak daripada jumlah individu itu. Itu membutuhkan kedewasaan dan kerendahan hati serta kemampuan untuk memberi dan meminta bantuan.

Jadi, untuk kembali ke lingkup pertanyaan Anda: sementara gelar CS mungkin meningkatkan peluang Anda untuk mendapatkan wawancara pertama dari perguruan tinggi, saya merasa tidak ada hubungannya dengan keberhasilan atau kemahiran Anda sebagai seorang pengembang. Saya selalu mengikuti filosofi "merekrut sikap, melatih keterampilan" dan itu terbayar dengan baik.

Saran saya: lanjutkan dengan gelar matematika Anda jika itu sesuatu yang menarik minat Anda. Pendidikan ilmiah apa pun akan membantu Anda dengan baik, jadi pilihlah yang paling Anda sukai karena itulah yang paling mungkin Anda kuasai. Kemudian fokus pada mempelajari hal-hal penting: cara belajar, cara menganalisis, dan mendekati pemecahan masalah di cara terstruktur, bagaimana berinteraksi dan bekerja sama dengan orang lain, bagaimana mengambil kepemimpinan dan tanggung jawab untuk pengiriman Anda sendiri dan rekan setim Anda. Sisanya hanya teknologi dan pengkodean, alat perdagangan. Itu, Anda bisa dan akan belajar sendiri. Ambil dan pelajari beberapa pengetahuan tujuan umum, seperti pola desain populer dan paradigma arsitektur. Mulai menulis program untuk berlatih. Pilih beberapa bahasa dan basis teknologi yang cukup mutakhir, tetapi jangan membuat kesalahan dengan memikirkannya ' Ini yang terakhir yang akan Anda pelajari. Alat dan bahasa berubah setiap saat sehingga pengembangan perangkat lunak merupakan proses pembelajaran yang konstan.

pap
sumber
Apakah adil untuk mengatakan bahwa dari sudut pandang Anda ada sedikit atau tidak sama sekali dalam gelar CS yang dengan sendirinya membantu menjadi programmer yang sukses? Saat ini saya suka jawaban Anda yang terbaik, Anda tentu saja menemukan banyak hal yang saya coba cari tahu dan mengerti. Bisakah Anda meminjamkan konteks tambahan ke area dalam CS yang Anda rekrut? Saya membayangkan perekrut yang mempekerjakan lulusan baru untuk bekerja pada sistem operasi mungkin memiliki perspektif yang berbeda dari diri Anda (tetapi saya bisa benar-benar salah tentang hal itu). Hargai waktu yang Anda ambil, ini sangat membantu
Paul Hazen
Saya bekerja untuk perusahaan konsultan IT yang merekrut cukup banyak di braket pengalaman 0-1 tahun. Tidak bisa menjawab dengan percaya diri tentang toko pengembangan OS (ada berapa banyak?) Tapi saya akan menganggap hal yang sama terjadi di sana, jika mereka pintar. Sangat sedikit lulusan yang akan memiliki keterampilan materi pelajaran yang cukup untuk dapat bersaing dalam hal itu saja, sehingga Anda mempekerjakan untuk sikap, potensi dan kemampuan untuk belajar.
pap
Menarik. Memang memberi Anda "+1", dan saya suka apa yang Anda katakan lebih dari orang lain, namun Anda lebih akurat menjawab pertanyaan, "bagaimana saya berhasil masuk ke bidang pengembangan perangkat lunak" Informasi yang tak ternilai untuk memastikan , tapi minat saya adalah memahami atribut seorang programmer yang sukses , bukan atribut seorang programmer yang bisa diperbaiki (ya jelas programmer yang sukses juga bisa diperbaiki, tetapi tidak selalu sebaliknya).
Paul Hazen
Saya tidak mempekerjakan orang yang bukan saya sukses atau memiliki potensi dan kapasitas untuk menjadi sukses. Jadi bagi saya, "bisa diperbaiki" dan "sukses" adalah hal yang sama. Jika ada yang merekrut berdasarkan kriteria lain, mereka salah atau buruk dalam menemukan bakat. Either way, mungkin bukan tempat yang baik untuk bekerja. Namun, kuncinya sebagai pemberi kerja adalah mengetahui cara memanfaatkan potensi karyawan Anda dan mengubahnya menjadi kesuksesan nyata. Itu adalah campuran dari pelatihan, bimbingan, dan pelatihan dan jika Anda tidak memilikinya, tidak peduli seberapa berbakat orang yang Anda pekerjakan.
pap
7

Ini pada intinya, adalah pertanyaan saya: Bagaimana saya menentukan secara objektif bidang studi apa, pengetahuan umum, dan keterampilan lain yang akan saya peroleh melalui gelar CS yang mungkin belum atau belum saya miliki saat ini?

jawaban 1

Jika Anda belajar sesuatu yang baru dari studi Anda. Kemudian Anda dapat mengatakan secara objektif bahwa Anda memperoleh ini melalui gelar CS.

A1. Mengapa

Gelar CS secara konseptual adalah tentang belajar. Jika seseorang kembali dari gelar CS tanpa perbedaan bersih, maka tujuan intinya tidak terpenuhi. Ujian dan kursus adalah ukuran "resmi" dari apa yang telah dipelajari. Namun, pemahaman individu (sudahkah saya mempelajari sesuatu yang baru?) Harus menjadi ukuran objektif yang lebih baik.

A1. Pengalaman

Saya sama-sama kuliah, dan sekarang bekerja secara profesional. Saya memilih gelar Master dalam Ilmu Komputer karena saya ingin memperluas pemahaman saya dan saya memiliki hasrat untuk belajar.

Dunia saya telah berkembang sebagai hasil dari mendapatkan Master dalam komputasi. Dunia saya juga berkembang dari bekerja secara profesional.

Bagaimana cara saya mengurutkan keterampilan ini agar paling penting?

Jawaban 2

Pentingnya relatif pada siapa yang mengajukan pertanyaan dan untuk situasi apa. Jika untuk pertumbuhan pribadi , maka itu semua penting. Jika ini untuk industri, maka hal-hal seperti algoritma dan praktik OOP / perangkat lunak yang baik adalah penting.

A2. Mengapa

"Ruang lingkup" kepentingan sangat tergantung pada "konteks". Tanpa konteks, kelebihan keterampilan sulit untuk dipilah.

A2. Pengalaman

Saya telah menemukan bahwa keterampilan yang diperoleh dari "universitas" vs "di lapangan" berbeda. "Keterampilan" di universitas lebih banyak "teori", dari industri lebih "praktik". Untuk alasan ini, perbedaan ini berarti bahwa keterampilan memang berperingkat berbeda dalam hal kepentingan.

Apa cara terbaik (selama dua tahun ke depan) untuk melengkapi pendidikan saya untuk mendapatkan atribut-atribut tersebut sedemikian rupa untuk menyamai atau bahkan melampaui tingkat sarjana S1 dari universitas top?

Jawaban 3

Dorong diri Anda melampaui titik kehancuran, dan saat Anda istirahat teruslah menghancurkan diri Anda lagi.

Apa yang saya maksud?

Jika Anda sampai pada titik di mana Anda tidak mengerti, maka Anda telah menghancurkan diri sendiri. Teruslah belajar sampai Anda mengerti. Kemudian dorong lebih jauh sampai Anda menemukan sesuatu yang tidak Anda mengerti (ad infinitum) .

A3. Mengapa

Jika Anda hanya belajar dan tetap dalam batas Anda, Anda hanya akan "ok". Anda tidak ingin hanya "ok". Anda ingin menjadi "yang terbaik" yang Anda bisa. Anda tidak dapat mencapai potensi nyata Anda, jika Anda tidak terus-menerus mendorong melampaui batas Anda.

A3. Pengalaman

Saya akan selalu menjadi siswa seumur hidup, saya tidak akan menyebutkan keahlian saya saat ini, jika Anda ingin tahu, Anda bisa melihat profil saya.

Satu hal yang akan saya katakan adalah itu. Saya tidak pernah puas dengan pengetahuan saya saat ini. Saya ingin terbang lebih tinggi, melihat lebih jauh, dan melangkah lebih dalam.

Malam gelap
sumber
Ucapan yang baik tentu saja, ini beresonansi dengan saya. Lihat pembaruan jika Anda bertanya-tanya mengapa saya menahan diri untuk tidak menandai respons apa pun sebagai "benar" dulu.
Paul Hazen
Dan pembaruan yang bagus. Jaga iman, saya tidak akan lupa untuk menandai jawaban ketika saatnya tiba.
Paul Hazen
1
Bisakah Anda membersihkan jawaban Anda? Anda memiliki dua header bagian berulang, dengan konten yang berbeda tetapi serupa di bawah masing-masing.
Paul Hazen
Halo Paul, saya tidak yakin bagaimana Anda ingin saya membersihkannya. Saya kira itu memang terlihat sedikit membingungkan. Setiap sub judul, ini terkait dengan setiap pertanyaan, yaitu setiap "pertanyaan" memiliki "Mengapa" dan "Pengalaman" untuk mendukung jawaban seperti yang Anda minta dalam pembaruan Anda. Saya sangat senang membuat perubahan dalam hal kejelasan.
Darknight
Ohhh ... itu yang sangat membingungkan saya, bisakah Anda menambah heading atau menggunakan teks ** tebal ** untuk menandai subtitle? Saya pikir itu akan berjalan bersama dalam meningkatkan kejelasan.
Paul Hazen
4

Bagaimana saya menentukan secara objektif bidang studi apa, pengetahuan umum, dan keterampilan lain yang akan saya peroleh melalui gelar CS yang mungkin belum atau belum saya miliki saat ini?

Lihat saja persyaratan gelar, lalu cari silabus untuk setiap kelas.

Bagaimana cara saya mengurutkan keterampilan ini agar paling penting?

Anda tidak dapat benar-benar melakukan ini sendiri tanpa melihat ke belakang. Saya akan mengatakan hal yang paling penting yang kurang dimiliki oleh programmer yang belajar sendiri adalah analisis dan desain algoritma. Sisanya bisa diambil sepotong makan.

Apa cara terbaik (selama dua tahun ke depan) untuk melengkapi pendidikan saya untuk mendapatkan atribut-atribut tersebut sedemikian rupa untuk menyamai atau bahkan melampaui tingkat sarjana S1 dari universitas top?

Bahkan jika Anda tidak mengikuti program ini, Anda sering dapat mengambil kelas dari departemen lain sebagai pilihan. Salah satu kelas favorit saya adalah kelas proyek dari teknik dirgantara di mana saya bekerja pada elektronik dan firmware untuk satelit kecil.

Anda juga dapat membeli buku teks yang digunakan kelas yang Anda inginkan. Saya melakukan itu untuk beberapa kelas saya tidak bisa masuk ke dalam jadwal saya. Pilihan lain adalah MIT open courseware .

Karl Bielefeldt
sumber
Pengguna berpengalaman seperti itu, terkejut Anda tidak meluangkan waktu untuk membaca jawaban yang diposkan pengguna lain, jawaban Anda hampir identik dengan beberapa yang sudah ada di sini. Harap berhati-hati untuk meninjau jawaban yang sudah ada sebelumnya, atau jika Anda pikir jawaban Anda berbeda, bantu klarifikasi untuk saya.
Paul Hazen
Saya tidak melihat orang lain merekomendasikan mengambil kelas CS untuk pilihan, yang banyak orang tidak sadari diizinkan. Duplikasi dekat pada yang lain adalah hasil dari mengajukan pertanyaan banyak bagian :-)
Karl Bielefeldt
Saya minta maaf, Anda benar. Tidak ada orang lain yang menyarankan kelas CS sebagai pilihan. Meskipun ini adalah saran yang bagus, dan tentu saja tidak salah , beberapa respons lain lebih menyeluruh dan menjawab tiga pertanyaan dalam konteks yang lebih baik dengan sisa pertanyaan saya. Untuk tidak meniadakan saran yang Anda berikan (saya memberi Anda +1), itu akan diambil ke hati untuk yakin, dengan tulus, terima kasih banyak, dan sekali lagi maaf atas kesalahan saya.
Paul Hazen
3

Mengapa Anda berpikir bahwa gelar CS sangat penting untuk menjadi programmer yang sukses ?

Apa yang Anda butuhkan untuk menjadi programmer yang sukses adalah:

  • Gemar tentang pemrograman
  • Haus yang tak henti-hentinya untuk pengetahuan tentang teknologi baru
  • Masuk ke industri entah bagaimana

Biasanya gelar CS akan membawa Anda ke dalam industri, tetapi jika Anda tidak memiliki gairah dan kehausan akan pengetahuan, Anda akan menderita, dan Anda tidak akan pernah menjadi programmer yang baik.

Sepertinya Anda sudah masuk ke industri ini, dan tentu saja rasanya seperti Anda memiliki gairah dan kehausan akan pengetahuan.

Yang harus Anda ketahui adalah terus meneliti, belajar, dan mendapatkan pengalaman, dan industri akan tahu bagaimana menghargai Anda tanpa gelar.

Contoh Dari seseorang yang bekerja dengan saya

salah satu Pengembang Perangkat Lunak yang bekerja di tim saya memiliki gelar sarjana hukum ... setelah beberapa tahun dia mengerti bahwa dia sama sekali tidak menyukai hukum, dan bahwa dia ingin menjadi seorang programmer. dia tidak bisa mendapatkan pekerjaan sebagai programmer (tidak ada pengalaman, tidak ada gelar), jadi dia melakukan kursus komputer 6 bulan, lalu dia mendapatkan pekerjaan, dan dia adalah pengembang yang hebat sejak itu.

Mithir
sumber
Meskipun ini adalah konten yang hebat, saya merasa itu tidak tepat untuk menjawab pertanyaan saya (sesuatu yang mungkin salah saya dalam salah pengejaan kata). Saya bukan dari keyakinan kuat memiliki gelar CS menjadikannya seorang programmer yang sukses. Pertanyaan saya adalah lebih "yang satu topik yang diajarkan dalam gelar CS lakukan cenderung memberikan kontribusi bagi keberhasilan seorang programmer, dan bagaimana cara objektif menentukan bagaimana saya mengukur sampai di topik tersebut, dan bagaimana Isupplement / memperkaya saya passion yang ada, kelaparan untuk pengetahuan, dan pengalaman industri dengan topik seperti itu? " Jawaban Anda tentu tidak salah.
Paul Hazen
2

IMHO tidak ada pekerjaan pemrograman (atau pekerjaan penjualan atau pekerjaan sysadmin dll), hanya ada pekerjaan pemecahan masalah. Kami merekrut dan membayar orang untuk menyelesaikan masalah, menulis kode hanya bagian dari penyelesaian masalah. Ya, bahkan penjualan adalah bentuk pemecahan masalah. Jadi gelar Matematika membuktikan bahwa Anda dapat memecahkan masalah serta gelar CS.

Dari posting Anda jelas Anda mendapatkan banyak pengalaman / magang. Bagus! jangan khawatir tentang mendapatkan pekerjaan setelah lulus.

Untuk mencoba menjawab pertanyaan Anda:

kelas? pilih beberapa kelas CS teoretis daripada kelas penulisan kode. Cari beberapa kelas non CS / matematika misalnya. Filosofi itu akan membantu Anda menonjol dari kerumunan

prioritas? pelajari hal-hal baru (bukan hanya kelas mudah yang sudah Anda ketahui)

dua tahun ke depan? berbicara dengan orang, belajar, membangun hubungan, mencari kegiatan luar. (Hobi / olahraga / hiburan di luar pekerjaan / belajar adalah salah satu petunjuk untuk melihat seberapa termotivasi seorang pelamar.)

Kiat terakhir: Lulus sesegera mungkin. Bangun jaringan kontak. Dan satu-satunya pekerjaan aman adalah menciptakan pekerjaan Anda sendiri. Cari ide / peluang di mana Anda dapat memulai bisnis Anda sendiri. Semoga berhasil.

jqa
sumber
Ini bagus, terima kasih atas tanggapan Anda. Saya memberikan "+1", namun saya tidak dapat menandainya sebagai jawaban, tanggapan lain secara menyeluruh menyempurnakan alasannya , serta cara-cara yang diidentifikasi untuk menentukan tujuan pembelajaran secara objektif. Tak satu pun dari ini meniadakan respons Anda, saya mengambil apa yang Anda katakan dalam hati dan itu sangat membantu, jadi terima kasih sekali lagi.
Paul Hazen
@ PaulHazen - jika Anda ingin tahu 'mengapa?' kemudian pilih kelas filsafat :-) Tapi serius, saya melakukan gelar CS teoritis 4 tahun di mana tidak ada kursus C karena 'itu sesuatu yang bisa Anda ajarkan sendiri' Untuk meringankan saya mengambil kelas filsafat kecil satu semester dan kemudian melakukan yang lain. Serta menantang itu adalah sekelompok besar orang dan ide-ide yang menyegarkan. Dan pertanyaan Anda dengan jelas menunjukkan bahwa Anda memiliki keterampilan menulis yang diperlukan untuk kelas non matematika / CS.
jqa
1

Pertama, izinkan saya mengatakan bahwa saya sangat senang Anda telah menanyakan pertanyaan ini karena ini adalah pertanyaan yang saya tanyakan pada diri sendiri selama bertahun-tahun.

Saya kira saya bisa menganggap diri saya sedikit sukses di bidang ini, sejauh ini. Saya memiliki beberapa pengalaman kuliah dan pada akhirnya ingin menyelesaikan pendidikan perguruan tinggi saya dalam Ilmu Komputer, tetapi saya belum mendapatkan gelar pada saat ini dalam hidup saya. Namun, saya memiliki cukup banyak keberhasilan dalam rekayasa perangkat lunak meskipun mengalami kerugian ini (berlangsung 10 tahun). Saya harus jujur ​​kepada Anda, meskipun, itu tidak selalu merupakan hal yang mudah untuk dilakukan (tentu saja, saya ingin bertaruh bahwa apa pun yang layak dilakukan paling sering BUKAN yang termudah). Saya juga akan mengatakan bahwa itu masih bukan hal yang termudah. Ada banyak perusahaan di luar sana yang bersedia memberi kandidat yang tepat kesempatan, tetapi saya telah melakukan kontak dengan yang lain yang akan menolak keras karena tidak adanya "segel persetujuan" pendidikan tinggi itu. Namun,

Dimulai di .net di sebuah perusahaan yang sangat besar. Sebagai non-programmer waktu kecil (bekerja sebagai perwakilan dukungan teknis, pada saat itu), saya belajar semua yang saya bisa tentang bahasa dan teknologi yang digunakan ketika diterapkan pada perusahaan tempat saya bekerja. Selanjutnya, dan ini mungkin yang paling penting, saya berjejaring. Saya mengirim email ke setiap orang yang dapat saya temukan di direktori yang memiliki Insinyur Perangkat Lunak dalam judul mereka. Apakah saya menyebalkan? Mungkin. Saya selalu sopan dan menghormati diri sendiri dengan keinginan untuk belajar. Saya akan menjadwalkan makan siang atau hanya menemukannya di kafetaria dan duduk untuk mencoba mengobrol. Terkadang itu memalukan atau saya akan dihina, tetapi pada akhirnya, itu mendapatkan hasil yang diharapkan. Saya bisa mendapatkan kredensial kecil-kecilan untuk beberapa database internal dan setelah beberapa saat memperoleh kredensial yang diperlukan untuk mengembangkan perangkat lunak pada platform milik mereka. Segera setelah itu, saya menemukan diri saya dalam posisi di dalam perusahaan untuk meminjamkan beberapa keterampilan dalam pengembangan alat internal untuk tim analisis yang saya kerjakan saat itu. Dari sana, saya selalu berusaha menjadi orang terpintar di ruangan itu dengan cara yang paling sederhana. Saya sangat ingin dan saya memastikan bahwa semua orang tahu itu. Saya selalu berusaha memberikan solusi sedapat mungkin dan menemukan bahwa jika Anda mencoba cukup keras ada sangat sedikit domain masalah yang tidak mungkin diselesaikan (di luar teori kuantum, mungkin). Saya menemukan diri saya dalam posisi di dalam perusahaan untuk meminjamkan beberapa keterampilan dalam pengembangan alat internal untuk tim analisis yang saya kerjakan saat itu. Dari sana, saya selalu berusaha menjadi orang terpintar di ruangan itu dengan cara yang paling sederhana. Saya sangat ingin dan saya memastikan bahwa semua orang tahu itu. Saya selalu berusaha memberikan solusi sedapat mungkin dan menemukan bahwa jika Anda mencoba cukup keras ada sangat sedikit domain masalah yang tidak mungkin diselesaikan (di luar teori kuantum, mungkin). Saya menemukan diri saya dalam posisi di dalam perusahaan untuk meminjamkan beberapa keterampilan dalam pengembangan alat internal untuk tim analisis yang saya kerjakan saat itu. Dari sana, saya selalu berusaha menjadi orang terpintar di ruangan itu dengan cara yang paling sederhana. Saya sangat ingin dan saya memastikan bahwa semua orang tahu itu. Saya selalu berusaha memberikan solusi sedapat mungkin dan menemukan bahwa jika Anda mencoba cukup keras ada sangat sedikit domain masalah yang tidak mungkin diselesaikan (di luar teori kuantum, mungkin).

Untuk menyelesaikan apa yang bisa menjadi cerita panjang (dan jika Anda berada di Pacific Northwest saya ingin membahas tentang bir), saya mendapat "terobosan besar" di sebuah startup kecil kecil yang bersedia memberi saya kesempatan . Mereka menukar pengalaman saya dengan gaji yang sedikit lebih kecil, dan saya mulai berlari. Saya kemudian bangkit dari satu toko dev kecil ke yang berikutnya selama beberapa tahun ke depan, mendapatkan persahabatan dan keterampilan di sepanjang jalan, ke tempat saya akhirnya sebagai pengembang utama dan direktur sebuah perusahaan teknik kecil.

Kunci takeaway di sini, jika saya belum cukup berkomunikasi, adalah bahwa Anda harus jaringan. Berteman, minum bir dan tertawa, dan temukan orang-orang di bidang yang ingin Anda ajak bekerja (lebih disukai dalam tumpukan teknologi pilihan Anda). Pastikan orang tahu kesediaan Anda untuk melakukan apa pun dan keinginan untuk menyelesaikan pekerjaan tidak peduli seberapa monumentalnya. Anda pada dasarnya harus "mengatasi" kurangnya pendidikan formal Anda. Masuk dan bersenang-senanglah dengannya. Industri ini adalah yang terbaik di dunia, IMHO. Saya telah menjalin persahabatan dan kontak yang langgeng yang telah membantu saya dari satu tempat ke tempat lain dan saya akan terus melakukan hal yang sama untuk mereka setiap kali ada kesempatan.

Paul Shoemaker
sumber
1
Saya merasa sangat buruk karena saya tidak dapat menandai ini sebagai jawabannya. Seperti banyak tanggapan lain, Anda tidak mengatakan apa pun yang menurut saya salah , tetapi Anda berfokus sepenuhnya pada bagaimana memajukan karir saya ketika inti dari pertanyaan saya adalah bagaimana menjadi programmer yang sukses. Sementara programmer yang sukses menyiratkan karir yang baik, saya lebih suka fokus pada aspek "programmer yang sukses", dan membiarkan bagian karir menjadi (yang penting dan sangat disengaja) setelah berpikir. Saya memberi Anda "+1" untuk informasi berharga yang menjawab sebagian pertanyaan saya.
Paul Hazen
Oh, dan berbicara tentang jaringan, saya ingin mendengar lebih banyak tentang kisah Anda! Sepertinya kami memiliki banyak jalur / tujuan yang sama. Jangan ragu memilih metode kontak mana yang paling cocok untuk Anda di paulhazen.net/tentang , dan kami akan mengambil bir itu.
Paul Hazen
1

Pertama, izinkan saya LOL pada ketentuan "singkat tapi menyeluruh" di dekat akhir karya agung Anda. Turun ke bisnis:

Bagaimana saya menentukan secara objektif bidang studi apa, pengetahuan umum, dan keterampilan lain yang akan saya peroleh melalui gelar CS yang mungkin belum atau belum saya miliki saat ini?

Seperti yang disebutkan orang lain, Anda bisa mulai di katalog kursus . Tetapi saya mendorong Anda untuk keluar dari batasan daftar itu. Sebenarnya bagus kalau kamu mengambil jurusan Matematika. Banyak insinyur yang pernah bekerja sama dengan saya tidak dapat mengingat bagaimana melakukan integrasi sederhana, dan tidak pernah mengeksplorasi di luar tembok mata pelajaran matematika diskrit CS tradisional.

Jawaban ini tampaknya sangat jarang dalam hal spesifik. Saya tidak memiliki gelar CS, dan saya belum menemukan kekurangan dalam bidang yang diperlukan. Saya berharap, bagaimanapun, bahwa saya menghabiskan lebih banyak waktu untuk hal-hal lain yang menarik minat saya. Sejarah, Linguistik, dan Bahasa Inggris, misalnya.

Bagaimana cara saya mengurutkan keterampilan ini agar paling penting?

Pelajari apa yang Anda sukai

Apa yang penting bagimu? Apa yang penting bagi pengusaha? Heuristik pribadi saya selalu untuk mempelajari apa yang tampaknya paling menarik bagi saya - Anda harus mencintai apa yang Anda lakukan; jika tidak, Anda akan terbakar. Software adalah suatu bidang luas dari usaha yang selalu ada tampaknya menjadi pekerjaan yang tersedia untuk pengembang yang kompeten yang bergairah tentang setiap keterampilan ini.

Belajarlah untuk belajar, dan dorong diri Anda

Saya kira itu menuntun saya ke dua meta-keterampilan yang akan saya tempatkan di atas yang lain: mempelajari hal-hal dengan rakus, dan bekerja keras. Itu mungkin terdengar klise dan menyakitkan, tetapi kombinasinya jarang. Saya sudah menjelajahi seluruh peta dalam hal keterampilan "diperlukan" - front-end HTML / javascript ke ekstensi bahasa untuk pengembangan ponsel ke visi komputer untuk administrasi sistem dan kembali lagi, lebih dari 7 bahasa. Satu-satunya keterampilan inti sejati dalam semua itu adalah menjadikan mengatasi ketidaktahuan saya sendiri sebagai kebiasaan.

Saya benar-benar menyukai filosofi Jack White tentang gitar dan musik (serius, lihatlah itu), dan saya pikir itu sangat berlaku untuk dunia pemrograman. Tempatkan sedikit lebih jauh dari jangkauan. Paksa dirimu. Maka itu akan tampak mudah ketika semua orang ingin Anda lakukan adalah pekerjaan Anda.

Apa cara terbaik (selama dua tahun ke depan) untuk melengkapi pendidikan saya untuk mendapatkan atribut-atribut tersebut sedemikian rupa untuk menyamai atau bahkan melampaui tingkat sarjana S1 dari universitas top?

  1. Kelas CS non-utama

    Seperti Anda, departemen CS di UW menolak saya ... walaupun saya pikir saya membiarkan mereka melakukannya untuk ketiga kalinya sebelum saya sadar. Saya akhirnya mengambil jurusan Informatika dan belajar Matematika Terapan. Tapi saya masih mengambil seluruh jalur CS non-utama. Itu CSE 373, 410, 413, 415, dan 417. Jadi, saya yakin Anda harus mengikuti hasrat Anda terlebih dahulu. Milik saya membawa saya ke kelas-kelas itu. Dan saya pikir Anda mendapatkan pendidikan inti yang cukup komprehensif dengan mereka, meskipun mungkin sedikit terang pada sisi teorinya.

    Sekarang, inilah hal yang keren: dengan Informatika, sebagian besar dari ini diperhitungkan dalam pilihan saya yang diperlukan. Di departemen Matematika, Anda mungkin perlu mendapatkan persetujuan eksplisit, dan itu mungkin sulit untuk semua kecuali CSE 417.

    Panggil pertanyaan DARS (mungkin tautan khusus UWNetID) dan lihat di mana letak semuanya. Saya biasa melakukan ini untuk berbagai jurusan ad nauseum .

  2. Kelas AMATH

    Sejalan dengan hal yang sama, departemen Matematika Terapan memiliki beberapa kelas yang dapat dikerjakan sebagai persyaratan pilihan. Anda bahkan bisa minor di AMAT seperti milik Anda sebenarnya.

    Mengapa saya menyebutkan ini? Komputasi numerik - mis. AMATH 301/352 - adalah misteri besar bagi kebanyakan programmer. Jika Anda tidak mendapatkan apa pun darinya, Anda akan dapat menulis posting blog yang menarik . Tetapi saya berpendapat bahwa mengetahui masalah seputar tipe numerik suatu bahasa dan mengetahui bagaimana mengukur dan memperbaikinya sangat penting.

  3. Bangun sesuatu!

    Hal terpenting yang dapat Anda lakukan adalah membangun sesuatu yang baru. Ambil ide dari awal hingga akhir. Jangan biarkan itu menjadi sesuatu yang mudah yang ada dalam zona nyaman Anda.

    Kelas pemrograman yang paling bermanfaat yang saya ikuti selalu memiliki komponen pemrograman hands-on yang besar. Bagi seorang insinyur, teori sangat penting - selama itu dapat diubah menjadi sesuatu yang nyata. Jadi pergi mencari kertas CS yang terdengar keren dan cobalah untuk mengimplementasikannya. Serius.

  4. Dapatkan pekerjaan

    Sekarang, Anda sudah menyebutkan bahwa Anda memiliki magang di Amazon. Itu hebat. Pengalaman kerja sebenarnya adalah kuncinya! Ada banyak orang dengan gelar CS yang tidak dapat memprogram jalan keluar dari kantong kertas basah. Memiliki pengalaman kerja yang baik jauh lebih berharga daripada gelar.

pelarian
sumber
INI. Ini sangat bagus. Sebenarnya saya menganggap ini sebagai jawaban yang lebih dari valid. Jawaban yang ditandai hanya sedikit lebih valid ... * menghela nafas * sangat sulit untuk menilai dengan begitu banyak jawaban yang hebat :( Berharap aku bisa membantu perwakilanmu lebih banyak. Tapi karena aku mengenalmu dalam kehidupan nyata (tetapi sebagian besar melalui twitter seperti kita sebelumnya sudah dibahas haha), saya harus membelikan Anda bir atau wiski sebagai hadiah hiburan
Paul Hazen
-2

Ada lebih dari beberapa cerita tentang orang-orang yang menjadi jutawan sebelum mereka lulus dari perguruan tinggi, mungkin yang paling saya dengar adalah Bill Gates. Orang-orang dengan kemampuan niche cenderung melakukan lebih baik tanpa gelar daripada lulusan CS yang dicap cookie.

Temukan sesuatu yang sangat sedikit orang terlibat, biasanya sesuatu yang membosankan, membosankan, atau sulit dipelajari, dan mempelajarinya dengan baik, menjadi terobsesi dengannya. Beberapa area yang telah saya dengar adalah Unix back end stuff (bukan Linux, meskipun Linux tidak jauh tertinggal dalam permintaan), Flash (Saya tidak cukup tahu tentang flash untuk mengingat apa itu, tapi saya tahu seorang pria yang pindah dengan cepat mengetahuinya dan dia berkata ada MASIH pasar untuk ini, terutama karena orang mengatakan itu sekarat dan tidak akan mempelajarinya). Anda mungkin perlu mengambil beberapa kelas untuk memulai, tetapi jika Anda tahu barang-barang Anda dan memiliki portofolio yang mengesankan ada bisnis di luar sana yang akan membutuhkan Anda!

BillyNair
sumber
1
-1 untuk tidak menjawab pertanyaan saya. Anda tidak salah, tetapi Anda tampaknya telah melewatkan bagian "apa yang tidak saya cari", dan tidak menemukan salah satu hal yang saya cari.
Paul Hazen