Dari seorang penerjemah: Posting ini adalah terjemahan dari
artikel asli oleh David Harron, seorang pengembang perangkat lunak yang berpengalaman. Dia sering menulis artikel tentang masalah karyanya, termasuk Node.js, di mana David memiliki hubungan khusus.
Sebagai pengembang perangkat lunak, kita semua tahu seberapa cepat teknologi berubah. Kami berusaha mengikuti mereka, terus-menerus mempelajari metode kerja, alat, bahasa dan kerangka kerja baru. Kami terus-menerus harus membandingkan kekuatan dan kelemahan mereka, memutuskan apa yang perlu dikuasai dan apa yang harus ditinggalkan. Ini bukan tugas yang mudah, Anda dapat dengan mudah tersesat di lautan pilihan.
Skillbox merekomendasikan: Profesi online "Profesi Pengembang Web" .
Kami mengingatkan Anda: untuk semua pembaca "Habr" - diskon 10.000 rubel saat mendaftar untuk kursus Skillbox apa pun menggunakan kode promosi "Habr".
Meskipun demikian, agar tetap profesional, Anda harus mengetahui teknologi saat ini. Terkadang fungsi X atau Y harus ditambahkan ke aplikasi hanya karena semangat zaman mengharuskannya.
Pengembang dibantu untuk tetap mengapung buku, tutorial video, kursus. Dan ini sangat sederhana - menghabiskan seluruh waktu Anda untuk pelatihan tanpa mulai mengerjakan proyek.
Pengembang Tony Mastrorio
pernah menulis bahwa ia takut untuk memulai salah satu proyeknya, karena ia tidak memiliki pengetahuan untuk mengimplementasikannya. Karena itu, alih-alih bekerja, ia mulai mengambil kursus demi kursus, berharap setiap materi berikutnya akan memberinya pengetahuan yang diperlukan. Ini berlanjut sampai Tony memilih jalan yang berbeda, yang sekarang kita bicarakan.
Baru-baru ini, di Quora, saya
menjawab pertanyaan tentang seberapa cepat Anda dapat mempelajari JavaScript dan mulai mengembangkan aplikasi dalam bahasa ini. Saya menulis bahwa programmer tidak perlu mengenalnya secara menyeluruh untuk menggunakannya. Banyak dari kita menulis cuplikan kecil dalam JavaScript untuk web, dan hanya beberapa baris kode yang cukup untuk secara signifikan meningkatkan fungsionalitas situs. Hal yang sama dapat dikatakan untuk Node.js: kode kecil - dan semuanya menjadi lebih baik. JavaScript adalah bahasa yang sangat kuat, dan modul yang tersedia di ekosistem Node.js akan memenuhi hampir semua permintaan.
Ekosistem JavaScript sangat berkembang, dengan bahasa ini Anda benar-benar dapat melakukan banyak hal. Buktinya saya menulis artikel ini di Google Docs, editor teks berbasis browser.
Bahasa pemrograman harus dipelajari dengan baik sehingga dapat melakukan tugas-tugas tertentu.
Beberapa bulan yang lalu saya mulai belajar Vue.js. Saya mulai dengan kursus Udemy, tampak cukup untuk mulai bekerja di proyek. Jika saya memerlukan informasi lebih lanjut, saya selalu dapat kembali mempelajari topik ini. Sementara itu, saya membuat aplikasi desktop saya tanpa pengetahuan mendalam tentang Vue.js - saya hanya mempelajari apa yang dibutuhkan untuk mengisi kesenjangan pengetahuan tentang topik tersebut.
Biarkan saya memberi Anda contoh lain - pengalaman saya belajar Node.js.
Hingga Januari 2009, saya bekerja di tim Java SE di Sun Microsystems. Kemudian saya menulis sejumlah besar artikel teknis. Sebagai penggemar Java, saya membandingkannya dengan JavaScript, menunjukkan keutamaan yang pertama. Pekerjaan saya berikutnya sudah di Yahoo, kemudian saya terus menggunakan Java, dan pada akhir 2010 saya secara bertahap beralih ke Node.js - maka itu adalah teknologi baru.
Saya langsung terjun ke JavaScript ketika tim kami mulai mengerjakan Mojito / Manhattan, platform hosting untuk aplikasi. Itu pada akhir 2010, sedikit lebih awal
Ryan Dahl mengatakan kepada karyawan Yahoo tentang Node.js. Pada saat yang sama, saya, bersama dengan Packt Publishing, mengerjakan sebuah buku tentang Node.js sebagai konsultan teknis, dan sedikit kemudian saya diberi tahu bahwa penulis buku memutuskan untuk meninggalkan proyek, penerbit menyarankan agar saya menjadi seorang penulis. Karena tidak tahu bagaimana buku ditulis sama sekali, saya langsung setuju.
Dan sekarang, mengetahui sedikit tentang JavaScript, saya mulai menggunakannya untuk menyelesaikan masalah pekerjaan di Yahoo, saat menulis buku tentang Node.js. Edisi pertamanya dirilis pada Agustus 2011, yang keempat - pada Juni 2018.
Saya bisa saja takut akan ketidakpastian dan berhenti menulis. Apakah saya mengenal JavaScript dengan cukup baik untuk tugas seperti itu? Jelas tidak. Selain itu, saya tidak tahu cara menulis buku. Dalam karya penulis ada banyak aspek yang tidak saya ketahui, tetapi saya secara bertahap mempelajari dan menerimanya. Saya mampu dan senang menulis - karena saya adalah seorang blogger. Selama sepuluh tahun sebelum mulai mengerjakan buku itu, saya menulis artikel dan catatan berita. Tapi tetap saja, posting bukan buku, menulisnya sepertinya tugas yang sangat sulit.
Pada akhirnya, saya menyadari: alih-alih takut, Anda hanya perlu membuat rencana kerja yang baik dan jelas. Setelah itu, menulis buku berubah menjadi serangkaian esai. Nah, menulis esai, tutorial atau posting sudah merupakan tugas yang lebih mudah. Satu-satunya hal adalah bahwa masing-masing harus sesuai dengan semangat umum buku dan rencana. Setiap esai sebelumnya (bab) harus lancar pindah ke yang berikutnya. Segera setelah saya mengerti semua ini, mengerjakan buku berjalan jauh lebih cepat.
Jelas, banyak dari kita takut untuk melakukan tugas-tugas kompleks dan menyembunyikan kepala kita di pasir daripada bertindak. Untuk melanjutkan, untuk menaiki tangga karier dan berkembang, Anda membutuhkan kemauan. Bahkan, tidak ada yang rumit bahkan dalam tugas yang paling banyak. Misalnya, ketika seseorang dihadapkan dengan proses membeli rumah, prosesnya tampaknya terlalu rumit, agen penjual dianggap penipu, Anda berpikir bahwa tidak ada yang akan berhasil. Namun pada kenyataannya, semuanya lebih sederhana dari yang terlihat.
Sebelumnya, saya mengambil beberapa hal baru. Jadi, misalnya, ingin berkontribusi pada mempopulerkan kendaraan listrik, saya mulai menulis artikel tentang topik ini. Saya tidak pernah melakukan jurnalisme atau tahu bagaimana semuanya berjalan. Tetapi pada akhirnya, saya berhasil menulis beberapa ribu artikel berita. Orang-orang mengatakan bahwa saya memiliki bakat, dan saya benar-benar ingin merasa seperti orang yang mengatakan yang sebenarnya.
Mari kita bicara tentang beberapa prinsip utama sebelum saya berbicara tentang proyek yang sedang saya kerjakan.
- Tujuan yang jelas. Untuk fokus mencapainya, Anda harus selalu mengingat tujuan Anda. Anda juga harus mengartikulasikannya dengan jelas.
- Hancurkan proyek menjadi beberapa elemen. Saya sudah membicarakan hal ini di atas. Yang terbaik adalah membagi proyek besar, tujuan menjadi beberapa tugas terpisah.
- Pikirkan tentang elemen apa, subtugas yang dapat Anda lakukan sekarang, dan mana yang tidak.
- Buat daftar subtugas dengan menambahkan data pendukung yang mungkin diperlukan. Yang terbaik adalah menuliskan semuanya dalam mingguan atau perencana tugas. Ngomong-ngomong, Trello adalah alat yang hebat untuk ini.
- Gunakan Agile.
- Bersikap positif. Tujuan dapat dicapai bahkan jika pada awalnya tampaknya tidak mungkin.
Di atas, saya berbicara tentang proyek saya. Perangkat lunak ini, dan tugasnya cukup rumit. Saya akan membuat aplikasi desktop yang akan memungkinkan pengguna untuk membuat e-book dalam format EPUB3. Program akan menggunakan file dalam berbagai format yang terletak di direktori tertentu dan memformatnya sesuai dengan standar EPUB 3.0.1. Pengembangan akan didasarkan pada Electron, saya berencana untuk merilis versi rilis di toko aplikasi Apple dan Microsoft. Saya akan membangun UI berdasarkan Vue.js menggunakan perpustakaan komponen Buefy.
Ini adalah proyek yang agak berisiko, karena saya belum tahu bagaimana melakukan beberapa bagiannya. Misalnya, walaupun menjual Elektron di toko aplikasi dimungkinkan, saya masih tidak mengerti bagaimana melakukan ini. Dan ini bukan satu-satunya tugas yang sulit.
Namun demikian, saya berharap untuk menyelesaikan semua bagian dari proyek saya.
Mencapai setiap tujuan, saya anggap sebagai peristiwa yang mungkin secara teoritis. Saya tahu bahwa beberapa tugas telah diselesaikan oleh orang lain, sehingga saya dapat melakukan hal yang sama. Dan jika saya tidak tahu sesuatu sekarang, maka saya akan mencoba mencari tahu dalam waktu dekat.
Saya memiliki Trello untuk melacak tugas yang tersisa. Saya mencoba menjaga agar rencana itu tetap relevan, dan juga mempelajari hal-hal yang perlu saya kerjakan.
Saya tidak harus menjadi ahli dalam semua ini. Proyek ini memiliki tujuan yang jelas, untuk solusi yang saya perlukan data tertentu, elemen pengetahuan.
Beberapa hal sudah saya ketahui sekarang, misalnya, spesifikasi standar EPUB3. Sekitar empat tahun lalu, saya terbangun dengan pemahaman bahwa EPUB hanyalah arsip ZIP dari file HTML. Selama tiga hari saya mempelajari masalah ini dan menyadari bahwa EPUB3 adalah kumpulan file XHTML, standar ini menggunakan elemen HTML5 dan CSS, dan ZIP menggunakan format kemasan. Beberapa saat kemudian saya membuat alat di Node.js, yang memungkinkan saya untuk mengkompilasi dokumen EPUB. Versi yang sedikit lebih kompleks dari dokumen ini akan menjadi inti dari aplikasi baru saya.
Baru-baru ini, saya mengalami satu masalah yang agak rumit. Faktanya adalah aplikasi saya bermuara pada pembuatan antarmuka konfigurasi grafis untuk file XML dengan metadata. File OPF (Open Package Format) berisi beberapa elemen data, seperti dc: identifier atau dc: tag judul, yang dapat dianggap sebagai tabel. Sebuah buku dapat memiliki beberapa pengidentifikasi berbeda, termasuk ISBN, DOI, judul pendek dan panjang, berbagai nama dalam bahasa yang berbeda, dan sebagainya.
Aplikasi harus memiliki metode yang memungkinkan pengguna untuk menambah, mengedit, atau menghapus item dari tabel data yang berbeda. Tapi bagaimana caranya?
Sejak awal, saya mulai menunda tugas ini. Saya menulis semuanya kecuali bagian di mana Anda perlu menemukan solusi untuk bekerja dengan tabel.
Tetapi tidak mungkin untuk menunda tugas tanpa batas waktu - dan saya mengaturnya. Pada akhirnya, saya berhasil mencapai apa yang saya inginkan dengan bantuan komponen Vue.js untuk bekerja dengan tabel. Butuh beberapa hari untuk mengetahuinya. Inilah yang terjadi:

Di sini kita melihat beberapa tabel untuk memproses dc: daftar pencipta dan dc: kontributor. Setiap baris berisi dua tombol untuk mengedit dan menghapusnya. Tombol ditandai dengan tanda tambah menambahkan baris baru, dan tabel mendukung pagination jika ada terlalu banyak baris.
Mungkin ini bukan antarmuka yang paling ramah, tetapi semuanya berfungsi, dan proyek bergerak dari tahap "tidak mungkin" menjadi "diterapkan".
Dan setelah semua, saya menunda solusi untuk masalah ini berkali-kali, dan ternyata berada di permukaan - Anda hanya perlu menggunakan komponen Vue.js / Buefy. Dan ada banyak tugas serupa - mereka ditemukan di rumah dan di tempat kerja.
Sekarang tugas "mustahil" saya berikutnya adalah berurusan dengan penempatan aplikasi Electron di direktori. Saya melihat pengembang lain mempostingnya, jadi ini sangat mungkin. Hal utama adalah mencari tahu.
Tidak diketahui dapat menyebabkan kekhawatiran. Tugas, yang tidak jelas bagaimana mengimplementasikannya, adalah wilayah yang sama sekali baru, belum dikembangkan, semuanya di sini membuat kami takut. Tetapi mata takut, dan tangan melakukan. Ini adalah prinsip yang benar, yang berlaku termasuk dalam pengkodean.
Pada awalnya, kami berbicara tentang perubahan cepat dalam industri perangkat lunak. Kami terus berusaha untuk mengikuti, tidak ketinggalan. Untuk melakukan ini, kita menguasai "wilayah" baru untuk diri kita sendiri - kita dihadapkan dengan masalah, tidak tahu bagaimana melakukan tugas, menggunakan alat baru. Dan bahkan jika kita memecahkan masalah ini dengan set alat sebelumnya, sekarang sekarang untuk beberapa alasan itu mungkin tidak tersedia. Misalnya, jQuery menjadi usang dan kita harus mempelajari kembali.
Pada akhirnya, kita semua adalah pahlawan. Kami ingin mencapai tujuan tertentu, kami mencapai tempat yang tampaknya tidak dapat diatasi, tetapi masih menyelesaikan masalah. Dan solusinya, proses menemukannya, memberi kita tidak hanya kode kerja (kita berbicara tentang pemrograman, kan?), Tetapi juga kepercayaan diri dan pengalaman baru.
Skillbox merekomendasikan: