Mengapa pemrogram pemula (seperti saya) selalu bertanya tentang bahasa berikutnya yang harus mereka pelajari alih-alih bertanya tentang proyek selanjutnya yang harus diatasi?
Mengapa Eric Raymond, di bagian " Pelajari Cara Memprogram " dari karyanya " Bagaimana Menjadi Peretas ", berbicara tentang urutan di mana Anda harus belajar bahasa (vs. urutan di mana Anda harus menangani proyek).
Apakah tukang kayu pemula bertanya, "Saya tahu cara menggunakan palu ... haruskah saya belajar cara menggunakan gergaji atau tingkat selanjutnya?"
Saya bertanya karena saya menemukan bahwa hampir semua proyek yang berarti aku tertarik dalam menanggulangi (misalnya web app, satu set alat analisis poker) membutuhkan bahwa saya belajar cukup dari banyak bahasa (Python, C, HTML, CSS , Javascript, SQL) dan frameworks / libraries (wxPython, tkinter, Django) untuk mengimplementasikannya.
Terima kasih,
Mike
sumber
Jawaban:
Saya pikir ketika kebanyakan orang mulai belajar bahasa, mereka melakukannya karena mereka ingin menangani proyek yang ditulis dalam bahasa itu, baik sekarang atau di masa depan. Untuk melakukannya, mereka harus mempelajari bahasa itu, yang membutuhkan waktu. Bahasa pemrograman seperti alat, tetapi ketika Anda bisa belajar menggunakan palu dalam waktu sekitar enam puluh detik, bahasa membutuhkan waktu lebih lama untuk belajar menggunakannya; sehingga banyak orang fokus belajar bahasa sebelum mereka fokus mengerjakan proyek yang ditulis dalam bahasa itu.
Pada catatan lain, saya pikir ketika kebanyakan orang bertanya bahasa apa yang harus dipelajari selanjutnya, mereka benar - benar memikirkan proyek apa yang harus dipelajari selanjutnya, tetapi mereka fokus pada mempelajari bahasa itu terlebih dahulu.
Akhirnya, belajar bahasa bisa menyenangkan , meskipun Anda tidak memiliki proyek atau tujuan tertentu dalam pikiran.
sumber
Motif dari banyak pengembang penuh waktu adalah agar lebih mudah dipekerjakan.
Menjadi lebih dapat dipekerjakan biasanya berarti melewati rintangan dari screener HR (dan kemudian melewati rintangan dari wawancara yang sebenarnya).
Screener HR biasanya memiliki daftar periksa bahasa yang dapat dicocokkan dengan resume, tetapi tidak memiliki cara mengevaluasi keterampilan atau proyek.
Keberhasilan dalam wawancara yang sebenarnya biasanya lebih tergantung pada keberuntungan dan keterampilan minimal dalam suatu bahasa daripada pada pengalaman dan pemahaman yang mendalam tentang suatu bahasa.
Oleh karena itu, menjadi biasa-biasa saja dalam banyak bahasa lebih baik untuk dipekerjakan daripada menjadi ahli dalam beberapa bahasa, kecuali seseorang melamar posisi senior.
sumber
Pilihan pemrograman analog untuk tukang kayu akan ada "Aplikasi apa yang harus saya bangun selanjutnya?" atau "Sistem apa yang harus saya bangun selanjutnya?" yang agak valid dan terpisah dari proyek yang benar-benar dapat diterapkan hampir secara universal. Saya dapat memiliki proyek untuk mengubah diet saya atau mengurangi 20 lbs semudah saya dapat memiliki sesuatu yang memerlukan beberapa perangkat lunak baru untuk ditulis untuk mengikat semuanya.
Untuk menjawab pertanyaan itu, saya yakin idenya adalah bahwa suatu bahasa mewakili alat di kotak alat orang itu yang dapat berguna pada resume. Beberapa orang mungkin memilih untuk menjadi programmer untuk membayar tagihan dan jika demikian, maka mereka dapat bertanya alat mana yang harus mereka tambahkan yang sering menjadi bahasa tetapi ada kemungkinan lain seperti belajar tentang penyebaran, kontrol sumber, pengujian dan metodologi pengembangan untuk beri nama beberapa area lain. Jika seorang tukang kayu harus mengungkapkan alat apa yang dia miliki maka dia mungkin memiliki perspektif yang sama, saya berpendapat. Namun, ada seperangkat alat umum yang sebagian besar tukang kayu diasumsikan memiliki atau memiliki akses untuk memperolehnya jika diminta dengan cukup cepat. Pernahkah Anda melihat berapa banyak jenis gergaji dan palu di luar sana untuk digunakan orang?
sumber
Mungkin sebagian tentang mentalitas hacker, setidaknya untuk beberapa programmer. Peretas didefinisikan dalam file Jargon sebagai
Jadi, untuk jiwa peretas, ini lebih tentang belajar dan "bermain-main" dengan proses, konsep, alat, dan ya, bahasa untuk menciptakan sesuatu, daripada produk akhir itu sendiri. Lebih lanjut tentang proses itu sendiri.
Ini adalah upaya konstan untuk hal dan / atau tantangan baru berikutnya. Proyek yang sudah selesai kehilangan daya tariknya dengan cepat. Terkadang (sebagian besar waktu?) Tantangan kreatif atau teknis terbesar ditaklukkan sebelum penyelesaian proyek. Banyak proyek ditinggalkan, ketika pikiran yang lapar akan tantangan mental baru bergerak maju.
Terutama peretas yang tertarik pada pandangan baru, konsep, abstraksi dan cara berpikir, jenis peretasan mental:
sumber
Ada berbagai bahasa jelek yang umum digunakan saat ini: C, C ++, C #, Java, JavaScript, Python, Perl, Ruby, Visual Basic, dll. bersama.
Ada sebuah komunitas kecil yang dikenal sebagai komunitas Lisp yang bebas dari kegilaan yang meliputi komputasi modern.
Karena Lisp adalah bahasa pemrograman yang dapat diprogram, Anda dapat mengekspresikan semua ide Anda di dalamnya tanpa harus menyimpang ke bahasa lain atau format data lain seperti XML. Lisp dapat diterapkan di mana-mana, bahkan hingga ke tingkat perangkat keras seperti yang kita lihat dengan mesin Lisp .
sumber
Karena mempelajari bahasa pemrograman baru adalah investasi besar, dan tidak ada yang suka melakukan investasi buruk.
Mempelajari bahasa pemrograman baru bukan tentang menghafal cara menulis konstruksi lingkaran, mendeklarasikan kelas, mengimpor modul lain ...
Anda harus tahu cara menulis kode idiomatik dalam bahasa itu dan proses ini benar-benar membutuhkan banyak waktu dan dedikasi .
Waktu adalah sumber daya yang terbatas, usaha adalah sumber daya yang terbatas tetapi gangguan, tekanan harian, tagihan dan permainan olahraga hari Minggu selalu ada dan harus dijalani.
Programmer ingin berinvestasi dengan bijak.
sumber