⚡️ Liga Perdagangan Gate.io #HMSTR# sedang ramai!
Berkumpul, berdagang, dan menangkan $15,000:
👉 https://www.gate.io/activities/crypto-league/?now_period=7
✨ $3,000 dalam hadiah partisipasi untuk pengguna beruntung
🔥 $2,000 hadiah perdagangan untuk para pendatang baru
Detail: https://www.gate.io/article/39152
Rust VS Go, bahasa apa yang harus dipilih developer di tahun 2023?
Sumber: InfoQ
Di tahun 2023, kami memiliki seribu alasan untuk mempelajari Rust.
Pada tanggal 7 Agustus, Rust Foundation merilis hasil Laporan Survei Rust 2022. Laporan tersebut menunjukkan bahwa tingkat adopsi Rust terus meningkat. Lebih dari 90% responden survei menyatakan bahwa mereka adalah pengguna Rust; Rust digunakan untuk mayoritas pengkodean bekerja di , peningkatan yang signifikan sebesar 51,8% dibandingkan tahun sebelumnya.
Tidak diragukan lagi bahwa Rust semakin menjadi fokus pengembang dengan keamanan memori dan kinerja konkurensi yang sangat baik. Namun, sulit juga untuk mengabaikan Go, pemain yang relatif "veteran" yang pernah terpilih sebagai bahasa pemrograman tahun ini.
Lahir pada tahun 2009, bahasa Go telah menarik banyak perhatian karena model konkurensinya yang unik dan keunggulan kinerja yang kuat. Perlu dicatat bahwa, seperti bahasa Rust, pencipta bahasa Go juga "membenci" C++, dan Go juga merupakan bahasa cloud native yang dominan.
Dalam survei pengembang Stack Overflow 2022, di antara 70.000 tanggapan atas pertanyaan "bahasa pemrograman yang membuat orang suka dan benci", programmer jelas lebih suka Rust, 86% dari mereka mengatakan mereka menyukai Rust, dan 64% mengatakan mereka menyukai Go. Menghadapi status Rust yang panas, beberapa pengembang bertanya dalam hati: Apakah Go masih layak dipelajari di tahun 2023?
Selain itu, dalam dua hari terakhir, apakah akan memilih Rust atau Go juga menjadi topik hangat di Hacker News:
Seorang netizen yang mendukung Rust berkata: "Saya juga sudah lama bermasalah dengan pilihan ini. Pada akhirnya, Rust menang. Pertama, saya merasa Rust lebih dekat dengan hal-hal di era Pascal sebelumnya, dan Anda dapat mengontrol semuanya ; kedua, jika wasm dan teknologi terkait adalah wabah besar, Rust akan menjadi pilihan yang lebih aman; lalu, kita sudah memiliki Python untuk pengembangan cepat, jadi masuk akal untuk memilih sesuatu yang sedikit lebih ekstrim, dan Go berada di jalan tengah. Terakhir, Rust harus digunakan untuk Core dan high-profile, jadi sepertinya tidak bisa dihilangkan."
Pengembang lain yang tidak setuju berkata, "Saya telah mengembangkan Go selama hampir sepuluh tahun, tetapi baru-baru ini saya juga mencoba Rust. Saya pikir saat ini ada beberapa preferensi wajib dan menyesatkan untuk Rust, dari pengalaman saya di Dari pengalaman di berbagai startup, termasuk saya saat ini, Go sejauh ini merupakan pilihan terbaik untuk pengembangan backend! Perhatikan, performa, fungsionalitas, atau lainnya...kedua bahasa ini sangat, sangat mirip!"
Saya harus mengatakan bahwa Go dan Rust jelas merupakan bahasa pemrograman yang sangat baik. Mereka modern, kuat, serbaguna, dan memberikan kinerja yang luar biasa. Tapi sungguh tidak masuk akal untuk langsung membandingkan Go dan Rust, siapa yang lebih baik, karena masing-masing bahasa pemrograman mewakili serangkaian trade-off yang mendalam di baliknya. Bahasa yang berbeda akan dioptimalkan untuk kebutuhan yang berbeda, jadi ketika kita memilih bahasa, kita juga harus mempertimbangkan masalah apa yang ingin kita gunakan untuk menyelesaikannya. Jadi kita akan mulai dari skenario yang berlaku dari bahasa Go dan Rust, dan mendiskusikan "cara" desain Go dan Rust.
Meskipun Rust dan Go sangat berbeda dalam sintaks dan gaya, keduanya adalah alat kelas satu untuk membuat perangkat lunak. Mari kita mulai analisis spesifik di bawah ini.
Go vs. Rust: Kemiripan
Rust dan Go memiliki banyak kesamaan, itulah sebabnya orang sering membandingkan keduanya. Tujuan apa yang sama-sama mereka miliki?
Dan:
Keamanan Memori
Baik Go dan Rust termasuk dalam bahasa pemrograman modern yang mengutamakan keamanan memori. Selama beberapa dekade pengembangan bahasa lama seperti C dan C++, menjadi jelas bahwa salah satu penyebab utama kesalahan dan bug adalah akses memori yang tidak aman/salah.
Jadi Rust dan Go masing-masing memberikan solusi yang berbeda, tetapi tujuan keduanya adalah menjadi lebih pintar dan lebih aman dalam hal manajemen memori, dan untuk membantu pengembang menulis program yang benar dengan kinerja luar biasa.
Cepat, dapat dieksekusi dengan ringkas
Keduanya adalah bahasa yang dikompilasi, yang berarti program dapat diterjemahkan langsung ke dalam kode mesin yang dapat dieksekusi, sehingga program dapat digunakan sebagai file biner tunggal. Tidak seperti bahasa yang ditafsirkan seperti Python dan Ruby, kami tidak perlu mengirim juru bahasa dan banyak pustaka/ketergantungan dengan program. Sebagai cerminan langsung dari kekuatan inti ini, program Rust and Go cenderung berjalan lebih cepat daripada bahasa yang ditafsirkan.
Bahasa Tujuan Umum
Baik Rust dan Go adalah bahasa pemrograman tujuan umum yang kuat dan dapat diperluas yang dapat Anda gunakan untuk mengembangkan semua jenis perangkat lunak modern—mulai dari aplikasi web hingga layanan mikro terdistribusi, mikrokontroler tersemat, aplikasi seluler, dan banyak lagi. **Keduanya memiliki perpustakaan standar yang sangat baik dan ekosistem pihak ketiga yang berkembang pesat, ditambah dukungan komersial yang kuat dan basis pengguna yang besar. ** Keduanya telah ada selama bertahun-tahun dan akan terus berkembang di tahun-tahun mendatang. Mempelajari Go atau Rust akan menjadi investasi waktu dan energi yang sangat masuk akal akhir-akhir ini.
Gaya pemrograman pragmatis
Tidak ada bahasa yang terlalu fungsional (seperti Scala atau Elixir), juga tidak sepenuhnya berorientasi objek (seperti Java dan C #). Sebaliknya, meskipun Go dan Rust memiliki fungsi pemrograman fungsional dan berorientasi objek, mereka selalu menekankan orientasi pragmatis-yaitu, memecahkan masalah dengan cara yang paling tepat, daripada memaksa semua orang untuk menggunakan metode tertentu melalui "ideologi", cara melakukan sesuatu. **Tetapi jika Anda sangat menyukai gaya pemrograman fungsional, ada lebih banyak opsi alat terkait di sisi Rust, yang merupakan salah satu keunggulan Rust dibandingkan Go. **
Pembangunan Masif
Rust dan Go menyediakan banyak fitur berguna untuk pemrograman skala besar, sehingga keduanya dapat beradaptasi dengan kebutuhan dunia nyata dari tim pengembangan besar dan basis kode besar. **Misalnya, programmer C telah berdebat selama bertahun-tahun tentang di mana harus meletakkan tanda kurung, dan apakah kode harus diindentasi dengan tab atau spasi; tetapi Rust dan Go sudah menggunakan alat pemformatan standar (Go has gofmt, Rust It is rustfmt) selesaikan ini sepenuhnya masalah. Mereka secara otomatis menulis ulang kode Anda menggunakan gaya yang sesuai.
Bukan karena format khusus ini halus, tetapi programmer **Rust and Go lebih pragmatis dan lebih suka memilih standar implementasi yang seragam. **
Keuntungan besar lainnya dari kedua bahasa ini tercermin dalam build pipeline. Keduanya memiliki alat manajemen dependensi dan build standar yang sangat baik, bawaan, dan berperforma baik. Ini berarti bahwa pemrogram tidak perlu bersaing dengan sistem pembangunan pihak ketiga yang rumit, juga tidak perlu mempelajari sistem baru setiap beberapa tahun.
**Karat atau Pergi? **
Setelah berbicara tentang begitu banyak masalah, dan fakta bahwa kedua bahasa dirancang dengan sangat baik dan kuat, apakah ada hasil dalam kompetisi ini? Atau, karena keduanya adalah pilihan yang sangat baik, mengapa orang masih marah di media sosial, menulis komentar panjang di blog yang mengatakan "Rust is for idiots" atau "Go bukanlah bahasa pemrograman sama sekali" Kata-kata yang kasar?
Tentu saja, beberapa orang hanya ingin melampiaskan emosinya, tetapi ini jelas tidak membantu menyelesaikan masalah yang sebenarnya. Setidaknya dalam hal bahasa apa yang digunakan dalam sebuah proyek, atau bahasa apa yang digunakan untuk masuk ke dunia pemrograman, suara keras jelas tidak membantu membuat pilihan yang tepat.
Mari kembali ke pembahasan orang dewasa dan lihat bagaimana Rust and Go memiliki kekuatan dan kelemahan berdasarkan analisis rasional.
Go vs. Rust: Performa
Seperti disebutkan sebelumnya, program yang dihasilkan oleh Go dan Rust keduanya cepat karena dikompilasi ke kode mesin asli tanpa melalui juru bahasa atau mesin virtual. Namun performa Rust masih lebih baik, bahkan sebanding dengan C dan C++, yang dikenal sebagai tolok ukur performa industri. Dan tidak seperti bahasa kuno ini, Rust juga menyediakan keamanan memori dan mekanisme keamanan konkurensi, sementara hampir tidak memengaruhi kecepatan eksekusi. Rust juga memungkinkan pengembang untuk membangun abstraksi kompleks tanpa menimbulkan penalti kinerja saat runtime.
Sebaliknya, Meskipun performa program Go juga bagus, fokus desain terutama pada kecepatan pengembangan (termasuk kompilasi), daripada tingkat eksekusi. Pemrogram Go lebih menyukai kode yang jelas dan mudah dibaca, sehingga kecepatan larinya sedikit lebih lambat.
Kompiler Go juga tidak menghabiskan banyak waktu untuk menghasilkan kode mesin yang paling efisien, ia lebih mementingkan kompilasi kode dalam jumlah besar dengan cepat. **Jadi dalam benchmark runtime, sering kali program Rust mengalahkan program Go. **
Performa runtime Rust juga sangat konsisten dan dapat diprediksi karena tidak menggunakan pengumpulan sampah. Pengumpul sampah Go sangat efisien dan dioptimalkan untuk menjaga waktu jeda sesingkat mungkin (waktu jeda semakin pendek dengan setiap rilis Go). Tapi bagaimanapun, pengumpulan sampah selalu memperkenalkan beberapa ketidakpastian dalam perilaku program, dan ini bisa menjadi serius atau bahkan sama sekali tidak dapat diterima untuk aplikasi tertentu (seperti sistem tertanam).
Karena tujuan Rust adalah memberi pemrogram kendali penuh atas perangkat keras yang mendasarinya, ** program Rust dapat dioptimalkan secara mendalam untuk mendekati kinerja teoretis mesin yang maksimal. **Ini menjadikan Rust pilihan terbaik untuk kasus penggunaan tertentu di mana kecepatan eksekusi mengalahkan segalanya, seperti pemrograman game, kernel sistem operasi, komponen browser web, dan sistem kontrol real-time.
Tidak masalah seberapa kuat bahasa pemrograman jika terlalu sulit untuk dipelajari dan membuat kebanyakan orang keluar. Go tampaknya sengaja dirancang untuk membedakan dirinya dari bahasa yang semakin kompleks seperti C ++: ** Ini memiliki sintaks yang sangat sedikit, kata kunci yang sangat sedikit, dan bahkan tidak banyak fungsi. **
Ini berarti bahasa Go mudah dipelajari, dan Anda dapat menulis berbagai program dengannya setelah sedikit pemahaman.
Poin kuncinya di sini adalah "kesederhanaan" tiga kata. Tentu saja, sederhana bukan berarti mudah. Tetapi bahasa yang kecil dan sederhana jelas lebih mudah dipelajari daripada bahasa yang besar dan kompleks. Tidak banyak cara untuk mendapatkan satu efek, jadi kode Go berkualitas tinggi hampir selalu terlihat sama. Ini memiliki keuntungan lain: kami dapat dengan cepat memahami apa yang dilakukan oleh layanan yang tidak kami kenal.
**Ontologi inti Go kecil, tetapi pustaka standarnya sangat andal. **Artinya, selain sintaks Go, kurva pembelajaran kita juga harus mempertimbangkan bagian pustaka standar ini.
Di sisi lain, mengalihkan fungsi dari bahasa ke perpustakaan standar berarti setiap orang hanya perlu fokus mempelajari perpustakaan yang terkait dengan kebutuhan pengembangan saat ini. **Go juga dirancang dengan pertimbangan penuh akan kebutuhan pengembangan perangkat lunak skala besar, dan dapat sangat mendukung basis kode besar dan tim pengembangan. **Dalam jenis skenario ini, developer baru harus dapat memulai dengan cepat. Untuk tujuan ini, komunitas Go selalu memprioritaskan kesederhanaan, kejelasan, keserbagunaan, dan keterusterangan program.
**Rust secara khusus dirancang untuk menyertakan berbagai fitur canggih dan berguna yang membantu pemrogram melakukan lebih banyak hal dengan lebih sedikit kode. **Misalnya, fungsi pencocokan Rust memungkinkan untuk menulis logika fleksibel dan ekspresif dengan cepat:
Tetapi juga karena Rust memiliki banyak pertimbangan desain, lebih sulit untuk dipelajari, terutama pada tahap awal. Tapi tidak apa-apa, C++ atau Java harus banyak dipelajari, dan bahkan tidak menawarkan fitur-fitur canggih Rust seperti keamanan memori. Jadi sangat tidak masuk akal untuk mengkritik suara Rust yang terlalu rumit: ini dirancang untuk menekankan ekspresi dan fungsi yang kaya, kami tidak dapat mengharapkannya menjadi begitu sederhana dan murni sambil memanfaatkan manfaatnya. Jadi tentu saja Rust memiliki kurva belajarnya sendiri. Namun selama kesulitan ini dapat diatasi, akan ada jalan mulus di depan.
**Meskipun Rust dan Go saling meminjam beberapa fitur (seperti generik), wajar untuk mengatakan bahwa fitur Rust masih lebih unggul, dan fitur Go relatif kurang. **
Sebagian besar bahasa menyediakan beberapa bentuk dukungan untuk pemrograman bersamaan (yaitu melakukan beberapa operasi pada waktu yang sama), tetapi Go dirancang untuk ini dari bawah ke atas. **Go tidak menggunakan thread sistem operasi, tetapi menyediakan alternatif ringan: goroutine. **Setiap goroutine adalah fungsi Go yang dijalankan secara independen yang dipetakan oleh penjadwal Go ke salah satu utas sistem operasi yang dikendalikan. Artinya, penjadwal dapat mengelola sejumlah besar goroutine bersamaan dengan sangat efisien, sementara hanya menggunakan thread sistem operasi dalam jumlah terbatas.
Oleh karena itu, kami dapat menjalankan jutaan goroutine bersamaan dalam satu program tanpa khawatir menyebabkan masalah kinerja yang serius. Oleh karena itu, **Go adalah solusi lengkap untuk skenario aplikasi serentak berskala besar seperti server web dan layanan mikro. **
Go juga menyediakan saluran untuk goroutine, yang merupakan cara yang cepat, aman, dan efisien untuk berkomunikasi dan berbagi data. Tingkat desain konkurensi Go memang sangat tinggi, dan pengalaman penggunaannya cukup santai dan menyenangkan.
Secara umum, merancang program bersamaan sangat sulit, dan membangun program bersamaan yang andal dan benar dalam bahasa apa pun bukanlah hal yang mudah. Namun, sejak persyaratan ini dipertimbangkan di awal proyek, mekanisme pemrograman konkuren di Go telah dibuat sesederhana mungkin dan terintegrasi dengan baik.
Sebaliknya, mekanisme konkurensi di Rust baru saja mendarat dan belum distabilkan, jadi semua orang dipersilakan untuk terus memperhatikan arah pengembangan aktif ini. Ini juga menguntungkan.Misalnya, perpustakaan rayon Rust menyediakan metode yang sangat elegan dan ringan yang dapat mengubah perhitungan berurutan menjadi perhitungan paralel.
Meskipun mungkin tidak mudah untuk mengimplementasikan program bersamaan di Rust, itu masih bisa dilakukan dengan sempurna, dan** program ini juga mendapat manfaat dari jaminan keamanan memori Rust yang dirancang dengan cermat. **Ambil kelas Mutex dari pustaka standar sebagai contoh: di Go, kita mungkin lupa mendapatkan mutex sebelum mengakses sesuatu; tetapi di Rust, tidak perlu khawatir sama sekali.
Seperti yang telah disebutkan sebelumnya, baik Go maupun Rust memiliki caranya masing-masing untuk mencegah berbagai kesalahan umum pemrograman, terutama masalah yang berkaitan dengan manajemen memori. Tapi **Rust melangkah lebih jauh, dapat dikatakan bahwa tidak ada upaya untuk memastikan bahwa setiap orang tidak membuat kesalahan keamanan yang tidak terduga. **
Meskipun demikian, pengalaman pemrograman di Rust berbeda dari hampir semua bahasa lain, dan bisa sangat menantang saat pertama kali diperkenalkan. Namun di mata banyak pengembang, upaya ini jelas bernilai uang.
Banyak bahasa, termasuk Go, juga menyediakan alat untuk membantu pemrogram menghindari kesalahan, tetapi Rust membawa efek ini ke tingkat yang baru. Banyak program yang salah bahkan tidak dapat dikompilasi sama sekali.
"Melawan pemeriksa pinjaman" adalah suatu keharusan bagi pendatang baru Rust, tetapi sebagian besar, pemeriksa itu sebenarnya bukan musuh. Masalah yang ditemukan memang bug nyata (atau setidaknya bug potensial) dalam kode. Ini mungkin memaksa kami untuk memperbaiki program kami secara mendasar untuk menghindari masalah seperti itu - Jika Anda benar-benar menempatkan kebenaran dan keandalan sebagai prioritas utama Anda, maka persyaratan ketat ini jelas merupakan hal yang baik.
Dari sudut pandang lain, apakah bahasa baru yang tidak mengubah metode pemrograman dapat disebut bahasa baru? Dan saat menggunakan bahasa lain, Rust mengajarkan kita untuk berpikir aman, yang sama pentingnya.
Kesulitan sebenarnya untuk memulai dengan model pemrograman Rust mungkin bergantung pada bahasa lain apa yang telah Anda gunakan sebelumnya. Pemrogram Python atau Ruby mungkin menganggap Rust terlalu membatasi, tetapi yang lain mungkin menganggap kejelasan dan batasan yang jelas bagus.
Saat Anda memecahkan masalah sendirian atau dalam tim kecil, apakah Anda memilih bahasa yang sederhana atau bahasa yang kaya, itu murni masalah preferensi pribadi. Namun, dengan perluasan skala perangkat lunak, kompleksitas, dan perluasan tim, perbedaan antara kedua bahasa tersebut mulai benar-benar muncul.
Untuk aplikasi besar dan sistem terdistribusi, kecepatan eksekusi kode seringkali tidak sepenting kecepatan pengembangan: bahasa seperti Go yang dengan sengaja menekankan desain ramping dapat mempersingkat waktu adaptasi pengembang baru dan memungkinkan mereka untuk berpartisipasi lebih cepat Untuk berkontribusi pada basis kode besar.
Kejelasan dan keterbacaan selalu lebih penting daripada keanggunan dalam hal pengembangan perangkat lunak berskala besar. **Keterbatasan Go sebenarnya membuatnya lebih mudah beradaptasi dengan kebutuhan perusahaan dan organisasi besar daripada bahasa yang lebih kompleks dan kuat seperti Rust. **
Rust vs. Go: Perbedaan
Meskipun Rust dan Go adalah bahasa modern yang populer dan banyak digunakan, mereka sebenarnya bukan pesaing karena mereka menargetkan kasus penggunaan yang bisa dibilang sangat berbeda**.
Seluruh pendekatan pemrograman di Go benar-benar berbeda dari Rust, dan fitur ini sangat cocok untuk sebagian orang, tetapi di sisi lain dapat mengganggu orang lain. Yang masuk akal, karena jika Rust dan Go pada dasarnya memecahkan masalah yang sama dengan cara yang pada dasarnya serupa, mengapa kita memerlukan dua bahasa terpisah?
Jadi, bisakah kita mulai dengan pendekatan yang diambil oleh Rust and Go dan menafsirkan esensinya masing-masing? Mari kita coba bersama.
"Untuk mengumpulkan sampah, atau tidak mengumpulkan sampah" selalu menjadi pertanyaan tanpa jawaban yang tepat. Secara umum, pengumpulan sampah dan pengelolaan memori otomatis dapat membantu kami mengembangkan program yang andal dan efisien dengan cepat dan mudah. Jadi untuk beberapa pengembang, ini adalah fitur penting.
Yang lain berpendapat bahwa pengumpulan sampah, dengan overhead kinerja dan jeda globalnya, dapat menyebabkan perilaku runtime yang tidak dapat diprediksi dan menimbulkan latensi yang tidak dapat diterima. Tentu saja ada benarnya pernyataan ini.
Sejarah pemrograman komputer dapat dikatakan sebagai proses pengembangan abstrak yang semakin kompleks. Ini memungkinkan pemrogram untuk memecahkan masalah tanpa terlalu memperhatikan bagaimana sebenarnya perangkat keras yang mendasarinya beroperasi. Desain ini membuat program lebih mudah ditulis dan lebih portabel. Tetapi untuk program lain, akses ke perangkat keras dan kontrol yang tepat atas bagaimana program dijalankan lebih penting.
**Tujuan Rust adalah untuk memungkinkan pemrogram untuk "mendekati perangkat keras" dan mendapatkan kembali lebih banyak kontrol; sementara Go menghilangkan detail arsitektural, memungkinkan pemrogram untuk mendekati masalah. **
Faktanya, untuk sebagian besar program, kinerja kurang penting daripada keterbacaan kode. Tetapi jika beberapa proyek benar-benar mengutamakan kinerja, ada banyak pertukaran desain di **Rust yang akan membantu Anda mendorong kecepatan eksekusi kode Anda hingga batasnya. **
Sebaliknya, Go lebih memperhatikan kesederhanaan kode, dan bahkan rela mengorbankan beberapa kinerja runtime demi itu. Namun kecepatan build Go tidak ada bandingannya, yang seringkali bahkan lebih penting untuk proyek kode berskala besar.
Di sisi lain, jika Anda tidak memaksakan program untuk tidak pernah salah, komprominya akan berbeda. Sebagian besar kode tidak dirancang untuk penggunaan jangka panjang, tetapi beberapa program berjalan dalam produksi selama bertahun-tahun. Menghadapi kenyataan ini, mungkin ada baiknya menginvestasikan sedikit waktu ekstra untuk mengembangkan dan memastikan bahwa program bekerja dengan benar dan andal tanpa menimbulkan beban pemeliharaan yang berat di masa mendatang.
Baik Go dan Rust membantu Anda menulis program yang benar, tetapi dengan cara yang berbeda: **Go menyediakan kerangka kerja pengujian bawaan yang sangat baik, sementara Rust berfokus pada menghilangkan bug runtime melalui pinjam checker. **
Meskipun Go dan Rust cukup baik untuk proyek pengembangan yang serius, yang terbaik adalah memahami sepenuhnya berbagai fitur dan kelebihannya. Singkatnya, tidak masalah apa yang dipikirkan orang lain: **Hanya Anda yang dapat memutuskan bahasa pemrograman mana yang lebih cocok untuk kebutuhan tim dan proyek Anda. **
Kesimpulan Saya harap artikel ini dapat membantu Anda memahami masing-masing highlight dari Rust and Go. Jika memungkinkan, sebaiknya Anda mencoba kedua bahasa ini sedikit, karena keduanya sangat berguna dalam jalur teknis apa pun, bahkan untuk penggemar pemrograman amatir.
Namun jika Anda hanya menghabiskan waktu mempelajari satu bahasa dengan serius, harap pastikan keahlian dan kecenderungan masing-masing Go dan Rust sebelum menentukan pilihan.
Tentu saja, pengetahuan tentang bahasa pemrograman hanyalah sebagian kecil dari apa yang membuat seorang insinyur perangkat lunak sukses. Selain pemrograman, insinyur harus mahir dalam desain, teknik, arsitektur, komunikasi, dan kolaborasi. Selama semua orang dapat melakukan hal-hal berikut dengan baik, bahasa pemrograman apa pun yang Anda pilih, Anda akan menjadi master rekayasa perangkat lunak yang hebat.