Skill yang Harus Dimiliki Programmer Masa Kini (Bagian 2) — Backend 

AzmiVairi 31 Juli 2017

Skill yang Harus Dimiliki Programmer Masa Kini (Bagian 2) — Backend 

Akhirnya punya kesempatan untuk menulis lagi, tepat 1 bulan setelah artikel bagian satu dipublish. Kali ini saya akan membahas mengenai skillset yang harus dimiliki Backend Developer.

Perlu dicatat bahwa saya membatasi istilah backend dalam artikel ini, adalah untuk Backend Developer Web dan Mobile App saja. Sehingga tidak termasuk di dalamnya backend untuk aplikasi desktop (Programmer VB, Delphi, etc).

Dan istilah Aplikasi adalah untuk Web dan Mobile App saja. Dan pemilihan framework/bahasa pemprograman yang saya pilih disini, hanyalah opini + pengalaman.

Dan istilah “Skill” disini, termasuk didalamnya pemilihan framework, metodologi, dan bahasa pemprograman. Sepakat!? Let’s Go!

Image

Seorang Backend Developer, singkatnya bertanggung jawab untuk membangun “server side” dari sebuah aplikasi, seperti autentifikasi, operasi database, dan logika dari sebuah aplikasi.

Jika membicarakan, skill apa yang harus dimiliki oleh seorang backend, jawaban dari orang-orang tentu berbeda-beda. Dan kadang junior programmer kebingungan, apa yang sebaiknya yang dipelajari. 

Kalau cek di StackOverflow survey, Python dan Ruby lebih populer ketimbang PHP. Tapi kok gak pernah dapat client yang yang minta dibuatin pakai Python atau Ruby? Kok rasanya PHP saja sudah cukup?

Kira-kira seperti itu perasaan junior programmer benar tidak? Apakah PHP saja sudah cukup sebagai backend? well… Mari kita bahas skill-skill yang dibutuhkan sesuai dari skala aplikasi yang dibangun.

Baca juga: Skill yang harus dimiliki Programmer masa kini (Bag. 1) — Frontend


A. Website dan Blog

Seperti website organisasi, company profile, instansi pemerintahan, tokoh politik atau landing page sebuah produk. Untuk project dengan fitur minimalis seperti ini, Wordpress adalah salah satu pilihan terbaik sebagai pre-build backend. Untuk bisa mendevelop website berbasis Wordpress, programmer harus memiliki skill PHP, Javascript dan MySQL. Dan tentu saja harus memahami seluk beluk Wordpress agar tidak ada security hole.

Tentu saja, kamu bisa membangun website sekolah dengan Laravel misalnya, tapi kalau pihak sekolah hanya minta websitenya hanya sekedar company profile, haruskah menggunakan Laravel? Wordpress sebagai CMS nya lebih dari cukup. Karena (menurut saya):

Coding bukan soal keren-kerenan bro, pakai ini pakai itu. Tapi coding soal efisiensi, dan dalam bisnis IT, semakin cepat kamu menyelesaikan sebuah project, maka semakin banyak project yang bisa kamu tangkap [1]

Jika trafik diperkirakan tinggi, seperti membangun portal berita, atau blog yang sudah cukup terkenal. Bisa menggunakan Wordpress atau Ghost.io, ditambah optimisasi pada server. Untuk ini skill tambahan yang harus kamu miliki adalah ** pengetahuan melakukan deploy dan server optimization** [2].

Untuk Wordpress, dapat dioptimisasi dengan menggunakan EasyEngine, atau Varnish. Tetapi sejauh ini, Debops adalah konfigurasi paling “joss” untuk website berbasis wordpress. Disini kamu akan berkutat dengan SSH, Linux CLI, Nginx / Apache Virtual Host, dll.

Pilihan lainnya untuk website trafik tinggi, adalah menggunakan static cms, seperti ** Jekyll**. Dan ini favorit saya ketimbang harus optimisasi wordpress. Kenapa static cms? karena web static tidak memakan resource server berlebihan, data yang disimpan tidak menggunakan database mysql, melainkan disimpan dalam bentuk file. Tapi jangan salah, meskipun katanya “static”, tetapi data tetap “dinamis” kok.

Tanpa harus banyak optimisasi seperti wordpress, hanya dengan server paling kecil dari DO saja, Jekyll bisa nampung ratusan ribu trafik. Amazing!

**B. Sistem Informasi **

Misalnya membuat aplikasi siakad, aplikasi administrasi perkantoran, aplikasi stock dan semisalnya yang sifatnya manajemen data. Cukup menggunakan** Laravel dan Lumen**. Atau framework PHP lainnya seperti Symphony dan Yii, bebas. 

Yang harus diperhatikan adalah skema database, sehingga skill optimisasi database dan relasi antar tabel sangat diperlukan dalam mendevelop aplikasi-aplikasi seperti ini.

C. Cross Platform Application

Nah, lagi musim project yang seperti ini. Klien minta buatin website plus aplikasi mobile nya (Android dan iOS). Biasanya yang order mau buat marketplace, portal pencarian, aplikasi startup, dsb.

Untuk tipe project seperti ini, saya menerapkan Write Once Run Everywhere (WORE) kepada anak-anak backend, yaitu menulis codingan aplikasi hanya satu kali, tetapi bisa berjalan di platform mana saja, seperti desktop, android, ios, dan web. 

Yang dibutuhkan:

1. Serverless Database

Yaitu database di host di pihak ketiga. Jadi kita tidak lagi pusing memikirkan melakukan backup database, maintenance, ataupun scaling up. Bagi yang pemula, bisa mencoba baqend.com sebagai database. Yang lebih pro bisa coba DynamoDB dari Amazon, Firebase dari Google, dan masih banyak lagi. Tipe database rata-rata NoSQL dan ketika diakses format yang ditampilkan dalam bentuk ** JSON**.

Untuk database user, dalam handle Autentifikasi (login/signup + password), bisa menggunakan auth0.io atau strompath. Pernah lihat google, produk-produk nya banyak (Drive, Email, Docs, Playstore, dll) baik versi web maupun aplikasi mobile, tapi login nya cukup pakai satu ID saja kan? Nah, auth0 dan Strompath adalah rahasianya.

Untuk bisa terhubung dengan database ini semua menggunakan REST API yang disediakan, dan **REST API **dapat diakses dengan banyak cara, salah satunya Javascript.

2. Cloud Storage untuk static file

Jika aplikasi memiliki fitur untuk upload gambar profil, atau foto produk, kita menggunakan** Amazon S3** sebagai tempat penyimpanannya. Pilihan lainnya, bisa di** Firebase, Azure Storage, Dropbox**. Dan Cloud Storage juga dapat digunakan untuk menyimpan file JS, logo, dokumen, dll.

Cara upload file ke Cloud Storage salah satunya melalui REST API yang disediakan atau melalui SFTP.

3. Cross Platform IDE

Aplikasi di develop menggunakan IDE/Platform yang bisa save hasil codingan agar berjalan di Android, iOS, Linux, dan Windows. Seperti:

  • MeteorJS, bahasa HTML + CSS + Javascript
  • Scade, IDE menggunakan bahasa Swift
  • Intel XDK, IDE menggunakan bahasa HTML + CSS + Javascript
  • Xamarin, IDE menggunakan bahasa C#

Dan masih banyak lagi pilihannya. Dengan bahasa-bahasa universal tersebut, dengan satu kali coding, aplikasi kita dapat berjalan di Android, Windows, Linux, dan iOS.

4. Middleware server

Salah satu cara komunikasi antara aplikasi ke Serverless Database dan Cloud Storage, adalah melalui REST API. Namun menghubungkan langsung aplikasi yang ada di tangan user ke serverless database, sangat riskan. Oleh karena itu kita memerlukan satu server sebagai middleware

Begitu juga untuk mengolah / menggenerate data, kita memerlukan sebuah server untuk menjalankan script. Script tersebut biasanya dicoding menggunakan Flask (Python), atau Ruby. Atau bisa juga menggunakan** Javascript + NodeJS**. Bahasa-bahasa tersebut dipilih karena script lebih cepat dan ringan ketika dieksekusi.


Nah, kalau dirangkum skill-skill yang harus dimiliki backend programmer saat ini adalah pengetahuan seputar:

**Junior Programmer: **

PHP, MySQL, Linux Server & CLI, Javascript, Laravel, Lumen

**Senior Programmer: **

PHP, MySQL, Linux Server & CLI, Javascript, Laravel, Lumen, REST API, JSON, Swift, NodeJS, C#, NoSQL, Python atau Ruby?

Itu semua sudah lebih dari cukup dan sebagai gerbang untuk membuka dunia backend yang lebih dalam.

Happy Coding!

[1] Cepat namun tetap pertahankan kualitas dan ekspektasi client.

[2] Ada yang menganggap, server adalah urusan DevOps bukan Backend Developer.