Perkenalan
Halo perkenalkan nama saya Jacky Rusly. Saat ini saya bekerja sebagai Senior Frontend Engineer. Di samping saya bekerja, saya juga menulis artikel-artikel di JRBlog dan menulis chord lagu di JRChord. Hobby saya adalah bermain multiplayer online games seperti Wild Rift atau Mobile Legends.
Perkenalan Dengan Pemrograman
Pada saat saya SMA kelas 1, ada satu mata pelajaran yang bernama TIK (Teknologi Informasi dan Komunikasi). Di pelajaran TIK, saya mendapatkan tugas untuk mencari nilai atau data pada Excel. Di sini saya mengenal formula-formula Excel seperti COUNT, SUM, VLOOKUP, dan HLOOKUP.
Pada mata pelajaran TIK, saya juga mendapatkan tugas untuk membuat program kasir menggunakan Visual Basic (VB). Di sinilah awal mula saya kenal dengan pemrograman. Pada saat membuat program menggunakan VB, saya merasa ada ketertarikan pada saat saya drag/drop untuk membuat form dengan menggunakan Label, Text Input, Checkbox, Radio dan Button.
Kuliah Computer Science
Karena ketertarikan saya pada pemrograman, akhirnya saya memutuskan untuk mengambil kuliah jurusan Computer Science di Universitas Bina Nusantara.
Saat liburan lulus SMA sebelum masuk kuliah, saya coba mengambil kursus pemrograman VB dan HTML (HyperText Markup Language). Pada awal kursus tersebut saya diajarkan Flowchart dan dilatih untuk mengembangkan logika. Kemudian diperkenalkan dengan tag-tag yang ada di HTML seperti html, body, footer, img, p, label, form, input, dan lainnya.
Semester 1
Pada saat masuk semester 1, mata kuliah yang paling berkesan adalah Algoritma dan Pemrograman Menggunakan Bahasa Pemrograman C. Di sini saya diajarkan bagaimana cara mencetak Hello World 😁, membuat kondisi if, and, dan or, membuat loop seperti while, for, dan do-while, dan membuat function yang dijalankan dalam bentuk console application.
Semester 2
Pada saat semester 2, mata kuliah yang diajarkan adalah Pemrograman Berorientasi Objek (Object Oriented Programming) Menggunakan Bahasa Pemrograman C++. Di mata kuliah ini, saya diajarkan bagaimana caranya untuk membuat class, interface, static variable dan lainnya.
Kemudian juga ada mata kuliah yang tidak kalah penting yaitu Struktur Data. Di mata kuliah ini, saya diajarkan Linked List, Stack, Queue dan Tree.
Namun disaat itu saya belum begitu mengerti bagaimana apply OOP dan Data Structure kedalam suatu program.
Semester Selanjutnya
Pada saat semester 3 dan selanjutnya, mata kuliah yang diajarkan itu adalah chart-chart dan diagram-diagram, kemudian Web Programming Menggunakan PHP, dan Database karena saya mengambil peminatan Database.
Skripsi
Project akhir saya adalah membuat program yang bisa melakukan Penjadwalan Ujian Secara Otomatis. Ini adalah hal yang paling mengesankan. Query yang diperlukan itu sangat kompleks karena harus mempertimbangkan:
- Ruangan yang tersedia.
- Jadwal tidak bentrok dengan jadwal lainnya.
- Mata kuliah dengan aturan khusus.
- Kapasitas ruangan.
Karir
Karir yang saya jalani sampai sekarang ini adalah:
- Junior Programmer.
- Software Developer.
- Full Stack Developer.
- Software Engineer ➡️ Technical Architect (Frontend).
- Senior Frontend Engineer.
Junior Programmer
Di pertengahan kuliah saya, pada saat semester 5, saya mendapatkan pekerjaan pertama saya sebagai Junior Programmer. Di awal karir ini, pemrograman yang dipakai adalah:
- Visual Basic.
- PHP.
- ASP.NET.
Hari pertama yang dikerjakan adalah setup XAMPP. XAMPP digunakan untuk menjalakan pemrograman PHP pada saat development. Di sini saya belajar belajar cara setting port apache di localhost agar tidak bentrok dan cara menjalakan website PHP.
Saya belajar banyak pada karir pertama saya saat itu.
SQL:
- Bagaimana cara membuat Stored Procedure.
- Bagaimana cara menggunakan Join, Left Join, dan Right Join.
- Bagaimana cara menggunakan Cursor, Common Table Expression (CTE), dan Temp Table.
- Syntax seperti COALESCE, SUBSTRING, dan CHARINDEX.
- Optimasi table dengan menggunakan Index.
PHP:
- Syntax yang ada di PHP.
- Bagaimana cara execute Stored Procedure.
JavaScript:
- Perkenalan dengan jQuery.
- Memanipulasi DOM mengunakan jQuery.
Software Developer
Pekerjaan kedua yang saya dapatkan yaitu sebagai Software Developer. Tools yang dipakai adalah:
- Node.js.
- Aurelia.
- React.
- ASP.NET Core.
- MongoDB.
Beberapa hal yang saya dapatkan ketika bekerja pada saat itu:
- Belajar konsep yang bernama REST API.
- Memakai Node.js untuk membuat API dan memakai Aurelia untuk membuat website.
- Belajar tools yang sangat membantu developer yaitu git.
- Pertama kali belajar bagaimana cara Software Development Life Cycle (SDLC) Scrum bekerja dan mempraktikkannya.
- Belajar membuat Data Warehouse, konsep Fact Table dan Dimension Table.
- Konsep unit test, tools testing pakai mocha dan chai.
- Docker untuk kebutuhan integration testing.
Full Stack Developer
Pekerjaan ketiga yang saya dapatkan yaitu Full Stack Developer. Tools yang digunakan adalah React dan Node.js.
Di sini saya sudah mulai lebih tertarik ke bagian Frontend yaitu React.
Beberapa hal yang saya dapatkan ketika bekerja saat itu:
- Membuat Progresive Web App (PWA).
- Konsep Functional Programming.
- Unit test menggunakan jest dan enzyme.
- Midtrans integration (Frontend).
Software Engineer ➡️ Technical Architect (Frontend).
Pekerjaan keempat yang saya dapatkan adalah sebagai Software Engineer dan kemudian saya dipromosi menjadi Technical Architect (Frontend). Tools yang dipakai adalah:
- Next.js
- React Native
- React Native Web
- Tailwind CSS
- TypeScript
- Laravel
- MySQL
- Redis
- MongoDB
- Docker
- Redux dan Redux Saga
- Firebase
Beberapa hal yang saya dapatkan:
- Migrasi dari Expo ke React Native CLI.
- Meningkatkan performa aplikasi/website menggunakan Pure Component, memo (HOC), useMemo, dan useCallback untuk mengurangi re-renders yang tidak perlu.
- Meningkatkan Lighthouse score pada website.
- Mempercepat build time CI/CD menggunaan Docker Cache.
- CI/CD upload images dan Next.js assets ke S3.
- Debug dan menyelesaikan permasalahan server heap memory leak pada website.
- Belajar interview kandidat Frontend.
- Implementasi JS obfuscator untuk security pada website.
- Migrasi ke CloudFront CDN.
- Enable Brotli/Gzip compression.
Senior Frontend Engineer
Pekerjaan saya saat ini adalah sebagai Senior Frontend Engineer. Tools yang digunakan adalah:
- Django
- Docker
- Vite
- React
- Netlify
Beberapa hal yang sudah didapatkan:
- Override local time menjadi server time.
- Buat pipeline Pull Request Validation untuk pengecekan ESLint pada saat Pull Request.
- CI/CD Aplikasi React SPA ke CloudFront.
- Website dokumentasi memakai Docusaurus.
Projects
Beberapa projects yang saya kerjakan diluar kerjaan saya.
JRBlog
JRBlog adalah website tempat saya menulis artikel-artikel yang saya ingin bagikan.
JRChord
JRChord adalah aplikasi/website chord dan lirik lagu rohani kristen.
JRSpace
JRSpace adalah portfolio saya dalam bentuk dunia game yang menggunakan Phaser 3.
Personal Website
Personal Website saya yang berisi biography dan portfolio saya.
Ester Wijaya
Ester Wijaya personal website.
House of Underwear
House of Underwear adalah website yang menampilkan produk-produk underwear.
Penutup
Terimakasih sudah membaca artikel Perjalanan Saya Menjadi Software Engineer. Semoga bisa menjadi inspirasi bagi teman-teman yang mau menjadi Software Engineer.