Beberapa Hal Yang Sangat Wajib Untuk Dikuasai Oleh Seorang Programmer - CRUDPRO

Beberapa Hal Yang Sangat Wajib Untuk Dikuasai Oleh Seorang Programmer

Beberapa Hal Yang Sangat Wajib Untuk Dikuasai Oleh Seorang Programmer

Banyak bahasa pemrograman dan tools yang free dan open source hingga bisa membuat kita ragu memilih mereka karena solusi yang ditawarkan juga benar-benar menarik dan bagus. Banyak pula bahasa pemrograman dan tools yang berbayar yang malah semakin memudahkan kita untuk menggunakannya dan telah banyak hal teknis yang ditangani oleh tools berbayar tersebut.

Tetapi semua itu cuma diferensiasi, pada intinya investasi waktu kita semestinya diluangkan untuk suatu hal yang mendasar dan memiliki sifat global, hingga jika kita berpindah bahasa pemrograman atau tools juga tidak terkejut dan cemas karena harus belajar dari awal. Kita juga tidak harus merasa terlalu sulit jika harus berpindah version dari versi yang lama ke versi yang terkini.

Apapun bahasa pemrograman dan tools-nya. Sebetulnya ada banyak teknik yang dapat dikuasai seorang programmer dan bisa membuat dirinya sendiri menjadi dinamis pada tools apa saja. Apa sajakah itu? berikut hal - hal penting yang perlu dikuasai oleh seorang programmer.

###1. Membaca Dokumentasi

Hal pokok yang ini sering dilupakan oleh programmer walau sebenarnya mayoritas masalah bisa diselesaikan lewat dokumentasi (selama dokumentasinya lengkap). Karena jelas sudah jika pihak pemilik library, aplikasi pihak ketiga, atau sistem yang kita pakai telah terdokumentasi dengan baik.

Ditambah lagi jika dokumentasi telah memiliki Getting Started, Tutorial, API Reference, dan Changelog. Dokumentasi itu sangat lengkap untuk kita gunakan saat sebelum bertanya hal yang seringkali ditanyakan ke komunitas. Selain mengurangi waktu untuk menanggapi komentar pedas dari beberapa senior yang berada di komunitas. Kita mempunyai waktu untuk menangani permasalahan kita untuk menjadi lebih baik.

Dokumentasi juga bisa saja bukan yang resmi, artikel dan komunitas yang ditulis oleh komunitas juga dapat menjadi bahan pelajaran untuk seorang programmer.

###2. Algoritma dan Struktur Data

Kenapa algoritma dan struktur data itu wajib? bayangkan jika seorang tidak dapat memecahkan masalah yang sebenarnya dapat diselesaikan dengan looping dalam looping atau harus mentranslasikan sebuah aturan usaha cuma jadi struktur if yang bersarang. Belum juga cukup banyak programmer yang masih belum mengerti apa itu fungsi.

Algoritma baik programmer yang kuliah di jurusan IT atau bukan, harus tetap mengetahui dasar dan konsepnya lebih dulu. Bahkan juga untuk masalah yang serupa ada banyak algoritma yang bisa digunakan supaya eksekusi code bisa lebih cepat. Bahkan juga kita pun harus sanggup untuk mengartikan algoritma yang direncanakan oleh seorang untuk ditransalasikan jadi code program. Maka dari itu penguasaan algoritma dasar benar-benar dibutuhkan mengingat dasar dari pemrograman itu sendiri ialah algoritma.

Struktur data sebagai representasi data kompleks yang digabung dari data simpel dan memiliki operasi tertentu. Sebuah array memang cukup. Tetapi lebih mudah jika kita sanggup memakai daftar untuk sebuah operasi deret, atau merepresentasikan sebuah jalur dengan graf atau tree. Struktur data banyak dipelajari oleh jurusan IT, tetapi sering dilupakan oleh mahasiswanya sendiri.

Meskipun di dunia pekerjaan jarang sekali dipakai struktur data. Jika menguasainya akan mengubah cara berpikir kita untuk mengatasi suatu permasalahan. Dan sering ada kasus yang membutuhkan struktur data untuk menyelesaikan permasalahan itu. Misalkan penelusuran jalur terpendek atau riset operasi.

###3. OOP dan Desain Pattern

Kenapa sih harus belajar OOP? sebetulnya OOP ini membuat code program kita jadi lebih terstruktur dan lebih gampang dibaca daripada bila kita menulisnya dengan satu skrip besar atau masih dengan cara prosedural. Disamping itu konsep OOP ini didukung juga oleh UML yang mana dengan design program dan sistem yang serupa bisa dicontohkan ke beragam bahasa pemrograman.

Tingkat lanjutnya ialah design pattern, di mana kita tak perlu membuat pola code kita dan bisa mencomot pattern yang telah diterapkan oleh pihak lain. Seumpama kita ingin membuat suatu class yang bisa menghasilkan class lain. Atau ingin mengartikan URL untuk dieksekusi pada class dan metode dari satu class melalui frontend controller. Semua bisa dipelajari lewat desain pattern.

Salah satu alasan khusus ialah jika kamu ingin menguasai situs frame-work, mempelajari library, atau menulis satu library. Dengan OOP dan desain pattern, library yang kamu buat akan jadi lebih baik dan bisa digunakan oleh banyak orang. Dan jika kamu menguasai OOP dan desain pattern, kamu juga tidak kesusahan jika harus mengobrak - ngabrik satu web frame-work sampai ke dalam - dalamnya.

Meskipun OOP itu penting, tetapi tidak seluruhnya bahasa pemrograman harus memakai OOP. Beberapa bahasa pemrograman fungsional benar-benar tidak membutuhkan OOP dalam menerapkan code - code yang dibuat oleh bahasa pemrograman itu.

###4. Design Aplikasi dan Database

Hanya coding saja tidak cukup. Meskipun kamu jago coding, programmer harus bisa juga menganalisa satu sistem dan program sendiri. Bagaimana mengartikan keperluan usaha menjadi alur aplikasi dimulai dari menerima input meneruskannya pada proses dan menampilkannya jadi satu output.

Data - data yang melalui saat di pada proses satu sistem dan aplikasi, haruslan disimpan ke sebuah perangkat yang diberi nama database dan tentu saja untuk mendesainnya juga diperlukan ketrampilan khusus. Kamu harus belajar design database dimulai dari Boyce-Code Normal Form sampai Entity Relationship Diagram.

Untuk design aplikasi sendiri kamu bisa mempelajari UML, DFD, dan Flowchart sebagai alat bantu untuk merepresentasikan ide - ide kamu dalam membuat satu jalur kerja dari aplikasi atau sistem yang hendak kamu bangun.

Contoh untuk membuat suatu aplikasi registrasi training saja, pasti kita memerlukan satu form, memvalidasinya, sampai mencatatnya ke database yang hendak kita gunakan.

###5. Matematika

Tidak seluruhnya programmer harus menguasai matematika, tetapi menguasai matematika dasar hukumnya wajib. Masa iya programmer tidak mengerti kali, bagi, tambah, atau mungkin kurang? Matematika, suka tidak suka tetaplah harus dikuasai apa lagi jika seorang programmer yang terjun di dunia simulasi, usaha, machine learning, akuntansi, dan ekonomi.

Tidak bisa seorang programmer lepas tangan untuk tidak menguasai matematika dasar dan matematika yang berkaitan dengan kasus yang ditanganinya. Meskipun beberapa rumus dan formulasi dikerjakan oleh orang lain. Tetapi seorang programmer harus tahu bagaimana cara merepresentasikan satu formula di dalam code program yang dibuatnya.

###6. Bahasa Inggris

Salah satu kelemahan programmer yang tidak bicara bahasa inggris sebagai bahasa ibunya ialah malas membaca artikel atau solusi lain dengan bahasa Inggris. Walau sebenarnya manual dan dokumentasi sebagian besar dicatat memakai bahasa Inggris. Disamping itu beberapa konten belajar tingkat intermediate sampai advance ditulisnya juga memakai bahasa Inggris.

Bahasa Inggris benar-benar memiliki peran penting. Meskipun programmer cuma sampai tingkat pasif yang hanya memakainya untuk kebutuhan membaca saja. Bahasa Inggris jadi bahasa standard untuk berkomunikasi dengan client atau rekan sesama programmer dari penjuru dunia lain (selama bisa bicara bahasa Inggris).

###7. Mengoptimalkan Sistem Operasi yang Digunakan

Sistem operasi yang kita pakai masih jadi misteri untuk beberapa programmer. Walau sebenarnya sistem operasi yang digunakannya menjadi titik awalnya untuk ia untuk berkarir dengan memakai bahasa pemrograman tertentu. Contoh pengguna Windows jika mengetahui jika sistem operasinya itu benar-benar prospektif jika dipakai untuk membuat program dengan ASP.NET, SQL Server, dan Azure. Sudah pasti akan dimanfaatkannya untuk mempelajari ketiga teknologi itu di Windows.

Disamping itu jika programmer yang memakai OSX tahu jika besar sekali kekuatan jika kita berkarier untuk membuat aplikasi iOS pasti mereka mulai akan memasang XCode dan Objective-C atau Swift untuk mulai membuat aplikasi mobile yang terbatas untuk produk Apple saja.

Dan bila seorang tahu jika Linux yang digunakannya hampir serupa strukturnya dengan server Linux yang umum dipasang di VPS cloud hosting pasti mereka mulai akan belajar membuat infrastruktur sendiri dan mempelajari berbagai potensi yang terkunci dalam Linux untuk jadikan Linux di laptopnya sebagai simulasi untuk Linuxnya yang berada di Server.

###8. Jaringan Computer

Saat sebelum bergerak ke internet dan cloud computing pasti seorang programmer harus menguasai dasar - dasar jaringan computer seperti ip address, subnetting, dan klien server. Kemungkinan banyak yang malas untuk menguasai TCP/IP atau OSI Layer secara detail, tetapi harus tahu banyak hal mendasar supaya programmer lebih mahir dalam menguasai jaringan komputer.

Tidak semua aplikasi yang dikembangkan harus terhubung ke internet. Pasti dengan bantuan network engineer, seorang programmer harus tahu seluk beluk jaringan computer untuk menghubungkan program yang dikembangkannya ke berbagai perangkat yang tersambung lewat jaringan computer baik lokal, antara gedung, atau antara daerah.

Terlebih bila membangun aplikasi perkantoran, di mana kita harus mengoptimalkan arsitektur jaringan computer yang dibuat network engineer pada aplikasi kita.

###9. Internet

Programmer tidak dapat mengirim e-mail? Masih tetap ada kok yang seperti itu, di tengah-tengah zaman cloud yang meledak sudah pasti dasarnya harus kita kuasai dahulu. Beragam protokol juga harus kita ketahui meskipun tidak kita kuasai. Seperti beberpaa protokol berikut ini:

  • HTTP
  • HTTPS
  • WebSocket
  • WebSocket Secure
  • SMTP
  • FTP
  • TELNET
  • Socket
  • Thrift
  • SOAP
  • Oauth
  • Json Web Token
  • dan lainnya

Bukan hanya berbagai protokol yang perlu terkuasai, beberapa service dasar internet seperti e-mail harus kamu kuasai untuk proses bertukar info dan ikuti suatu layanan aplikasi yang ada lewat cara online.

Tak lupa juga seorang programmer seyogyanya menguasai beragam aplikasi yang terkait dengan internet, dan mampu membuat salah satunya komponen infrastrukturnya sendiri. Contoh web server dan mail server.

###10. Source Manajemen

Git, Svn, Mercurial, ketiganya ialah tools yang bisa memudahkan kamu untuk lakukan source kode manajemen. Masih suka menggabungkan source kode dengan flashdisk? Lupakan! Waktunya kamu memakai source code manajemen.

Masalahnya jika kamu harus kerjakan satu project bersama 10 orang tetapi tetap menggunakan flashdisk apa tidak akan ribet? Sudah pasti akan ribet. Dengan source kode manajemen, kamu bisa melihat code yang konflik, bisa rollback ke code sebelumnya, bisa menambahkan komentar pada perubahan code yang dipertambah, dan yang paling penting ialah penggabungan code program yang dicatat dari sebagian orang yang lain.

Selain itu source kode manajemen mempermudah kamu untuk mem-backup source kode kamu di server tempat service itu ada supaya tidak ada kecelakaan yang tidak diharapkan.

Beberapa service source kode manajemen yang populer dan gratis diantaranya, BitBucket, Github, dan GitLab.

###11. Cloud Computing

Tidak harus semua programmer menguasai cloud computing, tetapi jika menguasai sedikit saja, pasti membantu jika setiap saat diperlukan. Rata-rata cloud computing sudah berupa managed servis yang ditawarkan suatu vendor. Ada yang on-premise dan harus dikelola sendiri.

Misalkan saja, kita bisa lakukan kerja sama dengan vendor tertentu dengan type kerja sama berbentuk universitas dan mahasiswa. Atau dengan kerja sama berbentuk akselerator usaha. Kamu bisa manfaatkan layanan cloud dimulai dari IaaS, SaaS, sampai PaaS. Disamping itu kamu juga bisa secara mudah menangani masalah availibility dan reliabilitas aplikasi yang kamu kembangkan.

Disamping itu beberapa program yang menjadi cloud seperti Google Docs atau Trello, bisa kamu pakai untuk mendukung proses pembuatan aplikasi yang kamu kerjakan sekarang ini seperti pendokumentasian project atau pembagian pekerjaan dalam project itu.

###12. Package Manager

PIP, NPM, NuGet, Composer, Yarn, Gem, GoPkg, dan yang lain sebagai salah satu dari sekian package manajer yang telah populer di pengguna bahasa pemrogramannya masing - masing. Memang kita terlatih menggunakan class - class yang kita buat sendiri dan digabungkan dengan source project kita. Tetapi sebaiknya jika kita mulai mengganti code class kita ke package manajer sama sesuai bahasa pemrograman kita.

Disamping itu kelebihan dari menggunakan package manajer ialah mudahnya mengelola library yang kita pakai atau yang kita buat, hingga jika ada update terbaru cukup meng-update library tertentu saja daripada mengubah file-nya dengan manual dan membuat kita capek sendiri.

###13. Unit Testing

Cukup banyak beberapa perusahaan yang menaruh perhatian besar pada unit testing untuk meningkatkan kualitas produk mereka. Ada yang tidak perduli dengan unit testing karena lebih penting selesai sebelum deadline dan deliver.

Unit testing benar-benar diperlukan dengan seorang programmer untuk pastikan code yang dibuatnya sesuai bisnis proses dan yang paling penting ialah mengurangi waktu pengujian yang terlalu lama dibanding harus memeriksanya dengan manual dan diulang lagi dari sejak awalnya jika ada penambahan fungsi baru.

Secara umum bahasa pemrograman yang ada telah memiliki alat untuk melakukan unit testing. Misalkan di Java ada Junit, Python ada UnitTest, PHP ada PHPUnit, dan yang lain.

###14. Teks Editor

Terdengah remeh, tetapi memang teks editor harus dikuasai untuk meningkatkan produktivitas saat menulis source kode. Pastikan kamu menguasai semua feature dan shortcut yang telah berada di dalam teks editor itu.

Banyak yang menguasai Vim, cukup banyak yang menguasai Sublime Teks dan Visual Studio Kode. Sebagian besar text editor telah memiliki feature - feature hebat seperti multiline editing, split view, minimap, full teks search, dan yang lain.

###15. Bidang yang Digeluti

Terlalu beberapa hal pokok yang dikuasai, disamping itu, berbeda bahan belajar seorang desktop application programmer yang memakai VB.NET dengan mobile application programmer yang memakai Android, masing-masing memiliki disiplin dan tehnik yang lain dalam membuat suatu aplikasi.

Belum juga jika kita membandingkan backend web application programmer dengan frontend web application programmer keduanya mempunyai fokus yang serupa tetapi berbeda. Di mana frontend web application programmer dituntut agar semakin mengusai menggunakan HTML - CSS - Javascript saat membuat tampilan web yang memikat. Dan backend web application programmer dituntut untuk membuat proses usaha jadi program web berbentuk servis atau non servis yang bisa mengirim e-mail, integrasi dengan sistem lain, cetak laporan, dan simpan data ke database.

Tidak sama juga dengan programmer yang menggeluti bidang IoT di mana mereka lebih fokus pada mikrokontroler dan serangkaian elektronika untuk menangkap satu data dari entitas bergerak dan lingkungan sekitar.

Maka dari itu saat seorang programmer terjung ke satu bidang, diharapkan ia ingin meluangkan waktu untuk mempertajam fokusnya di bagian yang digelutinya. Hingga jadi lebih ahli di fokusnya meskipun belum tentu mahir di bagian yang lain.