Saya seorang siswa CS dengan beberapa tahun pengalaman dalam C dan C ++, dan selama beberapa tahun terakhir saya telah terus-menerus bekerja dengan Java / Objective C melakukan pengembangan aplikasi dan sekarang saya telah beralih ke pengembangan web dan saya terutama berfokus pada ruby pada rails dan saya menyadari bahwa (seperti halnya pengembangan aplikasi, sungguh) saya terlalu banyak merujuk kode lain. Saya terus-menerus fungsionalitas Google untuk banyak hal yang saya bayangkan seharusnya saya bisa lakukan dari awal dan itu benar-benar sedikit merusak kepercayaan diri saya.
Fundamental dasar bukan masalah, saya benci menggunakan ini sebagai contoh tapi saya bisa menjalankan melalui javabat di kedua java / python di sprint - jelas bukan prestasi dan tapi apa yang saya katakan adalah saya memiliki dasar yang kuat untuk fundamental Kupikir?
Saya tahu apa yang perlu saya gunakan biasanya tetapi referensi sintaksis terus-menerus. Akan sangat senang saran dan masukan tentang ini, karena telah menahan saya cukup solid dalam hal mencari pekerjaan di bidang ini meskipun saya sedang menyelesaikan gelar saya. Alasan utama saya untuk bertanya bukanlah tentang pekerjaan, tetapi lebih dari itu saya tidak ingin menjadi satu-satunya orang di hackathon yang tidak menuntaskan kode tanpa henti dan duduk di sana dengan 20 tab Google / github terbuka, dan saya telah menahan diri untuk tidak menghadiri karena sedikit kurang percaya diri ...
Apakah seseorang pengembang yang buruk dengan terus mencari contoh kode untuk tugas-tugas sedang hingga rumit?
sumber
Jawaban:
Copy-paste secara membabi buta: buruk.
Cari dokumentasi, baca contoh kode untuk mendapatkan pemahaman yang lebih baik: bagus.
Saya lebih suka bekerja dengan seseorang yang mencari hal-hal sepanjang waktu dan memastikan semuanya berfungsi sebagaimana dimaksud daripada seseorang yang terlalu percaya diri yang berpikir dia tahu semuanya tetapi tidak. Tetapi yang terburuk adalah seseorang yang tidak repot-repot memahami cara kerja, dan hanya menyalin kode secara tidak kritis dari web (dan kemudian ketika laporan bug mulai turun tidak dapat memperbaiki apa pun dengan benar).
sumber
Jika Anda mengkode solusi Anda dengan cara yang dapat dipertahankan dan benar-benar MEMAHAMI apa yang Anda salin / tempel / modifikasi maka tidak ada masalah.
Saya mati di dalam setiap kali saya mengajukan pertanyaan kepada pengembang senior tentang mengapa dia melakukan apa dan jawabannya adalah "Saya tidak tahu, saya menyalin kode yang disisipkan dan itu bekerja pada waktu yang diberikan".
sumber
Sama seperti dengan keterampilan untuk memprogram dengan / keluar dokumentasi API , mencari contoh kode adalah tanda bukan dari programmer yang buruk, tetapi orang yang kurang lancar ...
... dan praktiknya bagi saya satu-satunya cara yang dapat diandalkan untuk mendapatkan kefasihan.
sumber
Ada teori belajar yang disebut siklus Kolb (setelah orang yang menggambarkannya). Entri dalam siklus ini adalah:
Orang yang berbeda suka memulai dari tempat yang berbeda dalam siklus. Jadi sepenuhnya mungkin untuk belajar dengan mencari sampel (fase pengamatan reflektif), kemudian bekerja dari sampel ke gambaran besar melalui abstraksi.
Orang lain akan belajar dengan cara yang berbeda: beberapa orang suka memulai dengan mencoba (yaitu dengan eksperimen) kemudian merefleksikan apa yang benar atau salah. Intinya adalah ini hanya cara yang berbeda untuk menyerang masalah belajar hal-hal: tidak ada yang salah.
sumber
Pengungkapan penuh - Saya adalah orang tua yang terlatih dalam pra-Internet berbeda yang tersedia di era kerja. Saya telah menyaksikan keterampilan para pengembang muda terus memburuk sebagian besar karena mereka tidak menyimpan informasi atau memahami solusi yang mereka ambil dari Internet. Saya telah mengamati bahwa tingkat kompetensi seseorang setelah 1-2 tahun pengalaman, 20 tahun yang lalu, sekarang tingkat kompetensi seseorang setelah 5-7 tahun pengalaman. (Ya itu adalah pengamatan pribadi tetapi saya sudah melakukan banyak perekrutan, saya tidak punya data statistik tentang masalah ini dan ya, saya kadang-kadang tua dan rewel, ambil pernyataan ini dengan sebutir garam. Dan menjauhlah dari halaman saya. )
Mencari semuanya tidak efisien dalam hal waktu. Ini juga merupakan gejala seseorang yang tidak memiliki banyak pengetahuan. Orang yang memiliki pengetahuan mendalam dapat menulis kode lebih cepat daripada orang yang tidak tahu bagaimana menyelesaikan masalah tanpa melihat ke atas. Jadi layak untuk belajar menangani lebih banyak hal tanpa harus mencari hal-hal secara terus menerus.
Sekarang saya tidak mengatakan Anda seharusnya tidak pernah mencari hal-hal baru, saya mengatakan Anda harus belajar untuk mempertahankan pengetahuan dan hanya perlu mencari hal-hal yang jarang Anda gunakan atau ketika Anda menemukan masalah atau bahasa atau paradigma yang benar-benar baru. Dan saya tidak mengatakan Anda tidak harus membaca untuk mengikuti solusi, alat, dan bahasa baru.
Perhatian saya yang sebenarnya terhadap pengembang yang terlalu sering mencari hal-hal yang terlalu banyak dari mereka (belum tentu Anda) tidak pernah mengembangkan keterampilan analitis untuk memahami masalah yang mereka miliki dan solusi yang dibutuhkan. Baca berapa banyak pertanyaan di mana orang tersebut memasukkan pesan kesalahan yang jelas-jelas tidak dia pahami, tetapi yang seharusnya cukup jelas bagi siapa pun yang beroperasi di tingkat profesional. Atau orang-orang yang mengatakan, "itu tidak berfungsi, mengapa?" tanpa referensi ke pesan kesalahan atau bagaimana itu tidak berfungsi dan kode secara sintaksis benar. Atau orang-orang yang diberi sepotong kode yang harus bekerja,
Jadi jika apa yang Anda cari adalah hal-hal yang merupakan bagian dari fungsionalitas inti bahasa (BTW ini harus mencakup SQL jika Anda mengakses database) yang telah Anda gunakan selama lebih dari enam bulan, saya curiga Anda juga melihat ke atas banyak. Jika apa yang Anda cari adalah fitur-fitur canggih, terutama yang mungkin jarang Anda gunakan, maka Anda baik-baik saja.
Tetapi bagaimana Anda belajar untuk menyimpan lebih banyak informasi? Pertama mengerti mengapa kode rusak. Bahkan jika seseorang memberi Anda solusi yang berfungsi, jika Anda tidak melihat mengapa itu berhasil dan Anda tidak, maka tanyakan. Jika Anda tidak memahami pesan kesalahan itu, tanyakan apa artinya dan kemudian coba selesaikan sendiri.
Dan jangan pernah memotong dan menempelkan solusi yang tidak Anda mengerti. Bahkan, jangan memotong dan menempel sama sekali. Jika Anda ingin menyimpan informasi, Anda perlu mengetiknya. Sebenarnya, menulis kode sendiri secara fisik membantu Anda mempelajarinya. Itu adalah teknik pembelajaran yang terkenal.
Berlatih menggeneralisasi pemahaman Anda tentang kode. Saya telah melihat orang-orang mengajukan pertanyaan serupa berulang kali karena mereka tidak mengerti bahwa solusi yang mereka dapatkan sebulan yang lalu untuk masalah ABC adalah solusi yang sama untuk DEF masalah baru.
Jadi, ketika Anda telah meneliti sesuatu, luangkan waktu untuk memikirkan jenis masalah apa yang akan baik untuk menyelesaikan dan menulis sendiri catatan tentang hal itu. Kemudian ketika Anda memiliki masalah untuk dipecahkan, pertama periksa catatan Anda sendiri untuk melihat Anda telah mencatat teknik yang mungkin. Jika Anda mengevaluasi berbagai cara untuk menyelesaikan masalah, catat jenis masalah, solusi yang mungkin Anda lihat dan pro dan kontra dari masing-masing masalah. Sekali lagi pencatatan membantu memperkuat pengetahuan di otak Anda, Anda sudah memiliki proses berpikir Anda sendiri dalam hal pro dan kontra bekerja dan tidak perlu melakukannya lagi (atau setidaknya tidak dalam kedalaman, Anda dapat masih mencari teknik yang lebih mungkin) untuk masalah serupa berikutnya.
Dan ketika memutuskan apa yang harus dipelajari selanjutnya, cari kedalaman di salah satu teknologi utama Anda sebelum mulai mempelajari teknologi lain selama 30 hari pertama dari teknologi lain (ini mengasumsikan Anda memiliki cukup pengetahuan untuk benar-benar melakukan pekerjaan Anda, jika Anda perlu gunakan 6 teknologi - dapatkan dasar-dasar keenam semuanya terlebih dahulu sebelum melangkah lebih dalam) Kemudian bolak-balik, pelajari hal-hal baru, di tingkat dasar, pelajari sesuatu secara lebih mendalam, lalu pelajari lebih banyak teknologi baru di tingkat dasar. Jika Anda melakukan ini dari waktu ke waktu, Anda akan menemukan bahwa tingkat dasar Anda tentang apa yang Anda inginkan dari teknologi baru jauh lebih dalam karena Anda memahami pertanyaan yang lebih maju untuk ditanyakan tentang hal itu.
Cara lain untuk belajar mempertahankan pengetahuan adalah mengajarkannya kepada orang lain. Jawab pertanyaan di tempat-tempat seperti ini, sampaikan topik pelatihan kepada tim Anda, buat presentasi di grup pengguna lokal Anda, tulis entri blog dan bantu pertahankan wiki informasi di perusahaan Anda untuk membantu pengembang lain.
sumber
Mencari contoh kode bukan pertanda pengembang buruk. Satu jarang membutuhkan begitu sedikit hal untuk mengingat semua antarmuka yang mereka butuhkan secara tepat, jadi wajar untuk mencari hal-hal dan contoh kode biasanya referensi yang paling mudah digunakan.
Apa yang tidak boleh Anda lakukan adalah menyalin & menempelkan contoh karena mereka bekerja di sana, jadi mereka juga harus bekerja di sini, tanpa memahami cara kerjanya. Itu biasanya mengarah ke banyak bit yang tidak berguna yang disalin secara tidak sengaja dengan hasil yang sulit dipertahankan karena jika Anda tidak tahu cara kerjanya ketika Anda menulisnya, Anda tidak akan tahu enam bulan kemudian juga dan tidak akan dapat memperbaikinya.
Tetapi selama Anda memahami kode yang Anda salin dari sebuah contoh, itu adalah cara yang valid untuk menyelesaikan pekerjaan lebih cepat, dan itu biasanya hal yang baik.
sumber
Jawaban ini cukup bagus. Tetapi Anda menderita masalah yang jauh lebih dalam daripada salin / tempel atau kurangnya "keterampilan."
Perbandingan itu mematikan. Semakin Anda membandingkan diri Anda dengan orang lain dan membiarkan bakat mereka memengaruhi cara Anda memandang diri Anda sendiri, semakin Anda akan mengerut dan mati di dalam. Anda tidak pergi ke hackathon karena takut orang-orang akan melihat betapa Anda tidak berbakat. Dan satu-satunya alasan Anda berpikir Anda tidak berbakat adalah karena Anda membandingkan diri Anda dengan peretas yang bisa mengeluarkan lebih banyak kode dari awal, lebih cepat.
Bahkan jika "Baris Kode per Menit" adalah metrik yang baik untuk mengukur keterampilan, Anda harus menerima kenyataan bahwa akan selalu ada pengembang yang lebih baik di luar sana daripada Anda . Dan tidak apa - apa menunjukkan kepada orang lain bahwa Anda kurang dalam keterampilan.
Anda tidak perlu sebagus, atau lebih baik dari, orang lain. Anda harus puas dengan fakta bahwa Anda akan selalu kekurangan, dan Anda terus belajar. Jika Anda tidak bisa bahagia dengan menjadi pengembang yang lebih rendah, Anda TIDAK akan pernah senang.
Satu hal lagi: ketakutan Anda akan penolakan oleh orang-orang yang Anda pikir "unggul" adalah persis apa yang mencegah Anda menggosok bahu dengan pengembang yang lebih baik dan belajar dari mereka. Jadi rasa takut Anda mencegah Anda tumbuh, yang mempertahankan rasa takut Anda. Yang mencegah Anda tumbuh. Lihat siklusnya? Anda harus memutus siklus di suatu tempat.
sumber
Saya pikir banyak hal tergantung pada bagaimana pikiran Anda bekerja. Ingatan saya berbau busuk, jadi saya lebih suka mengambil kode yang sedekat mungkin dengan yang saya inginkan dan mengerjakannya kembali sehingga bisa melakukan pekerjaan baru. Ini berfungsi sebagai contoh dan pengingat semua hal yang harus saya lakukan. Sebagai contoh, saya telah menggunakan SQL sederhana selama 20 tahun, tetapi saya tidak pernah dapat mengingat tata letak SELECT, atau pernyataan UPDATE. (Saya pikir salah satu kebutuhan kurung, tapi saya tidak ingat yang.) Di sisi lain, beberapa beberapa hal yang saya ingat; Saya bisa menggabungkan implementasi Java Iterator dengan mata tertutup.
Sebagian besar kode yang saya salin adalah milik saya, tetapi saya pasti menyalin kode yang lain ketika saya mempelajari sesuatu yang baru.
Saya tidak tahu tentang hackathon. Mereka mungkin menggambar pada sekelompok programmer dengan ingatan fotografis. Saya akan mencobanya dan melihat. Jika terlihat seperti orang idiot mengganggu Anda, Anda seharusnya tidak pemrograman.
Saya mendorong Anda untuk memahami, secara menyeluruh, semua kode yang Anda salin dan modifikasi, tetapi, sampai saya membaca beberapa jawaban lain, tidak pernah terpikir oleh saya bahwa seseorang mungkin menyalin tanpa memahami. (Sepertinya saya mempelajari sifat-sifat baru sepanjang waktu di situs ini ...)
sumber
Kemudian berhenti. Pergilah ke arah lain untuk sementara waktu. Laksanakan semuanya sendiri, bahkan jika Anda tahu Anda dapat menemukan hal yang Anda butuhkan dalam waktu yang jauh lebih singkat.
Apa yang terjadi adalah otot penyelesaian masalah Anda (nama latin gluteus mojo ) telah berhenti berkembang karena tidak digunakan, dan Anda sekarang menghindari menggunakannya karena Anda tahu betapa lemahnya otot itu. Anda harus mulai membangun dan mengencangkan otot itu sama seperti Anda akan melatih otot bisep Anda di gym. Mulailah dengan pengulangan tinggi dan resistansi rendah - banyak masalah mudah. Saat Anda membangun kepercayaan diri, beralihlah ke masalah yang lebih lama dan lebih sulit.
Anda secara bertahap akan merasakan mojo Anda kembali dan kebutuhan Anda untuk mengandalkan Google akan berkurang. Tetap berolahraga otot itu, dan pastikan Anda tidak kembali ke cara lama Anda. Tantang diri Anda untuk memecahkan masalah terlebih dahulu dan baru kemudian mencari solusi lain. Terkadang Anda akan menemukan bahwa orang lain telah menemukan cara yang lebih baik untuk melakukan hal yang sama, di lain waktu Anda akan memutuskan bahwa solusi Anda sendiri lebih baik.
Seseorang yang tidak dapat menyelesaikan apa pun tanpa menemukan contoh adalah pengembang yang buruk. Masalahnya adalah: Anda tidak akan tahu apakah Anda mampu atau tidak sampai Anda mencoba.
sumber
Anda masih muda, dan Anda telah bekerja dengan banyak bahasa pemrograman. Saya akan menebak bahwa Anda mungkin mempelajari bahasa baru lebih cepat daripada yang lama. Anda masih belum memasukkan cukup waktu ke dalam satu bahasa pada aplikasi yang cukup besar untuk mengembangkan kefasihan.
Apakah Anda mencari solusi yang luas setiap kali seperti: seluruh proses menghubungkan kisi web ke tabel database atau bagian yang lebih kecil seperti memformat string koneksi (saya harus mencarinya setiap kali sejak saya menulis sekitar empat tahun. )?
Anda akan selalu mencari referensi ke sintaks berbagai baris kode atau fungsi. Semakin banyak Anda memprogram, semakin banyak tantangan dan lingkungan serta perubahan bahasa yang Anda hadapi. Jika Anda membutuhkan seluruh tutorial setiap kali Anda melakukan sesuatu, maka Anda memiliki masalah.
sumber
Saya memiliki seorang profesor yang dulu mengatakan dia benci memberikan tes berdasarkan pada mencoba untuk menyimpan banyak informasi yang Anda menjejalkan malam sebelumnya karena Anda lupa banyak sekali setelahnya. Lebih baik untuk mengetahui sumber daya Anda dan Anda dapat menggunakannya dengan benar untuk menemukan informasi yang tidak Anda ketahui. Saya suka menerapkan prinsip serupa untuk semua yang saya lakukan, termasuk bekerja.
Saya pikir alat paling penting yang Anda miliki adalah sumber daya Anda, selama Anda menggunakannya dengan benar. Jadi ketika saya menulis kode, saya mendapatkan sejauh yang saya bisa dengan pengetahuan saya yang ada dan kemudian melakukan penelitian dengan bertanya kepada programmer lain atau mencari di Internet, untuk lebih memahami solusi yang tepat. Pengetahuan akan berkembang seiring waktu dan setelah beberapa saat Anda secara alami akan mengetahui dan memahami keterampilan dengan lebih baik. Saya terus mencari tahu apakah saya benar-benar membutuhkan informasi atau tidak, dan saya bisa jujur mengatakan saya belajar sesuatu yang baru setiap hari.
sumber
Jika Anda memahami masalah yang Anda coba selesaikan, dan memahami bagaimana Anda ingin menyelesaikannya, mencari sintaks yang benar bukanlah masalah besar menurut saya.
Saya lulus sekitar dua tahun yang lalu dan dilemparkan ke serigala ketika saya mendapatkan pekerjaan saya. Saya harus belajar, memelihara, dan meningkatkan aplikasi besar yang ditulis dalam bahasa yang belum pernah saya sentuh sebelumnya. Saya akan mendapatkan laporan bug, membaca kode dan mencari tahu bagaimana saya ingin memperbaikinya, dan kemudian harus google contoh cara melakukan hal-hal yang saya inginkan dalam bahasa itu.
Jika Anda menyelesaikan sesuatu, dan memahaminya cukup untuk tidak menghasilkan churn yang tidak dibutuhkan, maka Anda mungkin baik-baik saja.
sumber
Salinan dan tempel murni yang tidak dikritik sebagaimana dinyatakan berulang kali dalam jawaban ini adalah buruk. Tapi begitu juga menulis semuanya dari awal. Jika itu bukan komponen penting yang merupakan inti dari bisnis Anda, cari perpustakaan atau cuplikan kode untuk melakukannya terlebih dahulu. Pengecualian untuk menemukan cuplikan adalah bahwa masalahnya sangat sederhana, Anda memiliki gambaran yang sangat jelas tentang cara melakukannya dan jika Anda tidak menggunakan perpustakaan: Anda tidak perlu melakukan apa-apa lagi.
Saya tahu secara pribadi jika saya menulis sesuatu yang umum, saya cenderung memiliki beberapa bug yang halus dan mungkin satu atau dua bug yang tidak begitu halus tanpa banyak pengujian. Jadi saya mencari solusi yang serupa, memodifikasi dan mengujinya untuk menghemat waktu pengujian dan pengembangan semua. Karena pada akhirnya saya bertanggung jawab untuk mengirimkan produk yang berfungsi, dapat diperpanjang, sesuai atau di bawah anggaran dan memenuhi tenggat waktu. Menggunakan kembali kode dan perpustakaan adalah langkah yang baik untuk mencapai tujuan itu.
sumber
Saya pikir membaca contoh kode, dan hanya membaca kode sumber dari apa yang dikembangkan orang lain secara umum, adalah cara terbaik untuk meningkatkan keterampilan Anda. Saya benar-benar berpikir itu membuka pintu di otak Anda yang seharusnya tidak dibuka sebaliknya.
Jika Anda memikirkan solusi A, dan orang lain memikirkan solusi B, ketika Anda masing-masing membagikan solusi Anda, Anda dapat menyadari solusi C yang mungkin lebih baik daripada A atau B.
sumber
Saya pikir ada banyak tingkat kemahiran pengembangan perangkat lunak. Hanya begitu, karena ada juga banyak tingkat kemahiran dokumentasi pengembangan perangkat lunak . Terus terang, akhir-akhir ini, sistem pesanan jauh lebih kompleks daripada ketika saya mulai memprogram komputer pada pertengahan 1980-an.
Kemudian, Anda harus tahu apa yang Anda inginkan dari komputer, dan Anda telah menulis dokumentasi setebal 6 inci yang memberitahu Anda bagaimana komputer melakukan hal-hal yang lebih mendasar. Menempatkan apa yang Anda inginkan ke dalam bentuk yang bisa diambil komputer adalah masalah mengetahui isi indeks buku-buku itu, dan bahasa pemrograman (atau dua. Sungguh, setelah mempelajari empat atau lima bahasa yang lain hanya dialek.)
Saat ini, tugas itu membutuhkan mengetahui bahasa, mengetahui sistem, mengetahui paradigma, model pemrograman, dan setidaknya satu set API, yang semuanya merupakan target yang bergerak.
Jadi, seseorang dengan tingkat pengetahuan dasar tertentu yang bertanya-tanya bukanlah programmer yang baik. Dia adalah terbaik jenis programmer, mengingat lingkungan saat ini dan perusahaan ketidaktertarikan seperti Microsoft telah di benar-benar menerapkan setiap jenis kekakuan dokumentasi fundamental mereka sendiri. Sebagian besar barang-barang mereka adalah bahan referensi referensi diri dan beberapa kode sampel yang sangat buruk . (Dua kasus yang saya temui adalah "Pemasang Windows" dan API untuk membuat file film WMV.)
Karena Microsoft, Google, dan, pada tingkat lebih rendah, Apple, semua bergantung pada "komunitas" untuk menebus kekurangan yang sangat nyata, bertanya-tanya tidak hanya penting, tetapi juga penting. Dan menjadi orang yang dapat ditanyakan dan yang dapat memberikan jawaban dan umpan balik yang solid dalam lingkungan saat ini sama pentingnya. Itu sebabnya situs-situs seperti situs stackexchange.com sangat membantu.
Jadi ajukan pertanyaan, (tanyakan dengan cerdas!) Untuk sampel, dan hormati orang-orang yang menyediakan jawaban, dan melakukannya akan tidak akan dilihat sebagai tanda "pengembang yang buruk".
Dan satu hal lagi: Menyediakan sampel yang buruk benar-benar adalah pertanda pengembang yang buruk. Itu membuat pengembang yang buruk lebih mudah dikenali, tetapi juga mempercepat pencarian Google. Jika Anda kurang percaya diri pada sampel kode yang sederhana, langsung, dan spesifik, jangan beri mereka.
Dan, tolong, jangan mengejek mereka yang bertanya.
sumber
Bagi saya sepertinya masalah bagi Anda adalah kurang memahami apa yang Anda rujuk, dan lebih banyak dengan masalah fasilitas dan memori. Jika itu melemahkan kepercayaan diri Anda, maka ya itu masalah - tapi itu pasti bisa diatasi!
Bagi saya, tantangan semacam ini muncul dalam banyak aspek kehidupan saya yang berbeda. Sebagai contoh, untuk menjadi piawai memainkan musik, saya perlu mengembangkan kemandirian saya dari lembaran musik yang saya berikan - bagaimana Anda dapat benar-benar merasakan musik itu jika hidung Anda masih terkubur dalam buklet Anda? Kadang-kadang, jika saya punya waktu, saya akan menghafal seluruh bagian musik - bahkan jika itu tidak diperlukan untuk pertunjukan saya. Mengapa? Dengan hilangnya lembaran musik, lebih mudah bagi saya untuk fokus pada aspek yang lebih menantang dan menyeluruh dari musik yang saya butuhkan untuk memperbaiki, dan itu jauh lebih mudah bagi saya untuk masuk ke zona luar biasa dari pembuatan musik murni. Jadi saya merasa sering layak dengan masalah ekstra.
Pengalaman saya dengan pemrograman hampir sama. Saya pikir kuncinya adalah:
Prinsip-prinsip ini tampaknya berlaku ketika mempelajari bahasa apa pun, sebenarnya! Lihat Cara Mengenang Kata - kata Baru misalnya. The Metode Pimsleur juga bekerja seperti ini.
Saya telah menemukan bahwa hampir semua prinsip, sintaksis, dan perpustakaan umum bahasa dan teknologi yang saya gunakan secara teratur dapat sepenuhnya dihafal, dengan menggunakan kunci-kunci ini. Meski begitu, saya masih terus menjelajahi internet untuk contoh dan kebijaksanaan! Tapi saat itu, saya mencari validasi pada masalah yang saya coba selesaikan, berbagai pendekatan yang telah diambil, alat yang dapat membantu, dan konsultasi untuk perpustakaan yang jarang digunakan. Ini adalah jenis pencarian yang sangat berbeda dari yang saya gunakan ketika saya pertama kali belajar bahasa dan mempelajari tutorial dan manual.
Dari cerita Anda, berikut adalah beberapa batu sandungan khusus yang saya pikir mungkin Anda temui.
sumber
Saya pikir jika Anda berfokus pada menghasilkan kode moderat sendiri, efisiensi dan produktivitas Anda akan meningkat. Mungkin butuh lebih banyak waktu untuk mencari kode, membaca / memahaminya, menyalinnya sumber Anda, mengubahnya sesuai, dll.
Jika Anda membuat sendiri, kemungkinan besar lebih disesuaikan dengan situasi spesifik Anda, dan setelah beberapa saat solusi ini akan datang lebih cepat kepada Anda daripada mencari mereka.
Cara saya melihatnya, adalah seperti Anda menginginkan pendapat kedua tentang solusi tertentu, jadi Anda mencari tahu bagaimana orang lain (di Internet) melakukannya. Jika Anda mendapati diri Anda terlalu banyak melakukan hal ini, anggap itu sebagai bertanya pada seorang kolega tentang apa yang ia pikirkan sebagai solusi. Jika Anda mengajukan pertanyaan kepada kolega Anda setiap 15 menit, ia mungkin akan kesal. Karena itu, Anda akan mengajukan lebih sedikit pertanyaan dan mencoba membuatnya sendiri.
Visualisasikan ini ketika ingin mencari sesuatu di Internet.
sumber
Cara terbaik untuk mempelajari apa yang tidak Anda ketahui: google it! Saya merasa Anda benar setara dengan kebanyakan pengembang. Letakkan kompleks inferioritas di ransel Anda dan masuk dengan pikiran terbuka.
Jangan takut untuk bertanya, lakukan riset di Google, coba dan gagal. Itu semua adalah bagian dari itu.
sumber
Pengembangan perangkat lunak dalam pengaturan perusahaan membutuhkan penggunaan kembali kode dalam jumlah yang cukup. Mengapa menulis ulang fungsi / metode jika API sudah ada dan digunakan secara luas? Kemungkinan besar akan seefisien apa pun yang Anda tulis dan mengurangi waktu.
Tentu saja, berhasil dalam pengembangan perangkat lunak juga memerlukan istirahat dari papan ketik, sehingga Anda dapat membaca dan memahami apa yang sebenarnya terjadi. Ambil kerangka web apa pun. Anda harus tahu apa yang sedang terjadi di bawahnya sehingga Anda memahami kode yang Anda tulis, tetapi kemungkinan besar Anda tidak akan pernah harus menulis kerangka kerja web dari awal.
Anda hanya perlu menulis kode yang mengambil keuntungan dari jenis kerangka kerja (katakanlah kerangka kerja berbasis komponen memerlukan gaya tertentu) dan ini berasal dari memahami gambar yang lebih besar. Pelajari gambar yang lebih besar dan Anda akan baik-baik saja.
sumber
Jelas dari jawaban yang sudah diberikan bahwa tidak ada yang salah dengan meneliti masalah Anda, alih-alih mengkode secara membabi buta. Tetapi pertanyaan yang tidak ditanggapi, karena Anda tidak menanyakannya secara langsung, mengapa Anda merasa sangat tidak aman - dan apa yang dapat Anda lakukan? Lagipula, banyak orang mencari jalan keluar dari masalah mereka dan memiliki kepercayaan diri yang tinggi (bahkan mereka yang seharusnya tidak ...)
Jadi, apa yang harus dilakukan? Mungkin Anda hanya membutuhkan beberapa ratus tepukan di bagian belakang, yang baru saja Anda dapatkan, dan sekarang dapat membuat kode dengan percaya diri. Tetapi jika itu tidak berhasil, saya sarankan Anda memeriksa pengujian otomatis dan Pengembangan Berbasis Tes. Tidak ada yang mengatakan "dilakukan dengan baik" seperti "Semua tes lulus" dari suite pengujian Anda: Ketika Anda sampai di sana, Anda tahu Anda telah melakukannya dengan benar.
Anda juga harus mencoba sedikit menantang diri sendiri: Anda mengatakan bahwa Anda selalu mencari sintaks yang sudah Anda ketahui; jadi paksa diri Anda untuk menulis beberapa kode tanpa melihat sintaks, dan Anda akan (segera, jika tidak segera) mengetahui bahwa Anda baik-baik saja setelah semua.
sumber
Sangat penting untuk meluangkan waktu dan memahami dasar-dasarnya, hal-hal yang lebih kompleks cukup banyak dibangun di atas itu. Jika tidak ada dasar dalam memahami bahasa dan apa yang terjadi di balik layar, pengkodean hanya akan meretas ...
sumber
Jadi, membaca buku dengan contoh dan merujuknya adalah pemrograman yang buruk adalah konteks pertanyaan Anda. Melihat beberapa orang saja yang mendokumentasikan API mereka, hanya buku yang tersisa.
Saya tidak tahu alasan Anda mengajukan pertanyaan ini, mungkin Anda bisa menjawabnya sendiri setelah membaca situasi saya karena saya merujuk pada banyak contoh kode.
Saya tidak pernah memiliki kesempatan untuk pergi ke universitas karena saya berada di jalan pada usia 16. Entah bagaimana pada usia 24 saya berada dalam posisi untuk belajar melalui perguruan tinggi korespondensi dan melakukan sertifikasi vendor sebagai SCJP, SCJD, SCBCD dan SCWCD. Saya harus mengakui bahwa kadang-kadang saya berjuang dan harus membuka internet untuk contoh. Meskipun tanpa sadar saat ini saya memiliki tumor otak yang tumbuh di kepala saya (pada 2010 ukurannya sebesar jeruk). Setelah 5 operasi otak saya, 6 minggu menggabungkan kemoterapi / radioterapi dan 10 bulan kemoterapi, saya masih pemrograman dengan situs kode yang ditulis tangan yang dapat dilihat dari profil saya.
Ya saya membutuhkan banyak contoh kode sekarang dengan kerusakan otak, jadi apakah itu membuat saya seorang programmer yang buruk?
sumber
Jadi saya melihat Anda menyebutkan bahwa Anda akan pergi ke hackathon. Saya sudah pernah ke beberapa tahun terakhir ini (lebih dari 15) dan memperhatikan bahwa mereka bagus untuk belajar. Dan dengan hebat untuk belajar yang saya maksud belajar bagaimana untuk tidak pernah kode seperti itu lagi Saya kebanyakan mencoba melakukan sesuatu yang baru di setiap hackathon yang saya kunjungi supaya saya bisa belajar hal-hal baru. Karena ada batasan waktu yang sangat besar, Anda hanya mengandalkan menyalin semua kode yang dapat Anda temukan dan ini akan menggigit Anda saat Anda mengujinya.
Namun, hal-hal baik memang keluar darinya, Anda: A) PELAJARI begitu banyak selama pengujian bug (juga sangat menangis) B) Tahu untuk tidak pernah kode seperti itu lagi dan belajar praktik pengkodean yang lebih baik. Juga, di hackathons Anda akan bertemu orang-orang yang dapat mengajarkan Anda begitu banyak hal baru yang tidak pernah Anda ketahui, dan Anda akan melakukan hal-hal yang tidak akan pernah Anda lakukan di sekolah.
Jadi yang saya katakan adalah copy paste itu buruk, dan Anda tidak akan belajar apa-apa, dan waktu Anda menyimpannya dengan copy paste akan menggigit Anda nanti selama pengujian bug dan Anda tidak tahu apa yang Anda tulis, itu jam 8 pagi, dan dipenuhi dengan semua kafein. Tapi, saya pikir selama Anda menguji kode bug Anda, Anda harus mempelajari semua yang Anda salin sebelumnya.
sumber
Yah, saya tidak menyebut diri saya seorang programmer yang baik. Tapi yang saya lakukan sederhana. Jika saya tidak tahu bagaimana melakukan sesuatu, saya benar-benar melihat beberapa kode / contoh di Internet. Kemudian setelah membacanya, saya mencoba menulis ulang, mengoptimalkannya dan menggunakan hal-hal yang paling sesuai dengan kode yang saya inginkan.
Catatan: Membaca kode dari Internet tidak membuat Anda menjadi pengembang yang buruk. Itu selalu baik untuk melihat bagaimana orang lain melakukannya, dan Anda akan selalu belajar sesuatu. Tapi kemudian, menyalinnya secara membabi buta tidak baik.
sumber
Jika seorang pengembang / siswa berkata .. Wikipedia .. untuk menyalin / menempelkan kode ke dalam proyek mereka, maka cukup mencoba membuatnya "bekerja" maka satu-satunya keterampilan yang dikembangkan orang ini adalah 'Bagaimana cara google'. Mungkin ada beberapa proses osmosis di sana, tetapi tidak banyak. (Anda tidak akan percaya berapa banyak orang melakukan ini di kuliah)
NAMUN, Jika Anda menganalisis kode orang lain dan benar-benar berpikir tentang apa yang terjadi dalam kode itu sendiri, maka itu tidak membuat seseorang menjadi pengembang yang buruk. Itu membuat mereka pengembang yang gigih dan mungkin menunjukkan gaya belajar yang lebih taktil atau visual. Saya belajar dengan contoh dengan sangat baik. Jika seseorang memberitahu saya sesuatu atau mencoba menjelaskannya kepada saya, saya biasanya meminta mereka untuk menunjukkan kepada saya jika mereka membicarakannya.
Mencari, menganalisis, dan belajar dari kode sebenarnya membuat mereka pengembang yang baik dari waktu ke waktu , karena mereka membaca dan belajar dalam bahasa yang mereka gunakan.
Saya sering bercanda bahwa saya tahu seluk beluk bahasa komputer daripada yang saya lakukan dengan bahasa Inggris asli saya. Yang menimbulkan pertanyaan; "Maukah kamu menjelaskan itu kepadaku di Java, tolong?"
sumber
Saya pikir ini seperti bermain catur. Kita memeriksa potongan-potongan secara individu dan melacak di mana mereka dapat bergerak sesuai dengan aturan, dan kita harus melalui pemeriksaan sadar untuk beberapa waktu sampai alam bawah sadar bergabung, mengungkapkan pola dan urutan yang diilhami.
Dengan pemrograman bisa ada lebih banyak potongan dan aturan, saya sering tersandung dengan sintaks dan terjebak pada bug yang membutuhkan selamanya untuk menemukan dengan pergi melalui 'aturan', tetapi akhirnya alam bawah sadar akan menendang. Ketika itu tetap cukup lama, saya bisa membaca Terkadang kembali dan kagumi apa yang bisa dilakukannya.
sumber