Bagaimana cara memulai pemrograman kompetitif? [Tutup]

17

Saya telah berlatih coding untuk sementara waktu, tetapi masalahnya adalah saya butuh banyak waktu untuk menulis solusi untuk masalah tersebut. Saya ingin bertanya apakah pemrograman kompetitif dapat membantu saya meningkatkan ini.

Jika ya, lalu bagaimana saya harus memulai dan dari situs web mana saya dapat menggunakan (seperti TopCoder )? Saya jelas tidak akan dapat memecahkan masalah yang sangat sulit untuk saat ini. Apa yang harus saya lakukan?

Jika tidak, apa lagi yang harus saya lakukan?

Saya juga memiliki masalah lain yang ingin saya pelajari tentang pengkodean, tetapi masalahnya saya merasa tidak terlalu baik. Apa yang harus saya lakukan? Ini seperti menggangguku dari dalam.

Saya tahu beberapa orang mungkin tidak menemukan pertanyaan ini informatif tetapi tolong setidaknya izinkan saya untuk mendapatkan jawaban.

Vaibhav Agarwal
sumber
1
Jangan meremehkan nilai pemrograman kolaboratif. Kami telah melihat beberapa masalah di tim kami karena daya saing yang berlebihan - masalah teknis / interpersonal. Jadi pemrograman kompetitif dapat membantu Anda, tetapi juga dapat mengambil bagian dalam proyek sumber terbuka, atau mengembangkan proyek dengan teman-teman yang berpikiran sama.
Gavin Howden

Jawaban:

19

[dapat] pemrograman kompetitif membantu saya dalam meningkatkan [kecepatan]?

Ya, itu bisa, dan diberikan waktu yang cukup, pasti akan. Namun, kecepatan bukanlah keterampilan terpenting yang akan Anda tingkatkan. Dari pengalaman saya berpartisipasi dengan TopCoder selama 10+ tahun, keterampilan paling penting yang akan Anda ambil dari pemrograman kompetitif adalah kemampuan untuk menulis potongan kode sederhana dengan benar pertama kali, tanpa menggunakan debugger.

Bagaimana saya memulai dan dari situs seperti apa TopCoder?

Gunakan ruang latihan untuk Divisi 2. Level 1 dari Div 2 biasanya "kontes mengetik", dalam arti bahwa Anda segera mencari solusi, jadi tugas Anda menjadi mengkodekannya secepat mungkin. Kebanyakan penugasan kehidupan nyata seperti itu. Anda akan segera menyadari bahwa debugger adalah "saluran waktu" terbesar, sehingga Anda secara alami akan berusaha untuk menyelesaikan kode Anda tanpa melakukan debug. Ini akan membuat frustasi pada awalnya, tetapi akan membaik seiring waktu. Dibutuhkan beberapa ratus masalah level-1 untuk menjadi ahli dalam hal itu, jadi jangan menyerah.

Debugging di kepala Anda adalah keterampilan yang akan membantu Anda dalam pekerjaan nyata Anda: sementara kecepatan pengkodean tidak penting, kemampuan untuk menulis snipet kode yang benar tanpa debugging akan membantu Anda melakukan transisi dari baik ke luar biasa.

dasblinkenlight
sumber
Terima kasih banyak @dasblinkenlight!
Vaibhav Agarwal
10

Sebagai programmer pemula, Anda harus lebih mementingkan kualitas kode Anda daripada kecepatan menulisnya. Anda harus mengerjakan proyek sendiri untuk mengembangkan keterampilan Anda. Anda dapat menindaklanjutinya dengan meninjau proyek sumber terbuka untuk melihat bagaimana orang lain menulis kode dan mungkin mulai berkontribusi pada proyek sumber terbuka.

Dalam 25+ tahun saya mengembangkan kode pada berbagai platform dan domain bisnis, saya tidak pernah menemukan kasus di mana kecepatan penulisan kode saya lebih penting daripada kualitas dan stabilitas kode saya.

cdkMoose
sumber
Tetapi ketika Anda berpartisipasi dalam suatu kompetisi, katakanlah kompetisi pengkodean atau proses wawancara, maka kecepatanlah yang benar? Dan itu terlalu banyak yang saya rasakan.
Vaibhav Agarwal
@cdkMoose itu bagus tapi bisakah Anda juga menyarankan saya bagaimana memulai pemrograman kompetitif berarti dari mana harus memulai?
Vaibhav Agarwal
@VaibhavAgarwal Project Euler masalah 1 hingga 50: walaupun tidak kompetitif (kecuali jika Anda mencoba menjadi salah satu orang pertama yang memecahkan masalah terbaru), ini menantang dan jenis pertanyaan yang mungkin diharapkan dalam kompetisi pengkodean atau proses wawancara.
@Vaibhav, saya akan memulai pemrograman kompetitif dengan cara saya memulai kompetisi lain: Latihan, Latihan, Latihan.
cdkMoose
1
@Vaibhav: Anda memposting bahwa Anda ingin belajar pemrograman. Jika itu adalah tahap Anda, saya pribadi tidak berpikir Anda harus peduli dengan pemrograman kompetitif sama sekali. Itu bisa terjadi setelah Anda mengembangkan keterampilan Anda. Sejauh wawancara, saya tidak meminta kandidat wawancara saya untuk menulis program lengkap. Saya lebih peduli dengan pemahaman dan proses berpikir mereka. Saya berusaha mengembangkan kepercayaan diri bahwa mereka dapat menyelesaikan masalah, bukan bahwa mereka akan menyelesaikannya dalam waktu singkat.
cdkMoose