Faisalaffan Blog
|
🇮🇩
Faisalaffan Blog
Karier14 menit baca

Apa yang Saya Lakukan sebagai Senior Engineer — Arsitektur, Trade-Off, dan Pertimbangan Teknis

Saya tidak lagi dinilai dari baris kode. Saya dinilai dari keputusan — arsitektur apa yang dipakai, trade-off apa yang diterima, dan bagaimana membimbing developer lain. Inilah kisah nyata merancang IoT telemetry untuk 50K events/detik, microservices untuk perusahaan asuransi terbesar di Australia, dan keputusan stack yang menjadi artikel paling banyak dibaca.

Faisal Affan
Faisal Affan
Diterbitkan
Apa yang Saya Lakukan sebagai Senior Engineer — Arsitektur, Trade-Off, dan Pertimbangan Teknis

Apa yang Saya Lakukan sebagai Senior Engineer

"Kamu tidak menjadi senior engineer dengan menulis lebih banyak kode. Kamu menjadi satu dengan membuat keputusan yang bertahan lebih lama dari dirimu." — Saya, setelah merusak production untuk ke-47 kalinya

Lompatan dari mid-level ke senior adalah transisi paling membingungkan dalam rekayasa perangkat lunak. Tahun-tahun mid-level-mu mengajarimu untuk mengirim fitur. Sekarang, tidak ada yang peduli seberapa cepat kamu secara pribadi mengirim. Mereka peduli apakah arsitektur yang kamu pilih bertahan selama tiga tahun pertumbuhan, apakah trade-off yang kamu dokumentasikan menghemat enam bulan penemuan ulang tim berikutnya, dan apakah engineer junior yang kamu bimbing bisa mengirim tanpa dirimu.


Proposisi Senior

Yang Berubah

Sebelum (Mid-Level): "Bisakah kamu memiliki sebuah fitur dari ujung ke ujung dan mengirimkannya dengan andal?" Sekarang (Senior): "Bisakah kamu membuat keputusan arsitektur yang akan diikuti oleh banyak tim — dan benar tentang trade-off-nya 80% dari waktu?"

Saya tidak lagi dinilai dari baris kode. Saya dinilai dari keputusan — arsitektur apa yang dipakai, trade-off apa yang diterima, dan bagaimana membimbing developer lain tanpa menulis kode mereka untuk mereka.

Inilah bagaimana tampilannya dalam praktik.


Studi Kasus 1: Petrosea Minerva — IoT Fleet Telemetry

Peran: Backend Engineer & System Architect Stack: Go, MQTT, Kafka, TimescaleDB, React Skala: 50K events telemetry/detik, 100+ unit alat berat di 3 lokasi tambang terpencil

Operasi pertambangan Petrosea memiliki masalah: 100+ dump truck, ekskavator, dan kendaraan pendukung yang beroperasi di lokasi terpencil di Kalimantan menghasilkan telemetry terus-menerus — posisi GPS, suhu mesin, konsumsi bahan bakar, berat muatan — setiap 2 detik. Data ini krusial untuk keputusan dispatch real-time, peringatan geofence, dan perawatan prediktif. Namun lokasi-lokasi tersebut memiliki konektivitas satelit intermiten yang membuat arsitektur berbasis HTTP tidak andal.

Keputusan Arsitektur

Saya merancang mesin geofencing real-time yang mampu memproses 50K events per detik dengan latensi peringatan di bawah 2 detik. Pilihan arsitektur inti adalah pipeline data:

Arsitektur: Pipeline IoT dari Edge ke Cloud

Masalah: 100+ truk tambang di lokasi terpencil menghasilkan data GPS/mesin setiap 2 detik. Konektivitas satelit intermiten — terkadang 6-8 jam pemadaman total. Data harus mencapai dashboard HQ dalam 5 detik untuk peringatan geofence real-time.

Keputusan Arsitektur:

Plaintext
Edge Gateway (Go) → MQTT (QoS 1) → Kafka → Stream Processor → TimescaleDB → WebSocket → React Dashboard
                                                                    ↓
                                                              Geofence Engine (< 2s alerts)

Rincian Komponen:

  1. Edge Gateway (Go): Berjalan di hardware kelas Raspberry Pi yang dipasang di setiap truk. Buffer SQLite lokal untuk periode offline. Menerbitkan telemetry via MQTT saat konektivitas tersedia. Menangani terjemahan protokol dari berbagai sensor OEM (Caterpillar, Komatsu, Hitachi) ke skema yang dinormalisasi.

  2. MQTT Broker (Mosquitto): Dipilih secara eksplisit karena protokolnya yang ringan, tingkat QoS (QoS 1 untuk pengiriman setidaknya sekali), dan sesi persisten yang bertahan dari pemutusan koneksi. Ketika sebuah truk muncul dari titik buta setelah 6 jam, status sesi MQTT membangun kembali dan antrean mengalir tanpa intervensi developer.

  3. Kafka Stream Processor: Memisahkan ingestion dari pemrosesan. Menangani masalah "thundering herd" ketika 50 truk terhubung kembali secara bersamaan — Kafka mem-buffer lonjakan sementara konsumen downstream memproses dengan kecepatan mereka sendiri.

  4. TimescaleDB: Ekstensi PostgreSQL yang dioptimalkan untuk time-series. Dipilih daripada InfluxDB karena kami membutuhkan SQL JOIN antara telemetry dan metadata peralatan. Peningkatan performa query 10x dibanding PostgreSQL vanilla untuk query rentang waktu.

  5. Geofence Engine: Indeks spasial in-memory menggunakan R-tree. Memproses koordinat GPS yang masuk terhadap poligon geofence yang telah ditentukan. Deteksi sub-detik memicu peringatan via WebSocket push — tanpa polling.

Trade-Off Utama: MQTT daripada HTTP. HTTP polling pada 50K events/detik akan membutuhkan minimal 50 permintaan per detik, masing-masing dengan overhead jabat tangan TLS. Pada tautan satelit dengan latensi 600ms+, badai percobaan ulang saja akan meruntuhkan pipeline. Koneksi TCP persisten MQTT dengan QoS 1 dan status sesi menghilangkan ini sepenuhnya.

Yang Akan Saya Ubah: Tambahkan dead-letter queue untuk pesan yang tidak dapat diproses dan terapkan pensinyalan backpressure dari Kafka ke MQTT. Kami kehilangan ~0,3% telemetry di bulan pertama akibat lag konsumen Kafka selama jam sibuk — mekanisme backpressure akan mencegah ini.

Dampak

Metrik Sebelum Sesudah
Pemrosesan telemetry Manual/berbasis log Real-time, 50K events/detik
Latensi peringatan geofence 5-10 menit < 2 detik
Deteksi pencurian BBM Tidak diketahui (tidak terdeteksi) Tertangkap di bulan pertama
Penghematan tahunan — Rp 3,2 M ($200K)
Visibilitas utilisasi armada Laporan shift berbasis kertas Dashboard langsung, 65% → 79%

Studi kasus lengkap →


Studi Kasus 2: IAG Cybera360 — Arsitektur Platform Asuransi

Peran: Frontend & Backend Engineer Stack: Nuxt.js (SSR), Go microservices, PostgreSQL, D3.js Skala: 5+ integrasi mitra, digitalisasi seluruh siklus hidup asuransi untuk perusahaan asuransi terbesar di Australia

IAG (Insurance Australia Group) — perusahaan asuransi umum terbesar di Australia, kapitalisasi pasar ~AU$12 M — membutuhkan platform untuk melayani pasar asuransi cyber UKM yang kurang terlayani. Proses yang ada membutuhkan 3-4 hari untuk sebuah kutipan, melibatkan 100+ pertanyaan manual, dan memerlukan bolak-balik underwriter melalui email. Kami harus mendigitalkan seluruh siklus hidup: penilaian risiko → pembuatan kutipan → pengikatan → pemantauan → klaim.

Trade-Off Kritis

Keputusan Arsitektur: SSR vs SPA untuk Kutipan Asuransi

Kebutuhan Bisnis: Broker asuransi Australia mencari "cyber insurance quote" di Google. Jika alur kutipan kami tidak dapat diindeks oleh mesin pencari, broker tidak akan menemukan kami — dan mereka akan beralih ke pesaing.

Keputusan: Nuxt.js Server-Side Rendering (SSR) daripada React Single Page Application (SPA).

Mengapa Bukan React SPA:

  • Perayap mesin pencari (Googlebot, Bingbot) mengeksekusi JavaScript secara tidak konsisten untuk konten deep-link
  • URL kutipan asuransi dibuat secara dinamis — /quote/business-profile?industry=tech&employees=50 — setiap URL perlu dapat diindeks dengan meta tag unik
  • Broker membagikan tautan kutipan melalui email — pratinjau Open Graph memerlukan meta tag yang dirender server

Mengapa Nuxt.js SSR:

  • Server-side rendering penuh untuk setiap rute — Google melihat HTML lengkap pada permintaan pertama
  • Model pengembangan Vue.js dengan ekosistem modul Nuxt (auth, sitemap, PWA)
  • Tim memiliki pengalaman Vue.js yang lebih kuat daripada Next.js pada saat itu — pilihan pragmatis daripada dogmatis

Gambaran Arsitektur:

Architecture Diagram
Browser → Nuxt.js SSR → Go API Gateway → Microservices:
                                           ├── Risk Assessment Service (integrasi pemindaian kerentanan)
                                           ├── Quoting Engine (kalkulasi premi + mesin aturan)
                                           ├── Policy Management Service (pengikatan + pembuatan dokumen)
                                           ├── Partner Integration Layer (UpGuard, Acronis, RHCS)
                                           └── Notification Service (email, peringatan dashboard)

Trade-Off yang Diterima: SSR memperkenalkan biaya server yang lebih tinggi per permintaan dibandingkan SPA statis. Setiap render halaman memerlukan perjalanan pulang-pergi server Node.js. Kami memitigasi ini dengan Redis page caching untuk halaman publik (halaman tarif, FAQ, blog) dan menyediakan SSR dinamis hanya untuk alur kutipan yang terautentikasi.

Hasil: Platform sepenuhnya diindeks oleh Google dalam 2 minggu setelah peluncuran. Lalu lintas organik dari pencarian broker berkontribusi 40% dari sesi kutipan baru di kuartal pertama. Alur kutipan yang didigitalkan mengurangi waktu-kutipan dari 3-4 hari menjadi di bawah 15 menit.

Dampak

Metrik Sebelum Sesudah
Perputaran kutipan 3-4 hari < 15 menit
Siklus hidup asuransi Manual/kertas Sepenuhnya digital
Integrasi mitra Tidak ada 5+ (UpGuard, Acronis, RHCS, dll.)
Jangkauan platform Australia saja Asia Pasifik (Singapura, Malaysia, Hong Kong)

Studi kasus lengkap →


Studi Kasus 3: Mengapa Golang — Keputusan Stack

Peran: Pengambil Keputusan Teknologi Stack: Go (dipilih), dievaluasi terhadap Node.js, Python, Rust

Setiap senior engineer pada akhirnya menghadapi pertanyaan: "Apa stack utama kamu dan mengapa?" Ini bukan pertanyaan trivia — ini adalah ujian kemampuanmu untuk mengevaluasi trade-off di berbagai dimensi: performa, produktivitas developer, kematangan ekosistem, pasar perekrutan, dan biaya perawatan jangka panjang.

Saya mengevaluasi empat opsi terhadap lima kriteria:

Kriteria Go Node.js Python Rust
Model konkurensi Goroutine (built-in) Event loop (single-threaded) Terbatas GIL Async/await (kompleks)
Kecepatan kompilasi < 2 detik N/A (interpreted) N/A (interpreted) 30-120 detik
Deployment Satu binary Node + node_modules Python runtime + pip Satu binary
Kurva pembelajaran Rendah (25 keywords) Rendah Rendah Curam (ownership, lifetimes)
Perekrutan di Indonesia Tumbuh pesat Matang Matang Niche

Keputusan: Go menang pada kesederhanaan, kecepatan kompilasi, dan ergonomi deployment — bukan performa mentah. Seorang pendukung Rust dapat dengan tepat menunjukkan bahwa Rust mengungguli Go dalam beban kerja CPU-bound sebesar 2-5x. Namun throughput CPU mentah jarang menjadi hambatan saya. I/O Jaringan, query database, dan throughput antrean pesan adalah hambatannya. Model konkurensi berbasis goroutine Go menangani itu dengan sempurna.

Artikel lengkap →

Pola yang Berulang

Setiap keputusan tingkat senior dalam karier saya mengikuti pola yang sama: identifikasi kendala nyata (bukan yang hipotetis), evaluasi trade-off secara eksplisit, dan pilih opsi yang mengoptimalkan hambatan — apakah itu produktivitas developer, kemudahan deployment, atau persyaratan SEO.


Diagram Arsitektur yang Saya Rancang

Di luar proyek individu, peran senior menuntut saya mendokumentasikan keputusan arsitektur sehingga dapat dipahami, ditantang, dan diperluas oleh engineer lain. Berikut adalah dua diagram kunci yang mewakili masalah arsitektur paling kompleks yang saya selesaikan.

Arsitektur IoT Telemetry (Petrosea Minerva)

Pernyataan Masalah: 100+ truk tambang menghasilkan 50K events telemetry/detik di 3 lokasi terpencil dengan konektivitas satelit intermiten. Data harus mencapai dashboard HQ dalam waktu kurang dari 5 detik untuk dispatch real-time dan peringatan keselamatan.

Arsitektur:

Architecture Diagram
┌─────────────────┐     ┌──────────┐     ┌──────────┐     ┌───────────────┐
│  Edge Gateway   │────▶│   MQTT   │────▶│  Kafka   │────▶│  TimescaleDB  │
│  (Go + SQLite)  │     │  Broker  │     │  Stream  │     │  (Time-Series)│
│  Local Buffer   │     │  QoS 1   │     │  Cluster │     │               │
└─────────────────┘     └──────────┘     └──────────┘     └───────┬───────┘
      │                                                           │
      │ Offline: SQLite Lokal                                      │
      │ Online: MQTT publish                                      │
      │  (QoS 1, persistent session)                              │
                                                                  │
┌────────────────┐     ┌──────────────────┐     ┌─────────────────┐│
│  Geofence      │◀────│  Stream Processor│◀────│  Kafka Consumer ││
│  Engine (R-Tree)│     │  (Go)           │     │  (Go)           ││
│  < 2s alerts   │     │  + Alerting     │     └─────────────────┘│
└────────────────┘     └──────────────────┘                        │
                                                                   │
                                                      ┌────────────▼───────┐
                                                      │  WebSocket Server  │
                                                      │  (Go)              │
                                                      └────────────┬───────┘
                                                                   │
                                                      ┌────────────▼───────┐
                                                      │  React Dashboard   │
                                                      │  (Real-Time Maps)  │
                                                      └────────────────────┘

Keputusan: Edge gateway dengan buffer SQLite lokal → MQTT publish (QoS 1) → Kafka stream processing → TimescaleDB → WebSocket push ke React.

Trade-Off yang Dipertimbangkan:

  • HTTP polling (ditolak: 50K events/detik × overhead permintaan HTTP akan memenuhi tautan satelit)
  • gRPC streaming (ditolak: flapping tautan satelit menyebabkan reset koneksi gRPC setiap 5-15 menit)
  • MQTT dipilih karena: bandwidth 3x lebih hemat daripada HTTP, tingkat QoS bawaan, reconnection otomatis status sesi persisten, dan decoupling pub/sub
Mesin Sinkronisasi Offline-First (Tepati)

Pernyataan Masalah: 5.000+ petugas lapangan yang bekerja di area tanpa konektivitas internet sama sekali. Mereka mengisi formulir dinamis, mengambil foto, dan mengumpulkan tanda tangan digital. Semua data harus sinkron tanpa kehilangan saat konektivitas kembali. Solusi Microsoft Power Apps sebelumnya memiliki tingkat kehilangan data 23%.

Arsitektur:

Architecture Diagram
┌──────────────────┐     ┌──────────┐     ┌──────────────────┐
│  Flutter Mobile  │────▶│   MQTT   │────▶│  Go API Gateway  │
│  App             │     │  Broker  │     │                  │
│  ┌────────────┐  │     │  QoS 1   │     │  ┌────────────┐  │
│  │ SQLite DB  │  │     └──────────┘     │  │ CRDT       │  │
│  │ (Local)    │  │                      │  │ Resolution │  │
│  ├────────────┤  │     ┌──────────┐     │  ├────────────┤  │
│  │ Change Log │  │────▶│   MQTT   │────▶│  │ PostgreSQL │  │
│  │ Table      │  │     │  Batch   │     │  │ (Source of │  │
│  └────────────┘  │     │  Upload  │     │  │  Truth)    │  │
└──────────────────┘     └──────────┘     └──────────────────┘
     │
     │ Offline: Tulis ke SQLite + change log
     │ Online: Dorong change log via MQTT
     │ Reconnect: Tarik perubahan server, terapkan penggabungan CRDT

Keputusan: SQLite DB lokal → tabel change log → MQTT push saat online → resolusi konflik sisi server (last-write-wins dengan timestamp + vektor ID perangkat).

Trade-Off yang Dipertimbangkan:

  • Pendekatan berbasis CRDT dipilih karena: resolusi konflik otomatis tanpa koordinasi terpusat, arsitektur single master dengan penulisan offline, kompleksitas rendah untuk data berbasis formulir (non-kolaboratif)
  • Operational Transform ditolak: berlebihan untuk kasus penggunaan ini — tidak perlu pengeditan kolaboratif, kompleksitas lebih tinggi untuk resolusi konflik, konsistensi eventual CRDT sudah mencukupi
  • Protokol sinkronisasi kustom melalui MQTT ditolak demi pola change log: change log menyediakan jejak audit dan kemampuan replay, sinkronisasi inkremental (hanya kirim delta), dan resolusi konflik yang deterministik

Hasil: 0% kehilangan data (dari 23% di sistem sebelumnya). 4,1 juta pengguna akhir dilayani.


Kartu Skor Senior Saya

Item Portofolio Apakah Saya Melakukannya? Bukti
Diagram sistem arsitektur ✅ Didokumentasikan di beberapa studi kasus dengan analisis trade-off
Keputusan trade-off dengan alasan ✅ Go vs Rust, MQTT vs HTTP, SSR vs SPA — masing-masing dengan matriks evaluasi eksplisit
Dampak mentoring ⚠️ Hanya mentoring informal — tidak pernah membuat program terstruktur
Berbicara/menulis ✅ 20+ artikel teknis yang diterbitkan termasuk analisis stack Go yang paling banyak dibaca
Pengaruh arsitektur lintas tim ✅ Merancang pola yang diadopsi oleh 3+ tim produk (form engine, pipeline telemetry)
Kepemimpinan insiden produksi ✅ Memimpin RCA untuk insiden IoT kritis, mendokumentasikan runbook untuk serah terima operasi
ADR / dokumentasi teknis ⚠️ Tidak konsisten — keputusan didokumentasikan dalam studi kasus tetapi tidak dalam ADR formal di setiap kasus

Kolom mentoring informal adalah celah terbesar saya. Saya membimbing engineer junior dan mid-level pada code review dan keputusan arsitektur mereka, tetapi saya tidak pernah membuat kerangka mentoring terstruktur. Melihat ke belakang, itu adalah peluang yang terlewatkan — para engineer yang saya bimbing secara informal tumbuh lebih cepat, tetapi organisasi tidak dapat mereplikasi pola tersebut karena tidak didokumentasikan.


Saran untuk Engineer yang Bertransisi ke Senior

Dokumentasikan Setiap Keputusan Arsitektur — Bahkan yang Salah

Perbedaan antara senior dan mid-level bukanlah membuat keputusan sempurna — ini adalah mampu menjelaskan mengapa kamu membuat keputusan, alternatif apa yang dipertimbangkan, dan kapan kamu akan meninjaunya kembali. Mulailah menulis ADR (Architecture Decision Records) untuk setiap pilihan teknis yang tidak sepele. Analisis stack Go yang saya publikasikan menjadi artikel yang paling banyak dibaca bukan karena secara teknis mengesankan, tetapi karena menunjukkan matriks evaluasi — format yang persis sama dengan yang kamu butuhkan untuk portofolio senior-mu.

Mentoring Bukan Opsional

Kamu tidak menjadi senior dengan mengetahui lebih banyak. Kamu menjadi satu dengan membuat orang lain lebih efektif. Mulailah dengan satu engineer junior. Code review dengan penjelasan ("Saya akan melakukan X karena Y, tetapi pendekatanmu berfungsi jika Z"). Pair programming pada fitur yang kompleks. Tulislah dokumentasi internal yang membuka blokir tim. Bunga majemuk dari mentoring membuahkan hasil lebih cepat daripada fitur individu apa pun yang bisa kamu bangun.

Menulis Secara Publik — Portofolio Engineering-mu Berakumulasi

Setiap keputusan arsitektur, analisis trade-off, atau postmortem produksi yang kamu tulis adalah aset. Itu memvalidasi pemikiranmu untuk calon pemberi kerja masa depan, membantu engineer lain yang menghadapi masalah yang sama, dan membangun pengakuan yang membuat peran senior lebih mudah diamankan. Saya menulis 20+ artikel teknis selama tahun-tahun senior saya — dan setiap satu dari artikel tersebut berkontribusi lebih banyak pada lintasan karier saya daripada fitur tunggal mana pun yang saya kirim.

Ukur Segalanya, Optimalkan yang Penting

Engineer mid-level mengoptimalkan untuk "apakah ini berfungsi." Engineer senior mengoptimalkan untuk "apakah ini bertahan." Latensi, throughput, error budget, MTTR, frekuensi deployment — ini bukan metrik DevOps. Ini adalah metrik engineering senior. Mulailah mengukur sebelum kamu mengoptimalkan. "Penghematan tahunan $200K" dari Petrosea ada karena saya menginstrumentasi sistem dari hari pertama dan dapat menunjuk pada peningkatan spesifik dengan nilai dolar spesifik.


Yang Akan Saya Lakukan Secara Berbeda

  • Mensahkan mentoring lebih awal. Engineer junior dan mid-level yang saya bimbing secara informal adalah yang paling saya banggakan. Tetapi saya seharusnya menciptakan pola yang dapat diulang — tech talk, jadwal pair programming, daftar periksa pertumbuhan — yang bertahan lebih lama dari kehadiran saya.
  • Menulis ADR formal untuk setiap keputusan besar. Saya mendokumentasikan trade-off dalam studi kasus tetapi tidak dalam format ADR yang dapat dibaca mesin yang dibutuhkan organisasi untuk memori institusional.
  • Berkata "tidak" dengan lebih jelas pada pekerjaan non-senior. Transisi tersulit adalah belajar bahwa tugas saya bukan menulis lebih banyak kode. Setiap jam yang saya habiskan untuk membangun fitur adalah jam yang tidak saya habiskan untuk meninjau arsitektur, membuka blokir rekan tim, atau mendokumentasikan keputusan. Para senior yang unggul sangat strategis tentang di mana mereka menginvestasikan waktu mereka.

Senior engineering bukanlah langit-langit. Ini adalah landasan peluncuran. Keputusan arsitektur yang kamu buat di tingkat ini bertahan lebih lama dari masa jabatanmu. Engineer yang kamu bimbing melampaui pengaruhmu. Trade-off yang kamu dokumentasikan menghemat waktu bertahun-tahun penemuan ulang tim masa depan. Kode-mu dikompilasi dan di-deploy. Namun keputusanmu berakumulasi — dan itulah yang membuat seorang senior engineer.

Artikel terkait

Karier
Karier
Yang Saya Lakukan di Level CTO — Strategi Bisnis Melalui Teknologi

Yang Saya Lakukan di Level CTO — Strategi Bisnis Melalui Teknologi

Di level ini, portofolio Anda bukan tentang teknologi — melainkan tentang bagaimana teknologi menciptakan nilai bisnis. Saya berhasil menekan biaya inferensi AI hingga 90%, membangun orkestrasi MCP yang melipatgandakan output developer 3x lipat, dan menetapkan strategi FOSS di mana setiap repositori menjadi aset portofolio 24/7. Inilah yang sebenarnya dihasilkan oleh kepemimpinan rekayasa.
Faisal Affan
Faisal Affan
Diterbitkan
Karier
Yang Saya Lakukan Sebagai Junior Developer — Fundamental yang Membentuk Segalanya

Yang Saya Lakukan Sebagai Junior Developer — Fundamental yang Membentuk Segalanya

Nol pengalaman production. GitHub penuh repo tutorial. Satu aset: kemampuan belajar cepat dan nol ketakutan merusak sesuatu. Ini yang benar-benar saya bangun sebagai junior engineer — situs WordPress, sistem universitas PHP, dan kesalahan hardcoded credentials yang mengajarkan saya keamanan selamanya.
Faisal Affan
Faisal Affan
Diterbitkan
Karier
Apa yang Saya Lakukan sebagai Staff Engineer — Leverage, Standar, dan Dampak di Seluruh Organisasi

Apa yang Saya Lakukan sebagai Staff Engineer — Leverage, Standar, dan Dampak di Seluruh Organisasi

Seorang staff engineer tidak hanya memecahkan masalah sulit. Mereka memecahkan masalah yang menghalangi engineer lain untuk produktif. Saya membangun framework LMS multi-tenant yang melayani 100+ universitas, dynamic form engine yang diadopsi 3 tim, dan jembatan ISO 8583 yang menjadi standar organisasi. Seperti inilah wujud leverage di level staff sebenarnya.
Faisal Affan
Faisal Affan
Diterbitkan
Karier
Setiap Role yang Pernah Saya Jalani — Junior sampai CTO, Apa yang Sebenarnya Saya Lakukan di Setiap Level

Setiap Role yang Pernah Saya Jalani — Junior sampai CTO, Apa yang Sebenarnya Saya Lakukan di Setiap Level

Retrospeksi karir yang jujur menelusuri perjalanan saya melalui setiap role engineering: Junior developer menggilas fundamental, Mid-level mengirim fitur production, Senior mendesain arsitektur, Staff membangun leverage org-wide, dan keputusan strategis level CTO. Setiap section dipetakan ke framework strategi portofolio dengan project nyata, metrik nyata, dan pelajaran nyata.
Faisal Affan
Faisal Affan
Diterbitkan