Pilihan Profesi Coder/Programmer
Published: 2020-01-23 10:38:14

*Artikel ini merupakan bagian dari modul Pengenalan Coding di Kelas Newbie Komunitas Coding Mum Indonesia 2020*

Ok, kita telah belajar bagaimana komputer bekerja, apa itu coding, dan mengetahui ragam jenis bahasa pemrograman. Lalu kita tertarik untuk memulai belajar coding dan membuat program. Pertanyaan yang sering muncul adalah:
Saya mesti mulai dari mana? 
Bahasa apa yang perlu saya pelajari? 
Ritual apa yang perlu saya lakukan tiap hari? #eh

{% youtube GyGdhSUEOjs %}

Komputer saat ini ada di mana-mana, digunakan di berbagai bidang. Apapun profesimu saat ini kemungkinan besar ada kebutuhan hadirnya teknologi komputer yang akan membantu pekerjaan. 

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/45ydbdk696q4nxp65m1e.jpg)

Dengan demikian pertanyaan "saya mesti mulai dari mana?" bisa dijawab dari kebutuhan. Apakah saat ini saya memiliki kebutuhan akan sebuah program? Seperti, seorang guru membutuhkan media pembelajaran berbasis aplikasi android. Seorang dokter membutuhkan program yang membantu memetakan penyakit pasien. Seorang musisi membutuhkan program sederhana untuk menghitung tempo dan ketukan. Seorang blogger yang ingin menulis blog dengan rapih dan tepat. Contoh kasus, seorang guru membutuhkan aplikasi android yang akan ia gunakan di dalam kelas. Ia kemudian melakukan pemetaan sebagai berikut:

Kebutuhan: 
Aplikasi android untuk bermain quiz interaktif di kelas
Apakah sudah ada aplikasi sejenis?: 
Ada tapi belum sesuai kebutuhan. Tampilan aplikasi yang sudah ada rumit, tidak menarik, sulit digunakan. Secara fungsi, aplikasi yang sudah ada saat ini mengharuskan pengguna untuk selalu online, padahal kebutuhannnya, aplikasi dapat dijalankan offline.
Bahasa yang digunakan:
Java untuk aplikasi mobile
Kemampuan saat ini: 
Belum pernah coding Java
Langkah selanjutnya:
- Belajar pemrograman Java di Dicoding (https://www.dicoding.com/learningpaths/7)
- Mencari mentor Java di KCMI
- Mendaftar kebutuhan fungsi aplikasi
- Mencari partner untuk merancang wireframe antarmuka

Dari kebutuhan dalam profesi, ia jadi tahu dari mana ia harus memulai. 

Alternatif lain adalah, melalui tujuan. Apa tujuanmu belajar coding? [https://dev.to/momnanaid/kenapa-ingin-belajar-coding-1pkd]

Infografis di bawah ini salah satu contoh bagaimana memulai coding berdasarkan tujuan:

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/f7rzg1ua95sv3fdq8yro.png)

Link untuk melihat infografis lebih jelas: http://carlcheo.com/wp-content/uploads/2014/12/which-programming-language-should-i-learn-first-infographic.png

Contoh, seorang Ibu yang ingin belajar coding agar bisa belajar bersama anak. Maka pilihan paling sederhana adalah mulai belajar via http://code.org atau mencari tutorial dan buku tentang Scratch. 

Contoh lain, seorang Ibu yang ingin kembali ke dunia kerja setelah 5 tahun cuti karena menemani balita. Maka, ia bisa mulai searching lowongan pekerjaan programming yang paling banyak dicari, yang paling besar ratenya, atau yang paling mudah dipelajari. 

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/52caab93p4dkoj1f6vlw.png)


![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/ck7o1y0vy1qhcrsj9h1b.png)


Mengenai profesi, berikut saya share mengenai ragam profesi coder. Tentu tidak semua, saya hanya bagikan yang kira-kira paling banyak dicari di lowongan pekerjaan serta terdapat banyak tutorial sehingga mudah dipelajari.

####Website

https://www.freecodecamp.org/news/2019-web-developer-roadmap/

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/zw27kn2hyjto8f8rzhor.jpeg)
Front-End Developer: membangun segala sesuatu yang dilihat oleh pengguna, dan berinteraksi di layar, seperti tata letak, informasi, dll. Pengembang front-end bertindak sebagai jembatan antara desainer dan back-end developer. Bahasa/tools/framework yang biasa digunakan: HTML, CSS, JavaScript, Bootstrap. 

Back-End Developer: 
Back-end developer mengurusi bagian belakang layar dari sebuah website, berurusan dengan logika dan data.
Bahasa/tools/framework yang biasa digunakan: JavaScript, PHP (Laravel, WordPress), Ruby on Rails, Python, Go, C++, SQL.


![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/m3pw2pxqw7ootda0yb4e.jpg)

Full Stack Developer:
Full-stack developer bekerja pada bagian front-end dan back-end. Mereka menguasai HTML, CSS, JavaScript, dan satu atau lebih bahasa pemograman back-end.
Perkembangan teknologi saat ini membuat perbedaan front-end dan back-end development menjadi semakin sedikit. Banyak hal yang sebelumnya hanya bisa dilakukan pada bagian back-end, dapat dilakukan juga melalui front-end. Ini membuat semakin banyaknya developer yang menguasai front-end dan back-end programming sekaligus. Menjadi full-stack developer bukan berarti harus mengerjakan keseluruhan kode baik front-end atau back-end sebuah website. Kebanyakan full stack developer tetap menghabiskan waktunya pada satu bagian programming saja. Namun, kelebihan dari full-stack developer adalah mereka bisa melakukan analisa masalah pada kedua bagian programming. Ada juga beberapa full-stack developer yang mengerjakan semuanya sendiri, biasanya ini terjadi jika mereka freelance atau satu-satunya developer yang berkerja pada sebuah project.(https://skillcrush.com/2017/02/27/front-end-back-end-full-stack)

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/hydxckviaq48jdccj6va.png)
Dev Ops:
DevOps berperan dalam mengembangkan perangkat lunak serta metode pengiriman aplikasi dengan tujuan untuk membangun aplikasi agar lebih cepat. Bahasa yang perlu dikuasai: Phython, Ruby, Node.js, Java, Javascript, PHP, Bash, hingga Shell. 
https://www.ekrut.com/media/ini-8-skill-yang-perlu-dimiliki-oleh-devops-sudah-tahu
https://www.codepolitan.com/berkenalan-dengan-devops-5ab7bbe4947b4

####Aplikasi Mobile 

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/652xanujf793dla92gbl.png)
Mobile developer bertanggung jawab untuk mengembangkan aplikasi untuk perangkat mobile seperti untuk platform Android dan iOS. Aplikasi mobile dapat dibangun sebagai single platform atau cross platfrom. Single platform, suatu aplikasi hanya dapat berjalan di satu sistem operasi, Android saja atau iOS saja. Cross platfrom, suatu aplikasi dapat berjalan di kedua sistem operasi dengan sekali coding (dengan penyesuaian). 
Bahasa yang perlu dikuasai: Android (Java, Kotlin), iOS(Objective C, Swift), hybrid (JavaScript, TypeScript)

####Games
{% youtube Ex1ktxOxVgI %}

Games dapat berjalan di atas aplikasi mobile, desktop, atau console. Membuat sebuah games diperlukan banyak steps dan skills. Games dibangun oleh sebuah tim yang memiliki keahlian berbeda walau bukan tidak mungkin games dibuat oleh satu orang. Contoh skills programming yang diperlukan: HTML5, JavaScript, C, C++, C#.
https://codeburst.io/the-2018-game-developer-roadmap-e07e45b3c423

####Data

{% youtube oMBE2TeH2no %}

Hampir semua aplikasi menyimpan dan membutuhkan data. Seiring denga era Big Data, muncul profesi-profesi baru yang terkait dengan data, seperti:
data scientist, data analyst, data architect, data engineer, statistician, database administrator, dan business analyst. Setiap profesi mempunyai tanggung jawab dan membutuhkan skills yang berbeda. Contoh bahasa yang digunakan: SQL, Python, R, dll. 
https://algorit.ma/blog/data-science/find-data-career-path-8-jobs-relate-data/


####Aplikasi desktop
Browser ,anti virus, aplikasi kasir, Office, adalah contoh aplikasi dektop. Beberapa bahasa yang dapat digunakan untuk membangun aplikasi desktop adalah: C#, Java, Swift, HTML5/JavaScript, Pascal


####IoT ( The Internet of Thing)
{% youtube QSIPNhOiMoE %}

Penebar makanan ikan otomatis, kulkas pintar (smart home), kotak sampah pintar (smart city) adalah contoh penerapan IoT. Untuk menjadi pengembang IoT, kita harus memiliki pengetahuan yang mendalam tentang hardware, embedded system, dan sistem komunikasi nirkabel. Memiliki keterampilan pemrograman yang hebat, sehingga dapat dengan mudah membaca data dari sensor yang terhubung ke perangkat IoT dan mengirimkannya ke server. IoT biasanya dibangun secara tim yang merupakan gabungan lintas profesi. Contoh: front-end developer, back-end developer, data scientist, hardware designer, dll. (https://www.iotforall.com/iot-technical-skills/)
Contoh Bahasa yang digunakan: Python, JavaScript, C, C++
https://dailysocial.id/post/5-inovasi-startup-internet-of-things-di-indonesia-yang-layak-untuk-disimak

{% youtube reU05DbfWOM %}

Satu hal yang perlu dipikirkan adalah pasar kerja. Ada banyak pekerjaan dan peluang freelance di luar sana untuk programmer dan banyak dari mereka membayar dengan baik, tetapi ada lebih banyak programmer yang mencari pekerjaan. Ini berarti bahwa hanya mengetahui cara membuat kode bukanlah cara yang pasti untuk mendapatkan pekerjaan. Pengusaha mencari programmer berkualitas tinggi di luar sana.

Seperti halnya keterampilan apa pun, coding membutuhkan dedikasi dan kesabaran untuk berkembang. Semakin banyak waktu yang Anda masukkan ke dalamnya, semakin baik Anda jadinya. Mempelajari bahasa pengkodean pertama Anda mungkin terbukti merupakan proses yang panjang dan sulit. Tetapi kabar baiknya adalah bahwa begitu Anda mempelajarinya, yang lain menjadi lebih mudah dipahami.

Tambahan bacaan:
https://insights.stackoverflow.com/survey/2019
https://weworkremotely.com/categories/remote-programming-jobs