Dalam urutan kepentingan, jika memungkinkan untuk dilakukan dan mungkin tidak, dasar apa yang paling penting untuk mengetahui cara memprogram. Algoritma, iterasi, rekursi, dll?
Perhatikan bahwa tempat saya meletakkan dll. Adalah tempat pertanyaan saya berada. Saya baru-baru ini membaca posting Internet yang mengatakan 9 dari 10 programmer tidak dapat terkesiap !
http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html
Saya ingin memiliki pengetahuan yang mendalam tentang apa yang sebenarnya saya coba capai ketika pemrograman dan pemahaman mendalam tentang alat-alat dasar yang saya miliki. Pada dasarnya saya ingin bisa melukis dengan semua warna angin.
Jawaban:
Daftar ini adalah awal ... Anda mengajukan pertanyaan besar!
Saya menjawab pertanyaan lain di sepanjang baris yang sama (dengan konten serupa) di sini:
tips, pedoman, poin yang perlu diingat untuk memberikan kode profesional?
sumber
Di bawah judul " dll. " Muncul sesuatu yang dapat dengan mudah mengambil 50% atau lebih dari waktu Anda.
Pelajari cara men-debug.
Ini berarti mempelajari Metode Ilmiah . Maksud saya benar - benar mempelajarinya. Dan kemudian menerapkannya dengan kejujuran diri yang brutal . Pelajari bagaimana menyatakan dengan tepat apa yang Anda tahu benar, apa yang Anda tahu tidak benar, dan hal-hal yang tidak Anda ketahui. Setiap kali Anda dengan sembarangan menetapkan item ke kategori yang salah, Anda baru saja membuat hidup Anda jauh lebih sulit.
Belajarlah untuk mengatakan "Saya pikir" bukannya "Saya tahu". Anda hanya bisa mengatakan "Saya tahu" ketika Anda "berpikir" sesuatu itu benar (atau salah), dan kemudian Anda membuktikannya!
Banyak bug sepele, tetapi mereka bisa sulit dilihat karena Anda "tahu" kode apa yang seharusnya ... kecuali tidak. Temukan teman untuk menjelaskannya. Minta mereka untuk menjadi "idiot ahli": seseorang yang tidak tahu kode Anda, tetapi siapa yang Anda tahu Anda tidak bisa menghancurkan BS masa lalu. Jangan kaget jika di tengah-tengah menggambarkannya kepada Anda, Anda tiba-tiba berhenti dan berkata, "jadi Anda bisa ... lihat ... lihat itu ... sh * t. Terima kasih."
Serangga nontrivial membutuhkan gudang teknik. Klasik yang dapat dengan cepat menyoroti sebagian besar bug yang tidak terkait waktu adalah Wolf Fence di Alaska. Ada serigala di suatu tempat di Alaska; membangun pagar memotong negara menjadi dua. Di sisi mana serigala berada? Potong sisi itu menjadi dua. Busa, bilas, ulangi. Melakukan ini 20 kali di tempat-tempat yang dipilih dengan baik dalam kode mengurangi area di mana bug (serigala) dapat mencapai 1/1048576. Bunuh serigala itu.
Kiat: cari gelombang tangan — fisik, mental, atau jenis lainnya. Segera setelah Anda (atau kolega Anda) tersentak / mengalihkan / memperkecil perhatian yang diberikan pada sebagian kode, jadi benar-benar gila . Karena area di mana Anda baru tahu bug tidak bisa, meskipun Anda telah menghabiskan berjam-jam / hari mencari hal d * mn dan masih tidak dapat menemukannya ... itu adalah lokasi probabilitas tertinggi untuk bug. Tidak ada yang mendapat 'bye' , tidak ada (termasuk mesin, OS, kompiler, atau Anda ) mendapat semacam "hormat". Ada bug. Titik. Akhir kalimat. Sekarang pergi, bunuh benda itu.
Saya tahu tidak ada sekolah yang mengajarkan debugging sebagai subjek tersendiri. IMNSHO, ini mungkin satu-satunya bukti paling mencolok bahwa mereka (universitas / profesor) tidak mengajari Anda untuk menjadi seorang programmer, mereka, sebaliknya, mengajari Anda untuk ... seperti mereka? Keras? Mungkin. Benar? Tentukan pilihan Anda sendiri. Sekarang buktikan.
sumber
Saya khawatir ini adalah pertanyaan yang cukup besar bagi siapa pun untuk menjawab secara meyakinkan atau otoritatif, terutama mengingat Anda menginginkan daftar yang diprioritaskan. Ada banyak programmer di luar sana, dan mereka mengerjakan hal-hal yang sangat berbeda - tentu saja, dasarnya tetap sama, tetapi apa yang Anda butuhkan untuk tetap aktif dalam ingatan Anda bisa sangat berbeda, dan memang ada banyak tugas di mana Anda dapat tetap cantik tingkat tinggi tanpa masuk lebih dalam.
Namun tampaknya Anda benar-benar peduli bagaimana menjadi pengembang yang lebih baik, dan bukan hanya sekadar pertukaran. Saya menemukan itu mengagumkan, dan saya dapat membagikan beberapa hal yang telah membantu saya belajar bagaimana memprogram.
Hampir semua pemrograman bermuara pada algoritma dan struktur data. Mereka, pada gilirannya, adalah contoh dari pertanyaan yang lebih besar - bagaimana kita memodelkan hal-hal dan proses dari dunia nyata ke dalam representasi sehingga komputer dapat mengerti. Jika Anda baru memulai, mungkin berguna untuk menggunakan bahasa pemrograman tingkat tinggi (seperti Java, Python, apa pun) untuk menjadi terbiasa dengan menerapkan struktur data dan algoritma.
Pada titik tertentu, setelah bermain-main dengan struktur data dan algoritma, Anda mungkin mulai mendapatkan pertanyaan yang menggerogoti "tetapi bagaimana kita beralih dari memberi tahu komputer apa yang harus dilakukan, ke komputer yang benar-benar melakukannya?" Kemudian Anda dapat melihat bagaimana komputer benar-benar menghitung - bagaimana memori dan CPU bekerja bersama untuk melaksanakan instruksi, bagaimana sistem operasi mengabstraksikan perangkat keras sehingga Anda dapat menulis sebuah program yang, katakanlah, membuka file, tanpa pengkodean ke tingkat rendah tertentu antarmuka hard-drive.
Ini mungkin titik yang baik untuk memulai - bagaimana algoritma dan struktur data memodelkan masalah dari dunia nyata, dan bagaimana komputer benar-benar melakukan komputasi. Mengetahui yang terakhir sangat berguna dalam menguasai bahasa tingkat rendah seperti C, yang memanfaatkan jauh lebih sedikit asap dan cermin daripada bahasa OO dan scripting :)
sumber
YAGNI : "Selalu terapkan hal-hal ketika Anda benar-benar membutuhkannya, jangan pernah ketika Anda hanya meramalkan bahwa Anda membutuhkannya."
Dalam pengalaman saya, sangat umum bagi "programmer" untuk meramalkan banyak kasus di masa depan dan mencoba untuk "meningkatkan" kode dengan menambahkan kode untuk mengantisipasi mereka! Dalam kebanyakan kasus, kode yang mereka tambahkan hanya akan mengasapi kode dan menambah kerumitan pada kode.
sumber
Hal paling penting untuk diketahui tentang menjadi seorang programmer adalah bahwa menulis kode adalah pekerjaan keras, dan sikap "kerah biru" yang cekatan dalam menghasilkan apa yang Anda bayarkan untuk menghasilkan akan membuat Anda lebih jauh daripada pembelajaran esoteris mana pun.
Belajar masuk ke zona tersebut. Maksud saya keadaan mental ketika Anda hanya berfokus pada tugas Anda dan Anda dapat mulai menyimpan banyak hal besar di kepala Anda dan bagaimana mereka saling beroperasi sekaligus. Setelah Anda terbiasa memasuki zona sesuka hati, mulailah mengkhawatirkan sisanya. Sampai Anda dapat mengeluarkan kode seperti semacam kode untuk mengeluarkan sesuatu, sisanya hampir tidak berguna.
EDIT:
Jika Anda tidak percaya ini dan Anda menurunkan saya, saya percaya bahwa Anda tidak tahu apakah Anda memiliki tekad untuk melakukannya selama 20 tahun. Saya tahu saya melakukannya karena saya menerima ini. ;)
sumber
Pertanyaan terbaru, terkait dengan beberapa cara untuk yang satu ini, dan Answer punya tautan ke blog ini yang membahas masalah yang sama dari sudut yang berbeda.
Mungkin konsep yang paling penting untuk setiap pengembang adalah "kerendahan hati" .... Setelah Anda menerima bahwa Anda tidak tahu semuanya, Anda terbuka untuk mencari solusi. Sebagian besar orang yang menulis blog tentang pemrograman berada dalam persentil teratas, dan masalahnya adalah masih banyak yang belum mengontrol kecenderungan narsis mereka .... itulah sebabnya mereka menulis blog ..... Anda perlu belajar mengidentifikasi blogger dan abaikan kata-kata kasar
Blog yang ditautkan benar-benar tidak lebih dari kata-kata kasar - Dalam setiap industri mengeluh bahwa lulusan baru tidak berguna adalah umum, bahwa dibutuhkan bertahun-tahun untuk menjadikannya bermanfaat dan produktif. Mungkin masalahnya adalah bahwa guru yang memproklamirkan diri ini sebenarnya berharap terlalu banyak dan lupa bahwa begitu mereka tidak akan bisa menyelesaikan FizzBuzz. Tidak semua orang dapat berada dalam 10 persen teratas, menurut definisi, setengah dari programmer berada di bawah rata-rata ......
sumber