Saya ingin belajar memprogram dengan cara 'masa depan-bukti', jika Anda mau. Sementara Windows mendominasi pasar OS desktop (untuk saat ini), jelas ada banyak nilai dalam mempelajari bahasa / kerangka / API dan sebagainya - ini dapat berubah sewaktu perangkat baru muncul atau Windows menembak sendiri di kaki (lebih Pratinjau ramah Windows 8 tidak terlihat terlalu menarik ...).
Apakah saya benar dalam berpikir bahwa memiliki pengetahuan yang kuat tentang C / C ++ untuk logika back-end / pemrograman tingkat rendah dan sejenisnya, dikombinasikan dengan bahasa yang sangat portabel seperti Java untuk GUI dan seterusnya, akan menjadi dasar yang baik untuk pengembangan perangkat lunak yang akan terbukti bermanfaat pada sebagian besar sistem? - Saya berbicara tentang PC desktop, tablet, ponsel.
sumber
Jawaban:
Jika Anda ingin menjadi bukti di masa depan, saran terbaik yang bisa saya berikan kepada Anda adalah jangan menyertakan diri Anda pada teknologi.
Jadi jangan belajar API secara membabi buta. Pelajari bagaimana mereka dikandung. Apa filosofi di balik layar? Apa kelebihan dan kekurangan mereka? Pikirkan perangkat lunak secara umum, bukan teknologi spesifik.
Anda juga dapat bekerja pada konsepsi program yang baik, pergi ke OOP dan AOP adalah pilihan IMO yang baik. Tapi jangan hanya memahami mekanismenya, benar-benar bekerja pada filosofi di balik mekanismenya.
Jangan abaikan ilmu komputer umum, seperti struktur data dan algoritma, karena mereka adalah pengetahuan lintas teknologi yang selalu berguna.
Ikutilah praktik yang baik. Anda sering memiliki selusin cara untuk melakukan sesuatu, tetapi kebanyakan dari mereka adalah omong kosong: rawan bug, sulit untuk dipelihara, sulit untuk dipahami nanti atau oleh programmer lain, dll. . . Biasanya, kode lebih sulit dibaca daripada menulis. Jadi pelajari cara meluangkan sedikit lebih banyak usaha untuk menulis agar lebih mudah membaca (karena Anda akan membaca kode lebih dari yang Anda tulis).
Pelajari teknik yang efektif untuk debug (penggunaan log dan debugger yang cerdas) dan tes (cara menulis kode yang dapat diuji unit dengan mudah dan cara mengotomatiskan tes ini).
Maka, Anda akan membutuhkan latar belakang teknologi umum. Saya berbicara tentang pengetahuan yang sangat luas, seperti bagaimana cara kerja prosesor (cache miss atau prediksi cabang merupakan awal yang baik), tentang sistem UNIX, tentang protokol jaringan seperti IP, TCP dan Ethernet, dll. . .
Pada akhirnya, pelajari cara belajar. Jika Anda tahu cara belajar, maka Anda bisa beradaptasi.
Anda akan membutuhkan pengetahuan yang kuat dalam teknologi spesifik untuk dapat menemukan pekerjaan, tetapi itu sudah sangat cepat usang (pikirkan COBOL misalnya, atau pemrograman web pada saat perang IE / Netscape). Jadi jangan mengandalkan mereka sebagai bukti masa depan. Mereka akan menjadi kunci untuk dipekerjakan, tetapi jelas bukan apa yang membuat seorang programmer hebat dan apa yang akan membuat keterampilan Anda tahan lama.
EDIT: Jika Anda baru memulai, Anda harus menyelesaikan sesuatu secara pasti. Apa saja, sungguh. Gim seperti Tetris atau ular adalah awal yang bagus, dan menyenangkan. Jika Anda tidak menyelesaikan sesuatu, Anda akan menghabiskan banyak waktu untuk belajar dan benar-benar tidak mendapatkan pengalaman yang diperlukan untuk sepenuhnya memahami apa yang Anda pelajari.
Mari kita memberi contoh dengan pola desain. Pola desain sangat bagus dan Anda harus menggunakannya secara definitif. Tetapi jika terlalu sering digunakan akan membuat kode Anda rumit dan sulit dimengerti. Anda harus menghadapi masalah yang memecahkan pola desain dan kehilangan waktu untuk mencoba menyelesaikannya atau efek sampingnya untuk memahami sepenuhnya tentang pola desain. Pola desain harus digunakan sebagai refactoring kecil seiring waktu ketika kode tumbuh. Dan Anda akan tahu kapan pola desain diperlukan ketika manfaatnya lebih besar daripada kompleksitas kode yang disebabkan oleh penggunaannya. Ini membutuhkan pengalaman.
Jadi secara pasti, selesaikan semuanya, mereka belajar dari kesalahan Anda. Saya tidak bisa bersikeras: DAPATKAN HAL-HAL YANG DILAKUKAN !
sumber
Apa yang membedakan programmer baik dari yang buruk adalah kemampuan mereka untuk memprogram dalam bahasa APA PUN. Seperti yang telah dicatat oleh poster lain, mengetahui bahasa berorientasi objek yang signifikan akan memberi Anda alat untuk membuat program yang hebat dan diminati.
Juga jika Anda masih di sekolah, pastikan Anda mengambil beberapa kelas menulis. Insinyur dan programmer terbaik juga adalah orang-orang yang mengomunikasikan ide-ide mereka dengan baik.
Setelah Anda mulai bekerja, hal terbaik yang harus dilakukan untuk mencegah ketinggalan zaman adalah mengikuti tren saat ini. Jangan takut untuk meninggalkan pekerjaan untuk pekerjaan lain jika mereka tidak menggunakan teknologi saat ini atau memiliki proses yang buruk dll. Hal terburuk yang dapat Anda lakukan untuk karir Anda adalah mengambil pekerjaan yang membuat Anda bekerja dengan teknologi lama atau proses yang lemah.
sumber
Jawaban dari @deadalnix bagus. Saya ingin menambahkan tiga hal:
sumber
Karena Anda berada di awal, saya akan mengatakan hanya belajar bahasa, tidak masalah yang mana. Kesulitannya bukan dalam bahasa (sintaksis) itu sendiri, tetapi dalam memahami konsep; dan konsep pemrograman umum ini berlaku untuk semua bahasa pemrograman, jadi mempelajari bahasa kedua dan ketiga dan keempat Anda akan jauh lebih mudah.
Jadi, pada awalnya jangan terlalu banyak berpikir tentang menjadi 'bukti masa depan'. Namun, saat Anda maju, cobalah untuk menjadi mahir dalam bahasa yang sangat berbeda satu sama lain. Pada dasarnya, (seperti yang Anda katakan), Anda harus terbiasa dengan bahasa tingkat rendah (-ish) seperti C / C ++, bahasa pemrograman tingkat tinggi seperti Java dan juga bahasa scripting (Python, Ruby, dll). Jika Anda ingin masuk ke hal-hal yang benar-benar canggih, Anda juga harus tahu Assembly.
Tetapi jangan terlalu menekankan diri Anda tentang hal ini sekarang. Belajar program butuh bertahun-tahun. Untuk saat ini, pilih saja bahasa seperti Java atau C # atau apa pun dan lakukan. :)
sumber
If you want to go into the really advanced stuff you must also know Assembly
- Anda dapat melakukan ini di tingkat mana pun, tantangannya hanya berbeda.Tidak. Tidak ada yang akan membantu.
Pengetahuan yang kuat tentang struktur data dan algoritma - independen dari bahasa pemrograman tertentu - lebih berharga daripada "pemrograman tingkat rendah dan sejenisnya".
"Bahasa yang sangat portabel seperti Java" sama portabelnya dengan C dan tidak membantu. Hal Besar Berikutnya akan sangat berbeda dari bahasa-bahasa ini sehingga Java super-portable Anda akan menjadi liabilitas, bukan aset.
Mac OS (desktop, tablet, dan telepon) semuanya dilakukan di Objective C. Itu mungkin tempat untuk memulai.
Windows (desktop, tabel, dan telepon) semuanya dilakukan dalam C #. Itu mungkin tempat untuk memulai.
sumber