Saya adalah orang yang sering kali terpicu untuk membaca atau menonton sesuatu dengan serius jika itu berkaitan dengan proses pengembangan perangkat lunak atau singkatnya ngoding. Bisa dibilang saya sangat penasaran dengan bagaimana proses pengembangan perangkat lunak yang baik dan memiliki tingkat kesuksesan yang tinggi sehingga bisa ditiru. Tapi dengan saking banyaknya click-bait di internet seakan-akan membuat otak saya paralyzed.

Konteks, ini penting! apa yang saya tulis disini adalah berdasarkan dengan latar belakang saya. Saya telah terlibat dengan berbagai macam project di perusahaan minyak dan gas, perusahaan telekomunikasi, perusahaan startup dan perusahaan konsultan IT dengan berbagai macam jenis bisnis dan juga menjadi instruktur sekolah coding. Dalam perjalanan tersebut telah membangun berbagai macam aplikasi terminal, desktop dan website serta sedikit apps juga micro controller.

Sepanjang 13 tahun ngoding, saya pribadi melihat terlalu banyak fragmen informasi dan sedikit yang utuh dan mencerahkan. Fragmen-fragmen informasi itu menjadikan pembacanya memiliki setengah atau bahkan seperempat pemahaman dan cenderung salah paham. Fragmen atau pecahan informasi ini harus dipersatukan sehingga bisa melihat sesuatu dengan utuh. Ini adalah proses dalam hidup. Ada yang namanya teori 10,000 jam akan dianggap seorang ahli atau sabuk hitam. Kalau menurut saya teori 10,000 jam itu adalah minimal. The limit itself is no limit.

Bagaimana dengan nasib para penerus atau teman-teman yang baru berkecimpung di dunia pengembangan perangkat lunak, saya sedikit banyak meragukan fundamental mereka terkait dengan proses pengembangan perangkat lunak. Tapi itu adalah proses. Ada waktunya mereka akan tercerahkan sendiri, bisa lebih cepat bisa juga lambat. Tergantung dari keinginan sendiri dan juga lingkungannya. Passion as leverage.

Di sini saya mau menulis beberapa hal yang saya temukan yang menurut saya realistis dan bisa dijadikan pegangan untuk memperdalam kemampuan di industri pengembangan perangkat lunak. Ada beberapa hal yaitu:

  • Attitude / sikap atau adab inilah yang menjadikan pribadi kamu dapat diterima di suatu masyarakat atau perkumpulan atau organisasi. Sebisa mungkin be humble to anyone. Karena kamu tidak akan pernah tau siapa yang akan bantu kamu dimasa mendatang. Sehingga peluang dan kesempatan itu selalu ada untuk kamu dan menjadikan kamu tumbuh menjadi pribadi yang lebih baik lagi, berwawasan, berilmu tinggi dan bijaksana
  • Business Domain Knowledge / pengetahuan tentang bisnis adalah jantung dari proses pengembangan perangkat lunak. Dari sinilah kebutuhan (requirement) dan spesifikasi (specification) perangkat lunak ditulis, direncakan, dipecah menjadi daftar functional dan non-functional. Requirement atau spesifikasi bisa menjadi dasar observasi untuk merancang strategi interaksi manusia dengan komputer atau UI, UX, marketing, desain, arsitektur dan lain sebagainya. Kita adalah knowledge workers atau bahkan learning workers pahamilah apa yang kamu tulis dan kamu buat sehingga orang lain bisa mengikutinya dengan mudah
  • Fundamental things, Algorithm & Data Structure, Operating System dan Programming Language. Dengan memahami fundamental ini secara holistic kita akan punya common senses dan problem solving skill yang baik. Dan juga akan memiliki learning capability yang akan sangat membantu ketika mempelajari konsep dan juga praktik dan implementasi yang lebih efisien dan efektif.
  • Computer Networking Knowledge / pengetahuan tentang jaringan komputer, jangan pernah menganggap remeh ini apalagi di jaman now!. Saat ini semuanya mengarah ke komputasi awan (cloud computing), virtualisasi, dan global distributed computing. Minimal kamu harus tau dasar-dasarnya seperti model OSI. Tapi menurut saya, kamu wajib coba socket programming biar merasakan bagaimana bekerja di low-level network, meskipun sekarang banyak developer dimanjakan dengan library HTTP
  • Programming Paradigm Knowledge / paradigma / kerangka berpikir pemograman ada bermacam macam, procedural, declarative, imperative, functional, dan object-oriented. Luangkanlah waktu untuk membaca dan mencoba paradigma tersebut. Jika kamu sempat kuliah IT maka setidaknya kamu sudah memiliki pengalaman dasar dengan semua paradigma tersebut. Atau bahkan kamu tidak sadar kamu pernah berinteraksi dengan paradigma tersebut? apa karena tidak dijelaskan oleh dosen? atau kamu yang malas mencari tau? atau belum ada rasa curiosity? atau mungkin kamu bolos kelas? cobalah mengingat masa lalu

Maaf saya tidak bisa menyebutkan satu persatu sumber dari masing-masing hal diatas. Ada banyak fragmen informasi dikepala saya yang saya saring sedemikian rupa sehingga tertulis lah hal-hal tersebut.

Apakah saya menyebutkan tentang perkakas atau tools yang digunakan? TIDAK!

Kenapa? karena tools berkembang jauh lebih cepat dibanding konsep atau teori. Selalu ada yang baru hampir disetiap harinya. Karena implementasi dari suatu konsep bisa beraneka ragam meskipun tujuanya sama. Keanekaragaman ini dikarenakan cara berpikir dan lingkungan yang berbeda-beda.

Menurut saya hanya satu alasan kuat kenapa kamu perdalam suatu tools. Yaitu jika kamu gunakan itu untuk bertahan hidup, mencari uang dan menafkahi keluarga. Sehingga dengan menjadi ahli pada suatu tools maka kamu bisa mengoptimalkan waktu bekerja.

Sekalipun sudah 13 tahun ngoding tetap perlu belajar terus karena banyak hal bisa berubah dimasa mendatang.

Bisa jadi ada yang sependapat bisa jadi tidak.

Tapi semoga artikel ini tidak menyesatkan 🙂

Author

Software Engineering Manager, Software Engineer, Chatbot Developer, Natural Language Processing Enthusiast, JAMStack Enthusiast.

Write A Comment