Categories
Artikel Tutorial

10 Hal Lain yang Bisa Kamu Ulik Selain Web Framework

10 Hal Lain yang Bisa Kamu Ulik Selain Web Framework

Web Framework memang seksi untuk diulik, bahasan dan berita terbarunya selalu saja hadir setiap saat dari berbagai sumber. Framework A menghadirkan fitur X, Framework B menghadirkan fitur Y. Framework C memiliki performa terbaik dibandingkan framework lainnya. Framework D didukung oleh vendorbesar dan kua dukungan komunitasnya, dan Framework O memiliki dokumentasi yang terbaik.

Gak pernah habis bila kita membicarakan web framework entah itu backend web framework maupun frontend web framework. Namun sayangnya ngulik web framework saja tidak cukup untuk bersaing di industri IT masa kini. Ada beberapa hal lain yang seharusnya dikuasai oleh seorang programmer dari berbagai bahasa pemrograman apapun.

Menguasai web framework saja tidak cukup, menguasai teknologi yang terkait dengan web framework pun harus menjadi perhatian yang utama. Karena bila kita harus selalu fokus di web framework bisa jadi kemampuan kita hanya sebatas membuat aplikasi saja dan tidak beranjak hingga memahami arsitektur secara keseluruhan.

Selain ngulik web framework, kamu juga sebaiknya mempelajari beberapa hal berikut untuk meningkatkan kemampuan kamu dalam menggunakan web framework favorit kamu serta meningkatkan kualitas aplikasi yang kamu kembangkan.

1. Relational Database

Tidak sedikit banyak yang menggunakan relational database namun tidak menggunakan fitur relasionalnya. Ada beberapa orang yang terbiasa membuat foreign key tanpa memberikan index foreign key pada suatu tabel. Ada juga yang terbiasa tidak menggunakan primary kery pada tabel dan menggunakan sistem unik setiap baris di level aplikasi.

Relational database tidak hanya sekedar menyimpan data dan melakukan querytanpa optimasi yang tepat. Sebaiknya kita harus kuasai relational database ini sampai level dimana kita menguasai berbagai tipe data yang tersedia, replicationclusteringbackup & recovery, hingga bagaimana mengelola administrasi suatu role dari user di dalam database tersebut.

Beberapa relational database yang dapat kamu ulik antara lain:

  • SQLite
  • MySQL
  • PostgreSQL
  • MariaDB
  • SQL Server
  • Oracle
  • dan lainnya

2. NoSQL Database

Tidak semua dapat diselesaikan oleh relational database. Ada kalanya kita harus merepresentasikan data kita diluar konsep relasional. Sebut saja kita ingin merepresentasikan sebuah jalur perkotaan dengan penyimpanan berbasis graf. Atau menyimpan dokumen dalam bentuk indeks yang dapat dicari dengan sangat cepat. Atau hanya berupa key-value untuk menyimpan sebuah informasi user dan ingin sekali cepat diakses.

Tak jarang ada juga yang ingin menyimpan sebuah informasi namun informasi tersebut disimpan di dalam baris data tersebut dan ditanamkan dengan berupa struktur JSON. Semua konsep non relasional tersebut hanya dapat kamu temukan di kursus – kursus atau mencarinya melalui internet. Sangat jarang kampus – kampus yang mau mengajarkan basis data non relasional ini karena keterbatasan tertentu.

Kamu dapat mencoba beberapa NoSQL database seperti:

  • MongoDB, CouchDB, ArangoDB (document based)
  • Elasticsearch, Solr, Lucene (search engine)
  • Redis, RethinkDB, ArangoDB (key value storage)
  • ArangoDB, Neo4j, OrientDB (graph database)
  • Cassandra (columnar database)
  • dan lainnya

3. Message Queue

Terutama untuk pengembangan Restful Web API. Biasanya sistem harus dibuat sedemikian rupa agar tidak time out. Terkadang ada sebuah endpoint atau resource yang sangat lama diakses sehingga membuatnya time out. Untuk mencegah hal tersebut kamu dapat memberdayakan message queueing. Sebuah solusi dimana informasi yang ingin kamu proses dengan algoritma berat dan konsumtif dapat dijalankan di belakang layar namun harus diantrikan dulu ke dalam sistem message queueing tersebut.

Selain itu bila sistem downmessage queue dapat menyimpan informasi yang sudah diantrikan dan akan diproses kembali sampai sistem nyala kembali. Dengan demikian kamu tidak akan kehilangan banyak data ketimbang tanpa menggunakan message queue.

Beberapa message queue yang dapat kamu ulik antara lain:

  • RabbitMQ
  • ZeroMQ
  • Apache Kafka
  • Apache ActiveMQ
  • Rq
  • Resque
  • dan lainnya

4. Caching

Caching adalah suatu mekanisme dimana kamu dapat menyimpan sebagian informasi agar dapat diakses lebih cepat tanpa harus melihat kembali ke database. Kamu dapat menyimpan informasi berupa data user, sebagian halaman web, seluruh halaman web, atau file – file seperti gambar, jscss, dan lainnya.

Caching tingkat web server dapat menangani caching untuk file – file statik di web. Namun untuk menangani data dan halaman web. Dapat juga kamu gunakan engine lain yang lebih mumpuni agar web server tidak terbebani.

Beberapa caching engine yang dapat kamu coba antara lain:

  • Redis
  • Memcached
  • Varnish
  • File-based caching
  • dan lainnya

5. Push Notification

Push notification adalah sebuah mekanisme dimana sistem dapat mengirimkan pesan pemberitahuan langsung kepada device yang sedang dipegang oleh userDevice dapat berupa web browser, aplikasi desktopsmartphone, dan lainnya.

Push notification sangat dibutuhkan terutama untuk platform seperti iOS dan Android. Kamu juga dapat membangun infrastruktur push notification sendiri dengan Parse Server. Ataupun menggunakan solusi lain yang sudah tinggal pakai. Sehingga sistem dapat mengirimkan pesan kepada device – device tadi dan pesan akan muncul langsung di layar device yang sedang dipegang oleh user

Beberapa push notification yang dapat kamu coba secara gratis antara lain:

  • Parse Server
  • Firebase
  • One Signal
  • dan lainnya

6. Web Server

Jangan hanya mengandalkan system engineer atau system administrator untuk deployment aplikasi web yang kita kembangkan. Web developer pun perlu tahu bagaimana cara deploy dan cara setting di suatu web server.

Dengan mengetahuinya kamu dapat meningkatkan performa aplikasi web kamu dibantu dengan system engineer dan system administrator (yang berpengalaman). Karena performa web tidak hanya diselesaikan dengan optimasi kode program. Namun juga dengan cara mengatur web server yang baik dan sesuai kebutuhan.

Beberapa web server yang dapat kamu coba antara lain:

  • Nginx
  • Apache Httpd
  • Caddy Server
  • Apache Tomcat
  • Cherokee
  • Lighttpd
  • dan lainnya

7. Deployment

Bila kita biasa melakukan deployment secara on-premise atau di hostingan biasa. Ada banyak cara untuk melakukan deployment aplikasi web kita dan tentunya harus kamu coba sendiri di waktu luang entah itu dengan membaca dokumentasinya atau mencobanya langsung.

Mengetahui cara deployment dapat mengubah cara kita mengembangkan aplikasi web, serta menambah pengetahuan kita dalam membangun infrastruktur untuk aplikasi web. Selain mempelajari web framework itu sendiri.

Beberapa deployment yang dapat kamu coba antara lain:

  • Deploy di server on-premise
  • Deploy di Hostingan Klasik
  • Containerizing dengan Docker
  • Deploy di Cloud Server
  • Deploy di Platform As A Service
  • Deploy di Function As A Service
  • dan lainnya

8. Cloud Computing

Tidak semua infrastruktur harus kita bangun. Dengan cloud computing, aplikasi web yang kita kembangkan dapat dibangun lebih cepat dengan bantuan layanan yang disediakan penyedia cloud computing.

Misal kamu tidak perlu lagi membangun infrastruktur untuk databasesearch enginecachingmessage queuecontent delivery network, dan distributed storage. Semua dapat mengandalkan cloud computing namun tentu dengan biaya yang tak sedikit.

Mempelajari beberapa layanan cloud computing dapat membantu aplikasi webyang kamu kembangkan menjadi lebih handal dan dinamis serta memiliki delivery time yang lebih singkat.

Beberapa cloud computing yang dapat kamu coba antara lain:

  • Amazon Web Service
  • Google Cloud Platform
  • Microsoft Azure
  • IBM Bluemix
  • dan lainnya

9. Big Data

Aplikasi web yang kita kembangkan tentu mempunyai user, apalagi bila penggunanya mencapai jutaan pengguna. Tentu saja data yang ingin ditangkap dari pengguna dan data yang ditangkap dari aplikasi tidak mungkin disimpan begitu saja di database. Apalagi kalau database-nya cuma satu instance serversaja. Bisa – bisa meledak.

Perlu solusi lain dimana kita dapat menyimpan data yang akan jarang diakses namun dapat beradaptasi dengan jumlah yang sangat besar saat pertumbuhan pengguna aplikasi web kita bertambah.

Salah satu teknologi yang dapat membantu kita untuk menyimpan file secara terdistribusi dan masif adalah Hadoop. Teknologi ini adalah sebuah file systemyang dapat membentuk suatu cluster storage dari sejumlah server. Dan tentu saja teknologi yang berdiri diatasnya pun ada banyak yang dapat dicoba.

Karena Hadoop sejatinya adalah file system, maka kamu perlu mengetahui teknologi pemrosesan data yang disimpan diatas Hadoop entah itu scriptingatau berbasis SQL. Belum lagi kamu harus mengetahui bagaimana membuat pipeline untuk menyalurkan data kamu dari satu tempat ke tempat lain.

Beberapa solusi big data yang dapat kamu coba antara lain:

  • Apache Hadoop
  • Apache Hive
  • Apache Spark
  • Apache PrestoDB
  • Apache Flink
  • Apache Zeppelin
  • Apache Pig
  • Apache Sqoop
  • Apache Beam
  • dan lainnya

10. Machine Learning

Setelah menyimpan data yang sangat masif dari aplikasi web yang kita kembangkan tentunya sangat sayang apabila harus dibuang begitu saja. Pasti ada manfaat yang dapat digunakan untuk meningkatkan penjualan atau mencari pengetahuan yang tersimpan di dalam big data tersebut.

Kamu dapat mempelajari berbagai tools untuk mengolah data tersebut menjadi pengetahuan dengan memanfaatkan machine learning. Sehingga big data yang kamu kelola dapat menjadi lebih bermanfaat, berhaga, dan bermakna.

Di dalam machine learning, kamu dapat mempelajari klasifikasi data, mencari jumlah pasangan yang sering muncul, pengelompokkan data otomatis, prediksi suatu nilai, mengenali pola suatu data, dan lainnya. Kamu juga dapat memberikan rekomendasi kepada user berdasarkan jumlah rating yang diberikan oleh user lain.

Beberapa tools machine learning yang dapat kamu coba antara lain:

  • Scikit-Learn
  • TensorFlow
  • Keras
  • PyTorch
  • Spark ML
  • dan lainnya
Categories
Artikel Lainya

Anggap Salah Orang Awam Terhadap Seorang Programmer

Anggap Salah Orang Awam Terhadap Seorang Programmer

Programmer, mungkin kebanyakan orang awam masih asing dengan profesi yang satu ini. Bahkan pekerjaan sebagai selebgram dan penjual toko online pun masih lebih mudah dikenali ketimbang profesi yang satu ini.

Programmer memang masih menjadi pekerjaan baru yang semakin booming di era internet sejak tahun 2000-an. Di kala aplikasi untuk bisnis masih didominasi desktop application, kini aplikasi bisnis mulai didominasi oleh aplikasi web dan mobile.

Bagi sebagian orang awam duduk di depan komputer dan membuka layar hitam saja sudah dianggap programmer padahal orang tersebut mungkin hanya sedang membuka aplikasi konsol ping atau wget untuk mencoba koneksi ke server yang ditujunya.

Seringkali bagi sebagian orang programmer itu semuanya sama, sama – sama ngoding dan membuat aplikasi. Padahal ada perbedaan yang cukup signifikan bila kita harus membandingkan antara programmer aplikasi mikrokontroler dan programmer web. Ada dua konsentrasi kemampuan yang berbeda yang tidak bisa dibandingkan langsung.

Berikut ini adalah beberapa salah anggap masyarakat awam terhadap profesi ini. Barangkali ada yang pernah mengalaminya, silahkan bagi ceritanya di kolom komentar :D.

1. Dianggap jago benerin printer

Sakit hati sih mungkin tidak, tapi memang agak kurang tepat bila kita yang tidak biasa ngulik printer tetiba disuruh memperbaiki printer yang rusak sampai level hardware. Salah satu ucapan yang mungkin dikatakan orang awam adalah, “Katanya programmer, kok benerin printer gak bisa!”.

Sebenarnya printer ini merupakan objek yang dikuasai oleh orang yang memperdalam ilmu teknik grafika (percetakan). Ada banyak sekali jenis printerdengan berbagai ukuran dan tipe kertas. Bahkan kaos pun punya printer-nya sendiri agar proses produksi lebih cepat.

Hanya saja memang mungkin printer ini ada kaitan dengan programmer, misal saat kita membutuhkan driver. Tapi bila masalah printer rusak seperti warna tidak stabil atau hasil cetak garis – garis. Maaf bro, jangan salahkan programmer>.<.

2. Sering diminta membuat laporan dan surat

Mungkin IT literacy seorang programmer bisa lebih tinggi dibanding profesi lainnya. Namun tidak sedikit yang tidak mahir membuat laporan apalagi laporan khusus seperti pembukuan jurnal akuntansi atau membuat surat menyurat bagi atasan. Tentu saja keterampilan tersebut lebih dikuasai oleh seorang yang terbiasa berurusan dengan administrasi atau belajar di dunia administrasi dan manajemen perkantoran.

Namun tidak jarang, programmer yang bekerja di dunia pemerintahan seringkali diminta untuk membuatkan laporan, walaupun itu bukan job desc-nya. Namanya juga programmer harus serba tahu kalau berkenaan dengan komputer dan IT.

3. Segala tahu soal hardware untuk Gaming

Tak jarang teman kita yang awam sering menanyai kita hardware terbaik apa untuk digunakan main game. Terkadang ada juga teman yang meminta kita untuk meng-upgrade komputernya ke pusat penjualan komputer, yang padahal itu bisa dilakukan oleh mereka sendiri.

Tak jarang juga kita diminta untuk memilihkan hardware terbaik yang sesuai spesifikasi minimum, yang sebenernya bisa dibaca sendiri oleh mereka di internet tempat info game yang mereka inginkan.

Salah satu alasan ngelesnya adalah, “Kan kamu tiap hari sama komputer, bantu upgrade komputerku dong”.

4. Kadang disuruh bikin logo atau poster

“Mas tolong bikinin logo dong, mas kan pinter yah makek komputernya, kan programmer!”. Salah alamat, mas :D. Mintalah membuat logo kepada ahli desain grafis bukan kepada pembuat aplikasi komputer mas. Sentuhan tangannya itu beda saat mendesain logo oleh yang ahli sama yang bukan. Bahkan yang biasa bikin logo pun gak akan mau diminta ngedesain gratis. Lah ini udah minta gratis malah nyuruh programmer :|.

5. Dianggap jago semua software

“Tiap hari sama komputer, masa sih ga bisa software ini?”. Begitulah bila rekan kita ada yang tidak mengerti dunia komputer. Bagaimana tidak, masa iya kita harus menguasai semua software yang jumlahnya sudah terlalu banyak. Belum lagi setiap software hanya ditujukan bagi kalangan dari profesi tertentu.

Memang kita hanya bisa memberikan pengertian kepada teman kita, namun kadang masyarakat awam tidak mau tahu yang penting kita bisa softwaretersebut apapun yang terjadi. Terlebih bila yang meminta bantuan adalah Pak RT atau Pak RW :D.

6. Sering dianggap sebagai instruktur IT yang serba tahu

“Aa kan programmer, harusnya bisa dong ngajarin kita pakai website buat sertifikasi guru ini!”. Tak jarang bila seorang instruktur IT dari suatu program pemerintah, malah diminta untuk menjelaskan sistem lain yang dibuat pemerintah. Misal seorang guru yang ingin mengikuti sertifikasi guru, mungkin karena kurang piawai menggunakan komputer. Jadinya kita sendiri yang kerepotan.

Hanya saja, kita tidak bisa menguasai semua aplikasi web yang dibuat oleh pemerintah. Guide book-nya saja tidak punya tapi harus bisa menjelaskan kepada orang lain dan itu pun bukan tugas kita :|. Memang inilah dunia penuh tantangan, kita harus bisa negoisasi kepada orang – orang awam dengan cara yang baik agar sampai kita tidak disemprot orang.

7. Diminta ngehack Facebook

“Gan, tolong hackin Facebook temenku dong, dia mutusin aku soalnya!” atau “Kang, tolong benerin Facebook yang dihack orang dong!”. Bro, kalau mau benerin Facebook yah hubunggi Facebook Help Service dong :|. Ngehack Facebook itu lumayan panjang loh.

Kita harus ke masuk network dimana target berada dan sering internetan disana dan ngintip pakai wireshark buat berharap dapat akun dan password-nya. Atau juga kita harus cari jejaknya dulu di komputer – komputer warnet untuk buka firefox. Atau mungkin nyimpen keylogger di rumahnya. Ah ribet deh pokoknya.

Dan lucunya, permintaan nge-hack Facebook itu malah sering nyampai ke kita saat kita baru kuliah di jurusan IT atau ketahuan bahwa kita berprofesi programmer :|. Jadi jangan bilang – bilang kalau kita programmer yah :D.

8. Diminta ngeroot Android

Tak jarang seiring dengan banyaknya peminat hape android. Banyak orang yang ingin memasang game bajakan di hapenya. Memang salah satu syaratnya adalah harus nge-root hape android terlebih dahulu. Semacam menguasai device kita sendiri dari tangan vendor dengan resiko kehilangan garansi.

Tapi walaupun sedikit bersinggungan dengan programmer. Tapi memang fokus seorang programmer terlebih programmer Android, adalah membuat aplikasi untuk Android. Tidak semua programmer mau mengalokasikan waktunya buat nge-root Android. Yang ada semua programmer mengalokasikan waktu buat menghadapi dedadline di esok hari.

9. Besok Pasti Beres, Kan Programmer!

Ketika programmer diminta mengerjakan 5 fitur. Kadang orang awam meminta kita menyelesaikan tambahan 10 fitur berikutnya. Bila orang yang sudah biasa proyekan IT (kalau masih punya perasaan), biasanya bernegoisasi dengan programmer untuk mengukur berapa lama waktu yang dibutuhkan untuk menyelesaikannya.

Tapi bagi orang proyekan yang masih baru terjun di dunia proyekan IT biasanya mengukur proyek IT itu disamakan dengan mengukur proyek jalan. Dimana programmer adalah resource yang dapat diganti seenaknya dan semuanya predictable. Hal ini tentu membuat sebagian besar programmer yang masih pemula dan terjebak dengan proyekan seperti itu harus menanggung beban yang cukup besar :|.

“Besok harus beres, kamu kan programmer!”

10. Memperkerjakan Programmer sebagai Sistem Analis, Tester, dan Instalasi Jaringan

Tak jarang ada juga client yang memiliki proyek dengan nilai yang cukup fantastis, namun hanya memperkerjakan programmer seorang diri atau cuma beberapa orang saja. Memang selain penghematan, tak jarang ada juga programmer yang ingin belajar menjadi role lain dalam suatu proyek IT.

Tapi memang anehnya dengan budget sekian, pengeluaran untuk sewa programmer harus seminim mungkin. Padahal harusnya peran dalam proyek IT tidak hanya dikerjakan oleh programmer saja. Tak jarang yang disewa hanya programmer namun harus mengerjakan analisis, desain web, sampai tahap validasi produk cuma dilakukan programmer, namun menuntut hasil yang maksimal. Belum lagi bila proyek tersebut harus dipasang di seantero gedung dengan menggunakan berbagai perangkat pendukung seperti, wifi, display monitor, dan front desk.

Kecuali kalau seorang programmer mengerjakan suatu proyek dengan “budget” minimalis, namun fee yang didapatnya adalah untuk banyak peran, jadi fee untuk system analysttesterprogrammer, dan network engineer harus didapatkan juga, dengan demikian tampaknya cukup adil walaupun sangat capek :D.

Categories
Tutorial

Hal – Hal Inti yang Wajib Dikuasai Seorang Programmer

Hal – Hal Inti yang Wajib Dikuasai Seorang Programmer

Banyak sekali bahasa pemrograman dan tools yang free dan open sourcesehingga 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 toolsberbayar 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 StartedTutorialAPI 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 looping dalam 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 patternlibrary 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 codingprogrammer 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 advance ditulisnya pun menggunakan bahasa Inggris.

Bahasa Inggris sangat memegang peranan penting. Walaupun programmerhanya 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 addresssubnetting, 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-backupsource 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 update terbaru 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 editortersebut.

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 editingsplit viewminimapfull 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 programmerdengan 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 programmerdituntut untuk membuat proses bisnis menjadi aplikasi web berupa serviceataupun non service yang 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.

sumber: codepolitan.com