Quantum Computer dan Segala ‘Ketidakjelasannya’

Kata quantum atau kuantum jika diadaptasi ke dalam Bahasa Indonesia sempat populer di beberapa dekade terakhir. Yang paling terkini adalah istilah quantum computer yang sempat diprediksi menjadi konsep komputasi masa depan. Google dan IBM merupakan dua perusahaan raksasa yang rela melakukan investasi besar-besaran dalam riset dan pengembangan komputer kuantum ini.

 

Salah Kaprah Tentang Kata Kuantum

Secara awam, mungkin kata kuantum kerap dikaitkan dengan hal-hal yang ajaib seperti supernatural, sihir, atau yang lebih parah lagi, klenik. Hal ini merupakan salah kaprah yang sering terjadi di masyarakat Indonesia. Jika benar, tentu saja bengkel body repair bakal mengganti nama metodenya dari ‘ketok magic’ menjadi ‘ketok quantum’.

Mari kita akhiri basa-basi garingnya dan langsung menuju ke pembahasan yang tajam, singkat, dan lebih serius. Seserius balet!

Kata ‘quantum’ berasal dari istilah fisika yang berarti jumlah minimum dalam suatu entitas fisik. Contohnya photon merupakan sebuah kuantum dari cahaya atau radiasi elektromagnetik yang lain. Jika masih bingung, bayangkan saja atom dengan elektron yang mengitari intinya. Inilah kemungkinan penyebab mengapa kuantum kerap disalahartikan dengan sesuatu yang ghaib karena kuantum merupakan hal yang tak kasat mata.

 

Lalu Apa Yang Dimaksud dengan Komputer Kuantum?

Komputer tradisional yang kita kenal sampai saat ini didasari pada bilangan biner yaitu 0 dan 1. Ada atau tidak ada arus. Jadi untuk menciptakan 8 data yang berbeda kita harus menggunakan 3 karakter bit.

Dalam komputer kuantum dikenal istilah quantum bit atau sering disingkat dengan qubits. Jika satu bit ditentukan dari ada atau tidaknya arus, nol atau satu, qubits ditentukan dari arah pergerakan partikel sub-atom. Arah perputaran partikel ini memiliki suatu posisi yang disebut dengan superposition di mana setiap arahnya dapat direpresentasikan dengan bilangan yang berbeda.

Quantum Computer dan Segala 'Ketidakjelasannya' 1

Mirip seperti bumi yang dikelilingi oleh satelit. Arah satelit ini tidak hanya terbatas pada searah jarum jam atau berlawanan dengan jarum jam saja, tapi juga bisa ke depan, ke belakang, ataupun ke arah di antara yang telah disebutkan di atas tadi.

Akan tetapi, tantangan dalam mengembangkan komputer kuantum ini sangatlah besar. Mengukur arah perputaran partikel tidaklah semudah mengukur putaran bola hasil tendangan bebas Christiano Ronaldo. Ada banyak parameter yang dapat mengacaukan pengukuran ini salah satunya gelombang elektromagnetik.

Walaupun banyak metode yang digunakan dalam komputer kuantum, hampir semuanya menggunakan perangkat yang terisolasi dari radiasi elektromagnetik. Hal ini tentunya membutuhkan tempat yang tidak kecil, mungkin hampir seukuran kamar kos-kosan mahasiswa teknologi informasi di Indonesia. Belum lagi harus menjaga suhu partikel tersebut serendah mungkin.

 

Sejauh mana teknologi komputer kuantum telah dikembangkan?

Sejauh artikel ini ditulis, Google mengklaim telah mengembangkan mesin komputer kuantum 72 qubit miliknya yang disebut Bristlecone. Tapi jangan dikira komputer kuantum ini sudah memiliki kemampuan super sehingga bisa menguasai dunia seperti Skynet di film Terminator. Komputer kuantum ini masih jauh dari kata stabil karena hanya mampu mempertahankan ‘quantum microstate’ tidak sampai 1 detik. Ini berarti segala proses data harus selesai dalam waktu kurang dari itu. Proses data yang panjang tidak mungkin berjalan dengan benar apalagi untuk penyimpanan data.

Inovasi juga datang dari perusahaan komputer legendaris seperti IBM. Perusahaan ini telah mengembangkan komputer kuantum dan menawarkan kepada para peneliti  untuk bereksperimen dengan komputer kuantum 20 bit miliknya melalui cloud sejak tahun 2017.

 

Penerapan Komputer Kuantum Bila Dibandingkan Dengan Komputer Tradisional

Komputer kuantum memiliki sistem yang berbeda dari komputer tradisional sekarang sehingga cocok untuk memecahkan masalah matematika seperti mencari bilangan prima dengan jumlah yang besar. Bilangan prima merupakan komponen penting yang digunakan dalam kriptografi. Hal ini menimbulkan kekhawatiran yang jauh lebih besar bila dibandingkan dengan istilah ‘ketok quantum’ yang telah disebutkan di atas.

Kemampuan komputer kuantum ini memunculkan istilah ‘quantum hacking’ yang secara teori bisa menembus sebagian besar sistem keamanan informasi yang ada sekarang. Tapi tenang saja, sampai sekarang komputer kuantum masih jauh dari tahapan itu. Lagipula para peneliti sedang berusaha keras untuk mengembangkan sistem keamanan informasi yang bisa mengatasi masalah ini.

Selain untuk memecahkan masalah matematika, komputer kuantum juga berpotensi untuk menciptakan model reaksi kimia yang sangat kompleks. Tahun 2016, Google berhasil membuat model molekul hidrogen untuk pertama kali dan IBM bahkan telah membuat model perilaku molekul yang lebih rumit lagi.

Itu tadi penjelasan secara singkat tentang komputer kuantum. Kami harap para gamer yang suka membeli hardware canggih terbaru yang cukup menguras isi kantong dan ATM untuk tidak terburu-buru membeli komputer kuantum. Karena selain harganya tak terjangkau, komputer kuantum ini belum bisa diajak untuk bermain game, bahkan untuk game sesimpel Pacman.

Fuchsia OS : Sistem Operasi yang Mungkin akan Menggantikan Android dan Chrome OS

Hampir setahun sudah Google merilis Fuchsia OS. Fuchsia OS merupakan sistem operasi open source besutan Google yang menggunakan micro kernel ‘Zircon’. Hal ini berbeda dengan OS yang dilahirkan Google sebelumnya yaitu Android dan Chrome OS yang  menggunakan kernel Linux.

Jika dilihat dari user interface-nya yang berupa card atau widget, Fuchsia OS merupakan universal device OS. Ini berarti Fuchsia dapat dipasang di smartphones, tablet, ataupun komputer. Dan jika dilihat secara arsitektural, Fuchsia akan mendukung sepenuhnya bahasa-bahasa pemrograman dari ekosistem Google seperti Go, Dart, Rust, Kotlin, dan menggunakan Flutter sebagai framework-nya. Tetapi Google juga tidak menutup diri terhadap bahasa pemrograman di ekosistem Apple yaitu Swift.

Keputusan Google mengembangkan OS baru ini bukan didasari pada keisengan mereka saja. Banyak developer yang sudah memprediksi bahwa cepat atau lambat, Google akan menciptakan OS baru karena beberapa faktor berikut.

 

Fuchsia OS : Sistem Operasi yang Mungkin akan Menggantikan Android dan Chrome OS 2

 

Satu OS untuk Semua

Baru-baru ini Google mengizinkan aplikasi Android untuk diinstall di Chrome OS. Walaupun begitu, fitur ini masih belum berjalan sempurna. Masih banyak aplikasi yang belum mendukung untuk dipasang di Chrome OS. Permasalahan ini dapat terpecahkan jika seandainya mempunyai satu OS yang dapat dijalankan diberbagai platform perangkat. Bahkan kabarnya, para developer Fuchsia ingin OS ini dapat menjalankan Home Speaker keluaran Google dalam 3 tahun mendatang.

 

Selamat Tinggal Java

Sebagian kode pada Android mengandung kode Java di dalamnya. Bahkan pada saat awal pengembangan awal Android, Google menggunakan memasang JVM (Java Virtual Machine) di dalam Android. Maka tidak heran jika dulu aplikasi Android dapat dipasang di ponsel berbasis Java atau sebaliknya. Selain itu, Android Studio juga menggunakan Java sebagai bahasa resmi yang digunakan. Hal ini memicu kekhawatiran Google karena mereka tidak bisa benar-benar berkuasa atas sistem operasinya sendiri.

 

Kernel Yang Lebih Sering Diperbarui

Android dan Chrome OS menggunakan Linux sebagai kernelnya yang berarti sangat bergantung pada usaha OEM untuk membuat dan mengupdate patch. Padahal, kita tahu sendiri OEM sangat malas mengupdate patch apalagi menyentuh bagian yang terlalu dalam seperti kernel sehingga rentan terhadap eksploitasi pihak yang tak bertanggung jawab. Dengan kernel kustom yang dinamai Zircon, aplikasi dalam Fuchsia terisolasi dalam mengakses kernel secara langsung. Beberapa layer keamanan yang didesain untuk rutin diperbarui membuat Fuchsia jauh lebih aman.

 

Ramah Terhadap AI

Secara mendasar, Fuchsia didesain untuk mengakomodasi Google Assistant. Apapun yang nampak di layar atau apapun yang dilakukan pengguna pada perangkatnya bisa dilihat dan dimengerti oleh Assistant. Fitur ini sebenarnya sudah ada di Android Oreo di mana saat kita menekan dan menahan tombol home maka AI akan membaca informasi pada recent apps. Dengan Fuchsia, Assistant diberikan akses yang lebih dalam lagi. AI ini dapat mengakses segala entitas data seperti orang di kontak, history di browser yang kita pakai, event di kalender, atau konsep lain yang akan berusaha dipelajari oleh Assistant.

***

Itulah beberapa faktor yang menyebabkan para pengamat teknologi informasi berpendapat bahwa Fuchsia akan menggantikan Android dan Chrome OS. Walaupun begitu Google  sempat membantah pernyataan CNET bahwa Fuchsia OS akan menggantikan Android dan Chrome OS dalam jangka waktu lima tahun. Google hanya menyatakan bahwa Fuchsia merupakan salah satu dari sekian banyak project eksperimen yang dilakukan Google.

Update 2 Juli 2019 :

Google akhirnya merilis website untuk development Fuchsia OS yang berisi dokumentasi. 

Scrum! Sebuah Framework Project Management Pendobrak Tradisi

Istilah scrum mulai mencuat sejak tren digital meningkat tajam. Banyaknya tech start up yang lahir menuntut pengembangan produk piranti lunak dilakukan dengan tempo yang sesingkat-singkatnya dan dengan tim yang seramping-rampingnya. Walaupun begitu, masih belum banyak yang belum mengetahui apa arti sebenarnya dari scrum yang sering digembar-gemborkan oleh pelaku tech start up ini.

 

Berawal Dari Agile

Scrum merupakan sebuah framework project management yang bermula dari metode agile. Bagaikan pasangan yang baru 12 jam pacaran, hubungan agile dan scrum tak terpisahkan. Atau jika ingin mencari perumpamaan yang lebih akurat lagi, agile bisa diumpamakan sebagai bahasa pemrograman php dan scrum adalah Laravel. Scrum sendiri merupakan framework yang paling populer dalam agile (baca artikel “Agile: Project Management yang Fokus ke Pengguna“) jauh mengungguli kanban dan iterative development.

Metode agile mengharuskan sebuah pekerjaan dalam suatu project dibagi hingga bagian yang lebih kecil lagi dan sering disebut sprints oleh para pengguna scrum. Metode ini memungkinan sebuah pengembangan produk piranti lunak berjalan tanpa adanya project manager. Karena bagian pekerjaan dipecah menjadi beberapa bagian kecil, setiap bagian dari tim sudah mengetahui apa dan kapan sprints masing-masing harus dikerjakan. Bahkan dengan metode agile, sebuah tim dapat mengetahui workflow dari tim lain sehingga memudahkan setiap bagian dari organisasi untuk berkolaborasi.

 

Sejarah Scrum

Scrum diperkenalkan pertama kali pada tahun 1986 oleh Hirotaka Takeuchi dan Ikujiro Nonaka dalam sebuah artikel di The Harvard Business Review yang berjudul “The New Product Development Game.” Mereka menggunakan metafora untuk menggambarkan dua pendekatan yang berbeda. Sebagian tim seperti pelari estafet yang berlari secara bergantian dengan mengoper tongkat estafet dan berada dalam satu jalur. Tim yang lain bagaikan tim rugby yang bermain secara bersamaan, saling mengoper satu sama lain jika dibutuhkan, dan disatukan oleh kesamaan objective untuk mencetak skor sebanyak mungkin.

Takeuchi dan Nonaka beranggapan bahwa tim ‘pelari estafet’ tersebut ketinggalan jaman dan percaya bahwa cara ‘tim rugby’ akan memberikan perusahaan sebuah kekuatan untuk bersaing di dunia bisnis multinasional.

Lalu beberapa tahun setelahnya, John Sutherland, John Scumniotales, dan Jeff McKenna mengatakan bahwa mereka telah mencoba scrum di Easel Corp pada tahun 1993. Pada tahun 1995, Ken Schwaber dan Sutherland berkolaborasi dengan beberapa orang (ternasuk McKenna dan Scumniotales) mempresentasikan sebuah paper di OOPSLA yang berjudul “SCRUM Development Process.” Hasilnya? Scrum membuat para developer mempertanyakan efektivitas dari metode klasik ‘waterfall.’

 

Prinsip dan Komponen Scrum

Ada beberapa nilai di dalam scrum yang menjadikan framework ini paling populer di antara metode agile. Beberapa nilai tersebut adalah :

  • Commitment
    Sebuah tim dalam scrum mengarahkan dan mengawasi dirinya sendiri. Setiap anggota tim berarti telah mengerti dengan tanggung jawabnya dan mendedikasikan dirinya untuk menyelesaikan sebuah pekerjaan yang telah disepakati bersama.
  • Courage
    Sebuah tim merupakan satu entitas di mana gagal atau berhasilnya sebuah ide beserta eksekusinya ditanggung bersama.
  • Focus
    Prinsip scrum yang paling terasa adalah fokus. Metode scrum membatasi distraksi sehingga setiap anggota tim akan lebih berkonsentrasi pada pekerjaan yang harus diselesaikan pada hari itu.
  • Openness
    Sebuah tim diberikan kesempatan untuk berkumpul dan berbagi agar setiap anggotanya dapat menyampaikan ide, permasalahan, atau pun pandangannya tentang sebuah pekerjaan.
  • Respect
    Setiap tim terdiri dari anggota yang memiliki kelebihan dan kekurangan masing-masing. Setiap kelebihan dan kekurangan tersebut harus dihormati agar tidak saling menyalahkan jika membahas suatu kendala atau kegagalan.

 

Selain prinsip tersebut, Scrum juga memiliki beberapa komponen yang membedakannya dari framework manajemen yang lain. Komponen itu adalah product owner, scrum master, dan scrum development team.

  • Product Owner
    Anggota tim ini berperan sebagai perantara antara customer atau klien dan tim development. Product owner bertanggung jawab untuk memastikan produk akhir sesuai dengan ekspektasi klien atau customer dan memastikan bahwa ekspektasi klien sesuai dengan kemampuan development team.
  • Scrum Master
    Scrum master merupakan seorang fasilitator bagi seluruh anggota tim agar sistem scrum dapat berjalan semestinya. Kebanyakan peran scrum master ini disalahartikan sebagai ‘supervisor’ yang mengawasi setiap anggota tim. Padahal seperti yang telah disebutkan di atas, scrum mewajibkan anggota timnya untuk mengawasi dirinya sendiri. Peran scrum master hanyalah menjadwalkan seluruh ritual dari scrum dan menjadi moderator di dalamnya.
  • Scrum Development Team
    Tim inilah yang bertanggung jawab membuat, menguji, dan mengembangkan suatu produk.

 

Sebuah Framework Dengan Ritual

Dalam prosesnya, scrum mengajak para praktisinya untuk secara terus-menerus mengevaluasi bagian mana dari pekerjaan kita yang berhasil dan mana yang tidak. Dalam scrum, komunikasi adalah bagian penting dari sebuah proses. Oleh karena itu, scrum memiliki beberapa ritual meeting yang disebut dengan event. Beberapa event itu adalah :

 

Daily Scrum

Daily scrum merupakan rapat berdiri yang sangat singkat yang dilakukan setiap hari. Pada setiap kali pertemuan, anggota tim membahas tentang pekerjaan yang telah selesai di hari sebelumnya dan merencanakan pekerjaan apa yang harus selesai dalam waktu 24 jam ke depan. Dalam kesempatan inilah, setiap anggota tim bisa mengungkapkan masalah yang mungkin akan timbul dalam pengerjaan suatu project.

 

Sprint Planning Meeting

Sprint sebenarnya merujuk pada pekerjaan mana yang harus diselesaikan dalam satuan waktu. Waktu untuk setiap sprint berbeda-beda. Di meeting inilah tim merencanakan dan  mensinkronisasi semua sprint dalam jangka waktu seminggu ataupun sebulan tergantung dari jenis project.

 

Sprint Review

Di dalam meeting inilah semua pihak yang terlibat dalam sebuah project bertemu untuk meninjau sebuah sprint yang telah dikerjakan. ‘Product owner’ bisa bertindak sebagai stakeholder yang memberikan pandangan tentang hasil produk final dari sebuah sprint, tapi alangkah baiknya jika stakeholder sendiri ikut dalam sprint review ini.

 

Sprint Retrospective

Sprint retrospective diadakan saat seluruh sprint sudah selesai dikerjakan. Di dalam ritual ini, anggota tim development mengevaluasi seluruh proses sprint. Fokus dari ritual ini adalah ‘bagaimana pekerjaan yang lalu dikerjakan’ bukan ‘apa yang telah dikerjakan.’ Jadi goal dari ritual ini adalah lebih ke pengembangan diri dari setiap anggota tim bukan produk karena  untuk evaluasi produk sudah dilakukan pada saat sprint review.

 

Scrum! Sebuah Framework Project Management Pendobrak Tradisi 3

 

Artefak Agar Tidak Lupa Dengan Sejarah

Salah satu kelebihan scrum adalah dokumentasi dari sebuah proses yang disebut dengan ‘artefak.’ Artefak ini membuat scrum menjadi sebuah framework yang membuat proses perencanaan, komunikasi, dan evaluasi menjadi mudah. Inilah jenis-jenis artefak dalam scrum :

  • Product Backlog
    Yang dimaksud dengan product backlog adalah bagian dari produk baik itu fungsi atau fitur dari suatu produk yang harus diselesaikan. Product backlog ini biasanya disusun oleh product owner bersama klien.
  • Sprint Backlog
    Sprint backlog adalah turunan dari product backlog yang disusun dalam sprint planning meeting. Sprint backlog ditujukan agar setiap tim dapat mengetahui bagian mana saja yang harus dia kerjakan dalam suatu product backlog.
  • Product Increment
    Product increment terdiri dari product backlog yang sudah selesai dikerjakan. Product increment ini mencerminkan sampai sejauh mana progres dari pengerjaan suatu product.
  • Burn Down
    Burn down adalah visualisasi data yang berisikan informasi pekerjaan yang belum terselesaikan dan waktu yang tersisa. Burn down menampilkan chart yang membandingkan linimasa pengerjaan ideal dengan linimasa pengerjaan aktual dari sebuah sprint.

 

Itulah tadi penjelasan singkat mengenai scrum. Jika kita dapat melihat gambaran besarnya, kita akan mengetahui alasan mengapa tech startup kekinian memfavoritkan scrum sebagai framework kerja dalam pengembangan sebuah produk. Tentu saja framework ini bukan tanpa kelemahan. Banyak kendala untuk mentransformasikan sistem manajemen klasik ‘waterfall’ seperti SDM yang masih awam sampai kendala tim yang terlalu besar sehingga scrum tidak berjalan efektif. Solusi yang paling masuk akal untuk menerapkan pada bisnis yang sudah lama berdiri adalah dengan mengadaptasikan scrum secara pelan-pelan ke dalam konsep waterfall yang sudah mengakar dari lama.

Front-End vs Back-End Developer. Apa Bedanya?

Jika Anda mengetikkan URL di tab browser Anda dan menekan enter. Seketika Anda disuguhkan dengan tamplilan visual web yang memukau. Animasi-animasi indah serta konten interaktif yang memberikan experience lebih kepada kita sebagai pengguna terkadang menggelitik rasa penasaran kita, bagaimana membuat website yang seperti ini?

Sering kali website yang eksepsional seperti itu dibuat tidak hanya oleh seorang web developer saja melainkan satu tim dengan spesialisasi masing-masing. Dalam tim tersebut biasanya terdiri dari 3 profesi yaitu UI/UX designer, front-end developer, dan back-end developer. Apa saja perbedaan pada setiap profesi tersebut? Yuk kita bahas satu per satu!

 

UI/UX Designer

Kita tidak akan banyak membahas tentang UI/UX designer karena profesi ini lebih ke arah desain (baca: Pengembangan UI/UX: Merancang Nyawa Sebuah Aplikasi jika ingin mengetahui tentang pengembangan UI/UX lebih dalam). Seperti halnya arsitek, UI/UX designer sangat berperan dalam menentukan estetika dan pengalaman pengguna dalam sebuah web yang Anda kunjungi. Peran UI/UX designer hanya sebatas membuat wireframe (sketsa layout untuk sebuah web) dan tentunya web design itu sendiri mulai dari komposisi letak, jenis dan ukuran font, sampai warna-warna yang digunakan. Seorang UI/UX designer sama sekali tidak mengotori tangannya dengan menulis kode. Walaupun begitu biasanya UI/UX designer memahami bagaimana HTML, CSS, dan JavaScript bekerja sehingga tidak ngawur dalam mendesain website.

 

Front-End Developer

Setelah UI/UX designer menuangkan ide-ide cemerlang dan tangan terampilnya dalam desain sebuah web, kini giliran front end developer yang akan meneruskan proyek membangun website ini.

Jika tadi UI/UX designer kita ibaratkan sebagai arsitek, si front end developer ini adalah engineer-nya. Tugas front end developer adalah merealisasikan desain kreatif nan imajinatif dari sang UI/UX designer. Jika ada ungkapan “architect’s dream is the engineer’s nightmare” di proyek properti, di proyek website ini ungkapannya hampir sama yaitu “Designer’s dream is front end developer’s nightmare”.

Ya! Tugas front end developer adalah memastikan konten yang ditampilkan di browser pengguna berjalan sesuai desain disepakati. Header yang menggeser ke samping atau yang disebut slider, ikon menu yang berubah saat di-scroll, serta animasi-animasi lucu dan menggemaskan yang membuat kita ingin mencubit layar monitor adalah fitur yang ditulis dengan kode pemrograman oleh sang front-end developer. Bahasa teknisnya, front end developer adalah orang yang bertanggung jawab atas semua kode yang dikirim dari server dan diterima oleh browser masing-masing pengguna.

Untuk menjadi seorang front end developer, kita mempelajari bahasa mark up seperti HTML dan CSS serta bahasa pemrograman JavaScript. JavaScript sendiri mempunyai banyak library dan framework seperti jQuery, AngularJS, ReactJS, dan lain-lain. Seorang front end developer juga harus mengerti bagaimana RESTful Service dan API bekerja. RESTful sangat dibutuhkan ketika kita ingin menghubungkan web kita dengan aplikasi web lain seperti Facebook atau Twitter.

Seperti profesi yang lain, ada bagian di mana menjadi seorang front end developer itu menyenangkan dan ada bagian tidak enaknya pula. Bagian menyenangkannya adalah semua output dari kode yang kita tulis dapat dilihat dengan mata sehingga memudahkan kita untuk mencari bagian mana dari kode yang kita tulis yang tidak berjalan. Bagian tidak enaknya adalah web yang kita buat harus berjalan dengan sempurna di berbagai browser dan berbagai perangkat yang dimiliki pengguna, apalagi sekarang lebih banyak orang yang membuka web dari perangkat mobile.

 

Back-End Developer

Jika dummy website sudah dibuat dan berjalan semestinya di browser masing-masing pengguna, saatnya back end developer mengambil alih tanggung jawab. Kode HTML, CSS, dan JavaScript untuk setiap jenis atau bagian halaman dipecah lagi agar dapat dijadikan semacam template. Bagian footer yang pasti ada di setiap jenis halaman misalnya, kita tidak perlu menulis kode footer tersebut berulang-ulang setiap akan membuat halaman baru. Di sinilah peran back end developer diperlukan.

Back end developer bertanggung jawab memprogram server agar mengirimkan dokumen (dalam hal ini HTML, CSS, dan kode JavaScript) ke browser pengguna setiap kali pengguna memintanya melalui http request. PHP, JavaScript, Python, dan Ruby adalah bahasa pemrograman yang biasanya dipakai di server.

Back end developer juga akan sering berkutat dengan database dan manajemen konten di suatu website. Bentuk dari tanggung jawab tersebut yang paling bisa dilihat adalah Content Management System (CMS). Kita tentunya sudah sering memakai blog seperti WordPress dan blogspot. Nah, CMS ini mirip dengan aplikasi blogging sehingga memudahkan admin web untuk mengisi konten tanpa harus menuliskan kode HTML maupun CSS. Tentu saja tidak semua back end developer membuat sendiri CMS website yang sedang mereka kembangkan. Banyak dari back end developer yang memakai CMS yang dikembangkan oleh pihak ketiga seperti WordPress yang merupakan CMS open source yang bisa kita install sendiri di server kita.

Selain CMS dan database, seorang back end developer juga bertanggung jawab memastikan keamanan sebuah web. Bagian yang paling menjengkelkan adalah ketika ada seorang ‘penyusup’ dapat mengakses web server dapat mengacak-acak konten, maupun database, dan yang terparah adalah mengganti seluruh system di server kita.

 

Full Stack Developer

Sebenarnya tidak ada yang perlu dijelaskan lagi mengenai full stack developer karena full stack adalah front end dan back end developer yang dirangkap oleh 1 orang. Perkembangan teknologi yang cepat membuat batasan front end dan back end semakin kabur. Apalagi sekarang banyak diantara bisnis yang menginginkan hasil cepat dan murah sehingga para developer ‘penyendiri’ mulai mengembangkan dirinya menjadi full stack untuk menghemat waktu dan tentu saja biaya produksi.

Memang kebanyakan dari full stack developer memiliki kecenderungan untuk lebih ahli di sisi front end atau back end. Sangat sedikit yang kemampuannya benar-benar hebat di dua bidang tersebut sekaligus. Selain memiliki logika dan problem solving yang baik seperti back end developer, seorang full stack developer juga dituntut untuk memiliki kreativitas yang tinggi seperti front end developer.

Full stack developer merupakan profesi yang populer setelah Facebook merekrut full stack developer walaupun untuk mengerjakan bagian front end saja atau back end saja. Alasannya adalah full stack developer lebih paham bagaimana proses pembuatan website di dua bagian tersebut sehingga mempermudah komunikasi antara divisi front end dan back end.

Jika Anda tertantang untuk menjadi seorang full-stack developer dari nol, Anda bisa ikut bootcamp full stack web programming yang diselenggarakan Inixindo Jogja. Batch bootcamp ini dibuka tiap bulan.

Almanak Sejarah Singkat Tak Akurat Bahasa Pemrograman

Almanak Sejarah Singkat Tak Akurat Bahasa Pemrograman

Sepertinya halnya makhluk hidup, bahasa sebagai alat berkomunikasi terus berevolusi dari waktu ke waktu. Hal ini juga dialami oleh bahasa pemrograman, alat komunikasi antara manusia dengan mesin. Bedanya, jika diperlukan waktu berabad-abad untuk bahasa manusia berevolusi, bahasa pemrograman hanya membutuhkan waktu maksimal 10 tahun saja untuk berevolusi.

Hal ini disebabkan oleh kemajuan teknologi yang semakin cepat dan juga umur mesin atau komputer yang tidak selama manusia. Berapa banyak komputer yang diproduksi 15 tahun lalu masih hidup sampai sekarang? Apalagi sekarang perkembangan teknologi informasi lebih ke arah mobile. Tentunya akan menjadikan bahasa pemrograman yang kaku alias tidak bisa menyesuaikan diri di berbagai macam platform akan ditinggalkan.

Seperti kisah cinta yang bisa berujung manis dan lebih sering berujung pahit, kisah bahasa pemrograman juga mengalami hal yang sama. Ada yang populer dan menjadi idola developer kekinian ada juga yang digunakan programmer lawas hanya untuk bernostalgia mengenang kejayaan masa lampau. Seperti apa sih ceritanya? Yuk, kita simak almanak sejarah singkat tentang bahasa pemrograman yang tidak akurat ini!

 

1800 – Mesin Pemintal

Yup! Anda tidak salah baca. Mesin pemintal adalah cikal bakal lahirnya pemrograman. Mungkin inilah satu-satunya mesin yang menggunakan multi-thread secara harfiah. Joseph Marie Jacquard membuat mesin pemintal yang sebelumnya dilakukan secara manual menjadi bisa diprogram sesuai dengan keinginan manusia. Memang pemrograman yang dilakukan masih sebatas pemrograman mekanis karena pada saat itu bohlam lampu saja masih belum ditemukan. Mesin ini diperintah melalui media kartu berlubang yang terbuat dari kayu.

 

1842 – Algoritma

Pada tahun ini, Ada Lovelace seorang mathematician dan juga seorang penulis menciptakan sebuah mesin penghitung. Berbeda dengan mesin penghitung seperti simpoa, mesin ini dapat melakukan penghitungan yang jauh lebih rumit daripada itu. Pada suatu hari, Ada Lovelace merasa bosan dan tidak ingin dianggap makan gaji buta. Dia kemudian mengeluarkan buku panduan yang disebut-sebut algoritma pertama yang pernah ditulis untuk memrogram sebuah mesin walaupun saat itu belum ada komputer untuk diprogram.

 

1936 – Turing

Pada tahun ini, Alan Turing menerbitkan sebuah makalah berjudul “On Computers Numbers, with Application to the Entscheidungsproblem” yang membuktikan bahwa the turing machine yang dia ciptakan dapat memecahkan segala problem matematika jika ditunjang dengan algoritma yang benar. Mesin inilah yang kemudian dianggap sebagai awal lahirnya komputer modern. Sebenarnya ada satu matematikawan lagi pada tahun ini yang bernama Alonzo Church yang juga memecahkan Entscheidungsproblem tapi tidak bisa seterkenal Alan Turing (mungkin karena Alonzo Church tidak mirip dengan Benedict Cumberbatch. 🙂

 

1957 – FORTRAN

John Backus menciptakan bahasa pemrograman pertama yang hampir mirip dengan bahasa pemrograman masa kini dan benar-benar digunakan programmer untuk memrogram komputer.

 

1959 – COBOL

Karena Grace Hopper tidak bisa berbahasa Jawa, dia lalu menciptakan bahasa pemrograman yang lebih mendekatkan diri ke Bahasa Inggris yang disebut COBOL. COBOL merupakan singkatan dari Common Business Oriented Language. Benar kan? Dari singkatannya saja kita bisa tahu kalau bahasa ini mirip dengan Bahasa Inggris.

 

1964 – BASIC

John Kemeny dan Thomas Kurtz menganggap bahwa bahasa pemrograman yang ada terlalu rumit dan memutuskan untuk back to basic dengan cara menciptakan bahasa pemrogaman yang disebut BASIC.

 

1970 – Pascal

Niklaus Wirth suka membuat bahasa pemrograman. Maka dari itu dia membuat bahasa Pascal dan bahasa pemrograman lainnya. Dia juga mencetuskan Wirth’s Law yang mengukuhkan Moore’s Law karena software developer cenderung menulis program yang semakin boros resource yang bahkan komputer mainframe susah payah untuk menjalankan software tersebut.

 

1972 – C

Dennis Ritchie yang merasa bosan lalu membuat sebuah bahasa pemrograman C. Banyak yang berspekulasi mengapa disebut C. Ada yang mengatakan gara-gara si Dennis hanya mendapatkan nilai C di kelas Bahasa Inggris dan ada yang mengatakan C diambil dari ‘curly braces’ di mana banyak digunakan di bahasa pemrograman ini. Masih merasa makan gaji buta akhirnya si Dennis bersama temannya menciptakan sistem operasi yang disebut Unix.

 

1980 – Object Oriented Programming

Alan Kay menemukan bahasa pemrograman yang memiliki paradigma Object-Oriented Programming dan dinamakan SmallTalk. Di bahasa ini, semua adalah object, bahkan object adalah object. Tak ada yang mengerti mengapa bahasa pemrograman ini disebut SmalTalk.

 

1983 – C++

Bjarne Stroustrup berkelana dengan mesin waktu dan saat sampai di masa lalu dia menemukan fakta bahwa C terlalu lama di-compile. Dia lalu kembali ke masa depan lalu menambahkan semua fitur di C dan dinamai C++.

 

1986 – Objective C

Brad Cox dan Tom Love memutuskan untuk membuat versi C yang tidak dapat dibaca yang terinspirasi dari SmallTalk. Semua orang tidak dapat mengerti syntax dari Objective C ini.

 

1987 – Perl

Larry Wall menciptakan bahasa Perl. Tiba-tiba dia ingin pergi umrah dan mengeluarkan buku “Programming Perl” dengan unta yang dijadikan sebagai model cover buku.

 

1991 – Python

Guido Van Rossum tidak menyukai kurung kurawal (curly braces) dan akhirnya menciptakan Python bahasa pemrograman yang namanya justru lebih mirip kurung kurawal bila dibandingkan dengan bahasa C.

 

1994 – PHP

Rasmus Leedorf membuat template engine untuk CGI scripts yang akan digunakan untuk halaman web pribadinya dan kemudian merilis dot-file di web. Semua orang akhirnya menggunakan dot-file untuk semua hal. Karena semangat yang terlalu menggebu-gebu akhirnya si Rasmus memberikan database binding ke dot-file ini dan menyebutnya PHP.

 

1995 – Ruby

Yukihiro Matsumoto tidak begitu bahagia, programmer lain juga tidak bahagia. Dia menciptakan Ruby agar semua bahagia. Setelah menciptakan Ruby, Matz (nama panggilan Matsumoto) menjadi bahagia, komunitas Ruby juga bahagia, dan semua orang bahagia.

 

1995 – Javascript

Brendan Eich memanfaatkan akhir pekannya untuk mendesain bahasa yang akan digunakan seluruh web di dunia dan mungkin juga Skynet. Dia menawarkan ke Netscape dan bilang bahwa “ini adalah LiveScript”. Pada saat Netscape sedang direview semua orang sedang keranjingan Java dan akhirnya mereka memutuskan untuk menggunakan kurung kurawal (curly braces) serta menyebutnya Javascript.

Java akhirnya diberi trademark yang dapat menyebabkan masalah pada Javascript. Jadi, Javascript kemudian diberi nama ECMAScript tapi sampai saat ini orang-orang masih menyebutnya Javascript.

 

1996 – Java

James Gosling membuat Java, bahasa pemrograman yang sangat terlalu digembar-gemborkan sekali sebagai bahasa OOP (Object-Oriented Programming) pertama dimana desain dianggap jauh lebih penting daripada pragmatisme.

 

2001 – C#

Anders Hejlsberg menggubah kembali Java dan menyebutnya C# karena menurutnya memrogram dengan C jauh lebih keren dibandingkan dengan Java. Semua orang suka dengan versi baru Java ini karena benar-benar berusaha tidak mirip dengan Java.

 

2005 – Ruby On Rails

David Heinemeier Hansson menciptakan framework untuk Ruby dan menyebutnya Ruby On Rails. Sekarang orang-orang tak ingat lagi jika Ruby dan Ruby On Rails itu merupakan bagian yang terpisah.

 

2006 – jQuery

John Resig merancang sebuah library untuk JavaScript. Semua orang menganggap jQuery adalah bahasa pemrograman. Sekarang orang bisa mendapatkan penghasilan dengan cara meng-copy-paste kode jQuery dari internet.

 

2009 – GO

Ken Thompson dan Rob Pike memutuskan untuk membuat bahasa pemrograman mirip C tapi dengan safety equipment, menamakannya “GO” , dan membuatnya lebih marketable dengan memakai Gophers sebagai maskot yang imut.

 

2010 – Rust

Graydon Hoare juga ingin membuat bahasa seperti bahasa C. Dia lalu menamakannya Rust. Tiba-tiba semua orang ingin semua software ditulis dengan Rust sesegera mungkin. Karena ingin dompetnya setebal ensiklopedia, Graydon bergabung dengan Apple untuk mengerjakan Swift.

 

2012 – TypeScript

Anders Hjelsberg ingin menulis C# di web browser. Dia merancang TypeScript, bahasa pemrograman yang mirip JavaScript dengan lebih banyak unsur Java di dalamnya.

 

2013 – CoffeeScript

Jeremy Ashkenas ingin bahagia seperti para developer Ruby. Jadi, dia menciptakan CoffeeScript yang ter-compile menjadi JavaScript tapi lebih mirip Ruby. Jeremy Ashkenas tak akan pernah menemukan arti kebahagiaan sejati seperti Matz dan developer Ruby lainnya.

 

2014 – Swift

Chris Lattner menciptakan Swift dengan obyektif utama “tidak menjadi Objective C.” Pada akhirnya, Swift lebih mirip Java.

 

Itulah tadi sejarah singkat tapi tak akurat tentang bahasa pemrograman. Kami harap artikel ini dapat dijadikan bacaan ringan yang menghibur untuk mengisi waktu luang seperti menunggu air yang Anda masak untuk membuat kopi matang. Kami sangat tidak menganjurkan artikel ini dijadikan referensi baik skripsi ataupun thesis. Kami menyediakan link ke Wikipedia jika Anda ingin sejarah yang akurat.

7 Jurus (Tips & Trik) Belajar Coding Secara Otodidak

Di artikel sebelumnya, telah dibahas tentang kondisi yang dapat mempersulit ataupun mempermudah untuk belajar coding. Seperti yang kita janjikan di artikel kali ini kita akan membahas tentang bagaimana kita memanfaatkan kondisi yang mempermudah dan mengatasi kondisi yang mempersulit saat ini untuk belajar pemrograman.

Di dunia musik, tak jarang kita selalu menjumpai gitaris-gitaris hebat yang dulunya belajar memainkan gitar secara otodidak. Hal ini tidak jauh berbeda dengan dunia per-coding-an atau pemrograman. Sebut saja Bill Gates, Elon Musk, dan Larry Page para pendiri perusahaan raksasa di bidang teknologi informasi ini belajar pemrograman secara otodidak di usia dini walaupun pada akhirnya mereka mengambil kuliah di jurusan ilmu komputer.

Memang banyak yang bilang seiring bertambahnya umur, neuron yang ada di otak tidak selentur saat umur kita masih muda. Jangan patah semangat dulu jika Anda bukan lulusan ilmu komputer atau teknik informatika dan baru tertarik belajar coding saat sudah beranak-pinak. Selama logika Anda masih jalan, tidak ada istilah ‘tidak mungkin’ untuk belajar pemrograman walaupun membutuhkan ketekunan ekstra. Lalu apakah ada tips, trik, jurus, atau aji-ajian khusus bagi orang awam untuk belajar coding? Tentu saja ada dan tidak perlu mengguyur komputer Anda dengan air kembang tujuh rupa agar Anda bisa mengetik kode pemrograman selancar mengetik di group chat Whatsapp atau komentar di media sosial. Berikut tips, trik, atau aji-ajian yang kami siapkan khusus untuk Anda yang masih ragu untuk belajar coding :

 

Belajar Bahasa Inggris

Trik ini adalah yang paling tidak berhubungan dengan dunia per-coding-an atau pemrograman tapi justru yang paling penting. Kenapa? Karena dokumentasi tools & framework serta tutorial bahasa pemrograman jauh lebih banyak yang ditulis menggunakan Bahasa Inggris. Akan beda ceritanya jika Anda mempunyai penerjemah pribadi dan menerjemahkan setiap kata demi kata di layar monitor Anda. Coba saja bandingkan kata kunci “tutorial pemrograman” dan “programming tutorial” di mesin pencari Google. Selain itu forum-forum developer juga banyak menggunakan Bahasa Inggris seperti Stack Overflow contohnya. Dan kita tidak mungkin berkomunikasi dengan developer dari seluruh dunia dengan menggunakan Bahasa Swahili bukan?

Tidak hanya itu saja, Bahasa Inggris juga penting jika kita sudah ahli dalam per-coding-an dan berniat menjadi seorang freelancer dan mencari pekerjaan dari situs crowdsourcing. Ditambah lagi jika kita menganggap nilai tukar Dollar ke Rupiah lebih menguntungkan bagi seorang developer. Mulailah belajar Bahasa Inggris sejak dini karena belajar Bahasa Inggris bukan hal yang sulit untuk dilakukan dan juga bisa dilakukan secara otodidak.

 

Menguasai Konsep Dasar Terlebih Dahulu

Segala yang instan tidak selalu baik apalagi dalam hal pembelajaran. Godaan dalam belajar coding yang paling besar adalah framework. Dengan framework kita bisa membuat sebuah app dalam hitungan hari dari yang sebelumnya belum pernah membuat app sama sekali. Masalahnya adalah jika kita dihadapkan dengan masalah-masalah spesifik yang harus diselesaikan dengan fungsi-fungsi dasar bahasa pemrograman. Tentunya kita akan kebingungan karena kita baru berputar-putar di permukaaan.

Belajar konsep dasar pemrograman terlebih dahulu seperti ‘if’ dan ‘loops’ juga akan meningkatkan kemampuan kita dalam membaca kode yang ditulis orang lain. Hal ini berguna dalam mengerjakan project kolaborasi dengan developer lain. Dan yang paling penting dalam menguasai konsep dasar pemrograman adalah kita bisa menuangkan kreativitas kita dalam wujud baris kode. Anda akan merasakan sendiri saat Anda sudah terbiasa untuk menulis kode pemrograman.

 

Buat Rencana dan Jadwal Latihan Tersendiri

Musuh paling besar dalam latihan coding yang datang dari diri sendiri adalah rasa malas. Rasa malas inilah yang menghentikan semangat menggebu-gebu yang lahir di awal proses belajar coding. Kondisi yang sering dialami para coder (sebutan orang yang melakukan aktivitas coding, Red.) adalah ketika mereka sudah bisa membuat suatu aplikasi sederhana dari tutorial dan kemudian berhenti di situ saja. Mereka tidak mencari tutorial membuat jenis aplikasi yang lain.

Untuk menghindari hal tersebut, kita bisa membuat jadwal khusus untuk latihan pemrograman. Jika diibaratkan seorang Samurai, seorang coder haruslah menempuh “jalan pedang”. Mungkin istilah “jalan pedang” ini bisa diganti dengan “jalan keyboard” karena senjata yang digunakan adalah keyboard bukan pedang.

Bagi para coder yang menganggap coding cuma sebagai hobi, latihan tidak harus setiap hari. Sabtu & Minggu yang sering digunakan untuk aktivitas hobi bisa menjadi hari di mana latihan coding dijadwalkan. Bagi yang serius mendalami dunia per-coding-an untuk dijadikan profesi, mungkin Anda harus menyisihkan waktu 2-4 jam setiap hari untuk latihan. Ingat! Coding bisa dikategorikan sebagai keterampilan yang jika tidak rutin diasah keterampilan tersebut akan tumpul dengan sendirinya.

 

Buat Fungsi/Program Yang Belum Pernah Anda Buat

Apakah app developer bisa dikategorikan sebagai profesi kreatif? Tentu saja bisa! Secara umum, aplikasi atau program dibuat untuk memecahkan masalah dan tentunya kreativitas diperlukan untuk mencari solusi yang akan dituangkan dalam baris kode pemrograman. Apalagi jika Anda berniat untuk menjadi front-end developer, tentunya Anda akan sering berurusan dengan desain dan tata letak.

Selain itu, kreativitas juga diperlukan saat kita masih dalam tahap belajar. Kreativitas akan membuat kita tertantang untuk menciptakan program dan fungsi baru. Sebenarnya poin ini berhubungan dengan poin sebelumnya, jika kita merasa tertantang untuk membuat fungsi yang belum pernah kita buat tentu, kita akan merasa penasaran dan tentunya kita akan meluangkan waktu untuk latihan coding. Dengan menentukan objective pembelajaran kita dan perencanaan yang baik, kita bisa menjadikan latihan coding layaknya sebuah game yang selalu membuat kita ingin terus naik level.

 

Bersosialisasi Dengan Teman Seperjuangan

I feel you, bro!” Kalimat yang sering dijadikan meme ini menunjukan simpati dan empati ini sangat membantu kita untuk menumbuhkan rasa semangat dalam belajar coding. Inilah manfaat utama mengapa kita juga harus bersosialisasi dengan sesama coder ataupun developer yang sudah berpengalaman. Kebanyakan dari mereka yang sudah malang melintang di dunia per-coding-an juga tak segan berbagi ilmu dengan para “juniornya.” Mereka sudah pernah berada dalam posisi baru belajar.

Ada bermacam-macam cara untuk bersosialisasi dengan para coder. Selain aktif bertanya-tanya di forum online nasional maupun internasional, kita ikut acara-acara komunitas IT yang biasanya tidak dipungut biaya. Tidak tertutup kemungkinan pula jika kita akan mendapatkan kesempatan bekerja di acara-acara tersebut.

 

Ikut Pelatihan, Kursus, Training, Atau Workshop

Cara yang terakhir adalah cara shortcut jika Anda tidak punya banyak waktu untuk melakukan tips & trik sebelumnya. Anda bisa ikut kursus programming di lembaga pelatihan IT. Memang kita harus mengeluarkan uang yang cukup lumayan. Akan tetapi jika kita menghargai waktu yang kita miliki secara tinggi maka uang yang kita keluarkan untuk pelatihan tentu akan sebanding dengan apa yang kita dapatkan.

Coding bootcamp juga dapat jadi pilihan. Beberapa coding bootcamp bahkan ada yang menggratiskan pelatihan yang bersifat intensif tapi Anda harus diseleksi secara ketat mirip dengan melamar pekerjaan. Ada juga coding bootcamp dengan biaya puluhan juta rupiah yang menjanjikan pesertanya akan ditempatkan ke perusahaan bergengsi maupun start up. Tinggal pandai-pandainya Anda memilih mana yang lebih cocok dengan tujuan Anda belajar coding.

(Jika Anda tertarik dengan coding bootcamp dari Inixindo Jogja silakan menuju laman Full-Stack Web Programming Bootcamp.)

***

 

Nah, bagaimana? Masih ragu untuk belajar coding? Jika masih bingung mulai dari mana mungkin syllabus training IT di Inixindo Jogja dapat dijadikan panduan dari mana Anda harus memulai menempuh “jalan keyboard” seorang coder.