Anda di halaman 1dari 11

Ebook menjadi proggramer

1. Membaca dokumentasi
2. Memilih bahasa pemrograman yang cocok
3. Module,Library dan framework
4. Text editor(plugin dan snipet)
5. Bergabung dengan group (teknik bertanya )
6. Teknik searching
7. Menulis dan membaca source code
8. Tools developer

Banyak sekali bahasa pemrograman


dan tools yang free dan open source sehingga dapat
membuat kita bimbang memilih mereka karena memang
solusi yang ditawarkan pun sangat bagus dan menarik.
Banyak juga bahasa pemrograman dan tools yang berbayar
yang justru semakin memudahkan kita untuk
menggunakannya dan sudah banyak hal teknis yang
ditangani oleh tools berbayar tersebut.
Namun semua itu hanya diferensiasi, pada dasarnya
investasi waktu kita harusnya diluangkan untuk sesuatu yang
mendasar dan bersifat global, sehingga bila kita pindah
bahasa pemrograman atau tools pun tidak akan kaget dan
panik karena harus belajar dari awal. Kita pun tidak harus
merasa terlalu sulit bila harus berpindah version dari versi
yang lama ke versi yang terbaru.
Apapun bahasa pemrograman dan tools-nya. Sebenarnya
ada beberapa teknik yang bisa dikuasai
seorang programmer dan dapat membuat dirinya menjadi
dinamis terhadap tools apapun. Apa sajakah itu? berikut
adalah hal - hal penting yang harus dikuasai oleh
seorang programmer. Cekidot gan :D.
1. Membaca Dokumentasi
Hal inti yang satu ini sering dilupakan
oleh programmer padahal sebagian besar masalah dapat
diselesaikan melalui dokumentasi (selama dokumentasinya
lengkap). Karena sudah jelas bahwa pihak pemilik library,
aplikasi pihak ketiga, ataupun sistem yang kita gunakan
sudah terdokumentasi dengan baik.
Terlebih bila dokumentasi sudah mempunyai Getting
Started, Tutorial, API Reference, dan Changelog.
Dokumentasi tersebut sudah sangat lengkap untuk kita
gunakan sebelum bertanya hal yang sudah sering ditanyakan
ke forum. Selain mengurangi waktu untuk menanggapi
komentar pedas dari para senior yang ada di forum. Kita juga
memiliki waktu untuk menangani masalah kita sendiri untuk
menjadi lebih baik.
Dokumentasi pun bisa saja bukan yang resmi, artikel dan
forum yang ditulis oleh komunitas pun dapat menjadi bahan
pelajaran bagi seorang programmer.
2. Algoritma dan Struktur Data
Mengapa algoritma dan struktur data itu penting? bayangkan
bila seseorang tidak bisa memecahkan masalah yang
sebetulnya bisa diselesaikan
dengan loopingdalam looping atau harus mentranslasikan
sebuah aturan bisnis hanya menjadi struktur if yang
bersarang. Belum lagi tidak sedikit programmer yang masih
belum mengerti apa itu fungsi.
Algoritma baik programmer yang kuliah di jurusan IT atau
bukan, tetap harus mengetahui dasar dan prinsipnya terlebih
dahulu. Bahkan untuk masalah yang sama ada beberapa
algoritma yang dapat digunakan agar eksekusi kode lebih
cepat. Bahkan kita pun harus mampu untuk menerjemahkan
algoritma yang dirancang oleh seseorang untuk
ditransalasikan menjadi kode program. Oleh karena itu
penguasaan algoritma dasar sangat diperlukan mengingat
dasar dari pemrograman itu sendiri adalah algoritma.
Struktur data merupakan representasi data kompleks yang
digabung dari data sederhana dan mempunyai operasi
tersendiri. Sebuah array memang cukup. Namun lebih mudah
bila kita mampu menggunakan list untuk sebuah operasi
deret, atau merepresentasikan sebuah jalur dengan graf
atau tree. Struktur data sangat banyak dipelajari oleh jurusan
IT, namun seringkali dilupakan oleh mahasiswanya sendiri.
Walaupun di dunia pekerjaan jarang sekali digunakan struktur
data. Bila menguasainya akan mengubah cara berpikir kita
untuk menangani suatu masalah. Dan tidak jarang ada kasus
yang memang membutuhkan struktur data untuk
menyelesaikan masalah tersebut. Misalnya pencarian jalur
terpendek atau riset operasi.

4. OOP dan Design Pattern


Kenapa sih harus belajar OOP? sebenarnya OOP ini
membuat kode program kita menjadi lebih terstruktur dan
lebih mudah dibaca ketimbang bila kita menulisnya dengan
satu skrip besar atau masih secara prosedural. Selain itu
prinsip OOP ini ditopang pula oleh UML yang mana dengan
desain aplikasi dan sistem yang sama dapat
direpresentasikan ke berbagai bahasa pemrograman.

Tingkat lanjutnya adalah design pattern, dimana kita tidak


perlu membuat pola kode kita sendiri dan dapat
mencomot pattern yang sudah diterapkan oleh orang lain.
Semisal kita ingin membuat sebuah class yang dapat
menghasilkan class lain. Atau ingin menerjemahkan URL
untuk dieksekusi pada class dan method dari
suatu class melalui frontend controller. Semuanya dapat
dipelajari melalui design pattern.
Salah satu alasan utama adalah bila kamu ingin
menguasai web framework, mempelajari library, atau menulis
suatu library. Dengan OOP dan design pattern, library yang
kamu buat akan menjadi lebih baik dan dapat digunakan oleh
banyak orang. Sedangkan bila kamu menguasai OOP
dan design pattern, kamu pun tidak akan kesulitan bila harus
mengobrak - ngabrik suatu web framework sampai ke dalam
- dalamnya.
Walaupun OOP itu penting, namun tidak semua bahasa
pemrograman harus menggunakan OOP. Sebagian bahasa
pemrograman fungsional sangat tidak memerlukan OOP
dalam mengimplementasikan kode - kode yang dibuat oleh
bahasa pemrograman tersebut.

5. Desain Aplikasi dan Database


Hanya coding saja tidak cukup. Walaupun kamu
jago coding, programmer harus juga bisa menganalisis suatu
sistem dan aplikasi sendiri. Bagaimana menerjemahkan
kebutuhan bisnis menjadi alur aplikasi mulai dari menerima
input meneruskannya ke proses dan menampilkannya
menjadi suatu output.
Data - data yang lewat selama di dalam proses suatu sistem
dan aplikasi, haruslan disimpan ke dalam sebuah perangkat
yang dinamakan database dan tentunya untuk mendesainnya
pun diperlukan keahlian khusus. Kamu harus belajar desain
database mulai dari Boyce-Code Normal Form sampai Entity
Relationship Diagram.
Untuk desain aplikasi sendiri kamu dapat mempelajari UML,
DFD, dan Flowchart sebagai alat bantu untuk
merepresentasikan ide - ide kamu dalam membangun suatu
alur kerja dari aplikasi atau sistem yang akan kamu bangun.
Misal untuk membuat sebuah aplikasi pendaftaran pelatihan
saja, tentu kita membutuhkan suatu form, memvalidasinya,
sampai mencatatnya ke databaseyang akan kita gunakan.
6. Matematika
Tidak semua programmer wajib menguasai matematika,
namun menguasai matematika dasar hukumnya wajib. Masa
iya programmer tidak mengerti kali, bagi, tambah, atau
kurang? Matematika, suka tidak suka tetaplah harus dikuasai
apalagi bila seorang programmer yang terjun dalam dunia
simulasi, bisnis, machine learning, akuntansi, dan ekonomi.
Tidak bisa seorang programmer lepas tangan untuk tidak
menguasai matematika dasar dan matematika yang terkait
dengan kasus yang sedang dikerjakannya. Walaupun
beberapa rumus dan formula dikerjakan oleh orang lain.
Namun seorang programmer wajib tahu bagaimana cara
merepresentasikan suatu formula kedalam kode aplikasi
yang dibuatnya.
7. Bahasa Inggris
Salah satu kelemahan programmer yang tidak berbicara
bahasa inggris sebagai bahasa ibunya adalah malas
membaca artikel atau solusi lain dalam bahasa Inggris.
Padahal manual dan dokumentasi mayoritas ditulis
menggunakan bahasa Inggris. Selain itu konten-konten
belajar tingkat intermediate sampai advanceditulisnya pun
menggunakan bahasa Inggris.
Bahasa Inggris sangat memegang peranan penting.
Walaupun programmer hanya sampai tingkat pasif dimana
hanya menggunakannya untuk kebutuhan membaca saja.
Bahasa Inggris juga menjadi bahasa standar untuk
berkomunikasi dengan klien atau rekan
sesama programmer dari belahan dunia lain (selama masih
bisa berbicara bahasa Inggris).
8. Memaksimalkan Sistem Operasi yang
Digunakan
Sistem operasi yang kita gunakan masih menjadi misteri bagi
beberapa programmer. Padahal sistem operasi yang
digunakannya bisa menjadi titik awal bagi dia untuk berkarir
dengan menggunakan bahasa pemrograman tertentu. Misal
pengguna Windows bila menyadari bahwa sistem operasinya
itu sangat potensial bila digunakan untuk membuat aplikasi
dengan ASP.NET, SQL Server, dan Azure. Tentu saja akan
dimanfaatkannya untuk mempelajari ketiga teknologi tersebut
di Windows.
Selain itu bila programmer yang menggunakan OSX tahu
bahwa sangat besar potensi bila kita berkarir untuk membuat
aplikasi iOS tentu mereka akan mulai memasang XCode dan
Objective-C atau Swift untuk mulai membuat
aplikasi mobile yang eksklusif untuk produk Apple saja.
Dan bila seseorang tahu bahwa Linux yang digunakannya
hampir sama strukturnya dengan server Linux yang biasa
dipasang di VPS cloud hosting tentu mereka akan mulai
belajar membangun infrastruktur sendiri dan mempelajari
berbagai potensi yang terkunci di dalam Linux untuk
menjadikan Linux di laptopnya sebagai simulasi untuk
Linuxnya yang ada di Server.
9. Jaringan Komputer
Sebelum beranjak ke internet dan cloud computing tentu
seorang programmerwajib menguasai dasar - dasar jaringan
komputer seperti ip address, subnetting, dan client server.
Mungkin banyak yang malas untuk menguasai TCP/IP atau
OSI Layer secara menyeluruh, namun wajib tahu beberapa
hal mendasar agar programmer lebih cakap dalam
menguasai jaringan komputer.
Tidak semua aplikasi yang dikembangkan harus terhubung
ke internet. Tentu dengan bantuan network engineer,
seorang programmer harus tahu juga seluk beluk jaringan
komputer untuk menghubungkan aplikasi yang
dikembangkannya kepada berbagai perangkat yang
terhubung melalui jaringan komputer baik lokal, antar
gedung, ataupun antar wilayah.
Terlebih bila membangun aplikasi perkantoran, dimana kita
harus memaksimalkan arsitektur jaringan komputer yang
dibangun network engineerterhadap aplikasi kita.
10. Internet
Programmer tidak bisa mengirim e-mail? Masih ada kok yang
seperti itu, di tengah era cloud yang sedang booming tentu
saja dasarnya harus kita kuasai dulu. Berbagai protokol pun
harus kita ketahui walaupun tidak kita kuasai. Seperti
beberpaa protokol berikut:
 HTTP
 HTTPS
 WebSocket
 WebSocket Secure
 SMTP
 FTP
 TELNET
 Socket
 Thrift
 SOAP
 Oauth
 Json Web Token
 dan lainnya
Tidak hanya berbagai protokol yang harus dikuasai,
beberapa layanan dasar internet seperti email harus kamu
kuasai untuk proses bertukar informasi dan mengikuti suatu
layanan aplikasi yang tersedia secara online.
Tidak lupa pula seorang programmer seyogyanya menguasai
berbagai aplikasi yang berkaitan dengan internet, dan
mampu membangun salah satu komponen infrastrukturnya
sendiri. Misal web server dan mail server.
11. Source Management
Git, Svn, Mercurial, ketiganya adalah tools yang dapat
memudahkan kamu untuk melakukan source code
management. Masih suka menggabungkan source
codedengan flashdisk? Lupakan! Waktunya kamu
menggunakan source code management.
Masalahnya bila kamu harus mengerjakan suatu proyek
bersama 10 orang tapi masih menggunakan flashdisk apakah
tidak akan repot? Tentu saja akan repot. Dengan source
code management, kamu dapat melihat kode yang konflik,
dapat rollback ke kode sebelumnya, dapat menambahkan
komentar pada perubahan kode yang ditambahkan, dan yang
paling utama adalah penggabungan kode program yang
ditulis dari beberapa orang yang berbeda.
Selain itu source code management memudahkan kamu
untuk mem-backup source code kamu di server tempat
layanan tersebut berada agar tidak terjadi kecelakaan yang
tidak diinginkan.
Beberapa layanan source code management yang terkenal
dan gratis antara lain, BitBucket, Github, dan GitLab.
12. Cloud Computing
Tidak harus semua programmer menguasai cloud computing,
namun bila menguasai sedikit saja, tentu akan membantu bila
sewaktu-waktu diperlukan. Rata-rata cloud computing sudah
berupa managed service yang ditawarkan suatu vendor. Ada
juga yang on-premise dan harus dikelola sendiri.
Misalnya saja, kita dapat melakukan kerjasama
dengan vendor tertentu dengan tipe kerjasama berupa
kampus dan mahasiswa. Atau juga dengan kerjasama
berupa akselerator bisnis. Kamu dapat memanfaatkan
layanan cloud mulai dari IaaS, SaaS, sampai PaaS. Selain itu
kamu pun dapat dengan mudah menangani
masalah availibility dan reliabilitas aplikasi yang kamu
kembangkan.
Selain itu beberapa aplikasi yang sudah
menjadi cloud seperti Google Docs atau Trello, dapat kamu
gunakan untuk mendukung proses pembuatan aplikasi yang
sedang kamu kerjakan saat ini seperti pendokumentasian
proyek atau pembagian tugas dalam proyek tersebut.
13. Package Manager
PIP, NPM, NuGet, Composer, Yarn, Gem, GoPkg, dan
lainnya merupakan salah satu dari sekian package
manager yang sudah terkenal di pengguna bahasa
pemrogramannya masing - masing. Memang kita terbiasa
menggunakan class - class yang kita buat sendiri dan
digabungkan dengan source proyek kita. Namun alangkah
lebih baik bila kita mulai mengubah kode class kita ke
dalam package manager sesuai bahasa pemrograman kita.
Selain itu kelebihan dari menggunakan package
manager adalah mudahnya mengelola library yang kita
gunakan atau yang kita buat, sehingga bila
ada updateterbaru cukup meng-update library tertentu saja
ketimbang mengganti file-nya secara manual dan membuat
kita capek sendiri.
14. Unit Testing
Cukup banyak perusahaan yang menaruh perhatian besar
terhadap unit testingdemi meningkatkan kualitas produk
mereka. Ada juga yang tidak peduli dengan unit
testing karena memang lebih penting selesai
sebelum deadline dan deliver.
Unit testing sangat dibutuhkan oleh
seorang programmer untuk memastikan kode yang dibuatnya
sesuai dengan bisnis proses dan yang terpenting adalah
mengurangi waktu pengujian yang terlalu lama dibanding
harus memeriksanya secara manual dan diulang lagi dari
awal bila ada penambahan fungsi baru.
Pada umumnya bahasa pemrograman yang tersedia sudah
memiliki alat untuk melakukan unit testing. Misalnya di Java
ada Junit, Python ada UnitTest, PHP ada PHPUnit, dan
lainnya.
15. Text Editor
Terdengah remeh, namun memang text editor wajib dikuasai
juga demi meningkatkan produktivitas saat menulis source
code. Pastikan kamu menguasai segala fitur
dan shortcut yang sudah ada di dalam text editor tersebut.
Banyak yang menguasai Vim, tidak sedikit juga yang
menguasai Sublime Text dan Visual Studio Code. Hampir
semua teks editor sudah memiliki fitur - fitur canggih
seperti multiline editing, split view, minimap, full text search,
dan lainnya.
16. Bidang yang Digeluti
Terlalu banyak hal-hal inti yang dikuasai, selain itu, tidak
sama bahan belajar seorang desktop application
programmer yang menggunakan VB.NET dengan mobile
application programmer yang menggunakan Android,
masing-masing mempunyai disiplin dan teknik yang berbeda
dalam membuat sebuah aplikasi.
Belum lagi bila kita membandingkan backend web application
programmer dengan frontend web application
programmer keduanya memiliki fokus yang mirip namun
berbeda. Dimana frontend web application
programmer dituntut untuk lebih mahir menggunakan HTML -
CSS - Javascript dalam membuat tampilan web yang
memukau. Sedangkan backend web application
programmer dituntut untuk membuat proses bisnis menjadi
aplikasi web berupa service ataupun non serviceyang dapat
mengirim email, integrasi dengan sistem lain, mencetak
laporan, dan menyimpan data ke database.
Tidak sama juga dengan programmer yang menggeluti
bidang IoT dimana mereka lebih fokus pada mikrokontroler
dan rangkaian elektronika untuk menangkap suatu data dari
entitas bergerak dan lingkungan sekitar.
Oleh karena itu ketika seorang programmer terjung ke suatu
bidang, diharapkan dia mau meluangkan waktu untuk
mempertajam konsentrasinya di bidang yang digelutinya.
Sehingga menjadi lebih ahli di konsentrasinya walaupun
belum tentu mahir di bidang lainnya.

Anda mungkin juga menyukai