Softskills sebagai developer

2018 2 bulan lagi akan berakhir, waktu nya untuk merancang resolusi agar hidup kita semakin baik dari tahun ke tahun.

Di resolusi 2019 nanti, salah satu hal terbesar yang ingin gue capai adalah pengen sedikit coding. Atau mungkin lebih tepatnya ingin 'mengurangi' belajar di programming. Programming is hardskill, right?

Kita belum tau akan ada teknologi baru apa nanti di 2019. Entah di ekosistem JavaScript, Web, dll. Kalau tahun ini (dan tahun kemarin) sangat excited dengan teknologi baru, seperti: React, Vue, Next, Nuxt, React Native, Fluttr, Rust, Relay, GraphQL, Apollo, dll, justru sekarang ingin biasa saja. Alias, mengurangi. Gue rasa, teknologi yang 'lumayan' gue kuasai sekarang, akan masih menyelesaikan masalah untuk 3-4 tahun kedepan.

Softskills

Ada beberapa softskills yang sudah kita ketahui, dan disini gue akan fokus terlebih dahulu untuk menguasai di bidang:

  1. Communication
  2. Leadership
  3. Motivation
  4. Problem Solving
  5. Teamwork
  6. Time Management

Itu untuk softskills secara umum, dan softskills yang mengacu ke Software Engineering, antara lain:

  1. Refactoring
  2. Management in Software Development
  3. Application Architecture pattern (enterprise)

3 Daftar diatas bukanlah platform-specific, apalagi framework-specific. We don't talk about JavaScript, React, Vue, MongoDB, Kotlin, whatever. Tapi lebih ke sesuatu yang lebih abstrak, yang membangun fondasi kuat untuk sebuah software.

Yaitu developer nya sendiri. Management yang baik, dilakukan dengan baik dan oleh orang-orang yang baik, akan menghasilkan software yang baik.

Management-level

Gue belum masuk ke kriteria managerial, pengalaman secara professional pun belum bisa memumpuni itu. Di level sekarang, cuma sampai ke management infrastruktur di level Frontend. Dari yang paling bawah seperti mengatur repository, sampai ke yang paling atas seperti memilih teknologi.

Belum sampai ke level tersebut, bukan berarti enggak bakal (dan enggak mau sampai ke level tersebut). Yang artinya: Gue ingin mempersiapkan, ketika suatu saat sampai ke level tersebut (level M), gue sudah (setidaknya lumayan siap) untuk mengemban tanggung jawab tersebut.

Bukan berarti gue ingin lebih sedikit coding, tapi gue lebih ingin bagaimana cara nya 'kita bisa coding se-minimal mungkin, namun menghasilkan sesuatu yang maksimal'.

Or... Work smarter, not harder. Coding smarter, not harder. Dan sialnya, menurut gue, untuk bisa melakukan cara tersebut, hal pertama yang harus difokuskan adalah di management nya terlebih dahulu. Bagaimana kita men-deliver software yang efektif, mengatasi bug, ber-negosiasi dengan stakeholder, dll.

Monkey Coder a.k.a Code Monkey

Sampai saat ini, gue masih merasa seperti Monkey Coder. Code Monkey. Cowboy Coder. Whatever you name it.

Gue 'percaya diri' mendeskripsikan diri gue sebagai fast-learner. Gue sangat cepat dalam belajar. Name your favourite technologies, frameworks, etc; If I didn't know it, next week I will show you about what you are talking. Dan ini sebuah hardskill, bisa (dan mudah) dipelajari. Secara, setiap teknologi memiliki dokumentasi. Manual. Dan mudah untuk dipraktikkan.

Beda dengan softskill, lo kasih tau gue tentang apapun mengenai softskill, oke misal di agile development, belum tentu minggu depan gue bisa memahami agile development. Selain karena tidak ada dokumentasi nya (yang praktikal), juga sangat susah untuk dipraktikkan.

Gue tau cara optimasi software, menulis kode yang rapih, dan lain-lain. Tapi itu masih hanya sebatas asumsi gue, meskipun hasilnya nyata. Di level frontend, contoh utama adalah mengurangi waktu TTI. Alias, bagaimana cara nya agar user bisa berinteraksi tanpa harus menunggu waktu yang lumayan. Pembahasan teknikal nya, kita pasti sudah tau lah :))

Tapi itu di higher-level, di level yang lebih atas di per-codingan. Yang gue sadar, gue cuma sebagai eksekutor. Gue ingin ke yang lebih rendah, seperti: Cara meningkatkan performa web kita itu dengan menerapkan konsep RAIL. Dan ya, gue ingin 'sampai bisa memikirkan sebuah konsep, yang dinamakan RAIL' tersebut.

Terlebih, gue belum bener-bener tau tentang Technical Debt, BRD, PRD, TRD, FSD. Yang gue tau: Just code. Your user doesn't care what the hell in your code.

Networking

Gue tipe orang yang mudah bergaul. Tapi ada satu tipe manusia yang belum bisa gue kuasai: Seorang programmer. Entah kenapa gue menganggap seorang programmer ini beda, dan seperti yang kita tau: Yang beda adalah yang spesial.

Yes, programmer is a special person.

Berdasarkan pengalaman yang gue dapet, programmer rata-rata seorang introvert. Lebih suka komunikasi non-verbal, dan sangat menghargai waktu. Pemikiran mereka dalam benchmarking sangat tajam: Mendingan gue melakukan A, daripada B. Karena blablabla. Dan pemikiran mereka sangat unik. Maksud unik ini adalah sangat berbeda. Contoh, mikir tentang seorang designer lumayan gampang. Jika mereka membuat desain yang indah, mereka cinta keindahan. Jika mereka membuat desain yang simple, mereka orang yang enggak suka ribet.

Developer lumayan susah. Sifat mereka tidak bisa mudah dikenal dari membaca kode yang mereka tulis. Atau dari melihat cara mereka menulis kode. Seperti istilah 'don\'t judge people by it's cover, programmer juga mungkin tidak bisa "don't judge programmer by it's code". Karena terlalu abstrak.

However, yang paling ingin gue obrolin di topik ini adalah di komunikasi. Gue udah biasa menghadapi teman-teman gue yang seorang developer (juga), dia bagus dikomunikasi non-verbal, tapi kurang di komunikasi verbal. This is not public secret anymore.

Atau justru yang sebaliknya, di komunikasi non-verbal enggak jelas banget, giliran langsung face-to-face, pecicilan. Intinya, gue ingin memperkaya ilmu gue dalam berkomunikasi, khususnya "sebagai" programmer "kepada" programmer. Gue yakin programmer memiliki pemikiran yang luar biasa, memiliki banyak solusi dari setiap masalah yang mereka miliki, sayang nya, ada beberapa yang 'tidak tau' atau 'tidak bisa' untuk mengutarakan nya.

Everything right from me, is not always right for you

Gue selalu mengingatkan ini. Dimanapun, langsung & tidak langsung. Teman meminta saran, gue kasih. Terima tidak terima, dia yang memutuskan. Kebanyakan menerima, karena mereka menganggap 'gue lebih berpengalaman'. Dan gue selalu mengingatkan mereka, ketika mereka mendapatkan pengetahuan bahwa apa yang pernah gue kasih tau, ternyata salah, atau setidaknya 'ada cara yang lebih baik', tell me and go do it.

Gue bukan tipe orang yang pengen pinter sendiri, keren sendiri, atau wtf u name it lah. Gue ingin mengubah kata 'sendiri' diatas, menjadi 'bersama'. Gue pernah mendapat pelajaran: 'jika ingin berlari dengan cepat, lari sendiri. Jika ingin berlari dengan baik, lari bersama'. Dan ya, ini benar. Berlaku untuk kondisi apapun. Karena otak nya hanya satu, dan yang sulit adalah menyatukan banyak otak untuk satu. Namun jika berhasil, maka menghasilkan sesuatu yang sangat efektif.

Books I will read

Kembali lagi ke softskill, karena tidak ada manual/dokumentasi nya, cara yang paling mudah (menurut gue) adalah belajar dari pengalaman orang lain. Dan salah satu nya adalah dari buku, dari buku gue bisa mempelajari 'best practices' dan 'kesalahan' yang mereka buat, sehingga kita bisa mengembangkan nya, dan menghindari kesalahan tersebut.

Dan buku-buku yang akan gue baca (nanti), sambil nabung, gue ingin membaca ini:

Code Complete: A Practical Handbook of Software Construction

Buku ini menjelaskan tentang bagaimana menulis kode yang baik, rapih, dan mudah dimengerti meskipun tanpa harus menulis banyak komentar di kode kita. Di buku ini juga menjelaskan tentang bagaimana cara kita men-debug sebuah kode. Yang ingin gue pelajari dari buku ini adalah: How to write good, clean, and understandable code even with less comment.

$42.21 Hardcover (sayangnya enggak ada di bookdepository, nemunya di amazon)

Patterns of Enterprise Application Architecture

Buku ini menjelaskan tentang bagaimana membuat large-scale, robust application, di level enterprise. Meskipun khusus membahas di level enterprise, tapi konsep ini (bisa) berlaku untuk berbagai level. Yang ingin gue pelajari dari buku ini adalah: How to avoid become code monkey.

Rp. 843. 738. Lumayan

Soft Skills: The Software Developer’s Life Manual

Buku ini menjelaskan tentang karir, cara belajar, marketing diri, produktifitas, keuangan, kesehatan, dan lain-lain sebagai seorang Developer.

Buku ini menjadi prioritas pertama yang akan gue baca nanti. Hal yang ingin gue pelajari dari buku ini adalah: Yang tadi gue sebut di paragraf pertama.

Rp. 458.057

Managing Humans : Biting and Humorous Tales of a Software Engineering Manager

Buku ini membahas tentang bagaimana cara bekerja dengan seorang software engineer di mata seorang manager.

Yang ingin gue pelajari dari buku ini adalah: ada di paragraf pertama juga.

Rp. 470.737

Books is bullshit

Ya, percuma jika hanya sekedar dibaca tanpa di praktekkan. Ini lumayan sulit, dan disinilah tantangan nya. Alasan gue ingin mempelajari lebih ke 'management' adalah: Bagaimana ingin bisa mengatur orang lain, bila mengatur diri sendiri saja tidak bisa.

Gue orang yang dream big. Ya, go big or go home. Apa yang gue investasikan untuk nanti, gue yakin pasti akan berguna. Dulu, waktu kuliah masih semester-semester awal, gue bertaruh kepada teknologi web, daripada mempelajari materi yang harus dikuasai di bangku kuliah. Daripada belajar Pascal & Java, gue lebih ke JavaScript & NodeJS nya. Gila nya, gue malah investasi ke yang lebih spesifik: Frontend. Yang lebih spesifik lagi: Framework-related; React, Vue, whatever.

Hasilnya? Alhamdulillah, apa yang gue taruhkan tersebut ternyata berbuah hasil. Semua yang kita pelajari enggak bakal sia-sia, hanya masalah waktu. Enggak menutup kemungkinan jika gue mempelajari tentang Pascal & Java juga, mungkin sekarang-sekarang belum waktu nya, ini semua tentang waktu. In the past or the future, hahaha. Realistis aja gan.

Softskill & Management, bukanlah sebuah teknologi. Yang artinya: Enggak akan pernah kadaluarsa, or at least: berlaku untuk waktu yang sangat lama. Agile mulai populer pada tahun 2001, and today is 2018. Selama 17 tahun, agile masih digunakan di software development process. jQuery populer pada tahun 2006, and you know how jQuery today.

Don't stop learn

Tadi nya gue mulai frustasi dengan 'belajar terus-terusan'. Ternyata, yang salah bukanlah di 'belajar' nya. Tapi di 'subjek' yang ingin kita pelajari, dan 'tujuan' dari apa yang ingin kita pelajari.

Di Instagram minggu-minggu kemarin gue nge-upload foto tentang apa yang gue pelajari dari buku Hooked (btw lagi temporarily delete ig account, entah sampai kapan). Dari buku tersebut, yang gue dapet adalah: bagaimana cara kita membuat user agar 'kecanduan' dengan produk yang kita buat.

What?

Disisi bisnis, ini bagus. Pemikiran singkat yang gue dapet adalah: Apakah hidup gue adalah membuat para pengguna kecanduan dengan 'apa yang gue buat'? Menyajikan UX yang baik, IA yang terstruktur, dan lain-lain.

Disisi manusia, ini enggak bagus. Menurut gue. Sebagai seorang perokok berat, gue merasakan bagaimana 'enak' dan 'tidak enak' nya dalam kondisi kecanduan. Tapi, jika gue terus melihat dari sisi bisnis & manusia nya aja, gue merasa enggak punya solusi. Dari sisi bisnis, gue enggak punya solusi untuk 'meningkatkan' produk gue, di sisi 'manusia', gue enggak bisa menghancurkan bisnis orang lain tersebut.

Hipotesis gue adalah: Buat solusi win-to-win. Jika memang gue ingin membuat produk yang bisa membuat user kecanduan, gue harus meng-edukasi user tersebut tentang kecanduan nya. Atau setidaknya, memberi dampak lain yang mengarah ke sesuatu positif.

Misal, rokok. Meskipun peringatan bahaya merokok ada dimana-mana (sekalipun di rokok nya), tapi gue, sebagai pecandu tetep aja ngerokok. Tapi setidaknya, ada kondisi dimana gue tau 'kapan harus mengurangi' kecanduan ini, seperti: Di kereta. Di kereta, tok enggak boleh merokok. Gue, mau enggak mau, harus mengikuti peraturan tersebut, atau diturunkan di stasiun terdekat. Sebagai pecandu, ini peraturan enggak nyaman banget, tapi kalau kita lihat ke sisi manusia, sisi non-perokok, ini tentu sangat rasional. Terlebih di sebuah kereta, di ruangan AC.

Dan itu pilihan gue ingin tetap merokok atau tidak, kalau tetap, ya mau enggak mau harus terima dengan konsekuensi yang ada. Perlu nya edukasi disini adalah di 'moral'. Win-to-win solution menurut gue disini: Non perokok, tidak menghirup asap rokok. Gue sebagai perokok: Menghemat stok rokok gue :))

Di situs-situs besar pun, sudah ada beberapa yang mengedukasi sebuah kecanduan. Contoh nya ini, situs pertaruhan esports:

Pertaruhan merupakan hal yang mudah membuat kecanduan. Karena kita bisa "untung" dan "rugi" di waktu yang sangat cepat. Hebatnya disitus ini, kita bisa me-limit deposit, untuk mencegah kita bermain sering-sering (karena melihat saldo yang lumayan), dan bisa mem-freeze account, agar kita tidak bisa login & bertaruh untuk beberapa waktu.

Ini win-to-win solution, karena pada dasarnya: "Semua kembali pada diri kita masing-masing". Misal, seperti: Meskipun gue enggak membuat aplikasi yang bikin lo kecanduan, kalau dasarnya lo nya aja yang bikin "kecanduan" sendiri, yaa mau gimana lagi. Kita udah kasih solusi gini gini gini, lo sendiri kan yang menentukan.

HackerNews enggak didesain untuk membuat lo kecanduan, dari UI & UX nya pun sudah bisa ditebak lah. Tapi karena mereka berfikir user mereka mungkin akan kecanduan (siapa sih yang enggak suka menemukan link baru yang menarik/bermanfaat?), jadi mereka sudah mengantisipasi nya.

Arti dari maxvisit 20 dan minaway 180 diatas adalah: Lo cuma bisa mengakses HackerNews selama 20 menit, terus lo enggak bakal bisa liat lagi selama 3 jam. Jadi kita hanya bisa mengakses HackerNews selama 8 kali sehari, dengan total waktu 160 menit. Dan nilai tersebut bisa diganti sesuai dengan keinginan

Back to the topic.

Jika gue hanya mempelajari apa yang dijelaskan dari buku, mungkin gue enggak akan kepikiran tentang solusi diatas. Di buku tok hanya membahas tentang bagaimana cara membuat user addicted ke produk kita, that's it. Tanpa 'pengembangan' dari hasil yang gue pelajari, gue cuma dapet ilmu baru nya tentang apa yang diberi di Hooked tersebut. Gampang nya: Lo belajar teknik hacking dari sebuah buku, padahal kalau lo terus 'belajar', secara tidak langsung lo mendapatkan ilmu tentang 'bagaimana cara mencegah teknik hacking tersebut'.

It's long enough

Waktu nya selesai berbacot. Banyak topik berseliweran ditulisan ini, dan juga yang out of topic dari judul yang gue tulis diatas. Dan ini bisa menjadi sebuah pelajaran untuk gue agar bisa menulis yang baik & benar itu seperti apa. If you have any feedback about my writing, just comment below. If you are too silly, feels free to send me a message on Telegram. You are all know how to find my telegram account, right?

Show Comments

Get the latest posts delivered right to your inbox.