12 Aturan untuk Belajar Koding Setelah mengajar sejuta siswa, inilah cara terbaik untuk belajar pemrograman

ATURAN SATU Memanipulasi Otak Anda dengan Aturan 20 Menit
Belajar koding mirip dengan pergi ke gym.
Bahkan jika Anda berusaha maksimal dan menghabiskan akhir pekan di gym, Anda tidak akan melihat perubahan yang terlihat pada tubuh Anda. Semakin rutin Anda belajar koding, semakin mungkin Anda akan mulai melihat otot koding Anda yang kuat. 💪 (Ironi tidak hilang dari saya). Tapi masalahnya adalah di mana Anda menemukan waktu? Antara bekerja full-time, menghabiskan waktu dengan keluarga, dan urusan kehidupan, kapan Anda seharusnya duduk dan berlatih "koding harian" ini? Saat saya bekerja sebagai dokter, saya menghabiskan sekitar 12 jam di rumah sakit, 1 jam dalam perjalanan, dan sekitar 2 jam untuk urusan umum sehari-hari, seperti makan. Jadi itu hanya meninggalkan saya dengan 9 jam di sisa hari saya. Secara teoritis, 2 jam bisa dialokasikan untuk latihan koding dan 7 jam untuk tidur. Tapi tidak ada yang lebih sulit daripada mencoba meyakinkan otak Anda yang penuh dengan pekerjaan untuk duduk dan belajar ketika Anda sebenarnya bisa menonton Game of Thrones sambil menyantap es krim.
Tapi kemudian saya menemukan triknya. Sebagai manusia, kita memiliki banyak inersia. Ini bisa buruk bagi kita - saya memandang Anda, koleksi kotak "24". Namun, kita juga dapat mengubahnya menjadi keuntungan kita. Saya menemukan bahwa setelah saya mulai mengoding dan membuat sesuatu, saya begitu terpikat oleh proyek tersebut sehingga saya tidak lagi peduli tentang TV, makanan, atau tidur. Ada beberapa akhir pekan ketika saya mengoding hingga matahari terbit. Jadi bagaimana kita memanfaatkan inersia ini? Pertama, Anda harus memahami bahwa beralih antar tugas sangat sulit. Ini memerlukan banyak motivasi. Jika begitu Anda tiba di rumah, Anda rebah di sofa dan menyalakan TV, Anda sudah kehilangan malam itu. Hal ini karena jumlah motivasi yang diperlukan untuk beralih tugas dan melakukan sesuatu yang tidak didorong oleh evolusi seperti makan atau tidur adalah tugas yang sangat berat. Inilah mengapa saat Anda memasuki pintu dan berpindah ke lingkungan baru adalah yang paling penting. Jika pada saat ini, Anda memberi tahu diri Anda sendiri bahwa Anda hanya akan berlatih koding selama 20 menit, Anda kemungkinan besar akan berhasil dan memanfaatkan inersia Anda untuk belajar selama satu jam atau lebih. Tidak ada otak yang akan merasakan tugas 20 menit sebagai usaha yang besar dan Anda berakhir dengan memanipulasi otak Anda untuk memanfaatkan malam Anda.
Belajar koding mirip dengan pergi ke gym. Langkah berikutnya adalah mengembangkan kebiasaan. Penelitian menunjukkan bahwa untuk mengembangkan kebiasaan baru, Anda harus melakukan tugas tersebut setiap hari selama sebulan. Saya telah menggunakan trik berikut untuk banyak hal berbeda, mulai dari berolahraga hingga mengoding, ini selalu berhasil seperti pesona. Sebagai pengantar trik ini, saya ingin Anda membayangkan sebuah dinding dengan lima lukisan yang tergantung di atasnya, empat di antaranya sejajar dan horizontal, tetapi satu lukisan miring. Sekarang bayangkan kalender bulanan dengan kotak-kotak yang mewakili hari-hari individu. Jika Anda merawat kebiasaan baru itu pada hari tertentu, maka Anda membuat garis melalui hari itu. Jika Anda melanjutkan tren Anda keesokan harinya, maka Anda memperpanjang garis itu dan seterusnya. Ada sesuatu tentang tidak memutus garis yang kontinu yang memotivasi kebanyakan orang untuk terus mengembangkan kebiasaan. Sekonyong-konyong, meskipun terdengar aneh, ada banyak kali ketika saya hampir menyerah, tetapi terdorong untuk melanjutkan karena garis yang panjang dan berkesinambungan.
ATURAN DUA
Berkoding dengan Tujuan
Ketika saya pertama kali mulai belajar cara mengode,
ada banyak kali ketika saya mencobanya lalu menyerah, berulang kali. Ini adalah cerita umum di antara para pengode yang belajar sendiri. Melihat ke belakang, setelah mengajar begitu banyak siswa, akhirnya saya menyadari apa yang sedang terjadi. Banyak pemula mulai belajar mengode dengan memilih bahasa acak dan mengikuti sejumlah tutorial. Menyalin kode, baris per baris, kadang-kadang menulis kode untuk mencari bilangan prima, kadang-kadang untuk menemukan semua bilangan genap. Tapi tahukah Anda? Saya bisa menemukan bilangan prima dengan jauh lebih cepat dengan mencarinya di Google, dan menemukan bilangan genap tidak begitu menarik. Ini dia kebenarannya. Jika Anda belajar mengode hanya untuk belajar mengode, akan cukup sulit bagi Anda untuk menjadi mahir di dalamnya. Keterampilan yang memerlukan banyak waktu untuk diasah, seperti pemrograman, akan menggerus sumber motivasi internal Anda. Sesuatu dari dalam yang membuat Anda lupa makan dan tidur. Saya dengan jujur bisa mengatakan bahwa mengode pada proyek-proyek saya sendiri adalah salah satu hal paling menyenangkan yang saya lakukan.
Ini menggabungkan pemikiran logis dengan kreativitas, dan pada akhirnya, Anda akan telah membuat sesuatu. Dalam kebanyakan kasus, sesuatu yang belum pernah dilihat dunia sebelumnya. Sesuatu yang bisa membuat hidup Anda lebih mudah atau lebih menyenangkan. Sesuatu yang bisa membuat hidup banyak orang menjadi lebih mudah dan menyenangkan. Ini seperti membuat sepeda motor kustom yang luar biasa indah di garasi Anda, tanpa perlu garasi atau mengeluarkan uang sepeser pun untuk komponennya. Inilah yang memotivasi kebanyakan orang. Bagian menciptakan. Bagian membuat. Jadi saya mendesak Anda untuk mulai belajar mengode dengan mengikuti tutorial yang membuat sesuatu, apa saja. Tentu saja, pada awalnya, Anda mungkin tidak akan dapat mengode Clash of Clans atau League of Legends. Tetapi Anda akan bisa membuat sesuatu yang menarik. Bisa berupa permainan dadu atau aplikasi kartu-kartu flash. Tapi selama akhir tutorial, Anda akan telah membuat sesuatu yang dapat Anda gunakan dan mainkan, maka Anda akan jauh lebih termotivasi untuk mengode hingga akhir. Selama semua kursus kami, kami selalu memberi tahu siswa kami untuk memikirkan aplikasi sederhana yang ingin mereka buat. Sesuatu yang menggunakan keterampilan yang mereka pelajari selama kursus tetapi juga akan merangsang mereka sedikit karena mereka harus mencari tahu cara menyertakan beberapa fungsionalitas baru. Kami memiliki seorang siswa yang membuat aplikasi yang membangunkannya satu menit lebih awal setiap hari untuk memudahkan transisi ke waktu bangun yang lebih awal. Ada seorang siswa yang membuat aplikasi tampilan slide kustom sebagai hadiah hari ibu. Orang lain membuat aplikasi yang merupakan pengatur waktu untuk membuat steak yang sempurna berdasarkan berat dan ketebalannya. Tidak ada batasan bagi imajinasi Anda. Akan sulit saat Anda mulai bekerja pada aplikasi Anda sendiri karena tidak ada instruksi langkah demi langkah, tetapi hal itu juga akan membawa perbaikan terbesar dalam kemampuan mengode Anda.
Anda tidak merekrut untuk keterampilan, Anda merekrut untuk sikap. Anda selalu bisa mengajarkan keterampilan. Simon Sinek
ATURAN TIGA
Tidak Ada Bahasa "Sempurna" untuk Dipelajari
Setiap kali saya memberikan ceramah besar,
akan selalu ada seseorang yang bertanya kepada saya "bahasa pemrograman mana yang seharusnya saya pelajari pertama kali"? Ada persepsi umum bahwa di suatu tempat ada bahasa pemrograman yang sempurna untuk para pemula. Beberapa berpendapat itu adalah Python, beberapa mengatakan itu adalah Javascript. Tapi saya katakan mereka semua salah. Bahasa pemrograman hanyalah sebuah alat. Tidak berbeda dari alat lain di kotak peralatan keras Anda. Jika Anda ingin memaku paku, Anda sebaiknya menggunakan palu. Jika Anda ingin memperbaiki pipa air Anda, Anda mungkin memerlukan kunci inggris. Ya, memang mungkin untuk memaku paku menggunakan sisi kunci inggris dan bahasa pemrograman yang sama dapat digunakan untuk memecahkan berbagai jenis masalah. Tukang kayu akan memberi tahu Anda bahwa alat favoritnya adalah palu dan tukang ledeng akan mengatakan itu adalah kunci inggris, tetapi itu belum tentu menjadikannya "alat terbaik untuk memperbaiki hal-hal".
Seorang pengembang web akan memberi tahu Anda bahwa JavaScript adalah bahasa terbaik untuk dipelajari oleh pemula. Seorang ahli statistik akan menyarankan bahwa Anda akan dilayani dengan baik dengan bahasa pemrograman R. Tetapi pada akhirnya, yang penting adalah apa yang ingin Anda lakukan dengan alat Anda. Jika Anda ingin membuat aplikasi iOS, maka pelajari Swift. Jika Anda ingin membuat situs web, Anda akan memerlukan JavaScript. Tetapi berita baiknya adalah konsep dasar pemrograman: perulangan, kondisional, fungsi, dll. semuanya sama. Perbedaannya sebagian besar adalah dari segi sintaksis. Dalam bahasa Inggris, kita memiliki "werewolves", dalam bahasa Jerman mereka memiliki "Werwölfe". Ini masih hewan mamalia yang merobek kemeja yang sama yang muncul selama bulan purnama, hanya ditulis dengan cara yang berbeda. Mencetak ke konsol dalam Swift: print("Hello Werewolves") Mencetak ke konsol dalam Java: println("Hello Werwölfe") Jadi, tentukan tugas yang ingin Anda capai, lalu pilih alat terbaik untuk tugas tersebut.
ATURAN EMPAT
Mengerti Apa yang Anda Tulis
Saya memiliki masalah dengan cara
kebanyakan tutorial pemrograman
ditulis.
Terlalu banyak tutorial di mana Anda melihat fenomena "ini adalah bagaimana Anda menggambar burung hantu".

Seolah-olah si pengode memiliki niat baik dan mulai dengan menunjukkan cara melakukan segala sesuatu langkah demi langkah. Tetapi kemudian, pada suatu titik, dia menyadari bahwa dia telah memulai tugas yang sangat sulit dan menyerah. Saya pernah melihat tutorial di mana penulisnya memulai dengan tingkat detail yang sangat menyiksa, lalu di tengah jalan berubah menjadi "sekarang Anda hanya perlu mengatur basis data awan". Ingatlah bahwa ini adalah tutorial yang ditujukan untuk pemula! Ini mengarah pada beberapa masalah. Masalah paling umum adalah siswa yang hanya menyalin kode di tutorial dan tidak memiliki petunjuk apa pun tentang apa yang dilakukannya. Mengapa dia menambahkan baris ekstra setelah mengurai JSON? Mengapa dia membuat kamus ini berbeda dari yang sebelumnya? Sangat mudah untuk terjebak dalam salah satu jenis tutorial seperti ini karena dijanjikan akan mengajarkan Anda cara membangun "Flappy Bird" atau "Candy Crush". Tetapi dua pertiga jalan, tidak ada yang Anda ketik membuat makna dan Anda mulai melihat warna merah di seluruh layar. Bug. Banyak dari mereka. Mengapa? Tidak tahu. Tidak ada yang berjalan. Tiga jam terakhir dihabiskan menyalin kode dan Anda belajar apa-apa selain mungkin bahwa pemrograman tidak menyenangkan. Jangan terjebak dalam perangkap ini. Jika Anda melihat tutorial yang melompat dari pemula ke tingkat lanjutan setelah baris ke-3 atau menggunakan kata "hanya" terlalu bebas atau tidak menjelaskan kode apa pun dari mereka, maka berhentilah. Tinggalkan tutorial itu.
Masih banyak pilihan di luar sana. Kadang-kadang, penulis memang mencoba menjelaskan apa yang mereka lakukan. Tetapi Anda masih tidak memahami apa pun yang mereka katakan, maka Anda berada dalam tutorial tingkat lanjutan yang tidak akan meningkatkan pemrograman Anda. Seringkali menggoda untuk membangun hal-hal besar, terutama ketika blognya menjanjikan bahwa siapa saja bisa melakukannya. Tetapi jika Anda tidak dapat mencari tahu apa yang sedang terjadi, Anda akan lebih baik membangun dasar yang lebih baik.

Kunci belajar mengode adalah tentang merentangkan diri. Anda ingin merentangkan diri berulang kali dan pengetahuan dibangun di atas pengetahuan sebelumnya. Jika kemiringan itu terlalu curam, Anda akan tersesat. Jika kemiringan itu terlalu landai, Anda akan merasa bosan. Kemiringan yang tepat berbeda untuk setiap orang. Itulah mengapa kami mendorong siswa untuk menggunakan fungsionalitas perubahan kecepatan secara bebas pada tutorial kami. Dengan cara ini, Anda dapat mendengarkan dengan kecepatan dua kali lipat jika Anda merasa nyaman dengan konsep tersebut dan melambat menjadi setengah kecepatan jika itu sesuatu yang tidak biasa dan Anda memerlukan waktu untuk memahami dan menyerap.
Anda tidak memerlukan lebih banyak resep. Anda perlu belajar memasak tanpa mereka. Tim Ferriss
ATURAN LIMA
Tidak Masalah untuk Tidak Tahu
Insinyur perangkat lunak
diyakini sebagai profesi
yang memiliki jumlah populasi
penderita Sindrom Palsu
Sindrom Palsu adalah fenomena psikologis di mana orang merasa seperti penipu dan secara besar-besaran meremehkan kemampuan dan keterampilan mereka sendiri.

Pengembang perangkat lunak cenderung kritis terhadap diri sendiri dan terus-menerus merasa bahwa semua orang lain lebih baik dalam pemrograman daripada mereka. Jika Anda pernah merasa seperti ini, Anda tidak sendirian, karena studi menunjukkan bahwa sebanyak 70 persen orang memiliki sindrom palsu. Saya baru-baru ini melihat sebuah posting di situs tanya jawab Quora di mana seseorang bertanya: "Apakah saya akan dipecat di Google (atau perusahaan teknologi besar lainnya) jika saya tertangkap menggunakan StackOverflow sebagai referensi?" Dia mendapatkan sejumlah jawaban yang sangat bagus dari insinyur yang bekerja di Google, Amazon, dan perusahaan teknologi besar lainnya. Setiap orang yang telah bekerja sebagai insinyur perangkat lunak akan memberi tahu Anda bahwa tidak melihat referensi justru lebih tidak disukai. Saya menantang Anda untuk menemukan seorang programmer Google yang tidak pernah menggunakan Stack Overflow. (Jika Anda tidak familiar, Stack Overflow adalah situs tanya jawab kolaboratif untuk para pengode). Banyak pengembang pemula takut bahwa dengan memeriksa referensi dan meminta bantuan orang, mereka akan membongkar diri sebagai penipu yang tidak tahu cara mengode. Tidak ada yang bisa menyimpan semua informasi yang relevan di kepala mereka.
Sebagai contoh, ini adalah nama sebuah metode iOS:
swiCopy code(id)initWithBitmapDataPlanes:(unsigned char **)planes pixelsWide:(NSInteger)width
pixelsHigh:(NSInteger)height bitsPerSample:(NSInteger)bps
samplesPerPixel:(NSInteger)spp hasAlpha:(BOOL)alpha isPlanar:(BOOL)isPlanar
colorSpaceName:(NSString *)colorSpaceName
bitmapFormat:(NSBitmapFormat)bitmapFormat bytesPerRow:(NSInteger)rowBytes
bitsPerPixel:(NSInteger)pixelBits;
Itu hampir 400 karakter! Dalam pemrograman iOS, ada lebih dari 800 kelas, 9000 metode, dan terus bertambah. Dalam pengembangan web, ada kerangka kerja baru setiap minggu. Tidak ada yang akan mengharapkan Anda untuk dapat mengingat semua kode tersebut. Inilah alasan persis mengapa kita menjadi pengembang, kita bisa membuat komputer melakukan pekerjaan membosankan untuk kita. Misalnya, kode untuk merekam suara hanya perlu dicari singkat, mengapa Anda perlu menghafalnya? Keterampilan yang paling dicari oleh kebanyakan pengusaha saat merekrut adalah kemampuan berpikir. Pengetahuan bernilai di dunia di mana informasi sulit didapatkan. Pada abad ke-19, hanya orang kaya yang memiliki akses ke buku-buku dan guru yang baik. Sekarang, semua orang memiliki semua informasi yang mereka miliki dan lebih banyak lagi dengan sekali klik. Informasi kehilangan nilai, kemampuan berpikir adalah saham yang harus dibeli. Jadi jangan takut untuk mencari, bertanya di Stack Overflow, atau mencari sumber daya untuk membantu Anda menyelesaikan masalah Anda. Programmer terbaik melakukannya. Keterampilan yang perlu Anda latih adalah bertanya pertanyaan yang baik dan memahami jawabannya. Tidak ada gunanya menyalin kode dari jawaban Stack Overflow jika Anda tidak memiliki petunjuk bagaimana itu bekerja. Karena Stack Overflow bekerja dengan sistem reputasi, sangat penting bagi mereka untuk sejelas mungkin dalam menjawab agar dapat dicatat sebagai benar dan mengumpulkan suara-suara. Dalam kebanyakan kasus, tidak masuk akal untuk mulai mencari Stack Overflow setiap kali Anda terjebak. Pilihan pertama harus selalu mencoba memecahkan masalah sendiri. Jadi program Anda tidak berjalan sesuai yang Anda harapkan, tapi sebelum saya mengetik tiga baris kode terakhir, semuanya berjalan dengan baik. Jadi mari kita cari tahu apa yang rusak dalam tiga baris terakhir itu? Jika Anda benar-benar tidak bisa mencari tahu, mulailah dengan Google. Cari pertanyaan Anda atau jika Anda memiliki bug, tempel kode kesalahan dan pesan kesalahan. Kemungkinannya adalah sebagai pemula, kesulitan pemrograman Anda akan sangat umum, dan seseorang mungkin bahkan sudah menghabiskan waktu untuk menulis tutorial yang jelas dan ringkas untuk membantu Anda memahami bug Anda. Seiring Anda semakin terampil dalam pemrograman, masalah yang akan Anda hadapi menjadi semakin samar, tetapi mudah-mudahan, jika Anda mengikuti 11 aturan lainnya, Anda juga akan menjadi programmer yang lebih mampu dan bisa menyelesaikannya sendiri atau tahu persis di mana mendapatkan bantuan.
Alasan lain mengapa Anda harus memulai dengan Google adalah bahwa algoritme pencarian Stack Overflow mengatur pertanyaan dan jawaban berdasarkan kebaruan dan bukan popularitas. Banyak masalah yang akan Anda hadapi saat memulai mungkin sudah ditanyakan dan dijawab bertahun-tahun yang lalu tetapi masih sangat populer. Jadi tanyakanlah dengan bijaksana dan Anda akan menuai manfaat dari komunitas. Suatu hari nanti, saat Anda sendiri menjadi ahli kode, Anda akan memberi kembali kepada komunitas yang sama dan membantu generasi berikutnya dari para pengode.
"Jangan takut untuk meminta bantuan saat Anda membutuhkannya. Meminta bantuan bukanlah tanda kelemahan, itu adalah tanda kekuatan. Ini menunjukkan Anda memiliki keberanian untuk mengakui ketika Anda tidak tahu sesuatu, dan untuk belajar hal baru. Barack Obama
ATURAN ENAM
Jadilah Tiruan
Pada awal perjalanan pemrograman saya,
Saya berpikir cara belajar mengode adalah dengan membaca banyak buku.
Saya membeli buku-buku tentang C++, C#, Java, dan masih banyak lagi. Sebut saja, saya punya semuanya. Tetapi buku-buku itu tidak banyak memberikan selain membuat saya bingung. Saya membaca. Saya memberi sorotan. Saya lupa. Saya tertidur. Buku-buku bagus sebagai referensi. Jika Anda ingin memahami secara mendalam tentang delegasi dan protokol, baca bab tentang itu. Tetapi jika Anda ingin belajar, buatlah sesuatu. Tetapi apa yang harus Anda buat? Kekurangan ide? Jadilah tiruan. Buatlah catatan Anda sendiri, buatlah MSPaint Anda sendiri, buatlah piano Anda sendiri. Jika Anda suka game, buatlah minesweeper, buatlah Tetris, buatlah Flappy Bird. Tidak hanya akan mereka agak berguna, tetapi juga akan menjadi kesempatan yang sempurna bagi Anda untuk mencari tahu cara melakukan hal-hal dan mendapatkan pengalaman dalam mencari bantuan. Sesuatu yang benar-benar baru bagi dunia seperti proyeksi smartphone holografis, tidak ada yang akan dapat membantu Anda. Dengan membuat aplikasi atau program tiruan, Anda akan mengikuti jejak yang sudah banyak diikuti sebelum Anda. Dengan cara ini, Anda memaksimalkan peluang bahwa seseorang akan dapat menawarkan bantuan dan saran ketika Anda terjebak.
Seniman baik meminjam, seniman hebat mencuri. Pablo Picasso
ATURAN TUJUH
Jadilah Bertanggung Jawab
Jadilah bertanggung jawab kepada seseorang.
Tunjukkan pekerjaan Anda.
Masalah terbesar dengan kursus pemrograman online adalah kurangnya tanggung jawab. Tidak diragukan lagi ada banyak kursus online yang bagus seperti Massive Open Online Courses (MOOCs), seperti Coursera, Udacity, Udemy, Skillshare. Tetapi apa akibatnya jika Anda tidak mengerjakan pekerjaan rumah Anda atau melewatkan satu bulan kuliah? Tidak ada. Tidak ada yang peduli. Mari kita hadapi, motivasi internal tidak kuat dalam diri kita semua. Kami selalu bisa menemukan alasan mengapa kami pantas menonton Netflix dan makan es krim. Saya bahkan tidak dapat menghitung berapa banyak kursus online yang saya daftar dan kemudian tidak pernah mendengarkan satu kuliah pun atau menyelesaikan satu tugas kursus pun. Anda memerlukan tanggung jawab dan komitmen untuk belajar. Ingat kembali pada hari-hari kuliah Anda, apakah Anda akan repot-repot menyelesaikan esai itu pada pukul 3 pagi jika tidak ada yang bergantung padanya? Apakah Anda akan pergi ke kuliah-kuliah jika Anda tidak peduli tentang lulus atau tidak lulus?
Inilah mengapa kami berusaha untuk memperkenalkan tanggung jawab dalam kursus kami. Kami menyadari bahwa menghubungkan mahasiswa dengan teman membantu. Seseorang lain yang pemula, pada tingkat yang sama seperti Anda yang kadang membantu Anda dan kadang membutuhkan bantuan Anda. Kadang-kadang, ketika tingkat belajar orang berbeda atau jika Anda dipasangkan dengan seseorang yang malas, Anda dapat menukar pasangan dan mendapatkan teman baru. Karena sistem ini sepenuhnya sukarela, ada tingkat pemilihan diri bagi orang-orang yang bekerja dengan baik dalam tim dan termotivasi oleh orang lain. Sama seperti Anda lebih mungkin pergi ke gym jika Anda mendaftar bersama pasangan Anda, Anda lebih mungkin belajar jika Anda memiliki teman pembelajaran pemrograman. Jadi jika Anda tidak mengikuti kursus kami, carilah yang Anda sendiri. Ada banyak kelompok Facebook yang didedikasikan untuk mereka yang sedang belajar mengode. Ada seluruh subreddit (r/learnprogramming) yang didedikasikan untuk ini, saya yakin Anda akan menemukan orang dengan pikiran yang sama di suatu tempat online atau offline. Hal berikutnya yang akan saya katakan akan kontroversial. Kami percaya bahwa orang tidak menghargai hal-hal yang tidak memiliki nilai. Inilah alasan mengapa Coursera menutup sejumlah besar kursus gratis mereka. Mereka melihat bahwa jutaan orang mendaftar untuk itu tetapi tidak ada yang mengikuti salah satu kelas pun, apalagi menyelesaikan salah satu proyek. Itu sebenarnya merugikan pembelajaran mahasiswa untuk menawarkan kursus gratis. Kita semua memiliki kecenderungan mengumpulkan barang dan sangat mudah untuk mendaftar untuk sekelompok hal yang akan Anda alami di masa depan. Selalu ada besok, katanya. Jadi jika Anda lebih didorong oleh motivasi eksternal daripada internal, cobalah menggunakan sedikit motivasi keuangan untuk mendorong pembelajaran Anda. Pikirkan tentang seberapa berharga keterampilan hidup bagi Anda dan letakkan uang Anda di tempat niat Anda. Lihat apakah Anda berinteraksi dengan konten kursus lebih banyak dengan atau tanpa komitmen keuangan. Ada banyak tempat di mana Anda dapat membayar sesuatu yang terjangkau untuk memotivasi diri Anda untuk memulai kebiasaan belajar yang teratur. Bagian terakhir dari aturan ini adalah mencoba menemukan cara untuk mendapatkan penilaian. Oke, jadi mendapatkan penilaian berada di atas sana dengan kematian dan pajak dalam hal seberapa banyak orang menikmatinya. Tetapi ketika belajar apa pun, selalu penting untuk mendapatkan umpan balik. Anda akan mendapatkan penilaian objektif tentang tingkat keterampilan Anda saat ini, daripada merasa seperti penipu atau penuh kepercayaan diri palsu. Coursera memiliki sistem di mana para mahasiswa menilai pekerjaan satu sama lain. Di App Brewery, kami menggunakan pendidikan Github untuk menguji kode Anda dan mencari bug serta masalah dengan kode Anda. Tet
ATURAN DELAPAN
Tetap Belajar
Menjadi seorang programmer yang baik
agak seperti menjadi Madonna.
Jangan langsung pergi dan membeli bra berbentuk kerucut. Yang saya maksud adalah pemrograman akan terus berkembang. Untuk tetap relevan, Anda harus terus menciptakan diri Anda sendiri. Selalu ada tren baru, teknologi baru, dan bahasa baru. Para programmer hebat menikmati belajar hal-hal baru, bahkan jika itu berarti mereka menjadi pemula lagi. Dunia akan terus bergerak, jika Anda tinggal di satu tempat, Anda pada akhirnya akan tertinggal. Saya kenal programmer yang tidak pernah belajar apa pun selain Fortran. Saya kenal programmer Objective-C yang tidak bisa meyakinkan diri mereka sendiri untuk beralih dan belajar Swift, meskipun Apple memberi tahu para pengembang bahwa Objective-C akan dihentikan penggunaannya. Kita semua tahu bahwa Apple tidak pernah membuat ancaman yang tidak mereka lakukan, lihat saja pada drive optik (dan segera jack headphone?). Jangan menjadi drive optik. Atau lebih tepatnya, jangan menjadi laptop yang masih mencoba memutar CD. Jika kebutuhan Anda berubah, pelajari penggunaan alat baru. Tetap belajar, tetap relevan. Apakah Anda seorang pengembang web yang selalu ingin terlibat dalam pengembangan mobile? Pilih platform dan pelajari iOS atau Android. Apakah Anda seorang pengembang front-end yang tertarik dengan full-stack? Pelajari pengembangan web dengan Node. Jika Anda sudah memahami konsep dasar pemrograman, mempelajari beberapa bahasa lagi akan jauh lebih mudah daripada memulai dari awal. "Belajar x dalam y menit" adalah sumber daya yang bagus bagi para programmer yang sudah ada untuk mempelajari bahasa pemrograman baru. Periksa sumber daya mereka di sini: learnxinyminutes.com

ATURAN SEMBILAN
Bermain Foosball
Ketika Anda melihat film-film Hollywood
tentang programmer,
mereka biasanya duduk di depan laptop, menekan tombol keyboard seolah-olah mereka sedang bermain permainan "pukul tikus" yang serius. Namun, ketika Anda melihat para programmer bekerja dalam kehidupan nyata, mereka cenderung terlihat seperti ini:

Ya, Anda benar. Tidak ada ketikan. Hanya tatapan. Banyak tatapan.
Di dalam sebuah perusahaan, orang-orang cenderung mengeluh bahwa para programmer selalu bermain foosball atau melakukan hal lain yang tidak terlihat seperti pekerjaan. Mungkin orang tidak dapat mengatakannya, tetapi sebenarnya mereka sedang bekerja. Ketika Anda melihat mereka menikmati permainan foosball, tertawa dan bercanda, mereka mungkin sedang menderita di dalam hati. Karena ada bug, selalu ada bug. Atau ada sesuatu yang misterius tentang kode mereka yang tidak dapat mereka pecahkan. Mungkin kode itu berfungsi dengan sempurna, tetapi dengan cara yang tidak terduga (para programmer tidak suka hal-hal yang tidak terduga, by the way). Misalnya, jika mereka baru saja mengetik ribuan baris sekaligus, dan tiba-tiba tidak ada kesalahan.

Orang lain mungkin tidak mengerti, tetapi dalam situasi-situasi seperti ini, hampir selalu baik untuk menjauh dari kode Anda dan memberinya sedikit waktu dan jarak. Apakah Anda memiliki bug dalam kode Anda yang tidak dapat Anda pecahkan? Tidurlah, bermain foosball, pergilah berjalan. Dalam 9 dari 10 kasus, solusinya akan menjadi jelas. Dalam 1 dari 10 kasus yang tersisa, Anda hanya sudah kalah. Mungkin terdengar tidak intuitif, tetapi saran saya selalu adalah untuk lebih sedikit menulis kode, dan lebih banyak berpikir. Setelah kode yang kurang dipikirkan ditulis dan dihadirkan di dunia, Anda pasti harus kembali dan merunut kode Anda, baris demi baris, melakukan refaktor, dan menghapus hal-hal. Ini selalu pengalaman yang menyakitkan. Jadi ingatlah, kode yang paling mudah untuk dihilangkan adalah kode yang tidak pernah ditulis.
ATURAN SEPULUH
Dapatkan Mentor
Ketika saya sedang belajar bahasa Perancis,
saya menemukan metode yang menghasilkan lonjakan besar dalam kemampuan berbicara saya. Itu adalah pertukaran bahasa melalui Skype. Saya akan berpasangan dengan seorang penutur asli bahasa Perancis yang ingin belajar bahasa Inggris. Kami akan menghabiskan setengah jam berbicara dalam bahasa Perancis dan setengah jam berbicara dalam bahasa Inggris. Kami akan mengabdikan satu jam setiap minggu untuk meningkatkan bahasa yang kami coba pelajari. Saat kami sedang berbicara dalam bahasa Perancis, dia akan memperbaiki pelafalan atau tata bahasa saya dan menyarankan cara saya membangun kalimat agar terdengar lebih alami. Pair programming adalah teknik pengembangan perangkat lunak yang berbasis pada prinsip-prinsip yang sangat mirip. Sebagai contoh, seorang pembelajar dan mentor akan duduk di workstation yang sama dan bekerja pada suatu masalah. Pembelajar bertanggung jawab menulis kode dan mentor meninjau kode baris demi baris saat ditulis. Ini mungkin tidak nyaman pada awalnya karena agak memalukan membuat kesalahan dan menghadapkan pada mereka. Tetapi jika Anda memiliki mentor yang merupakan guru yang baik, maka mereka akan memberikan Anda kebijakan yang terakumulasi selama beberapa dekade yang dapat mengarah pada peningkatan besar dalam kemampuan Anda sendiri, semua dalam beberapa jam. Anda akan mendapatkan akses kepada seseorang yang telah memiliki waktu untuk mengasah keterampilan mereka, menemukan cara-cara efisien untuk melakukan hal-hal, dan menunjukkan kepada Anda bagaimana mereka memprogram dan mendekati masalah. Mentor yang baik tidak memecahkan masalah Anda, sebaliknya mereka mengamalkan metode Sokratik dengan mengajukan pertanyaan-pertanyaan yang baik yang membuat Anda berpikir sendiri. Jika Anda bertanya kepada saya bagaimana menulis panggilan jaringan, tentu saja, saya bisa mengetikkannya dan meminta Anda untuk menyalinnya. Tetapi itu tidak membantu Anda. Sebaliknya, jika Anda menunjukkan kepada saya bagaimana Anda mendekati masalah dan saya menunjukkan kepada Anda bagaimana saya mendekati masalah tersebut, Anda dapat belajar jauh lebih banyak daripada hanya mengikuti resep. Ketika Anda menghadapi masalah yang berbeda lain kali, Anda dapat menerapkan pendekatan yang sama dan mulai memecahkannya sendiri. Selalu ingat bahwa informasi murah. Seabad yang lalu, jika saya ingin belajar tentang penyebab penyakit, saya mungkin harus menjadi seorang bangsawan, atau menebang kayu dan membawa air untuk seorang tuan dan menjadi murid mereka. Saat ini saya bisa mencari di Google dan mendapatkan jawaban saya dalam beberapa detik. Jadi jangan terpaku pada informasi. Belajarlah untuk berpikir. Bagaimana mendekati suatu masalah. Bagaimana memecah masalah. Bagaimana merumuskan masalah. Keterampilan-keterampilan ini akan membawa Anda jauh lebih jauh daripada sekadar menghafal dan mengulang. Tetapi di mana Anda dapat menemukan mentor? Ada pertemuan terkait pemrograman yang berlangsung di hampir setiap kota di dunia. Pergi ke www.meetup.com dan cari yang terkait dengan bahasa yang ingin Anda pelajari. Hadiri pertemuan tersebut, kenalilah orang-orang. Tukar keahlian Anda dengan keahlian mereka. Mungkin seseorang membutuhkan akuntan, mungkin seseorang membutuhkan nasihat hukum. Tukarkan waktu Anda dengan waktu mereka. Jangan berkata kepada seseorang, "akankah Anda menjadi mentor saya?". Tidak ada yang ingin menghabiskan waktu luang mereka untuk seseorang yang tidak dikenal. Sebaliknya, tawarkan bantuan Anda sebagai imbalan atas bantuan mereka dan Anda akan berhasil menemukan mentor sebanyak 95% dari waktu.
ATURAN SEBELAS
Bentuk Kebiasaan Chunking
Jadi Anda punya ide yang luar biasa.
Tapi itu jauh-jauh-jauh terlalu rumit untuk tingkat keterampilan Anda saat ini. Apa yang harus Anda lakukan? Anda bergabung dengan Express Chunking. Tidak, saya tidak berbicara tentang film seni. Saya berbicara tentang memecah masalah pemrograman Anda. Mari kita katakan Anda mencoba membuat robot yang dapat memberi mentega pada roti. (Jika ada yang bekerja pada salah satu ini, saya akan dengan senang hati mendanai Kickstarter Anda!) Robot tidak tahu apa pun tentang roti atau mentega atau pisau. Percayalah atau tidak, sebenarnya dibutuhkan rangkaian sirkuit yang cukup canggih dalam otak kita untuk dapat mencapai sesuatu yang sederhana seperti memberi mentega pada selembar roti. (Mungkin inilah mengapa saya tidak bisa melakukannya tanpa kopi). Jadi membuat robot yang melakukan semua itu secara mandiri benar-benar rumit dan sulit. Tetapi karena kita adalah programmer yang baik, kita bisa melakukan sedikit "chunking" dan memecah masalahnya. Sebenarnya robot tidak perlu tahu apa itu roti dan apa itu mentega, kita tidak membuat Skynet di sini, jadi mari kita tetap pada hal-hal praktis. Ada tiga hal yang perlu dilakukan oleh robot:
Mengambil dan menyusun potongan roti dalam posisi yang ideal untuk diolesi mentega.
Mengambil porsi mentega.
Menempatkan mentega pada roti dengan cakupan yang cukup (ini adalah bagian yang saya temukan paling sulit). Selanjutnya, Anda memecah setiap modul menjadi bagian yang lebih kecil. Dalam proses ini, Anda dapat memikirkan cara alternatif untuk memecahkan masalah. Misalnya, apakah robot perlu "menebarkan" mentega? Atau apakah ia hanya dapat melelehkan mentega ke roti? Apakah ia perlu belajar untuk mengambil pisau? Atau apakah ia dapat memiliki semacam lengan pisau bawaan, seperti bajak laut dengan pisau buatan di dalam penjara? Semakin Anda memecah masalah dan mendefinisikan masalah yang ingin Anda selesaikan, semakin mudah untuk membagi kode Anda menjadi bagian yang mudah dipecahkan. Semakin sederhana bagian tersebut, semakin mudah untuk diatasi. Jadi, saat Anda mencoba membuat "gabungan antara Snapchat dan Evernote" berikutnya, ingatlah untuk memecahkan masalah menjadi bagian-bagian yang dapat diselesaikan.
ATURAN KEDUA BELAS
Pecahkan Kode Orang Lain
Salah satu langkah paling penting
untuk melangkah dari menjadi pemrogram pemula ke menjadi pemrogram yang terampil
adalah memahami bagaimana mendapatkan bantuan. Semua orang memerlukan bantuan. Semua orang, termasuk mereka yang disebut "Pemrogram Tingkat Dewa". Tapi apa yang Anda lakukan dengan bantuan itu akan menentukan seberapa cepat Anda berkembang sebagai seorang pemrogram. Di situs seperti StackOverflow, sangat menggoda untuk hanya menyalin dan menempelkan kode yang disediakan seseorang. Program Anda berfungsi persis seperti yang Anda harapkan dan Anda melanjutkan ke jalur pemrograman Anda dengan riang. Latihan ini tidak mengajarkan Anda apa pun selain ketergantungan kode. Karena ketika Anda menghadapi masalah yang sama tetapi dalam situasi yang berbeda, potongan kode yang sama yang disediakan seseorang mungkin tidak lagi berfungsi. Lalu apa yang harus Anda lakukan? Anda terjebak. Itulah mengapa ada aturan dalam pemrograman yang mengatakan "jangan pernah menyalin dan menempelkan kode yang tidak Anda pahami". Jadi apa yang harus Anda lakukan ketika Anda dihadapkan pada blok kode yang memecahkan masalah Anda tetapi Anda tidak punya petunjuk bagaimana cara kerjanya? Pecahkan itu.
Langkah 1 - Salin dan tempelkan kode ke program Anda. (ya, ya, saya tahu saya baru saja mengatakan jangan lakukan itu, sabar, sabar). Langkah 2 - Pastikan bahwa program atau aplikasi Anda berfungsi seperti yang diharapkan. Artinya, konfirmasikan bahwa blok kode benar-benar memecahkan masalah Anda. Langkah 3 - Hapus blok kode yang disalin dan ditempelkan, baris per baris. Langkah 4 - Setiap kali Anda menghapus satu baris, periksa apa yang rusak. Apakah aplikasi masih berjalan? Apa kode kesalahan? Apa yang terjadi setelah menghapus baris kode tersebut dari program Anda? Langkah 5 - Bahkan jika Anda pikir Anda tahu apa yang dilakukan oleh baris kode, tetap hapus saja. Tugas paling penting sebagai seorang pemrogram adalah selalu menguji asumsi Anda dengan hasil yang diperoleh. Perasaan paling menyenangkan sebagai seorang pemrogram adalah ketika dunia nyata memvalidasi asumsi Anda. Apakah Anda tahu betapa enaknya ketika pacar / pacar / suami / istri Anda mengucapkan tiga kata ajaib? "Anda benar". Ini seperti itu, tapi lebih baik.
Langkah 6 - Tukar beberapa baris kode. Apakah fungsionalitas yang sama dapat dicapai dengan urutan baris yang berbeda? Mengapa baris-baris tersebut ditulis dalam urutan yang ditulis? Dengan memecah kode solusi, baris per baris, Anda akan belajar dan memahami apa yang dilakukan oleh setiap baris dan mengapa ditulis demikian. Ini adalah cara yang jauh lebih baik untuk menggunakan kode dari orang lain daripada hanya menempelkannya dan berharap yang terbaik. Setelah Anda memahami mengapa setiap baris tersebut diperlukan, ketika Anda menghadapi masalah serupa lainnya, Anda akan dapat memahami masalah tersebut dan memecahkannya sendiri. Setelah Anda menguasai pemecahan kode dari StackOverflow, sumber daya berikutnya yang dituju adalah GitHub. Ini adalah alat yang digunakan oleh para programmer untuk kolaborasi tetapi juga merupakan salah satu repositori kode sumber terbesar. Jadi bagaimana Anda dapat menggunakannya untuk menjadi seorang pemrogram yang lebih baik? Mari kita katakan Anda ingin membuat klon Instagram. Tetapi sayangnya, Anda tidak tahu bagaimana melakukannya. Jadi Anda menuju ke github.com dan mencari "Instagram" atau "aplikasi foto". Pada akhirnya, akan ada sesuatu yang ditulis dalam Swift / Objective-C / Java yang bisa Anda unduh dan lihat. Pikirkan tentang struktur program mereka. Lihat semua kelas, konstan, interaksi. Buat beberapa modifikasi pada kode tersebut. Apakah masih berfungsi atau apakah Anda telah merusaknya? Mengapa Anda merusaknya? Apakah ada tautan yang tidak Anda kenali? Tanyakan diri Anda sendiri sejumlah pertanyaan, pelajari melalui metode Sokratik. Bongkar proyek tersebut dan pahami bagaimana itu dibangun. Ketika Anda mulai sangat baik dalam hal ini, hal berikutnya yang dapat Anda coba adalah rekayasa balik. Temukan proyek kecil di GitHub yang dibuat oleh seorang pemrogram terkemuka, unduh aplikasinya. Jalankan dan lihat semua fungsinya. Bermain-mainlah dengannya. Lalu bangun dari awal dan setelah selesai, bandingkan kode Anda dengan kode mereka. Apakah ada peningkatan efisiensi yang bisa Anda lakukan? Apakah ada solusi untuk hal-hal yang tidak bisa Anda selesaikan? Sekarang Anda benar-benar memasuki liga besar.
Bergerak cepat dan merusak segalanya. Mark Zuckerberg



