Saya lulus dengan gelar Ilmu Komputer tetapi saya merasa tidak tahu bagaimana memprogram

1050

Saya lulus dengan gelar Ilmu Komputer tetapi saya melihat situs web seperti Stack Overflow dan mesin pencari seperti Google dan tidak tahu di mana saya bahkan mulai menulis sesuatu seperti itu. Selama satu musim panas saya memang memiliki kesempatan untuk bekerja sebagai pengembang iPhone, tetapi saya merasa seperti saya kebanyakan menempelkan perpustakaan yang ditulis orang lain dengan sedikit pemahaman tentang mekanisme yang terjadi di bawah tenda.

Saya mencoba meningkatkan pengetahuan saya dengan mempelajari algoritma, tetapi ini adalah proses yang panjang dan menyakitkan. Saya menemukan algoritma sulit dan pada tingkat saya belajar satu dekade akan berlalu sebelum saya akan menguasai materi dalam buku ini. Mengingat situasi saya saat ini, saya telah menghabiskan satu bulan mencari kerja tetapi keterampilan saya (C, Python, Objective-C) relatif dangkal dan tidak begitu diinginkan di pasar lokal, di mana C #, Java, dan pengembangan web jauh lebih tinggi permintaan. Itu bukan untuk mengatakan bahwa peluang C dan Python tidak ada tetapi mereka cenderung menuntut 3+ tahun pengalaman yang tidak saya miliki. IPK saya OK (3.0) tetapi tidak cukup tinggi untuk diterapkan pada perusahaan besar seperti IBM atau pengembalian untuk studi pascasarjana.

Pada dasarnya saya lulus dengan gelar Ilmu Komputer tetapi saya tidak merasa seperti saya telah belajar cara memprogram. Saya berpikir bahwa bergabung dengan sebuah perusahaan dan pemrograman penuh waktu akan memberi saya kesempatan untuk mengembangkan keterampilan saya dan belajar dari mereka yang lebih berpengalaman daripada saya sendiri, tetapi saya berjuang untuk mencari pekerjaan dan mulai merasa benar-benar frustrasi.

Saya akan menggunakan jaring saya lebih lebar dan melihat ke luar kota tempat saya dibesarkan, tetapi apa yang orang lain dalam situasi serupa coba lakukan? Saya sudah bekerja keras tetapi tidak memiliki kepercayaan diri untuk keluar sendiri dan menulis aplikasi sendiri. (Yaitu, menjadi pengembang indie di pasar aplikasi iPhone.) Jika tidak ada yang muncul, saya perlu mempertimbangkan untuk meningkatkan dan mempelajari keterampilan yang lebih populer atau mencoba sesuatu yang sedikit terkait seperti IT, tetapi mengingat semua upaya yang saya lakukan yang terasa seperti copping out.

wp123
sumber

Jawaban:

533

Cara terbaik untuk belajar program adalah menulis program.

Dua saran:

  • mengembangkan game
  • mengembangkan situs web

Algoritma, meskipun bermanfaat, dan harus dipahami, sebenarnya memainkan biola kedua untuk desain perangkat lunak. TDD / Pola Desain / Arsitektur / Refactoring / Pengujian Unit / Proses menyatukan kode / dll cenderung keterampilan yang jauh lebih penting.

Juga, jauh lebih baik untuk melakukan ini di waktu Anda sendiri. Jangan menunggu untuk menyelesaikan hal ini di tempat kerja. Saya menemukan orang-orang yang cenderung melakukan lebih baik adalah orang-orang yang pada awal kariernya berupaya mengembangkan keterampilan mereka di waktu mereka sendiri. Biasanya karena mereka benar-benar bersemangat dengan pengembangan perangkat lunak

  • Satu hal lagi adalah " Baca buku dan sampel " dan jangan malu untuk bertanya. Jika Anda ingin belajar, Anda harus bertanya :)
Keith Nicholas
sumber
70
+1 Setuju. Dan jika Anda tidak INGIN melakukan hal ini pada waktu Anda sendiri, ini mungkin bukan jalur karier terbaik untuk Anda. Jika Anda mengumpulkan barang sekarang, Anda dapat membangun portofolio yang dapat melengkapi IPK Anda.
Chris
68
@ Chris, -1. Itu seperti mengatakan bahwa seorang pengacara yang tidak melakukan pekerjaan pro bono untuk orang miskin pada waktunya sendiri berada dalam karier yang salah. Banyak programmer yang saya tahu akan lebih baik menghabiskan lebih sedikit waktu pemrograman dan lebih banyak waktu melakukan hampir semua hal lain.
21
sebenarnya banyak pengacara ketika memotong gigi mereka, dibayar dengan buruk dan menghabiskan banyak waktu hanya untuk maju.
22
Anda tidak dapat benar-benar membandingkan pekerjaan pengacara dengan pekerjaan programmer. Dengan pemrograman Anda dapat memperoleh keterampilan sendiri; Anda tidak memerlukan majikan atau klien untuk memperbaiki bagian itu.
31
Sungguh, Anda harus berhenti berpikir pemrograman itu istimewa. Pengacara dapat bekerja / belajar sendiri seperti yang kita bisa. Mereka mungkin memulai dengan pekerjaan bergaji rendah dan bekerja berjam-jam, tetapi begitu juga banyak programmer ... "jika Anda tidak memprogram sebagai hobi Anda seharusnya tidak menjadi programmer" benar-benar sangat subyektif.
388

Saya merasa seperti kebanyakan menempel perpustakaan yang ditulis orang lain

Sementara saya mengerti mengapa Anda merasa ini bukan "pemrograman nyata", kenyataannya adalah pekerjaan integrasi membentuk persentase signifikan dari beban kerja khas untuk seorang programmer perusahaan. Pengalaman Anda mungkin sedikit lebih berharga daripada yang Anda pikirkan :)

dbyrne
sumber
126
+1 untuk lem. Tidak ada yang akan mempekerjakan sekelompok profesional untuk membangun rumah baru dan mengharapkan mereka untuk menemukan teknik baru dalam membangun rumah dalam proses tersebut. Bahkan, siapa pun yang tertarik dalam mengelola risiko dan anggaran mungkin lebih suka mereka tidak melakukannya.
Dan Bryant
14
Saya setuju ada beberapa kasus tepi di luar sana tetapi saya akan mengatakan bahwa 75-80% pekerjaan pemrograman di luar sana adalah jenis di mana Anda hanya menempelkan perpustakaan bersama.
15
Dan tidak ada yang salah dengan merekatkan perpustakaan bersama. Itulah yang membuat Anda produktif!
10
Jelas seperti 90% dari pekerjaan saya adalah menghubungkan kode orang lain (perpustakaan atau kode warisan) atau mempertahankan kode yang lebih lama. Tetapi saya menghabiskan waktu ekstra saya belajar sedikit demi sedikit, sehingga sekarang saya tahu bagaimana banyak perpustakaan itu bekerja, dan memiliki pemahaman yang lebih dalam tentang apa yang terjadi di bawah tenda secara umum. Jadilah pembelajar seumur hidup, dan Anda akan mengambil semuanya pada akhirnya.
CodexArcanum
53
Ketika saya tidak menempelkan perpustakaan, saya biasanya membuat perpustakaan yang nantinya akan saya lem bersama.
238

Pertama, terima kasih atas pertanyaan yang sangat jujur. Ada sejumlah cara untuk mengatasi masalah yang dihadapi. Berikut adalah beberapa tips, yang saya anggap sangat membantu bagi saya di masa lalu dan masih terus menggunakannya untuk memperluas pengetahuan saya.

  1. Pelajari, Pelajari, dan Belajar lagi. Ini mungkin tip paling penting yang bisa saya berikan kepada Anda. Jangan pernah berhenti belajar . Mengetahui satu bahasa itu baik, mengetahui banyak bahasa bahkan lebih baik. Memiliki pengetahuan bahasa lain akan membuat Anda menjadi programmer yang lebih baik dan akan membuatnya lebih mudah untuk menangani tugas-tugas tertentu dan akan membantu Anda memperoleh pengetahuan yang lebih baik tentang struktur data umum.

  2. Mulai dari yang kecil .

  3. Mulai proyek hobi di waktu luang Anda. Jangan lakukan sesuatu yang bisa Anda lakukan dengan cukup mudah. Ambil sebuah proyek di mana Anda tidak tahu harus mulai dari mana. Lemparkan diri Anda ke ujung yang dalam. Manfaat dari ini adalah bahwa Anda akan mempelajari hal-hal yang tidak pernah Anda ketahui ada dan ketika Anda menyelesaikannya, Anda akan merasakan kebanggaan dan kepuasan yang luar biasa. Inilah yang membuat saya terus maju.

  4. Miliki hasrat yang tulus untuk apa yang Anda lakukan. Meskipun orang akan tidak setuju dengan saya tentang hal ini. Saya tidak percaya Anda bisa unggul dalam bidang ini jika Anda hanya menganggapnya sebagai pekerjaan 9-5. Harus ada hasrat untuk melakukannya.

  5. Bantu orang lain di SO! Cara terbaik untuk memahami adalah mencoba mengajarkannya kepada orang lain.

  6. Pelajari program orang lain dan coba cari tahu cara kerjanya, kemudian terapkan teknik serupa di program Anda sendiri. Cobalah untuk membacanya dan mendapatkan pemahaman tentang itu, kemudian lakukan sendiri berdasarkan pemahaman itu, daripada menyalin dan menempel.

  7. Terus lakukan itu . Kadang-kadang hal itu bisa sangat membuat frustrasi, tetapi sangat bermanfaat ketika selesai. Jika Anda tidak memahami sesuatu, istirahatlah, jernihkan pikiran Anda dan coba lagi. Tanya kami di SO! Kami adalah sekelompok yang bersedia :)

  8. Jangan pernah berhenti mempelajari teknologi baru.

  9. Baca beberapa buku. Saya mengerti sebagai seorang siswa, Anda akan melakukan banyak membaca. Berikut adalah beberapa buku praktis yang mungkin berguna bagi Anda ... semoga - Programmer Pragmatik: Dari Journeyman hingga Master - Kode Lengkap: Buku Pegangan Praktis untuk Pembangunan Perangkat Lunak

Russell Dias
sumber
13
Tambahkan Clean Code ke daftar to-read Anda, itu cukup bagus.
7
"Mengetahui satu bahasa itu baik" -> salah. Mengetahui satu bahasa saja tidak cukup. Mengetahui banyak bahasa itu baik, belajar lebih banyak bahasa bahkan lebih baik.
Denilson Sá Maia
10
"Mulai Kecil" mengacu tidak hanya untuk memilih proyek yang dapat didekati, tetapi juga mulai menerapkan bagian yang bisa dikerjakan dalam suatu proyek. Sebuah proyek saya dimulai dengan percobaan kecil di paralaks, dan saya berpikir "yang terlihat seperti bidang bintang yang cukup keren untuk latar belakang permainan". Tambahkan kapal ... tambahkan alien ... tambahkan beberapa rudal, kontrol keyboard, dan deteksi tabrakan (setiap masalah sederhana, sendiri) satu per satu dan segera, saya memiliki permainan komersial yang saya jual (apa yang saya pikirkan di waktu) sedikit uang tunai. Di sisi lain "menulis permainan" adalah tugas yang samar-samar dan tidak dapat didekati. Sedikit demi sedikit.
mmc
2
@Denilson OP telah menyatakan bahwa dia tidak merasa dia tahu bagaimana memprogram. Mengetahui satu bahasa untuk seseorang yang tidak yakin tentang pemrograman itu baik. Daftar saya hanya berlaku untuk konteks ini.
7
@Denilson, dapatkah Anda mempelajari banyak bahasa tanpa mempelajari satu bahasa terlebih dahulu?
Péter Török
141

Mulai proyek pribadi. Masalahnya dengan sekolah adalah hal paling rumit yang Anda lakukan di sana adalah proyek yang memakan waktu 15 minggu hingga setahun dan melibatkan beberapa orang lain. Domain masalahnya dipahami dengan baik (dosen Anda tidak memberikan tugas apa pun yang tidak sesuai dengan semester Anda.) Ini bukan kemewahan yang diberikan dunia nyata.

Jika Anda harus melakukan sesuatu yang besar, mulai dari awal hingga akhir, yang bisa membuat Anda bersemangat, otak Anda akan mulai menyelimuti prosesnya. Selama ini hanya karier dan Anda tidak memiliki cinta untuk itu, Anda masih akan merasa seperti belum berhasil.

Sniggerfardimungus
sumber
Saya telah membagi hari-hari saya antara 1) mengirim resume 2) membaca buku tetapi sepertinya 2) bisa lebih baik dihabiskan menulis kode. Saya pikir banyak majikan tidak ingin mengambil risiko mempekerjakan seseorang dengan pengalaman industri yang sangat sedikit sehingga magang yang saya ambil tidak terlihat menarik saat ini.
5
+1. Saya setuju sepenuhnya. Mulai aplikasi kecil, dan kemudian tambahkan fungsionalitas sesuai keinginan Anda. Seiring berjalannya waktu, dan Anda mulai menyadari apa lagi yang bisa dilakukan, Anda dapat menambahkannya.
11
"Domain masalah dipahami dengan baik (profesor Anda tidak memberi Anda tugas apa pun yang tidak cocok dengan semester Anda.)" Ini adalah salah satu masalah terbesar dengan pendidikan ilmu komputer. Ada beberapa CS atau program rekayasa perangkat lunak yang mengatasi masalah ini, tetapi kebanyakan tidak membuat Anda berpikir di luar kebiasaan. Anda benar-benar perlu mengerjakan proyek Anda sendiri. Jika Anda tidak tahu bagaimana Stackoverflow dibangun, coba buat sendiri kloning. Anda akan belajar lebih banyak daripada yang bisa diajarkan oleh kelas mana pun.
Matt Olenik
ide bagus Tetapi mulailah dengan sesuatu yang kecil dengan fungsi inti dan perlahan tambahkan. Ini akan lebih memotivasi cara ini daripada mencoba untuk mendapatkan satu aplikasi sempurna raksasa. Saya juga berpikir bahwa Anda tidak akan pernah menemukan informasi dan tutorial sebanyak kekayaan informasi dalam buku
Xster
@Xster, itulah yang saya maksud. Tugas menulis aplikasi "tanya jawab" yang memiliki fungsi yang sangat mendasar adalah tempat yang baik untuk memulai.
Matt Olenik
106
  1. Mulailah dari salah satu bahasa yang diminta, menggunakan proyek seperti kata K. Nicholas.
  2. Jangan mengukur diri Anda dengan StackOverflow. Itu akan membuat Anda tidak perlu.
Smandoli
sumber
81
+1 untuk # 2 - jangan membandingkan diri Anda dan pengetahuan orang banyak.
gf
8
StakOverflow sendiri adalah produk virtuoso. Belum lagi, ada orang yang berkontribusi dengan pengalaman puluhan tahun dalam berbagai macam produk.
6
Saya tidak akan menganggap itu hal yang buruk untuk mengukur diri Anda terhadap StackOverflow, ada banyak orang pintar di sini. Beberapa lebih pintar dari Anda. Namun mereka adalah orang-orang yang membuat Anda ingin terus belajar.
15
Hei, saya tahu mengapa saya kecanduan SO! Ini hebat karena selusin alasan. Tapi itu merendahkan diri untuk terus terkena semua hal yang Anda tidak tahu. Seseorang harus sedikit berhati-hati untuk tidak merasa gentar, itu saja.
@ Georg - Gravitasi permainan yang bagus. KGS Smandoli
72

Saya tidak dapat membantu dengan situasi pekerjaan Anda, tetapi saya harap saya dapat membantu Anda mengembangkan keterampilan Anda dan juga memasukkan perasaan Anda tentang keterampilan Anda sendiri ke dalam perspektif.

Saya lulus dengan gelar Ilmu Komputer tetapi saya merasa tidak tahu bagaimana memprogram.

Mungkin saja instruktur Anda merasa malu. Mungkin juga perasaan Anda tentang tidak mengetahui cara memprogram adalah alami dan sesuai untuk tahap kehidupan dan pendidikan Anda ini. Berikut adalah beberapa ide yang dapat membantu:

  • Banyak majikan tidak peduli apa program yang ada di transkrip Anda atau bahkan apa IPK Anda. Sebaliknya mereka ingin tahu apa yang dapat Anda lakukan, dan terutama apa yang telah Anda bangun. Untuk pekerjaan yang baik, apa yang Anda buat lebih penting daripada teknologi (C, C #, apa pun yang Anda miliki) di resume Anda.

  • Jika Anda tidak mendapatkan kesempatan untuk membangun sejumlah proyek menarik selama masa pendidikan Anda, maluilah instruktur Anda. Tetapi Anda dapat membangun proyek itu sekarang. Telusuri situs web untuk masalah yang menarik. Siswa semester dua kami baru saja menyelesaikan "Pencarian Lagu" —kami menarik sejumlah besar lirik untuk situs web, mereka membuat indeks terbalik, Anda memasukkannya kata kunci dan itu menunjukkan Anda lirik yang mengandung kata-kata itu, dalam konteks. Ini bukan Google tetapi dibuat dengan prinsip yang sama dengan struktur data yang serupa, dan Anda dapat mulai membangunnya sekarang.

Saya telah bekerja keras tetapi tidak memiliki kepercayaan diri untuk keluar sendiri dan menulis aplikasi saya.

Mungkin Anda belum bekerja keras untuk masalah yang tepat? Ada baiknya mencari masalah itu

  • Terbuka
  • Punya lebih dari satu solusi yang bagus
  • Ada banyak solusi buruk

Jika Anda mengatasi masalah semacam ini, Anda belajar membuat pilihan, hidup dengan konsekuensinya, dan jika semuanya tidak berhasil, untuk kembali dan meninjau kembali pilihan Anda. Anda akan belajar lebih banyak dari kegagalan Anda daripada dari kesuksesan Anda, tetapi Anda akan mendapatkan lebih banyak kepercayaan dari kesuksesan Anda daripada kegagalan Anda.

Masalah bagus — dengan properti seperti yang saya sebutkan di atas — seperti emas, kecuali jika Anda mendapat masalah baik dari orang lain, mereka tidak kehilangan apa-apa. Telusuri web untuk mencari masalah yang baik, dan berlatih, berlatih, berlatih. Jika masalah Euler adalah di mana Anda harus memulai, baiklah mereka baik-baik saja untuk pemula. Tetapi segera Anda akan ingin membangun proyek-proyek kecil atau menengah yang Anda pikir sangat keren . Jika Anda bersemangat tentang sesuatu yang Anda buat, itu akan mengesankan calon majikan. Jika Anda tidak bersemangat, sulit untuk mempekerjakan Anda.

Peter Norvig melaporkan bahwa perlu sepuluh tahun untuk menjadi seorang ahli . Tentu saja Anda tidak merasa seperti seorang ahli setelah mendapatkan gelar Anda. Saya akan memberitahu Anda tentang sebuah rahasia kecil: Sebagian besar anggota fakultas Harvard (saya adalah satu selama delapan tahun) merasa seolah-olah mereka tidak benar-benar termasuk di Harvard, mereka tidak cukup tahu, dan pasti ada beberapa kesalahan yang mereka dipekerjakan. Perasaan semacam ini sangat, sangat umum bagi orang yang melakukan transisi dari sekolah ke tempat kerja, atau dari satu jenis pekerjaan ke pekerjaan lainnya. Begitu umum ada nama untuk itu: "sindrom penipu."

Meskipun Anda memiliki gelar Anda, universitas Anda masih akan berbicara dengan Anda. Jika Anda memiliki profesor yang sangat baik, mereka mungkin masih peduli dengan Anda. Mereka tentu peduli bahwa salah satu siswa mereka telah lulus dengan nilai B rata-rata dan merasa dia belum menguasai keterampilan dasar perdagangannya. Jadi, cari satu atau dua profesor yang paling bersemangat dan paling simpatik dari program Anda, dan dapatkan bantuan untuk menemukan masalah yang baik. Kemudian tempatkan diri Anda bertanggung jawab atas keterampilan Anda, pengetahuan Anda, dan perasaan Anda tentang mereka. Bangun sesuatu yang kecil setiap hari, dan jangan buang waktu Anda yang berharga untuk hal-hal yang tidak terlalu keren. Akhirnya, saya berjanji, Anda akan menangkap kembali rasa senang tentang pemrograman, dan setelah itu, Anda akan dapat membangun kepercayaan diri sendiri.

Norman Ramsey
sumber
Saya harus setuju. Pergi ke sana dan buktikan kepada calon atasan Anda bahwa Anda TAHU C, Python, Objective-C dan membangun aplikasi independen yang melakukan sesuatu. Orang sering memilih permainan karena tergantung pada permainan, mereka dapat melibatkan desain dan implementasi yang menantang, dan banyak perpustakaan di sekitarnya gratis. Jika Anda membuat game untuk Windows, GDI / + atau DirectX semuanya gratis untuk Anda gunakan, dll.
DeadMG
Bagian "Sebagian besar anggota fakultas Harvard (saya adalah satu selama delapan tahun) merasa seolah-olah mereka tidak benar-benar berada di Harvard, mereka tidak cukup tahu, dan pasti ada kesalahan bahwa mereka dipekerjakan." Mengingatkan saya dari efek Dunning – Kruger =)
2
+1 untuk membangun sesuatu: itu membuat Anda berbeda dari orang banyak, terutama jika itu adalah sesuatu yang berguna.
5
@ Alex, tidak pernah melalui HR. Jika Anda beruntung, seseorang yang Anda kenal kenal seseorang di mana Anda ingin bekerja.
Norman Ramsey
1
Anda tahu, sekarang setelah Anda menyebutkannya, itulah cara saya biasanya menemukan pekerjaan. Saya kira mungkin di masa depan saya harus lebih fokus pada pekerjaan di dalam (atau di pinggiran) jaringan saya dan menghindarkan diri dari penghinaan dari pemindai kata kunci.
59

Ada adegan di Law & Order lama di mana seorang DA mengeluh bahwa dia tidak belajar apa-apa tentang bagaimana melakukan pekerjaannya di sekolah hukum, bahwa dia tidak belajar apa-apa tentang dunia nyata. Profesor yang kepadanya dia mengeluh menjawab, "Ini sekolah hukum, bukan sekolah pengacara."

Hal yang sama berlaku untuk ilmu komputer. Mungkin Anda tidak belajar bagaimana berkontribusi langsung ke beberapa proyek yang Anda lihat online, tetapi Anda mungkin mengembangkan fondasi yang Anda butuhkan untuk berhasil dalam jangka panjang.

Pertama, dapatkan pekerjaan, pekerjaan apa saja. Menjadi mandiri. Khususnya dalam perekonomian saat ini, saya tidak akan pernah menyalahkan kandidat untuk bekerja di toko buku atau apa pun sementara mereka mencari pekerjaan yang lebih tepat. Saya punya pertanyaan untuk orang-orang yang duduk diam melakukan apa-apa.

Temukan proyek, proyek apa saja. Ada banyak proyek yang berlaku di github.com misalnya.

Kabar baiknya adalah bahwa jauh lebih cepat daripada yang Anda pikirkan, tidak ada yang akan peduli di mana Anda pergi ke sekolah, apa IPK Anda, atau apa pun seperti itu.

Tetap bertahan! Mungkin sulit, tetapi suatu hari Anda akan senang dengan pengalaman itu.

David M
sumber
8
Baru-baru ini kami berdiskusi tentang hal ini di tempat kerja. Apakah Anda benar-benar berpikir mendapatkan pekerjaan yang tidak berhubungan dengan karier Anda akan membantu cv Anda sama sekali? Jika Anda perlu mengambil buah karena alasan keuangan, baik-baik saja tetapi saya tidak berpikir itu memiliki tempat di cv Anda jika Anda mencoba untuk membangun karier sebagai seorang programmer. Jika Anda tidak memiliki kendala keuangan yang lebih baik untuk berpartisipasi dalam proyek tanpa kompensasi ekonomi atau mencoba untuk mendirikan bisnis Anda sendiri. Berpartisipasi dalam proyek-proyek sumber terbuka atau sesuatu yang berhubungan dengan lapangan, bahkan sebagai teknisi lapangan jauh lebih baik menurut saya.
1
@piotr - Anda mengatakannya sendiri - "Jika Anda tidak memiliki kendala keuangan." Setiap lulusan perguruan tinggi baru-baru ini akan memiliki masalah ini kecuali mereka tinggal bersama ayah dan ibu. Saya setuju dengan David M - jika Anda tidak dapat menemukan pekerjaan langsung di bidang Anda, dapatkan pekerjaan. Tunjukkan bahwa Anda tidak hanya duduk-duduk. Kemudian, ketika Anda tidak bekerja di pekerjaan siang hari Anda, teruslah belajar di malam hari dan memahami bidang Anda melalui proyek, dll. Tentu saja, menelepon dan mengirim resume juga.
Pekerjaan apa pun terlihat lebih baik di resume daripada kesenjangan.
Jim C
Pada awal karir Anda, pekerjaan yang tidak terkait lebih baik daripada tidak ada pekerjaan, menurut saya. Namun, saya tidak setuju bahwa pekerjaan apa pun lebih baik pada resume daripada tidak ada pekerjaan. Jika ada alasan bagus untuk "tidak ada pekerjaan," maka itu bisa lebih baik daripada "pekerjaan apa pun." Saya secara sukarela mengalami pengangguran yang panjang, tetapi saya punya alasan kuat yang bisa saya jelaskan secara masuk akal.
5
piotr: "Apakah Anda benar-benar berpikir mendapatkan pekerjaan yang tidak berhubungan dengan karier Anda akan membantu cv Anda sama sekali?" Ya, tentu saja. Saya akan berpikir jauh lebih tinggi dari seorang programmer yang bekerja konstruksi selama downtime daripada seorang programmer yang duduk di rumah sepanjang hari. Ini menunjukkan etos kerja. Saya tidak pernah akhirnya ingin mempekerjakan seorang jenius tunggal yang duduk di rumah menulis kode sendirian. Mereka cenderung tidak tahu bagaimana bekerja dengan baik dengan orang lain, atau melakukan bagian kotor dari pekerjaan.
59

Sudahkah Anda melihat ProjectEuler ? Saya belajar sendiri Python dengan melakukan masalah di situs itu. :] Jika Anda setelah mempelajari Java atau C #, Anda dapat mencobanya. Juga, saya sarankan Anda mencoba pemrograman GUI juga.

Sunting:

Berikut ini adalah topik hebat tentang SO untuk banyak tautan yang dapat Anda lihat untuk praktik pengkodean:

https://stackoverflow.com/questions/662283/websites-like-projecteuler-net

Xavier Ho
sumber
4
Saya telah mendengar banyak tentang situs ini tetapi tidak pernah punya waktu untuk mencoba masalah, tetapi saat ini sepertinya satu-satunya hal yang saya miliki adalah waktu luang jadi saya mungkin tetap sibuk.
44
Project Euler sangat sedikit berguna bagi programmer pemula yang ingin membangun pengetahuan pemrograman. Ini berorientasi pada mencari tahu bagaimana menyelesaikan masalah matematika dengan algoritma pengkodean. Anda dapat melakukan satu juta dari itu tanpa menjadi programmer yang baik (Anda mungkin akan menjadi ahli matematika yang hebat sekalipun). Menulis algoritma yang hebat bukanlah prioritas tinggi untuk sebagian besar pekerjaan pemrograman.
1
Saya tidak setuju Charles - Euler akan memberikan motivasi untuk memahami konsep-konsep tertentu dan melaksanakannya.
Broam
Menggunakannya sebagai Xavier Ho memang terlihat menarik dan bermanfaat. Yaitu, membuat diri Anda menguasai dasar-dasar bahasa baru. Saya menduga PE akan membantu Anda dengan pemrograman (dalam skala kecil) ATAU matematika; sehingga Anda bisa terjun dengan cara baik. Selain poin-poin ini, saya setuju dengan Charles.
6
pythonchallenge.com adalah kuncinya! Sementara Euler adalah masalah matematika yang harus diselesaikan dengan pemrograman, pythonchallenge adalah masalah pemrograman murni
Xster
48

Saya menduga dari nama pengguna Anda bahwa Anda seorang wanita ... Jika tidak, jangan abaikan ini, atau sesuaikan dengan sudut pandang Anda sendiri.

Dalam pengalaman saya, wanita yang lulus dari perguruan tinggi dalam ilmu komputer menganggap diri mereka jauh lebih tidak kompeten daripada rekan-rekan pria mereka dengan keterampilan yang sama. Orang mungkin mengatakan bahwa perempuan (atau, tepatnya, perempuan yang saya kenal) lebih jujur ​​dibandingkan dengan kekurangan mereka sendiri, tetapi pada akhirnya, mereka lebih sulit menjual diri kepada majikan.

(Aku menghabiskan sebagian besar sekolah pascasarjana dengan perasaan gagal total dibandingkan teman-teman sebayaku, dan akhirnya lulus dari kelasku.)

Jadi saran saya adalah tetap jujur ​​pada diri sendiri dan terus bekerja keras untuk mengembangkan keterampilan Anda. Tetapi jangan meremehkan apa yang Anda tahu ketika mencari pekerjaan, dan jangan menahan diri dari melamar pekerjaan "mencapai".

  • Temukan seorang mentor yang dapat memberi Anda penilaian nyata tentang nilai Anda.
  • Lakukan wawancara palsu, dan pelajari cara memproyeksikan keyakinan, energi, dan gairah.
  • Ketika Anda melakukan wawancara, bicarakan proyek pribadi Anda dan ajukan pertanyaan teknis. Dorongan Anda untuk belajar dan energi Anda adalah aset terbaik Anda.

Ditambahkan sebagai renungan:

  • Ketika Anda mendapatkan pekerjaan pertama Anda, jangan takut menegosiasikan gaji Anda. Terlalu banyak wanita hanya menerima tawaran pertama dengan penuh syukur, dan tidak pernah mendapatkan apa yang pantas mereka dapatkan.
Kena
sumber
Ini berhubungan ....
Paul Nathan
+1, semua poin bagus. Saya menemukan sentimen serupa dengan rekan-rekan sesama wanita ketika saya masih di sekolah.
Heather M
6
Bukan hanya hal perempuan; Orang yang sudah kompeten, atau mampu melihat bahwa mereka perlu tumbuh (Yay you!) Cenderung mempertanyakan kompetensi mereka sendiri lebih dari mereka yang tidak mulai mencurigai ketidakmampuan mereka sendiri. Ada nama untuk fenomena ini. Efek Dunning – Kruger. Pengalaman Anda di sekolah telah menjadi kesuksesan yang fenomenal jika Anda meninggalkan sekolah dapat melanjutkan jalur belajar seumur hidup Anda, dalam karier apa pun yang Anda pilih. Saya berharap yang terbaik dari keberuntungan !!!
Warren P
1
Warren: Benar sekali; banyak teman laki-laki saya yang kurang vokal memiliki masalah yang sama. Di banyak budaya di seluruh dunia, termasuk di Amerika Utara, anak perempuan kecil tidak didorong untuk bersaing secara agresif dan untuk memamerkan keterampilan mereka sebanyak anak laki-laki, jadi saya telah melihat sifat itu lebih sering pada wanita. Tapi jelas bukan hanya hal feminin.
Jawaban yang luar biasa, saya sepenuhnya setuju. Juga, saya perhatikan di kelas lulus saya, para wanita yang melakukannya sering kali adalah siswa berprestasi. (Artinya, sayangnya, banyak wanita yang putus sekolah bisa menjadi programmer yang sangat kompeten ...)
39

Banyak orang mengatakan bahwa Anda harus memulai proyek pribadi. Menurut pendapat saya, ini adalah saran terbaik di sini. Saya akan menambahkan beberapa hal yang tidak saya lihat ketika saya membaca jawaban yang lain ...

  • Pilih sesuatu di daerah yang Anda bergairah tentang . Tempat terbaik untuk menemukan ini mungkin dalam minat Anda di luar ilmu komputer. Itu bisa berupa nirlaba tempat Anda terlibat, hobi yang Anda sukai, olahraga yang Anda lakukan.

  • Temukan kolaborator . Pengodean sendiri itu sulit, jadi hal lain yang akan sangat membantu adalah jika Anda menemukan seorang teman untuk berkolaborasi dengan Anda dalam proyek ini. Ini membuatnya jauh lebih menyenangkan dan membuat Anda tetap termotivasi. Dalam posting blog terbarunya, Jeff Attwood berbicara tentang hal ini dalam pengalamannya membangun SO. http://www.codinghorror.com/blog/2010/05/on-working-remotely.html

  • Pilih sesuatu yang sederhana (awalnya) . Proyek yang ideal akan dimulai dengan sesuatu yang kecil. Jika tujuan keluar dari gerbang terlalu ambisius maka itu akan menjadi terlalu menakutkan. Setelah melakukan pengembangan untuk PC, telepon, sistem tertanam dan web, saya akan mengatakan bahwa web adalah tempat terbaik untuk mencari sesuatu yang dapat dicapai yang dapat segera mulai digunakan orang lain.

  • Jika memungkinkan, pilih sesuatu yang akan digunakan orang lain . Sekalipun Anda hanya memiliki sepuluh "pelanggan", perasaan meminta orang lain menggunakan benda yang Anda bangun itu seperti narkoba. Sangat memuaskan. Belajar dari pelanggan dan merespons mereka juga merupakan pengalaman belajar yang sangat berharga.

Jika proyek ini adalah kerja cinta yang Anda kerjakan dengan senang hati jauh ke dalam malam, dan kemudian melompat dari tempat tidur keesokan paginya untuk kembali ke sana, maka hal-hal baik akan mengikuti. Anda akan belajar, kepercayaan diri akan tumbuh. Dan begitu Anda memiliki sesuatu di luar sana yang dapat dilihat orang, itu menjadi awal dari portofolio Anda. Tidak ada yang mengesankan programmer dan manajer yang (layak) mempekerjakan selain sesuatu yang nyata.

Greg
sumber
Jika memungkinkan, pilih sesuatu yang akan digunakan orang lain ... itulah cara terbaik untuk mendapatkan umpan balik
balalakshmi
34

Beberapa komentar, dari sudut pandang seseorang yang telah menjadi pengembang selama 20+ tahun:

Saya melihat situs web seperti Stackoverflow dan mesin pencari seperti Google dan tidak tahu di mana saya akan mulai menulis sesuatu seperti itu.

Mereka adalah produk tim, sebagian besar dibangun di perpustakaan dan infrastruktur (.net, java, asp.net, dll) yang diproduksi oleh tim lain, dan didukung oleh pengalaman dan sumber daya. Bahwa Anda, secara individu, tidak tahu harus mulai dari mana untuk melakukan hal yang sama benar-benar dapat dimengerti. Jangan khawatir tentang ini.

Selama satu musim panas saya memang memiliki kesempatan untuk bekerja sebagai pengembang iPhone, tetapi saya merasa seperti saya kebanyakan menempelkan perpustakaan yang ditulis orang lain dengan sedikit pemahaman tentang mekanisme yang terjadi di bawah tenda.

Banyak pekerjaan pengembangan sekarang seperti itu, saya khawatir. Tetapi ada banyak ruang untuk melakukan pekerjaan menarik 'di atas' perpustakaan itu. Dan jangan khawatir tentang kesulitan menemukan algoritme - Anda hampir pasti tidak perlu menerapkan quicksort, daftar tertaut, atau apa pun selama karier Anda. Untuk itulah perpustakaan digunakan.

Pada dasarnya saya lulus dengan gelar Ilmu Komputer tetapi saya tidak merasa seperti saya telah belajar cara memprogram.

Mengetahui cara memprogram, dan mengetahui cara berfungsi sebagai pengembang profesional adalah dua hal yang sangat berbeda. Anda hanya perlu beberapa pengalaman, lebih disukai bekerja dengan pengembang lain di sistem dunia nyata. Cobalah untuk menambahkan C # atau Java ke perangkat Anda - tidak ada banyak perbedaan di antara mereka sehingga pengetahuan dapat ditransfer. Berhati-hatilah untuk tidak terlalu terspesialisasi. Anda mungkin harus menerima bahwa Anda tidak akan segera mendapatkan banyak uang, jadi jaga agar biaya pribadi tetap rendah untuk sementara waktu jika Anda bisa.

Mulailah bekerja pada proyek yang Anda sebutkan, tetapi selain meningkatkan pengetahuan pemrograman Anda, coba gunakan itu adalah cara untuk mendapatkan pengalaman keterampilan terkait seperti kontrol versi, pengujian unit dan integrasi, dan bahkan menulis dokumentasi sederhana. Keterampilan-keterampilan semacam inilah yang membedakan pengembang dari seorang programmer, dan merupakan karya yang bagus untuk calon pemberi kerja. Ada banyak alat gratis yang tersedia (edisi ekspres dari Visual Studio, github, nunit, aplikasi Google) yang dapat membantu.

Dari apa yang Anda tulis, kedengarannya seperti gelar CS Anda telah mengajari Anda cara berpikir tentang masalah teknis. Anda juga tampaknya memiliki tingkat pengetahuan diri yang baik, termasuk tentang batasan dan pengalaman teknis Anda saat ini. Gunakan ini sebagai keuntungan. Sekarang bukan waktu yang tepat untuk memasuki pasar kerja, tetapi jika Anda bekerja keras, Anda akan baik-baik saja. Jangan khawatir, belajar, dapatkan pengalaman, tetap up-to-date, coba lakukan hal-hal yang Anda sukai.

Semoga berhasil!

Andy Johnson
sumber
"Anda hampir pasti tidak perlu menerapkan quicksort, daftar tertaut, atau apa pun selama karier Anda" Di posisi saya saat ini, saya harus menerapkan quicksort untuk daftar tertaut yang ditulis khusus. Saya tidak harus mengimplementasikan daftar itu. Ada nilai yang pasti dalam mengetahui bagaimana hal-hal dasar bekerja.
Saya setuju bahwa pengembang yang baik harus tahu bagaimana struktur data dasar dan algoritma ini bekerja, dan dapat mengimplementasikannya. Saya harus memutar daftar tertaut saya beberapa kali tetapi tidak pernah (untungnya bagi saya) harus menulis quicksort. Maksud saya adalah bahwa OP tidak perlu terlalu khawatir tentang algoritma yang telah ia pelajari selama gelar karena banyak bahasa / platform (.net, Java, C ++, dll.) Mungkin akan mencakup implementasi pra-tertulis.
31

Pemrograman tidak semua tentang pemahaman Anda tentang algoritma atau IPK Anda selama kuliah. Pemrograman adalah tentang memiliki kemampuan untuk berpikir di luar kotak, keinginan dan kemauan untuk belajar dan yang paling penting, kreativitas.

Pada catatan pribadi, saya baru saja lulus kuliah Mei lalu dan memiliki IPK yang buruk. Saya lebih fokus pada kehidupan sosial saya daripada akademisi dan saya membayar harganya.

Namun, selama wawancara kerja baru-baru ini di luar perguruan tinggi, ( yang membutuhkan waktu kurang dari setahun untuk mendarat ), saya memamerkan kreativitas, hasrat saya untuk belajar dan keterampilan analitis, yang telah membantu saya mendapatkan pekerjaan.

Anthony Forloney
sumber
27

Catatan: Saya berharap posting ini akan diturunkan. Ini bukan jawaban untuk poster asli tetapi pengamatan pada sebagian besar komentar yang saya baca di atas.

Jawaban yang saya baca di atas benar-benar membuat saya takut. Tampaknya ada perasaan yang hampir universal bahwa derajat comp.sci tidak berguna atau tidak relevan, atau tidak mengajarkan apa pun kepada Anda. Apakah derajat comp.sci benar-benar menjadi seburuk itu, atau apakah ini semua hanya hawa panas dari pengembang tanpa gelar yang berusaha membenarkan kekurangan mereka?

Serius orang, apa yang mereka ajarkan di universitas saat ini? Ketika Anda melakukan gelar CS (setidaknya ketika saya masih mahasiswa) pada saat Anda lulus, Anda akan memiliki pemahaman yang baik tentang desain kompiler, comp. kompleksitas, metode formal dan logika, kebun binatang seluruh struktur data dan algoritma, riset operasi dasar (LP dll), basis data, kranografi dan keamanan, algoritma penjadwalan, protokol jaringan, pengembangan internet, desain OS dan kernel, algoritma paralel dan struktur data, algoritma numerik dan banyak lagi. Keseluruhan banyak biasanya diisi oleh proyek pemrograman besar yang merupakan bagian dari disertasi akhir. Jangan bilang bahwa lulusan comp.sci tidak mendapatkan cukup program latihan.

Saya juga menghargai kenyataan bahwa beberapa derajat comp.sci yang lebih tradisional menghilangkan beberapa aspek dari siklus pengembangan perangkat lunak, Anda mungkin tidak akan mendengar banyak pembicaraan tentang TDD, pengujian unit. Tapi mari kita jujur ​​secara brutal: itu bukan ilmu roket, kan? Anda juga tidak akan mendengar tentang SCRUM atau analisis titik fungsi. Mengajar kursus terperinci tentang masalah-masalah dasar seperti itu akan sangat berlebihan, meskipun banyak gelar saat ini memiliki kursus tentang desain sistem di mana mereka memberikan siswa gagasan tentang bagaimana hal-hal ini bekerja.

Memang, Anda mungkin tidak menjadi ahli dalam .NET, PHP atau standar industri lainnya saat ini tetapi itu tidak relevan. Dalam 5-10 tahun waktu bahasa pilihan akan berubah. Hanya karena Anda belajar mengemudi di Peugeot bukan berarti Anda tidak seharusnya bisa mengendarai Fiat, dan hal yang sama berlaku untuk bahasa pemrograman. Perlu latihan beberapa bulan dengan beberapa buku bagus untuk bisa bekerja dalam bahasa apa pun.

Tentunya jika ada yang membuang-buang waktu ini "sertifikasi" mahal ini yang pada dasarnya melibatkan duduk untuk ujian pilihan ganda elektronik dan bertanya tentang hal-hal kecil (biasanya tidak berguna) dari arsitektur atau bahasa tertentu. Mereka cenderung mengukur kompetensi programmer dengan pengetahuannya tentang kasus pemrograman patologis tertentu.

Saya telah bekerja di industri TI di berbagai perusahaan dan saya juga terlibat dalam proses wawancara untuk pengembang perangkat lunak lain. Kami memang mengajukan beberapa pertanyaan fizzbuzz yang biasa, tetapi ada yang ditujukan terutama pada orang-orang tanpa pelatihan formal atau peserta pelatihan. Saya belum pernah bertemu lulusan comp.sci yang tidak mampu menjawab pertanyaan pemrograman dasar dan tidak begitu mendasar.

Catatan Saya tinggal di Eropa dan hanya tahu tentang gelar universitas Eropa. Namun saya cukup yakin bahwa standar universitas di AS jauh lebih tinggi daripada di Uni Eropa.

Il-Bhima
sumber
4
Ini adalah cara yang sama yang dirasakan semua orang tentang semua tingkatan begitu mereka mendapatkannya. Sekolah pada umumnya mempersiapkan Anda untuk beragam situasi. Setelah Anda mulai bekerja, maka Anda bisa menjadi lebih terspesialisasi dan Anda mungkin akan merasa seperti Anda membuang semua energi itu di sekolah, tetapi bagaimana Anda tahu apa yang akhirnya akan Anda lakukan sebenarnya? Lebih baik aman untuk belajar tentang banyak hal yang bisa Anda bangun daripada tidak pernah belajar sama sekali.
1
Saya melihat kedua sisi argumen. Saya telah bertemu dengan beberapa gelar CompSci yang benar-benar pintar, tetapi saya juga bertemu dengan beberapa orang dengan gelar CompSci yang sekarang bekerja di call center karena mereka tidak begitu peduli dengan CompSci. Saya belajar banyak dalam kursus CompSci saya, tetapi saya harus mengakui sebagian besar keterampilan teknis yang membuat saya mendapatkan pekerjaan yang saya pelajari di luar sekolah pada waktu saya sendiri. Ketika saya wawancarai untuk pekerjaan rekayasa perangkat lunak, mereka umumnya menguji pengetahuan Anda untuk teknologi spesifik, strategi pemecahan masalah, dan keterampilan interpersonal. Tidak ada yang secara eksplisit diajarkan di perguruan tinggi.
Cerin
1
Saya telah bertemu puluhan lulusan CS - saat mewawancarai mereka - yang tidak dapat menjelaskan algoritma penyortiran apa pun, meskipun dibiarkan berpikir selama lima menit. Mungkin standar universitas di sini di Amerika Serikat tidak diterapkan sepenuhnya dengan baik. Seperti yang ditunjukkan oleh @Chris S, cukup mudah untuk menggeser gelar tanpa mempelajari banyak hal.
Dean J
Anda mencampur dua hal di sini. Saya menemukan melakukan gelar yang sangat berguna - saya tahu itu membuat saya menjadi pembuat kode yang jauh lebih baik, tapi saya tidak pernah bisa mengetahui mengapa (mungkin kombinasi dari sedikit pengetahuan dan pendekatan yang lebih baik untuk pemecahan masalah). Yang mengatakan, ada banyak lulusan di luar sana (dari universitas yang cukup bergengsi) yang bahkan tidak tahu cara menerapkan (9,5) ECC dengan tabel pencarian 512-byte. Coders yang baik adalah yang melampaui “Saya tidak mengerti ini, tapi saya bisa mengerjakan soal ujian”.
1
masalah yang menarik, tetapi mengapa Anda melakukan tes ECC normal;), kecuali untuk perangkat keras, tentu saja Tapi itu contoh yang baik dari hal self-taugth yang tidak / tidak bisa Anda lakukan? belajar di compSci
24

Kerendahan hati Anda akan melayani Anda dengan baik. The Pikiran Pemula ini bermanfaat untuk semua jenis pembelajaran, tidak peduli berapa banyak pendidikan dan pengalaman yang kita miliki.

Bekerja melalui latihan, seperti yang disarankan orang lain - di Project Euler dan di tempat lain.

Cari solusi untuk membantu orang lain di SO. Latihan memahami pertanyaan, menentukan apa yang Anda tahu dapat diterapkan, dan akhirnya mengartikulasikan jawaban akan membantu membangun kepercayaan diri Anda, saat latihan membangun keterampilan Anda.

Tetap dengan itu; kamu akan baik-baik saja.

Carl Manaster
sumber
9
Kerendahan hati akan melayani Anda dengan baik, kecuali jika tidak - untuk mendapatkan kaki Anda di pintu ( termasuk pada proyek pribadi) Anda membutuhkan chutzpa dalam jumlah tertentu, Anda bahkan mungkin harus percaya diri secara tidak rasional.
@Ian, saya dengan rendah hati menerima koreksi Anda. ;-) Serius - ini poin yang bagus, dan artikel yang bagus. Saya tidak suka kesimpulannya, bahwa wanita harus menjadi brengsek seperti pria, tetapi sulit untuk berdebat dengan kepraktisannya.
Carl Manaster
@Carl - kesimpulan yang terlalu cepat :-) Mempekerjakan staf / manajer meningkatkan kesombongan / promosi diri. Terutama ketika mengevaluasi kandidat untuk posisi teknis yang mereka tidak mulai memahami persyaratan. Saya telah melihat banyak pria yang sangat berkualitas di kapal yang sama dengan wanita malang ini, ketika seseorang yang terlalu percaya diri dan mempromosikan diri muncul dan mencuri perhatian. Saya tidak berpikir kita bisa menganggap itu sebagai kemenangan untuk mendorong lebih banyak wanita menjadi terlalu percaya diri. Tempat di mana kita dapat melakukan yang paling baik, IMHO, adalah dengan melatih orang-orang SDM untuk membuat keputusan yang lebih baik, atau dengan mengulangi prosesnya.
23

Lulus dengan gelar sarjana sains tidak lebih membuat Anda seorang programmer yang hebat daripada lulus dari program musik membuat Anda menjadi musisi yang hebat.

Tidak ada pengganti untuk latihan, latihan, latihan dan pengalaman. Program 8 jam sehari dan dalam 5 tahun Anda mungkin memiliki pemahaman yang kurang saat ini.

Larry Watanabe
sumber
6
Itu tangkapan ke-22 bukan? Program penuh waktu untuk mendapatkan pekerjaan yang Anda inginkan.
Jim Schubert
16
Tidak, dalam 5 tahun Anda akan menyadari bahwa Anda tidak tahu apa-apa :)
Earlz
1
@ Earlz, Dan tidak ada yang Anda tahu akhirnya sudah usang.
Dan Bryant
4
Memang - dengan semua "sekolah Java" (yang mungkin atau mungkin tidak terjadi di sini), mudah untuk melupakan bahwa ilmu komputer bukan pemrograman. Saya kenal orang-orang yang mengambil gelar CS dan pergi ke sekolah kedokteran, dan ahli biologi yang berakhir sebagai programmer. Namun tidak ada yang pernah bertanya mengapa gelar biologi tidak menjadikan mereka ahli bedah: semua orang tahu bahwa belajar biologi bukan praktik kedokteran.
1
@Earlz betapa Zen: :)
Tullo_x86
23

Pertanyaan yang jujur, jawaban yang bagus - Aku akan berpadu sebentar :)

Jawabannya sejauh ini membuat saya sedikit tertawa - mereka berpotensi merayakan keagungan kita sendiri secara ironis. Saya datang ke SO karena dokumentasi dan bug dalam kerangka kerja yang buruk. Jelas ada emas lain di sini tetapi layak untuk mempertahankan kerendahan hati Anda, bahkan jika Anda benar-benar menjadi dev yang hebat - dan saya katakan itu dari perspektif kesombongan pribadi sejarah (?).

Ingatlah bahwa Anda mungkin tidak (mungkin tidak) dipekerjakan oleh teknisi, tetapi orang-orang dan manajer SDM yang lebih baik akan menggunakan teknisi untuk menilai Anda.

Pengusaha memiliki rencana untuk karyawan mereka, coba dan rasakan rencana itu sepanjang jalan dan masukkan diri Anda ke dalamnya dengan hormat, mungkin memberikannya sedikit perubahan dan peningkatan pribadi. Kesulitan dan peluang dapat muncul ketika majikan tidak benar-benar memiliki rencana khusus - mengajukan pertanyaan yang bagus dan membantu mereka menentukan rencana dapat benar-benar membuat Anda bertahan dalam situasi ini.

Para pebisnis dapat (secara sah) paranoid tentang para dev yang melindungi mereka karena kita sering harus mengelola persepsi mereka sedikit untuk membantu mereka dengan keputusan yang tidak mereka pahami - dan saya mengatakan bahwa, dengan lidah di pipi, untuk menunjukkan kepada Anda perspektif TIDAK untuk memiliki atau mengembangkan rekan kerja non-teknologi Anda. Saya dengan rendah hati berpikir bahwa memahami bahwa ini sering merupakan inti dari hubungan antara teknologi dan non-teknologi adalah penting - dan sulit untuk dihindari, apa yang kita lakukan adalah tumpul.

Menjadi profesional, berpikiran terbuka, dan penuh hormat memang mendapatkan pekerjaan - jika Anda tidak tahu apa itu profesional, saya yakin ada tempat untuk menyelesaikannya di web - Saya berharap seseorang telah menunjukkan hal itu kepada saya ketika saya mulai. :)

Hal terakhir yang akan saya katakan adalah bahwa, ketika Anda menjadi lebih baik dalam pengembangan dan arsitektur, dan Anda sudah terdengar seperti Anda telah melangkah ke jalan ini, Anda mungkin menemukan kode profesional Anda dapat menjadi sangat tidak memuaskan, bahkan jika itu adalah solusi yang tepat.

Saya tidak yakin apa solusinya di sana, tetapi cobalah mencari jalan keluar dan jangan terlalu terlibat secara emosional dalam pekerjaan Anda, itu akan membantu Anda mengatur kecepatan diri sendiri dan menjalani kehidupan yang lebih baik - terutama berhati-hati saat mencoba melakukan upaya ekstra untuk membuat sesuatu yang "benar" - sering kali Anda akan menciptakan kerumitan bagi rekan kerja Anda dan Anda hampir tidak akan pernah bisa memasukkan jumlah waktu yang Anda butuhkan untuk menyadarinya dalam jangka waktu proyek Anda. Gejala dari hal ini adalah "menjadi gelap" - ketika Anda tidak ingin menjelaskan apa yang ingin Anda lakukan kepada siapa pun. Banyak dev terbaik dapat menjelaskan esensi apa yang mereka lakukan kepada orang awam - ini adalah keterampilan yang bagus untuk dipelajari dan saya merasa hal itu membebaskan secara intelektual untuk berlatih.

Heh, dan ketika memperkirakan, untuk mulai dengan, membagi tugas Anda menjadi bit, totalkan waktu dan kemudian gandakan (itu disebut, membagi, menaklukkan, berbaris rumah;)

Semoga berhasil! Saya meninggalkan sekolah dengan harapan menjadi instruktur ski dan akhirnya menjadi pemimpin dev. Saya yakin Anda akan melakukannya dengan baik apa pun yang akhirnya Anda lakukan juga.

Seth
sumber
10
Kalimat pertama Anda mengatakan Anda akan berbunyi singkat ... namun Anda memiliki salah satu jawaban terpanjang di sini. ;)
+1 untuk "membagi tugas Anda menjadi beberapa bit, totalkan waktu dan kemudian gandakan (itu disebut, bagi, menaklukkan, pawai rumah;)" ... walaupun dalam banyak pekerjaan Anda harus melipatgandakannya karena manajer akan mengharapkannya dilakukan dalam separuh waktu dan tambahkan proyek lain yang harus dilakukan dalam jangka waktu yang sama tanpa mengizinkan perpanjangan estimasi Anda. Saya bahkan mendengar "kalikan dua dan tingkatkan unitnya (1 jam => 2 hari, 1 hari => 2 minggu, 1 minggu => 2 bulan, 1 bulan => 2 kuartal, 1 kuartal => 2 tahun, .. .) dan setelah beberapa pengalaman kerja nyata, hal itu tidak selucu yang saya kira
baru saja mencetak ini dan menempel ke dinding
What is the Question
22

Ya, itu cukup normal - sebagian besar sekolah, bahkan yang bergengsi, melakukan pekerjaan yang bagus untuk mengajar ilmu komputer dan pekerjaan yang mengerikan dalam pengembangan perangkat lunak pengajaran. Ini perlahan menjadi lebih baik, tetapi masih memiliki jalan panjang.

Bagaimanapun, sepertinya Anda melakukan sebagian besar hal yang benar:

  • Program di luar pekerjaan
  • Baca buku tentang pengembangan perangkat lunak (Kode Lengkap, Pola Desain, Mythical Man-Month, dll).
  • Terus belajar teknologi baru - sekolah seharusnya mengajarkan Anda cara belajar bahasa, bukan bahasa itu sendiri. Pelajari kerangka kerja baru, IDE, apis, perpustakaan, alat bangun, dll.
  • Berkeliaran di situs seperti SO dan di sini. Berinteraksi dengan orang-orang yang berpengalaman secara teratur adalah salah satu dari beberapa cara pintas menuju kebijaksanaan.
Fishtoaster
sumber
1
Jujur saja, Mythical Man-Month sedikit berlebihan, bukan? (Tapi saya sangat suka buku "* in a Nutshell").
Camilo Martin
2
@Camilo tidak setuju. Mythical Man Month membahas tentang rekayasa perangkat lunak, sedangkan buku singkatnya hanya membahas satu teknologi. Akhirnya, Anda akan membutuhkan pemahaman tentang masalah peopleware dengan pengembangan perangkat lunak. MMM adalah salah satu bacaan yang membahas topik tersebut.
Brian Wigginton
21

Pertanyaan yang sangat bagus. Saya yakin ada banyak orang yang mengalami apa yang telah Anda jelaskan di semua lapisan masyarakat dan pasar kerja.

Pertama - jangan khawatir tentang hal-hal yang di luar kendali Anda. Anda tidak boleh stres atau bahkan berpikir tentang sekolah, apa yang Anda pelajari atau tidak pelajari atau seberapa baik Anda melakukannya secara akademis.

Kedua - mengkhususkan diri. Akan selalu ada permintaan bagi orang-orang yang benar-benar pandai dalam apa yang mereka lakukan bahkan jika apa yang mereka lakukan tidak jelas. Anda perlu memilih bahasa pemrograman favorit Anda dan memutuskan untuk benar-benar menguasai bahasa itu dan “menjadikannya milik Anda.” Anda sudah memiliki banyak nasihat bagus tentang cara meningkatkan keterampilan pemrograman tetapi pada akhirnya tidak ada yang sebanding dengan menemukan buku berwibawa tentang subjek dan mengunci diri di kamar Anda selama beberapa hari sementara Anda tidak melakukan apa pun kecuali membaca setiap halaman dan menulis setiap contoh yang diberikan buku itu.

Ketiga - iklankan diri Anda. Dalam sejarah ilmu komputer ini langkah ini tidak pernah semudah sekarang ini. Jawaban yang Anda berikan dan pertanyaan yang Anda ajukan pada SO adalah resume Anda. Gunakan itu sendiri untuk menjadi otoritas terkemuka di SO untuk bahasa yang Anda putuskan untuk kuasai. Bertanggung jawab atas segala pertanyaan yang datang melalui server ini dengan tag Anda di atasnya, bahkan jika itu berarti jam penelitian yang luas dan datang dengan jawaban terlambat. Cari arsip dan bacalah setiap pertanyaan yang pernah diajukan pada SO tentang topik Anda. Perbaiki informasi yang salah, berikan jawaban dan variasi Anda sendiri untuk jawaban, dan gabungkan beberapa jawaban yang ada menjadi satu jawaban yang lebih baik. Mengalami SO dengan aliran komentar, jawaban, dan suntingan Anda yang tak ada habisnya, harus menjadi raison d'etre Anda (ditambah kesenangan karena Anda mendapatkan poin reputasi).

Keempat - bekerja pada citra publik Anda. Percaya diri sangat penting untuk mendapatkan pekerjaan terbaik. Perusahaan menginginkan orang-orang yang merupakan rekan kerja, kolaborator, dan komunikator hebat. Jika Anda berpikir ini mungkin menjadi masalah, beri tahu teman-teman Anda bahwa Anda membutuhkan mereka untuk meningkatkan ego Anda dan menghujani Anda dengan pelengkap tanpa henti kemudian pergi ke perpustakaan setempat dan mengambil salah satunya .

Ami
sumber
2
+1 untuk menyebutkan pentingnya keterampilan kolaborasi / komunikasi. Sebagian besar lulusan kekurangan mereka.
Denis Otkidach
1
Saya tidak setuju dengan spesialisasi, setiap teknologi akan mati suatu hari jadi jika Anda terlalu banyak mengkhususkan diri Anda berakhir tanpa pekerjaan ... ok, beberapa teknologi (=> COBOL) mati sangat lambat, memungkinkan Anda cukup waktu untuk berspesialisasi dalam teknologi baru tapi itu masih berisiko.
1
Spesialisasi ada di tempatnya, tetapi saya tidak yakin bahwa keluar dari perguruan tinggi adalah waktu yang tepat. Saya juga akan berdebat tentang penawaran dan permintaan - bagian dari trik untuk mengkhususkan diri adalah menemukan ceruk yang perlu diisi, bukan yang sudah penuh. (dan di bagian depan COBOL - beberapa tahun yang lalu, teman duduk saya di pesawat terlihat berusia pertengahan 20-an, tetapi sedang berurusan dengan proyek porting sistem warisan ... dan seperti yang saya mengerti itu, mereka masih bertahan dengan COBOL, hanya harus pindah ke perangkat keras baru - jadi ada potensi generasi baru programmer COBOL di luar sana)
21

Oke, jadi lihat berita hacker ini dan saya seperti "HOLY CRAP ITULAH AKU !!"

Jadi saya lulus Desember lalu dengan gelar CS dan merasa bahwa entah bagaimana saya berhasil lulus kelas dan mendapatkan gelar tanpa benar-benar mendapatkan itu. Rasanya seperti semua teman sekelas saya memiliki keterampilan pengkodean yang luar biasa, dan yang bisa saya lakukan hanyalah membuat program dasar Java. Mempelajari cara membuat kode dan menjadi pembuat kode yang baik hanya membutuhkan banyak waktu. Ada begitu banyak hal untuk dipelajari dan saran saya adalah untuk mengambil sedikit waktu. Anda akan belajar banyak hal saat melangkah. Seperti semua orang sedih, cara terbaik untuk belajar adalah dengan melakukan terutama dengan coding. Belum lagi ada begitu banyak tentang membangun aplikasi yang mereka bahkan tidak repot-repot bercerita tentang di sekolah. Jangan merasa buruk, ketahuilah bahwa ada banyak hal di luar sana untuk Anda pelajari, dan sadari bahwa akan butuh waktu untuk mempelajarinya.

Saya pikir Anda harus melihat melewati kota tempat Anda tumbuh dewasa. Ada banyak perusahaan di luar sana yang mempekerjakan lulusan CS, dan tidak semua dari mereka mengharuskan atau mengharapkan Anda untuk menjadi programmer hebat di luar sekolah. Ada banyak wawancara saya pergi di mana saya tidak ditanyai pertanyaan pengkodean (ada juga banyak yang meminta saya untuk menyelesaikan algoritma dan kode). Terapkan di perusahaan yang lebih mementingkan kemampuan Anda untuk belajar daripada apa yang sudah Anda ketahui (dalam pengalaman saya, perusahaan yang lebih besar lebih peduli tentang ini karena tidak akan terlalu memengaruhi mereka jika Anda tidak dapat langsung mengeluarkan kode).

Saya tidak tahu apakah pengkodean adalah sesuatu yang ingin Anda lakukan dan kejar, tetapi ada juga banyak pekerjaan yang non teknis yang memerlukan latar belakang teknis. Anda dapat melihat opsi-opsi itu.

Saya tidak akan fokus mempelajari seluk beluk satu bahasa seperti C # atau Java dan fokus pada prinsip-prinsip pemrograman. Anda harus dapat mentransfer keterampilan pengkodean yang baik dan menerapkannya dalam bahasa apa pun (ini penting untuk umur panjang dalam karir Anda .. Java tidak akan panas selamanya). Di sisi lain, mengetahui "keterampilan panas" dapat membantu mendapatkan pekerjaan. Keterampilan wawancara benar-benar penting. Ikuti setiap wawancara yang Anda dapatkan, meskipun itu hanya untuk latihan.

Bagaimanapun juga jangan berpikir perusahaan besar seperti IBM berada di luar jangkauan Anda. Saya merasakan hal yang sama seperti Anda beberapa bulan yang lalu, dan saya bekerja di IBM sekarang. IPK saya juga tidak terlalu bagus. Saya masih payah dalam pemrograman tetapi saya tahu saya akan menjadi lebih baik dengan waktu. Yakinlah dengan kemampuan Anda untuk belajar!

Donna
sumber
1
Saya akan mengatakan bahwa perusahaan besar seperti IBM lebih terjangkau daripada banyak tempat lain - mereka memiliki cukup banyak orang di sana sehingga mereka dapat melatih talenta mereka, tidak seperti tempat-tempat kecil di mana Anda diharapkan untuk mulai beroperasi. Dan selalu ada magang - mungkin agak terlambat sudah lulus, tetapi banyak lembaga pemerintah membawa magang musim panas ... sehingga Anda bisa mendapatkan 'NASA' atau serupa di resume Anda.
20

Wow, alangkah banyaknya jawabannya sebelum ini.

Bagaimana dengan tanggapan yang sama sekali berbeda ...

Mari kita membingkai ulang masalah Anda dalam hal menjadi manusia.

"Saya sudah lulus kelas konsepsi dan baru saja akan lahir. Ibuku akan dimahkotai dan aku akan dikirim besok pagi. Tapi ketika aku melihat atlet seperti Usain Bolt, aku berpikir" bagaimana aku bisa berlari seperti itu? cepat?".

Tetapi di sinilah Anda, Anda adalah manusia yang sepenuhnya matang, Anda telah lulus sekolah, Anda dapat berjalan, berbicara, dan jika Anda telah menyelesaikan kursus komputer, Anda cukup cerdas untuk melakukan booting. Tidak perlu malu.

Sekarang, apakah Usain Bolt lahir dan kemudian tiba-tiba mulai menempatkan waktu gila di trek, atau apakah itu sejumlah besar melanjutkan hidup, mencari tahu apa yang dia minati, diikuti oleh sejumlah besar aplikasi dan kemudian tiba-tiba " Bam! " dia ada di sana.

Lebih mungkin yang terakhir. Jadi, jangan menyusahkan diri sendiri karena tidak tahu apa yang seharusnya Anda lakukan. Butuh waktu untuk menentukan apa yang tepat untuk Anda. Itu untuk Anda , bukan apa yang dipikirkan orang tua Anda, bukan apa yang teman-teman Anda pikirkan. Apa yang tepat untukmu ? Apa yang menyalakan api Anda ? Apa yang membuat Anda berpikir * ya ini keren "bahkan ketika semua orang berpikir itu adalah celana.

Bukan tidak biasa untuk memulai (dan / atau) meninggalkan gelar Anda tanpa tahu apa yang ingin Anda lakukan.

Bagi saya, saya baik di sekolah di tingkat O (kualifikasi UK) tetapi saya tidak bisa peduli tentang tingkat A (diperlukan untuk masuk ke Universitas untuk melakukan gelar). Jadi saya pergi ke tempat yang lebih rendah untuk meraih gelar saya (dan sebagai hasilnya bukan gelar yang saya inginkan). Tapi saya bertahan (masih tidak tahu apa yang saya inginkan sebagai karier) dan belajar banyak tentang elektronik dan hal-hal yang kebanyakan orang tidak pernah pelajari. Selama ini saya lepas sebagai penulis game komputer.

Hasil akhirnya? Setelah mendapatkan gelar saya (dengan pujian) saya masuk ke pekerjaan dengan wawancara kerja dengan gaji yang lebih tinggi daripada mereka yang melakukan elektronik lurus dan saya tidak mengubah rambut saya atau mengenakan jas. Apa? Nah pada usia 23 tahun hal itu penting (melihat ke belakang sekarang, pada usia 44 tahun saya agak menertawakannya, tapi itulah kekudusan masa muda bagi Anda).

Perusahaan itu bangkrut dan kemudian saya mulai lebih serius. Tapi itu mungkin bukan untuk beberapa tahun sebelum saya tiba-tiba menemukan (secara tidak sengaja) apa yang benar-benar menarik minat saya. Ternyata menjadi alat perangkat lunak tingkat rendah. Seharusnya sudah jelas - semua game komputer yang saya tulis ditulis dalam pertemuan, saya selalu menyukai hal-hal tingkat rendah yang tidak bisa dilakukan orang lain. Tetapi untuk melihat itu sebagai masa depan, itu membutuhkan lebih banyak kedewasaan dan tidak mengejutkan bahwa itu tidak benar-benar terwujud hingga pertengahan 20-an.

Saya sering terkesan (dan kagum) bahwa anak muda, sering masih remaja, tampaknya tahu apa yang ingin mereka lakukan. Tetapi pertanyaan sebenarnya adalah, apakah mereka masih melakukannya pada usia 27? Atau apakah mereka mengubah haluan karena ide awal mereka tidak tepat untuk mereka?

Dalam hal bagaimana saya melakukan sesuatu yang mengesankan seperti ITU (apa pun itu, Google, SO)? Nah, Anda melakukannya dalam potongan-potongan, sama seperti Anda melakukan perangkat lunak dan segala hal lainnya dalam hidup. Anda mulai dengan dasar-dasarnya, dapatkan pengalaman di dalamnya. Jika Anda cukup baik, Anda melanjutkan dan mendapatkan lebih banyak pengalaman, dll, atau Anda meninggalkannya karena Anda menyadari bahwa Anda tidak cukup baik atau membosankan seperti itu (itulah sebabnya saya tidak melakukan komunikasi walaupun selalu seperti itu menjadi tambang emas. Bagi saya, itu membosankan!).

Dengan segala cara, lihat rekan-rekanmu, lihat tetua Anda, periksa pilihan dan minat mereka. Tapi periksa juga sendiri. Seringkali apa yang pada pandangan pertama tampak gila / gila sebenarnya adalah real deal. Melakukan sesuatu yang Anda temukan menarik (bukan hanya membayar tagihan) adalah SO jauh lebih bermanfaat.

Ya saya tahu ketika berusia 23 tahun Anda berfokus pada Audi TT dan flat keren dan dengan demikian tergoda oleh uang daripada pilihan karir yang masuk akal, tetapi serius di beberapa titik Anda akan menyadari bahwa mobil keren tidak semuanya rusak. menjadi - gadis itu harus menyukai Anda apa adanya, bukan apa yang Anda kendarai.

Serius, pikirkan itu. Solusi yang tidak terlalu keren mungkin hanya jawaban yang tepat.

Stephen Kellett
sumber
-1: Bisakah Anda memperketat ini sedikit dan lebih fokus pada pertanyaan dan kurang tentang diri sendiri?
Jim G.
2
Ini bukan tentang 'saya', ini tentang bagaimana saya dapat dari sana ke sini tanpa mengetahui awalnya di mana 'di sini'. Saya hanya menggunakan pengalaman saya sendiri sebagai contoh karena saya tahu pengalaman saya lebih baik daripada pengalaman orang lain. Jika Anda membacanya tentang saya, Anda membacanya dari perspektif yang salah. Seringkali jika Anda "memperketat" hal-hal seperti yang Anda katakan, Anda tidak memberikan latar belakang untuk sudut pandang yang diungkapkan dan membuat pembaca bingung. Saya bisa menulis "Saya tidak tahu apa yang ingin saya lakukan ketika saya lulus, tetapi sekarang saya melakukan bla bla". Itu tidak akan menginspirasi siapa pun untuk melanjutkan - tidak ada "alasan nyata untuk percaya" (TM).
Jawaban yang bagus, Stephen. Hanya dari POV yang berbeda dari jawaban lain di sini.
+1, Berharap saya bisa menambahkan 1000 suara untuk menjadikan ini sebagai jawaban teratas. Sentuh saya!
18

Selain saran hebat yang diberikan oleh orang lain, saya akan menambahkan berpartisipasi dalam acara pengembang di daerah Anda. Cari pertemuan, grup pengguna, kamp bar, kamp kode, dll. Ini akan membantu Anda berjejaring dengan pengembang lain, mendapatkan prospek kerja, mengikuti teknologi baru, dan memberikan pandangan realistis pada tingkat keterampilan pengembang lain.

Les
sumber
Saya ingin berpadu dengan yang satu ini. Melakukan hal ini. Saya baru keluar dari sekolah teknologi yang bekerja dalam catatan medis di rumah sakit. Saya mulai pergi ke pertemuan .NET lokal. Butuh beberapa waktu, tetapi akhirnya mendarat di sebuah perusahaan pengembangan yang melakukan dukungan server dan aplikasi. Meskipun bukan tujuan akhir saya dalam hidup, ini mengalahkan cara memindai file medis.
17

Ikuti aturan 10.000 jam.

Untuk menjadi master sesuatu, Anda perlu berlatih setidaknya 10.000 jam. Jadi habiskan 10.000 jam pemrograman, dan Anda akan menjadi masternya. Jika Anda belum menghabiskan 10.000 jam pemrograman dan Anda tidak merasa seperti master of the craft, jangan berkecil hati, hanya menghabiskan lebih banyak waktu coding.

Perhatikan juga bahwa mungkin Anda akan membutuhkan waktu sekitar 3 setengah tahun untuk melakukan ini jika Anda memprogram selama 8 jam sehari. Jika Anda hanya memprogram selama jam kerja, mungkin akan memakan waktu sekitar 4 tahun. Jika Anda belum menghabiskan waktu sebanyak ini selama pemrograman tingkat 3/4 tahun Anda, maka Anda mungkin tidak akan merasa seperti master.

barkmadley
sumber
1
dan Anda harus memastikan Anda tidak melakukan jam yang sama berulang-ulang! Dorong diri Anda untuk terus belajar.
Froome
+1 untuk aturan 10rb. Pertama kali mendengarnya, tetapi kedengarannya bagus secara pemasaran dan sangat nyata.
14

Hanya beberapa pemikiran, kalau boleh.

Wendy mengatakan bahwa seseorang dapat lulus dengan gelar CS, namun memiliki sedikit gagasan tentang praktik pemrograman. Bukankah itu sangat menyusahkan, bahkan mengerikan? Ini sama menjengkelkannya dengan penipuan yang menenggelamkan departemen bahasa Inggris di tahun 70-an: sastra bukanlah kumpulan gagasan yang dapat dipahami dan diintegrasikan, melainkan sekelompok 'teks' yang harus diabstraksikan dan didekonstruksi oleh siswa ( http: / /www.answers.com/topic/deconstruction ). Syukurlah, pasang surut itu surut, mungkin karena instruktur yang terhanyut dalam ombaknya yang kurus sudah pensiun sekarang.

Bertahun-tahun yang lalu - beberapa dekade yang lalu - kursus pertama saya di CS mengajarkan saya bahasa assembly (sebelum C ditemukan) menggunakan masalah aktual seperti menyortir, hashing, dan mencari (dan, ya, rekursi). Kursus kedua saya mengajarkan desain dan realisasi kompiler kerja nyata. Saya adalah mahasiswa paruh waktu di MIT dan kedua kursus itu yang saya butuhkan untuk mulai mendapat bayaran sebagai programmer; dan menjadi agak produktif dua atau tiga bulan kemudian.

Jadi pagi ini, mendengar teriakan Wendy, saya berpikir bahwa pasti MIT, dari semua tempat, tidak dapat mencairkan penawarannya dan menipu siswa-siswanya dengan (dalam konteks praktik pemrograman) omong kosong yang tidak berguna. Tetapi ketika saya melihat kurikulum MIT EE / CS, saya melihat bahwa itulah yang terjadi:

http://student.mit.edu/catalog/m6a.html

Saya khususnya memperhatikan bahwa departemen menggunakan Python sebagai bahasa pengajar! Maksudku, sungguh! Sepertinya gelar CS di MIT berarti memenuhi syarat siswa untuk menjadi guru CS di MIT. Bicara tentang rekursi!

Kemudian saya menemukan kontribusi ini untuk Coding Horror ( http://www.codinghorror.com/blog/2006/07/separating-programming-sheep-from-non-programming-goats.html ) dan saya pikir itu sangat penting. dari percakapan ini:

"Saya adalah orang yang terlambat dalam diskusi ini [tentang memprediksi keberhasilan dalam calon programmer], tetapi dalam pengalaman saya sebagai senior senior sarjana sarjana CS berusia 30 tahun, saya telah menemukan kelas pemrograman menjadi tidak berguna, dan kurang diajarkan sebagai Saya hanya pernah kuliah di community college dan kemudian University of Illinois di Chicago, tetapi kelas-kelas pemrogramannya adalah:

"1. Berorientasi objek, yang membuat siswa kurang atau tidak sama sekali memahami metode prosedural, dan

"2. Kelas guling. Kelas-kelas tersebut terutama terdiri dari deskripsi berbagai jenis masalah dan matematika di belakangnya, bukan ayntax dan struktur, yang orang disuruh hanya membaca buku.

"Kode hampir tidak secara langsung diakui sampai inti Struktur Data, dan kemudian masih tergantung pada instruktur mana yang Anda dapatkan, beberapa menjadi kode sangat ringan dan beberapa kode bagus. Anda bisa mengatakan bahwa itu adalah godaan besar bagi guru untuk menjadi kode cahaya pada titik ini, karena jika mereka berkonsentrasi pada kode, mereka juga harus berkonsentrasi pada pengajaran siswa yang telah mengikuti kursus ilmu komputer selama dua tahun bagaimana memprogram.

"Karena pengkodean adalah hobi bagi banyak anak muda, saya pikir lembaga pendidikan telah mengandalkan itu untuk menetapkan kurva belajar yang diharapkan, membuat orang yang memiliki sedikit atau tidak ada pengalaman pemrograman ketika mereka memasuki sekolah tidak punya pilihan selain curang seperti orang gila, menghabiskan semua waktu luang mereka mempelajari kode, atau beralih jurusan. Dan itu tidak selalu defisit dalam pemikiran abstrak dalam pengalaman saya, karena semua orang yang saya tahu yang drop out dari CS berakhir di Teknik Elektro, yang tidak ada artinya mengacungkan di bagian depan abstrak. Mereka masih tidak tahu cara memprogram, sambil mengerjakan matematika yang tidak bisa kukatakan. Kenangan yang paling absurd:

"1. Java sebagai bahasa pemrograman yang diperlukan. Saya tidak akan mem-bash Java di sini, tetapi bukankah menyenangkan bagi siswa untuk mempelajari pengumpulan sampah mereka sendiri? Dan bukankah pointer adalah hal yang baik untuk dipelajari," bahkan jika kita tidak pernah memutuskan untuk memprogram dalam bahasa dengan mereka lagi?

"2. Mengambil kelas inti pada teori sistem operasi, setelah dibanjiri dengan Jawa, dan menemukan itu di C (tentu saja) tanpa satu kelas C di kampus?

"Tentu saja, saya berusia tiga puluh tahun, dan juga salah satu dari orang-orang yang selalu diprogram, jadi saya tidak punya masalah, tetapi saya melihat banyak orang yang saya kenal lebih baik abstraksi daripada saya (dari kelas Kalkulus, DiffEQ, dan fisika sebelumnya) ) dan total penderitaan mereka dalam mencoba menyelesaikan program yang telah ditumpuk terhadap mereka. "

Hanya beberapa titik data tetapi, seperti yang orang lain katakan, menghantui.

- Pete

Pete Wilson
sumber
Saya sangat lelah dengan sudut pandang yang payah ini.
Andres Jaan Tack
Python adalah salah satu bahasa pengajaran terbaik yang ada
Casebash
@Icplben, Pete atau Jamaal dari codinghorror.com?
Zaki
14

Pertama, bertahanlah di sana!

Kedua, berikut adalah beberapa hal yang membantu saya:

  1. Pertahankan pencarian pekerjaan Anda di luar wilayah minat Anda. Pasti ok untuk mencari ulang. Kesempatan besar untuk keluar dan melihat tempat baru!
  2. Karena pengalamannya rendah, saya pikir pewawancara ingin memastikan bahwa Anda adalah seseorang yang bersemangat dan bersemangat untuk bekerja dan menyelesaikan masalah. Jadi saya memastikan bahwa saya tertarik dalam pengkodean untuk perusahaan. Yang saya;)
  3. Ajukan pertanyaan pewawancara Anda. Teliti perusahaan dan siapkan beberapa bahan selama wawancara. Pola desain apa yang Anda gunakan? Mengapa teknologi X bukannya teknologi Y? Saya merasa ini melengkapi Anda sebagai pribadi selama wawancara dan memberi Anda kesempatan untuk beristirahat.
  4. Kode untuk bersenang-senang di rumah! Itu tidak harus berhasil, tetapi hanya menulis kode yang mungkin menggunakan teknik yang Anda baca atau teknologi seperti database.

Ketiga, saya berada di kapal yang sama seperti Anda ketika saya lulus lagi, bertahan di sana dan terus mencari. Pekerjaan pertamamu di luar sana.

Robb
sumber
14

Sangat sedikit orang yang lulus disiplin apa pun menjadi ahli pada sesuatu yang mereka pelajari. Ilmu komputer sama sekali tidak istimewa dalam hal itu. Tidak ada yang mengalahkan pengalaman empiris dan Anda hanya mendapatkannya dari mengembangkan perangkat lunak sepenuhnya untuk klien nyata, dengan semua tuntutan, batasan waktu, perubahan, dan kerja tim yang terlibat.

Dan Diplo
sumber
1
Sayangnya itu benar. Sarjana tidak berguna kecuali sebagai lencana yang berhasil Anda lalui. Yang mengatakan, kurikulum comp sci mengerikan di tingkat sarjana. Kurikulum CM membutuhkan 5 matematika, tetapi menggabungkan bahasa formal, automata dan komputabilitas ke dalam satu mata pelajaran dan itu adalah pilihan.
MIA
4
Setuju 100%. Mengapa Anda menjadi ahli dalam sesuatu yang baru saja Anda memenuhi syarat ??
Alex Feinman
13

Saya menemukan situs jahat ini tempo hari http://99designs.com/ Di bawah desain situs web atau desain lainnya, Anda mungkin dapat menemukan beberapa proyek perangkat lunak terkait.

Ini akan menjadi cara yang bagus untuk mendapatkan kode, mengembangkan beberapa keterampilan baru, bertemu beberapa orang baru yang mungkin merupakan calon majikan dan Anda bahkan dapat menghasilkan uang.

Saya telah menemukan ada nilai besar bagi pengusaha dalam menunjukkan bahwa meskipun Anda tidak memiliki pekerjaan Anda tidak duduk di pantat Anda. Tunjukkan bahwa Anda keluar dari sana dan melakukan beberapa proyek, lebih disukai yang dapat Anda pamerkan di sebuah wawancara.

Yakub
sumber
Saya membagi hari saya antara 1) mengirim resume 2) meninjau buku tetapi saya belum mengerjakan proyek apa pun. Omong-omong, itu situs yang sangat menarik. Tampaknya lebih ditujukan pada artis dan desainer daripada pengembang perangkat lunak, tetapi saya harus menyelidiki lebih lanjut.
Saya tidak akan terlalu khawatir tentang buku-buku itu. Seperti disebutkan di tempat lain, satu-satunya cara pasti untuk belajar adalah dengan melakukan. Jangan berkecil hati karena butuh waktu untuk mencari pekerjaan. Sangat disayangkan, tetapi terkadang menemukan yang tepat membutuhkan waktu berbulan-bulan. Terus mencoba :) Saya setuju dengan Anda, situs ini lebih bertarget seni / desain, walaupun jika Anda tertarik pada situs web, ada beberapa di antaranya. Keuntungannya adalah Anda dapat melakukan proyek tanpa memiliki ide sendiri, dan Anda dapat dibayar, jika tidak, Anda dapat melihat sourceforge.net untuk ide
13

Jangan khawatir. Roma tidak dibangun dalam satu hari.

For each P in PeopleYouKnow
Try
  ask/call P for a Job apply for job;
Catch Denial As Exception
  don be worry;
  //you'll get a job later
End Try

Finally
 If you haven't found a job yet
  For each programmingJobAd in internet

 Try
    apply for job;
    Follow up;
  Catch Denial As Exception
   don be worry;
  //you'll get a job later
 End Try
end
//Keep trying.
//find a bug from this code.

SUNTING: #! diff A B

3c3
<   ask/call P for a Job apply for job;
---
>   ask/call P for a Job job; if job is available apply for job;
9a10
>  //(sic)
14c15
<     apply for job;
---
>     apply for programmingJobAd;
20c21
< end
---
> End
THEn
sumber
12

Pertama, jangan khawatir bahwa Anda tidak dapat membuat kode google. Google dibuat selama beberapa tahun oleh banyak programmer yang sangat berpengalaman. Itu seperti menyelesaikan gelar seni visual, dan bertanya-tanya bagaimana Anda bisa membuat The Last Supper.

Untuk berburu pekerjaan, jangan memusingkan persyaratan. Panggil saja mereka, dan katakan bahwa Anda tidak memiliki tahun, tetapi Anda masih ingin melamar. Jika mereka benar-benar menginginkan pengalaman itu, tanyakan apakah ada lebih banyak posisi junior yang tersedia - mereka mungkin dapat membuat posisi baru hanya untuk Anda. Sebagian besar pekerjaan dibuat untuk orang tertentu. Pastikan Anda menghubungi manajer proyek, bukan departemen SDM. SDM biasanya tidak menciptakan pekerjaan baru, mereka sering hanya menyaring pelamar untuk pekerjaan yang ada. Google adalah teman Anda dalam hal ini;)

Jangan mencoba membuat kode aplikasi web (seperti google atau stack overflow) kecuali jika Anda ingin berinvestasi sekitar 6 bulan. Ini adalah kurva belajar yang sangat besar. Anda perlu belajar mengelola VCS, menjalankan server web, HTML JS dan coding CSS, sistem database, dan bahasa aplikasi web. Ini brutal. Sebagian besar teknologi ini tidak dapat ditransfer kecuali jika Anda ingin melakukan pekerjaan web.

Jika Anda memang ingin melakukan aplikasi web, Anda mungkin ingin menginstal aplikasi web sederhana (seperti IP berbasis django ini untuk aplikasi pencarian negara - http://www.coulix.net/blog/2006/aug/17/ip- bendera negara-django-komentar / ). Anda dapat berbelanja untuk mendapatkan kode diskon $ 90 dreamhost (sehingga Anda dapat bekerja di server web nyata), dan mencoba untuk mengatur semuanya. Jangan terlalu khawatir tentang keamanan atau kinerja (tapi lakukan menggunakan ssh) - itu hanya sebuah proyek pembelajaran.

Jika Anda ingin melakukan hal-hal di desktop, Anda bisa melihatnya di pygame.

sayu
sumber
Saya pikir versi pertama google dibuat dalam waktu singkat? Seperti musim panas atau semacamnya
Earlz
Apache yang berjalan di Linux di desktop Anda adalah "server web nyata", tidak perlu mengeluarkan uang. Menurut Anda, apa yang dijalankan perusahaan hosting?
TMN
@ TMN, oleh server web, maksud saya tumpukan perangkat keras dan perangkat lunak produksi. Saya tahu bahwa DH menggunakan Apache dan MySQL, tetapi mengembangkan pada server produksi memiliki kelebihan (semuanya sudah diatur, termasuk hal-hal rumit seperti surat, dan mereka melakukan pendaftaran domain untuk Anda) dan kerugian (seperti tidak ada root, dan Anda harus mendapatkan digunakan untuk pengembangan jarak jauh). Menggunakan server produksi membuat Anda terjun ke pekerjaan web.
11

Anda dapat membaca semua tentang pemrograman, tetapi Anda tidak akan belajar bagaimana memprogram sampai Anda sembuh .. mulai pemrograman!

Saya akan merekomendasikan Anda memulai proyek pribadi. Apa yang ingin Anda buat? permainan? Sebuah blog? Itu tidak masalah. Buat saja sesuatu!

Kemudian, setelah melakukan beberapa pengkodean nyata untuk sedikit (beberapa minggu atau bulan) saya sarankan mencoba untuk berkontribusi pada proyek open source. Proyek pribadi membantu Anda untuk mengetahui cara memprogram ketika tujuannya belum ditetapkan untuk Anda (mengetahui bagaimana sebenarnya merancang sesuatu tidak sering diajarkan di sekolah). Berkontribusi pada proyek yang ada mengajarkan Anda untuk bekerja dalam tim dan mengikuti standar kode.

Saya tidak akan membuang waktu saya membaca banyak hal lain. Saya akan mengatakan paling banyak Anda mungkin harus membaca sekitar 20% dari waktu dan menulis kode 80% lainnya. (tentu saja, berdasarkan waktu, maksud saya waktu Anda disisihkan untuk pemrograman hal-hal terkait)

Earlz
sumber
9

Nah, inilah dua sen SAYA ... ditambah dengan kutipan dari beberapa sumber lain.

Sebagian besar pelamar, bahkan mereka yang memiliki gelar master dan PhD dalam ilmu komputer, gagal selama wawancara ketika diminta untuk melakukan tugas pemrograman dasar.

- Dan Kegel melalui Jeff Atwood

http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html

Ini adalah masalah yang saya lihat banyak, bahkan sampai ke titik di mana orang-orang dengan tahun "pengalaman" pada resume mereka tidak dapat melakukan tugas-tugas sederhana. Secara pribadi, saya pikir lembaga pendidikan sebagian besar bertanggung jawab untuk ini, dari fakultas yang tidak tahu materi pelajaran atau tidak bisa mengajarkannya kepada konselor yang seharusnya mengarahkan siswa yang hanya ingin masuk ke bidang tertentu untuk mendapatkan uang tanpa minat yang wajar di bidang itu sendiri.

Dari pertanyaan Anda, Anda keluar dari perguruan tinggi dengan perasaan seperti baru saja keluar dari kehidupan Anda selama beberapa tahun untuk mendapatkan selembar kertas. Begitulah banyak agen perekrutan melihat gelar hari ini untuk programmer. Mereka menginginkan orang-orang yang telah membuktikan bahwa mereka dapat memprogram, bukan hanya seseorang yang memiliki selembar kertas. Tetapi fakta bahwa Anda mengajukan pertanyaan ini pada awalnya menunjukkan kepada saya keinginan untuk benar-benar belajar memprogram.

Salah satu hal terbaik yang dapat Anda lakukan untuk belajar telah ditunjukkan beberapa kali, yaitu hal-hal pemrograman. Sayangnya, walaupun ini benar-benar akan meningkatkan pengetahuan dan pemahaman Anda tentang teknologi, itu tidak mungkin membantu Anda menemukan pekerjaan kecuali itu adalah sesuatu yang dapat Anda masukkan ke dalam resume Anda.

Saya sarankan Anda mulai dengan membangun sendiri beberapa aplikasi dengan tujuan tertentu, mencari tahu apa yang dapat Anda lakukan dan apa yang akan menantang Anda untuk maju, kemudian pergi ke beberapa tempat di mana Anda dapat mengambil pekerjaan lepas. Jangan berharap mendapatkan bayaran dalam jumlah besar untuk pekerjaan lepas yang Anda ambil di web, Anda ingin menambahkannya ke resume Anda, bukan dompet Anda. Setelah Anda mendapatkan 3-5 item yang dapat Anda tunjuk dan mengatakan "Saya membuat itu" atau "Saya merancang fungsionalitas untuk mereka", kemudian daftarkan semua hal itu, dan temukan agen perekrutan (mereka ada di MANA SAJA .. (headhunter) dan bekerja dengan beberapa orang mereka untuk merampingkan resume Anda sehingga menyoroti pendidikan dan sumber daya Anda dalam menemukan pekerjaan yang harus dilakukan, dan meminimalkan aspek dari kurangnya pengalaman Anda.

Hal terbesar yang harus diingat ketika Anda berbicara dengan calon majikan (yang saya lihat orang-orang selalu mengacaukannya), dan sesuatu yang harus diperhatikan oleh SIAPAPUN DI DALAM BIDANG APA PUN, adalah bahwa sementara Anda sama sekali tidak ingin menjual diri Anda dengan kekurangan atau meminimalkan apa yang BISA Anda lakukan, jangan terlalu banyak menjual sendiri dan membuat mereka percaya Anda bisa melakukan hal-hal yang Anda tidak tahu caranya. Majikan selalu memiliki keahlian untuk meminta Anda melakukan hal-hal yang tidak Anda ketahui caranya, dan itu tugas Anda pada saat itu untuk mengetahuinya, tetapi jika Anda memberi tahu mereka bahwa Anda sudah bisa, Anda pasti akan memakan kata-kata Anda nanti .

Semoga sukses untuk Anda!

Nathan Wheeler
sumber