Sebelum kita mulai, kamu perlu memahami apa perbedaan Programmer dan Developer. Karena masih banyak yang beranggapan bahwa programmer dan developer memiliki tingkat pekerjaan yang sama. Kira-kira bener nggak ya??
Programmer
Programmer merupakan seseorang yang mampu menyelesaikan masalah dengan menggunakan bahasa pemrograman. Seorang Programmer paling tidak memiliki satu bahasa pemrograman untuk dijadikan senjata dalam menyelesaikan sebuah project. Biasanya para programmer merupakan single fighter dan bekerja sendiri.
Developer
Sedangkan Developer merupakan programmer yang tidak hanya memiliki kemampuan coding, tapi juga mereka yang memiliki paket lengkap untuk membuat produk. Seperti yang kita ketahui, untuk pembuatan sebuah produk software atau yang berhubungan dengan Teknologi Informasi tidak hanya mengandalkan skill koding saja, namun hal-hal lain dalam proses pembuatannya seperti kinerja, maintenance, security dan lain sebagainya.
Berbeda dengan programmer yang biasanya hanya menguasai satu bahasa pemrograman saja, Developer dituntut untuk dapat menggunakan banyak sistem dan banyak bahasa. Selain bekerja dengan tim, Developer adalah tipe orang yang mampu berkomunikasi dengan baik untuk menyelaraskan produk yang akan di buat.
Jadi, inti nya, programmer bisa dikatakan seorang penyelesai masalah dan Developer bisa dikatakan seorang yang tidak hanya menyelesaikan masalah namun punya kinerja yang terstruktur dan disiplin.
Cara menjadi Developer Professional
Nah, untuk menjadi developer professional tentu kamu harus mengetahui batas kemampuan mu terlebih dahulu. Dengan menetapkan batas itu, kamu akan lebih mudah menerapkan kebiasaan-kebiasaan ini. Berikut kebiasaan yang harus diterapkan untuk menjadi programmer professional,
1. Coding terus dan terus
Sempatkan waktu untuk mengasah kemampuan coding mu setiap hari. Ingat ya… SETIAP HARI!. Tak masalah mengasah dengan bahasa pemrograman apa dan project apa. Kamu bisa buka visual studio code dimanapun kamu berada, baik di rumah, cafe maupun di tempat kencan. Kenapa? biasanya ketika kita skip koding saat weekend, pada hari senin nya kamu akan merasa lemot untuk memulainya kembali. Apalagi jika kamu skip koding karena sedang cuti selama 1 minggu. Kamu akan merasa seperti orang yang tak tahu arah, bengong kesana kemari mencari alamat. Untuk itu sangat penting mengasah atau me refresh skill koding mu setiap hari untuk menjaga Flow, momentum dan disiplin dalam ber koding.
(Tips : Gunakan GitHub agar profilmu terlihat keren)
2. Mencoba Sesuatu yang baru
Halahh, koding pakai bahasa yang dikuasai aja jatuh bangun, apalagi disuruh coba sesuatu yang baru. Eiitsss, itu merupakan mindset yang kurang pro ya guys. Untuk permulaan, tak harus belajar bahasa pemrograman baru. Kamu bisa mencoba mengganti editor baru atau OS baru. Misalkan, ketika kamu terbiasa menggunakan VS Code, coba bulan ini kamu menggunakan android studio, atau kamu kamu yang terbiasa menggunakan Mac Os bisa menginstal OS ubuntu. Tantangan ini yang nantinya akan menjadi batu loncatan untuk berfikir out of the box dan menambah tingkat professionalitas kamu.
3. Menerapkan Pradigma di setiap aspek
Kamu pasti punya senjata untuk mengerjakan project agar hasil yang didapatkan sesuai dan cepat. Namun, gimana kalau senjatamu tidak bisa digunakan untuk bahasa pemrograman lain? atau teknik yang biasanya kamu gunakan di bahasa tertentu tidak bekerja jika diterapkan ke bahasa yang lain?. Berkaitan dengan tips nomor 2, kamu akan terbiasa menyelesaikan suatu masalah tidak dengan satu jalan saja. Kamu akan berlatih untuk memecahkan masalah dengan berbagai macam solusi. Jadi, ketika cara biasa tidak berhasil, kamu akan terbiasa mencari solusi lain untuk memecahkan nya. Sehingga untuk project selanjutnya, kamu akan mempunyai perpustakaan solusi untuk project kamu.
Itulah kebiasaan-kebiasaan yang bisa bikin kamu jadi developer professional. amati ilmu-ilmu mengenai proses pembuatan produk secara terstruktur maka, kamu akan satu level lebih tinggi dibandingkan hanya sebagai pemecah masalah saja.
Setiap programmer memiliki ciri khas yang unik, asyik, menarik dan kadang aneh. Mereka memiliki jalan ninjanya sendiri dalam membangun sebuah perangkat lunak. Ada tipe programmer yang kuat ngoding berjam-jam, ada juga yang baru satu jam sudah melambaikan tangan ke kamera. Masing-masing programmer punya kesempurnaan tersendiri. Karenanya kamu harus membangun kombinasi yang sehat dari tipe-tipe programmer ini. TASOfficial telah merangkum tipe-tipe programmer, kira-kira kamu termasuk yang mana?
Tipe programmer pertama ini mungkin terdengar aneh. Programmer satu ini punya tipikal tidak suka menulis kode. Nah, dia lebih cenderung untuk memanfaatkan apa yang sudah semestera sediakan. Jika ada masalah, tipe ini lebih suka mencari kode yang di Github maupun buku-buku pemrograman yang ada. Keunggulan tipe pertama ini adalah cepat dan rapi. Tak hanya itu, dia adalah tipe detektif yang handal, yang tau mana saja tempat mencari coding yang worth it
Kecepatannya bisa diadu dengan programmer anti mrogram. Hanya saja, programmer ini masih mau mrogram. Prinsipnya adalah yang penting beres’, sehingga rekan programmer tidak menyukainya karena kode yang berantakan. Sayangnya, tipe ini adalah tipe kesayangan client dan management karena waktu deliverynya yang bagus. Soal pekerjaan besar dengan deadline yang sempit, dialah rajanya. Jangan meragukan kemampuan programmer half-assed
Ini adalah tipe programmer paling umum yang bisa kamu temui. Saat bertemu bugs, dia akan menambal ketika ada kerusakan pada suatu program dengan cepat. Tipe programmer lakban mungkin tidak begitu peduli dengan kerapihan, efisiensi, dan bobot selama solusi yang ia hasilkan dapat memperbaiki kesalahan kode. Tipe ini adalah pondasi utama bagi sebuah perusahaan. Perusahaan tanpanya bagai nasi kucing lupa dikaretin, ambyar!
Sesuai namanya, tipe ini hanya menyukai bagian teorinya saja. Tipe ini lebih tertarik dengan perencanaan pengembangan perangkat lunak saja. Saat menemukan case, dia bisa seharian melamun di depan komputer melamun di depan komputer dan membayangkan berbagai solusi untuk masalah. Setelahnya dia hanya akan sambat waktu yang mepet dan masalah yang begitu besar. Kamu bisa menjumpai tipe programmer ini, ketika kamu mendengar salah satu kalimat yang sering ia katakan seperti ‘Kalau saja aku punya waktu yang lebih banyak, tentu aku bisa melakukannya dengan benar’.
Programmer ini tidak peduli deadline, budget, waktu penyelesaian yang harus ia habiskan. Pokoknya project harus sesempurna mungkin. Saat selesai, kamu akan takjub dengan kesempurnaan karya yang telah ia bangun. Mulai dari kerapihan, efisiensi, optimasi kode dan lain-lain. Dia selalu menganggap program sebagai sebuah mahakarya.
Tipe ini adalah malaikat bagi semua orang. Biasanya dia menjadi seorang monitor bagi junior-junior yang lagi intern. Seorang programmer bijak biasanya menguasai 5 bahasa sekaligus mungkin dan mengerti kode-kode 5 bahasa pemrograman tersebut. Karena kebijakannya membuat dia dikerumuni oleh fans-fans yang ingin berfoto bareng. Tipe-tipe seperti ini biasanya suka membantu, memberikan solusi kepada pemula dalam menyelesaikan proyek atau masalah-masalahnya dan membantu noob programmer saat stack overflow.
Nah itulah Tipe-Tipe Programmer, Kamu Termasuk Mana?
Skill Set jika ingin menjadi fullstack developer zaman now – Hello guys, Sebagai developer tentunya kita sering kali mendengar kata-kata fullstack developer, bukan? Perusahaan IT maupun bukan IT tidak jarang melukan rekruitmen untuk software developer, berposisikan sebagai fullstack developer. Sebenarnya apa sih fullstack developer itu? Apakah kalian termasuk fullstack developer?
Simak gambar berikut guys, dikutip dari https://www.cybercoders.com/. Sudah siap kan, kalian jadi fullstack developer? Ckkk. Btw tidak usah berkecil hati jika kalian belum menguasai sebagian skill set di atas, atau mungkin seluruhnya, wkkkk. Jika kalian belum mengusai sebagian skill set yang ada diatas, artinya masih banyak tantangan di hari esok yang kalian hadapi.
Oke guys, tidak perlu berpanjang lebar, kita breakdown, point-point dari gambar diatas agar kalian akan lebih mudah untuk memahaminya.
Front End
Sebenarnya front end ini bisa macem-macem guys. Mobile app bisa dibilang juga front end, begitupun desktop apps, jika aplikasi berbasi client-server, dengan backend berupa web service yang berjalan untuk mengambil data dari frontend.
– Front End Development
Namun frontend yang dimaksud pada gambar lebih spesifik ke frontend (web) development. Sedangkan front end mobile kita bahas secara terpisah. Sedangkan desktop app, tidak ada digambar karena di zaman now, desktop app telah banyak berevolusi ke web app.
– HTML, CSS dan Javascript
Untuk pelajaran basic yang kita harus kuasai adalah belajar html, css, javascript, karena ini berkaitan dengan User Interface atau tampilan buka sebuah web ketika diakses. Setelah kalian memahami basic, kalian bisa melanjutkan ke framework css yang biasa orang gunakan seperti Bootstrap, Materialize dsb. Dengan framework kalian tidak perlu lagi membuat css sendiri dari awal, kalian tinggal memakainya saja.
Begitupulan dengan javascript, kalian bisa menggunakan framework atau library yang sudah ada, sehingga tinggal memkainya saja, agar coding kalian lebih teratur dan mudah untuk dimaintenance. Ada 3 framework populer yang biasa orang pakai, terlebih jika aplikasi web yang dikembangkan ini model SPA (Single Page Application), yakni React, Vue & Angular.
Back End
Perbedaan antara backend dan frontend adalah bagaimana bahasa pemrograman tersebut berjalan, jika frontend berjalan di sisi client, maka backend berjalan di sisi server. Banyak sekali bahasa pemrograman atau framework yang di kembangkan dari bahas tertentu digunakan sebagai backend.
Back End Language
Sebagai contoh bahasa pemrograman yang biasa digunakan untuk backend adalah PHP, Java, Phyton, Golang, Nodejs, dsb. Kalian bisa menggunakan bahasa pemrograman yang kalian kuasai untuk mengembangkan aplikasi di sisi server. Setiap bahasa memiliki kelebihan dan kekurangan masing-masing.
Back End Framework
Setiap bahasa biasanya juga memiliki framework yang telah umum digunakan banyak orang, seperti di Java ada spring, di PHP ada laravel, yii, CI, symfoni, di Nodejs ada express, dsb.
Database
Database Relasional
Pada umumnya Aplikasi yang dikembangkan memiliki tempat penyimpanan yang disebut database, karena jika aplikasi digunakan data yang telah diinput oleh pengguna seharusnya dapat disimpan dan suatu saat jika kita menginginkan untuk membukanya kembali harus dapat digunakan kembali. Database ada bermacam-macam, ada jenis database relasional seperti mysql, postgres, sql server, dsb.
Database NoSql
Ada pula jenis database yang NoSql seperti mongodb, couchdb, Cassandra, dsb. Kalian bisa menggunkan database sesuai yang kalian kuasai, juga sesuai dengan kondisi aplikasi yang dikembangkan. Database NoSql biasanya digunakan untuk data yang sifatnya memudahkan untuk indexing, sehingga ketika pengguna melakukan pencarian tidaklah membutuhkan waktu yang lama.
Message Broker
Selain kedua jenis database tersebut, kalaian juga perlu memahami apa yang disebut message queue atau message broker. Perbedaan antara message broker / queue dan database adalah tipikal cara mendapatkan datanya. Jika database kita akan mendapatkan data, ketika melakukan query, jika message broker atau message queue sifatnya lebih pada publish and subscribe. Jadi aplikasi akan melakukan subscribe, jika ada pesan, maka data tersebut baru akan didapatkan. sedangkan publisher adalah sebagai trigger untuk mengirim pesan ke message broker.
DevOps
Aplikasi yang kalian kembangkan tentu saja tidak hanya dijalankan di lokal saja, namun harus kita upload ke server agar pengguna juga bisa menjalankanya. Jika itu aplikasi mobile brarti juga harus diupload ke store app. Nah salah satu kemampuan yang kalian butuhkan untuk memastikan bahwa aplikasi kalian dapat di deliverykan ke client dengan cepat, tepat dan efektif juga aplikasi kalian dapat dipastikan berjalan baik-baik saja dimanapun dia berada, baik di lokal, di server testing maupun production maka kalian perlu menguasi skill yang dinamakan DevOps ini. DevOps dari kata Development & Operation. Development berarti pengembangan dan Operation berarti Pengopersian.
Infrastruktur Devops
Mulai dari infrastruktur yang akan dipakai, kalian harus memahami arsitektur aplikasi yang kalian kembangkan. Anda bisa memilih provider yang sesuai dengan kebutuhan aplikasi yang kalian gunakan. jika aplikasi kalian berjalan hanya butuh shared hosting dengan space yang terbatas, maka cukup web hosting sebagai layanan yang harus kalian bayar.
Jika aplikasi membutuhkan dedicated resource, maka kalian bisa menyewa VPS (Virtual Private Server) atau Dedicated server. Dan jika kalian menyewa VPS, kalian harus bisa mensetup VPS tersebut. Jaman sekarang mensetup Infrastruktur tidaklah sesulit jaman dulu, banyak provider yang telah mengemas setup ke dalam User Interface di dalam Admin Panel.
Kalian juga bisa menggunakan teknologi automation yang dinamakan Infrastructure As A Code. Kalian bisa mensetup Infra hanya dengan Code-code, Infra As A Code ini contohnya Ansible, Chef, Pupet.
Monolitik ke Microservice
Jika aplikasi kalian telah berkembang dan kemudian besar, sehingga kalian harus mengubah arsitektur dari monolitik ke microservices. Aplikasi akan dipecah-pecah menjadi service kecil-kecil yang berjalan dan terintegrasi satu sama lain. Untuk menjalankan microserivces biasanya single server saja tidak cukup, jika kita hanya mengandalkan single server yang storage dan resourcenya terbatas, akan menjadi sulit jika suatu saat akan melakukan scaling terhadap aplikasi kita.
Vertical & Horizontal Scalling
Untuk menscaling suatu aplikasi kita bisa menggunakan cara vertical scaling atau horizontal scaling, vertikal artinya menambah resource pada server misal CPU yang kita gunakan awalnya 4 Giga, kita scaling menjadi 8 Giga. Sedangkan Horizontal Scaling menggandakan aplikasi menjadi beberapa, sehingga ketika diakses server akan membagi permintaan tersebut agar diproses oleh aplikasi kecil-kecil tersebut.
Docker
Nah jaman sekarang biasanya orang mengemas aplikasi dalam sebuah container. Tools yang terkenal disebut docker. Docker merupakan sebuah teknologi virtualisasi yang terkenal dan digunakan banyak orang, karena lebih ringan, sehingga lebih cocok digunakan untuk mengembangkan aplikasi yang memiliki arsitektur microservices.
Tools Tambahan
Selain memilih provider, kalian juga harus menguasai tools-tools automation untuk deployment aplikasi kalian ke berbagai environment. Kalian harus memastikan proses deployment yang dilakukan dilakukan secara efektif. Untuk itu kalian membutuhkan tools-tools semacam Jenkins, Circle Ci, Gitlab Ci, dsb. Tools2 tersebut biasanya digunakan bersama source repository tempat dimana source code tersimpan dengan teknologi version control.
Mobile App
Selayaknya front end web, front end mobile juga memiliki bahasa khusus untuk membuat User Interface. Di Android biasa menggunakan Java/Kotlin. Di Ios bisa menggunakan Swift atau Objective-C. Bahas Pemrograman tersebut memang dikhusukan untuk platform Mobile. Namun seiring berkembangnya teknologi, sekarang banyak seklai orang membuat applikasi mobile dengan Hybrid. Tentu saja memiliki permorma yang berbeda dengan aplikasi native. Aplikasi ini dikembangkan dengan bahasa pemrogrman lain yang kemudian yang ditransformasikan menjadi kode native pada Android/Ios. Aplikasi Hybrid yang popular seperti React Native, Ionic, Flutter.
Progressive Web Apps (PWA)
Disamping Native & Hybrid dalam pengembangan ada juga teknologi yang dinamai PWA (Progressive Web Apps). PWA ini sebenarnya adalah aplikasi web, namun serasa seperti aplikasi native. Mengapa sperti native? AKrena applikasi PWA harus memenuhi syarat responsif & menggunkana teknologi SPA (Single Page Application). Dengan teknologi SPA, memungkinkan semua assets dapat diunduh sekali akses, kemudian assets2 tersebut akan diolah dalam sebuah sebuah service worker, sehingga ketika kita dalam keadaan offline masih dapat membuka applikasi tersebut.
Kesimpulan
Nah gimana guys, masih berminat untuk menjadi fullstack developer? saya yakin kalian adalah orang yang pantang menyerah, So tidak ada salahnya mencoba satu-satu skillset tersebut. Good Luck.
Ketika kamu memilih menjadi seorang programmer, saat itu pula berarti kamu siap mendedikasikan jiwa dan raga untuk menulis kode program selama sisa hidupmu. Kode program akan menjadi bagian terbesar yang mendominasi pikiranmu. Pagi, siang, maupun malam kamu akan menghabiskan waktumu bersama kode program. Biasanya, programmer harus melanjutkan kode program dari programmer lain. Sebuah keberuntungan, ketika kita menemukan kode yang jelas dan terstruktur. Sebaliknya, ketika program yang kita temui “kurang bersahabat”, tentu kita akan kesulitan dalam melanjutkan project tersebut. Menyusahkan bukan? Itulah sedikit alasan mengapa kita harus mengetahui sebuah seni menerapkan “Clean Code”.
Bad Code VS Clean Code
Setiap programmer memiliki ciri khas programnya masing-masing. Ada programmer yang suka menulis kode program dengan jelas. Namun, ada juga tipe programmer yang “penting jalan” tanpa memperhatikan bentuk penulisan kodenya. Kode program seperti inilah yang disebut dengan istilah bad code. Bad code ini akan menjadi nightmare bagi programmer yang akan melanjutkan kode program sebelumnya.
Bad code akan sering ditemui atau bahkan diproduksi sendiri, apalagi ketika sudah mendekati deadline. Tipe menulis asal-asalan ini akan menjerumuskan kita pada bugs yang meningkat. Tak jarang juga kita akan bingung sendiri melihat kode program buatan sendiri. Akhirnya banyak waktu yang akan terbuang untuk fixing bugs ini dan waktu akan makin molor.
Kebalikan bad code disebut clean code. Sebagai seorang programmer baik junior ataupun experienced, cobalah untuk menjadi good programmer. Programmer harus bertanggungjawab atas kode yang ditulisnya. Clean code inilah bentuk pertanggungjawaban ini. Selain kode yang lebih jelas dan terarah, clean code juga mampu mengurangi produksi bugs dan mempercepat software development. Jadi, lebih pilih mana?
Perbandingan Clean Code VS Bad Code (Sumber : Geeks For Geeks)
Clean code akan sangat berguna untuk membut kode kita lebih readable. Potongan kode akan menjadi jelas dan lebih terbaca. Terlebih ketika mengerjakan project secara tim, clean code ini hukumnya menjadi “wajib ‘ain fardhu kifayah”. Percayalah, bad code akan membuat silaturahmi dengan programmer lain menjadi renggang!
Seni Menulis Clean Code
Ada 7 aturan paling umum untuk menulis clean code yang harus kita ketahui
1. Aturan Penamaan
Kesalahan ini adalah kesalahan paling umum terjadi. Biasakan menulis nama variable, fungsi, maupun method secara jelas dan deskriptif. Penamaan ini harus memiliki arti yang sesuai dengan tujuan pembuatan.
2. Aturan komentar
Seringkali kita mengabaikan pemberian komentar pada header program maupun awal fungsi/method. Padahal komentar ini adalah satu-satunya kompas saat kita harus melanjutkan project lama loh. Tuliskan komentar dengan jelas
3. Single Responsibility Principle (SRP)
Setiap fungsi, method, ataupun variable harus secara spesifik bertanggungjawab atas satu pekerjaan. Hindari penggunaan nestedstructure atau maksimal memiliki dua level indent. Jika suatu fungsi dapat melakukan lebih dari satu pekerjaan, fixing bugs akan lebih sulit karena kita akan berhadapan dengan banyak step. Selain itu, usahakan satu fungsi maksimal hanya 3 parameter saja.
4. Readability
Buat kode program menyenangkan untuk dibaca, bahkan untuk beginner programmer. Indentation, whitespace, dan line breaks adalah hal-hal yang harus diperhatikan agar kode program kita selalu terlihat rapi.
5. If
Tuliskan percabangan pada if dengan jelas. Perhatikan contoh berikut
Pada kolom bad code program (kanan) akan mengecek terus menerus walaupun kondisi sudah terpenuhi, sedangkan untuk clean code program (kiri) akan berhenti mengecek jika kondisi sudah dipenuhi.
6. Well-Organized Project
Aturan keenam ini juga merupakan aturan yang tidak boleh terlewatkan. Selama proses pengembangan, kita seringkali menambahkan file ataupun folder ke project yang kita buat. Penataan file yang berantakan seringkali membuat programmer lain kebingungan dengan project kita. Well-Organized Project akan membuat semuanya menjadi jelas dan updating lebih mudah.
7. Hapus kode yang Tidak diperlukan
Selama trial project, tentu kita menambahkan banyak kode untuk mencapai keberhasilan. Mungkin kita akan merasa “sayang” untuk menghapus sisa-sisa perang ini. Biasanya kita hanya akan meng-comment potongan kode ini. Jika hanya sekali dua kali masih tidak begitu terasa, namun bagaimana jika ternyata kita tidak sadar melakukan hal ini pada 300 kelas? Mengerikan bukan? Oleh karena itu, biasakan menghapus kode-kode tidak berguan ini ya. Tapi jangan sampai menghapus potongan kode ini membuat error ya..
Nah, itu dia Sebuah Seni Menerapkan “Clean Code”. Semoga setelah membaca ini kalian hijrah ke jalan yang benar yaa !