Rahmat Wibowo mempublikasikan audit engineering baris-per-baris yang menghancurkan terhadap proyek Smart Waste Management System milik Graciella Valeska Liander, memberikan nilai 3.1/10 dan menyatakan dia 'tidak layak' untuk peran Associate Engineer full-time, sehingga secara publik merendahkan kompetensi profesionalnya dengan kedok tinjauan teknis.

Unggahan asli ↗

Rahmat Wibowo mempublikasikan audit engineering baris-per-baris yang menghancurkan terhadap proyek Smart Waste Management System milik Graciella Valeska Liander, memberikan nilai 3.1/10 dan menyatakan dia 'tidak layak' untuk peran Associate Engineer full-time, sehingga secara publik merendahkan kompetensi profesionalnya dengan kedok tinjauan teknis.

Transkrip

Studi Kasus Graciella Valeska Liander: Sebuah Asesmen Software Engineering Bertaraf Principal Engineer terhadap Proyek Smart Waste Management System Miliknya Rahmat Wibowo - 1 Juni 2026 Build for fe everyone recat valet. 2 o— Sebuah audit engineering baris-per-baris terhadap repository Smart Waste Management System milik Graciella Valeska Liander, dibandingkan dengan standar Associate Engineer full-time di Google/AWS, menghasilkan skor keseluruhan 3.1/10 dan vonis "tidak layak" — inilah laporan lengkapnya. Sebelum ini menjadi cerita tentang pelecehan anonim (itu adalah persoalan terpisah, yang didokumentasikan di tempat lain di blog ini), Graciella Valeska Liander, di atas kertas, adalah kandidat yang mengesankan: Cloud Solutions Consultant Intern di Google, lulusan Institut Teknologi Bandung, "Customer Engineer at Google Cloud" di LinkedIn, 6.493 pengikut, 500+ koneksi. Profil seperti inilah yang sering diteruskan sebagai contoh panutan. Postingan ini bukan tentang kontroversi itu. Ini adalah dokumen teknis murni: sebuah Software Engineering Assessment Report yang mengevaluasi salah satu artefak engineering publiknya — proyek Smart Waste Management System (SWMS) — terhadap standar yang akan diterapkan oleh seorang Principal Engineer di Google saat memutuskan apakah seorang kandidat siap untuk peran Associate Engineer full-time. Kami menerbitkan ulang asesmen ini secara lengkap, tetap mempertahankan setiap penilaian, temuan, dan rekomendasi, karena nilai dari laporan semacam ini terletak pada detailnya, bukan pada headline-nya Metadata Asesmen Field Detail Kandidat Graciella Valeska Liander Posisi Cloud Solutions yang Dinilai Consultant Intern di Untuk Google Target Associate Engineer Evaluasi Full-Time Tanggal 08 Juni 2026 Asesmen Repository Smart Waste Management System (SWMS) Standar Principal Engineer Evaluasi di Google Kerangka Kematangan SDLC, Asesmen Pipeline CI/CD, Kualitas Kode, Pola Desain Disusun Principal Software Oleh Engineer (Standar Google) Ringkasan Eksekutif Asesmen ini mengevaluasi proyek Smart Waste Management System milik Graciella terhadap standar software engineering bertaraf enterprise yang diharapkan di Google untuk peran Associate full-time. Evaluasi ini berfokus pada kematangan Software Development Lifecycle (SDLC), praktik CI/CD, indikator kualitas kode, dan pengambilan keputusan arsitektural. Kategori Rating Keterangan Manajemen 3.510 Struktur Siklus Hidup minimal Software Pipeline CI/CD 2/10 Tidak ada & Deployment otomatisasi Kualitas Kode & 4/0 Masalah Maintainability moderat Desain & 5/10 Fungsional Arsitektur tapi dasar Testing & 2/0 Cakupan Quality tidak Assurance memadai Keamanan & 2/No Masalah Production kritis Readiness Dokumentasi 3/10 Upaya & minimal Komunikasi RATING 3.1/10 Level KESELURUHAN pekerjaan entry-level STATUS: TIDAK LAYAK MELANJUTKAN KE PERAN ASSOCIATE FULL-TIME Graciella Valeska Liander BELUM SIAP untuk melanjutkan ke posisi Associate Engineer full-time di Google, AWS, atau enterprise sejenis pada saat ini. Asesmen Saat Ini: Pekerjaan entry-level/internship junior Kekurangan: Kesenjangan kritis dalam testing, CI/CD, keamanan, dan production engineering Waktu Menuju Kesiapan: 3-6 bulan dengan mentoring terstruktur Rekomendasi: Tawarkan perpanjangan internship terstruktur dengan milestone teknis yang jelas dan mentoring sebelum evaluasi ulang untuk peran full-time. Gambaran Umum Proyek Nama Proyek: Smart Waste Management System (SWMS) Technology Stack: Frontend: React 18.0.0, React Google Charts, Responsive CSS Backend: Firebase Realtime Database Bahasa: JavaScript (ES6+) Build Tool: Create React App (CRA) dengan react-scripts 5.0.1 Ukuran Codebase: Total Baris Kode: 277 baris Komponen Utama: App.js (216 baris) File Test: 1 (App.test.js dengan 1 test yang lulus) Git Commits: 14 commit selama 4 hari (22-26 April 2022) Tujuan Fungsional: Memantau sistem pengelolaan sampah dengan sensor loT, menampilkan visualisasi data real-time melalui Google Charts, dan memberikan peringatan untuk tempat sampah penuh dan tingkat bau. 1. Kematangan Software Development Lifecycle (SDLC) Rating: 3.5/10 Kekuatan Version control dasar dengan Git (14 commit dengan pesan yang jelas) Implementasi UI responsif (pertimbangan desain mobile-first) Arsitektur React berbasis komponen (model komponen tunggal) Masalah Kritis Tidak Ada Proses Development: Tidak ada sprint planning, dokumentasi requirement, atau design review. Komponen Monolitik: 216 baris dalam satu komponen App.js melanggar separation of concerns. Sistem enterprise membutuhkan komponen yang modular dan reusable. Tidak ada hierarki komposisi komponen. Tidak Ada Standar Kode: Tidak ada konfigurasi ESLint, Prettier, atau pemformatan kode. Hanya konfigurasi default CRA. Riwayat Git yang Dangkal: Pesan commit seperti "fixbug", "add responsive" kurang konteks. Tidak ada commit body yang menjelaskan MENGAPA perubahan dilakukan. Tidak Ada Requirements Traceability: Nol bukti dokumentasi requirement, acceptance criteria, atau pelacakan user story. Commit Penulis Tunggal: Semua 14 commit hanya oleh Graciella. Tidak ada indikator kolaborasi atau proses code review Angka Ajaib yang Hardcoded: Ambang batas jarak 10cm dan ambang batas gas 600 di-hardcode dalam business logic tanpa parameterisasi. Yang Diharapkan pada Level Associate Minimal: alur kerja PR review, aturan branch protection, persyaratan merge Keputusan arsitektur yang didokumentasikan (format ADR) Pemisahan yang jelas antara kode infrastruktur dan aplikasi Manajemen dependency dengan lock file yang di-versioning dengan benar Manajemen konfigurasi (environment dev/staging/prod) 2. Pipeline CI/CD & Otomatisasi Deployment Rating: 2/10 Kondisi Saat Ini Tidak ada pipeline CI/CD yang ada. Repository tidak berisi file konfigurasi untuk: GitHub Actions (.github/workflows/) GitLab CI (.gitlab-ci.yml) CircleCI (.circleci/config.yml) Jenkins (Jenkinsfile) Containerization Docker (Dockerfile, docker-compose.yml) Infrastructure as Code (Terraform, CloudFormation) Build dan deployment sepenuhnya merupakan proses manual Masalah Kritis Tidak Ada Automated Testing: Nol eksekusi test pada commit atau PR. Satu-satunya file test (App.test.js) adalah template placeholder yang menguji komponen yang salah Tidak Ada Build Verification: Tidak ada validasi otomatis bahwa kode ter-compile, ter-bundle, atau berjalan. Tidak Ada Deployment Pipeline: Deployment manual berarti risiko tinggi human error, environment yang tidak konsisten, dan tidak ada prosedur rollback. Tidak Ada Pemisahan Environment: Satu konfigurasi Firebase di-hardcode di firebase.js. Tidak ada pemisahan database dev/staging/production. Tidak Ada Manajemen Release: Tidak ada version tagging, release notes, atau pelacakan deployment. Tidak Ada Security Scanning: Tidak ada pemeriksaan kerentanan dependency (npm audit), tools SAST, atau secrets scanning Kesenjangan Standar Enterprise Di Google dan AWS, setiap perubahan kode harus lolos: Suite test otomatis dengan cakupan >80% Gerbang linting dan kualitas kode Security vulnerability scanning Build verification Deployment otomatis dengan strategi blue-green atau canary Kemampuan rollback dengan revert instan Proyek ini tidak memiliki satu pun kontrol ini. 3. Kualitas Kode & Maintainability Rating: 4/10 Code Smells yang Terdeteksi Race Condition di useEffect (Baris 46): Dependency array [data] pada useEffect kedua ter-trigger saat data berubah, tetapi setLastData menggunakan lastData dari render sebelumnya. Ini menyebabkan masalah stale closure dan potensi infinite loop pada kondisi tertentu. Error Handling yang Hilang (Baris 25-27): Blok catch query Firebase hanya mencatat error ke console. Tidak ada feedback pengguna, retry logic, atau error recovery. Sistem production tidak bisa bergantung pada console log Concerns yang Tercampur dalam Satu Komponen: Data fetching, state management, rendering UI, dan business logic semuanya dalam satu komponen 216 baris. Tidak adanya pemisahan berarti testing, reuse, dan maintenance menjadi sulit. Angka Ajaib (Baris 50, 53): Ambang batas di-hardcode: distance < 10, gasValue > 600. Ini seharusnya menjadi konstanta atau parameter yang dapat dikonfigurasi, bukan tersebar di seluruh logic. Console.log yang Tidak Terpakai (Baris 20, 33): Console log yang dikomentari dan yang aktif masih ada di kode production. Menunjukkan pembersihan yang tidak lengkap dan kurangnya disiplin debugging Pemeriksaan Window yang Redundan (Baris 59-68, 74-83): Pemeriksaan hasWindow bersifat defensif terhadap environment non-browser, tetapi ini adalah aplikasi React browser-only. Kompleksitas yang tidak perlu dan cargo cult coding Rendering String Kondisional (Baris 118, 128, 143): Logic warna dan pemetaan status yang duplikat. Seharusnya diekstrak ke konstanta atau fungsi helper untuk maintainability. Inline Styles di Mana-mana: Semua styling dalam JSX (baris 87-144, 155-195). Membuat theming menjadi tidak mungkin, melanggar prinsip DRY, dan mempersulit desain responsif. CSS-in-JS atau pemisahan stylesheet diperlukan. Analisis Testing App.test.js (8 baris) berisi test placeholder yang mencari teks "learn react". Test ini Tidak ada dalam komponen App yang sebenarnya Akan gagal saat dijalankan Menunjukkan copy-paste template tanpa pemahaman Mengindikasikan tidak ada cakupan test nyata untuk aplikasi tersebut Diharapkan: Unit test untuk data fetching, transisi state, dan alert trigger. Integration test untuk integrasi Firebase. 4. Keputusan Desain & Arsitektural Rating: 5/10 Pilihan Teknologi Aspek Positif: React 18 modern dan sesuai untuk aplikasi berbasis UI Firebase Realtime Database memungkinkan pengambilan data sensor real-time Google Charts menyediakan charting out-of-box tanpa kompleksitas D3 Kekhawatiran: Tidak ada abstraksi lapisan data persistence. Panggilan Firebase langsung di komponen React. Fitur React 18 (Suspense, Concurrent rendering) tidak dimanfaatkan Default Create React App digunakan tanpa kustomisasi untuk kebutuhan production (bundle analysis, error boundaries) Kekhawatiran Arsitektural Data Fetching Monolitik (Baris 14- 28): Mengambil semua data historis saat mount tanpa pagination atau filtering. Risiko skalabilitas: ribuan pembacaan sensor menjadi tidak terkelola. Transformasi Data yang Tidak Efisien (Baris 34-44): Membangun ulang seluruh array chart pada setiap perubahan data. Tidak ada memoization atau diffing. Penurunan performa pada dataset besar. Tidak Ada Pola State Management: Hook useState tersebar di seluruh komponen. Tidak ada context provider, Redux, atau yang serupa untuk update state yang dapat diprediksi. Membuat debugging alur state menjadi sulit Coupling Ketat ke Firebase: firebase.js mengekspor db secara langsung. Tidak ada pola adapter atau dependency injection. Sulit untuk mock untuk testing atau menukar Firebase dengan backend alternatif Desain Responsif Tanpa Mobile- First: Pemeriksaan breakpoint menggunakan windowDimensions.width < 600 langsung di JSX. Seharusnya menggunakan CSS media query atau CSS Grid untuk pemisahan yang lebih baik. Pola Desain yang Hilang Tidak ada pola Container/Presenter untuk testability Tidak ada Error Boundary untuk penanganan error yang graceful Tidak ada Custom Hooks untuk reuse logic data fetching Tidak ada pola Composition (compound components) Tidak ada Memoization untuk optimisasi performa 5. Keamanan & Kesiapan Production Rating: 2/10 Masalah Keamanan Kritis Secrets yang Terekspos (firebase.js, Baris 4-13): API key Firebase, auth domain, dan database URL di-hardcode di source code dan ter-commit ke repository GitHub publik. Ini adalah kerentanan kritis. Siapa pun dapat mengakses database Firebase secara langsung. Seharusnya menggunakan environment variable (file .env, jangan pernah commit credential). Tidak Ada Input Validation: Pesan alert langsung menampilkan data tanpa sanitasi. Potensi XSS jika data sensor terkompromi Content Security Policy yang Hilang: Tidak ada header CSP untuk mencegah serangan injection. Tidak Ada Penerapan HTTPS: URL Firebase dapat diakses melalui HTTP. Data real-time seharusnya hanya menggunakan channel terenkripsi. Tidak Ada Audit Keamanan Dependency: firebase@9.6.11 dan react-scripts@5.0.1 kemungkinan memiliki kerentanan yang diketahui. Tidak ada npm audit atau scanning otomatis. Tidak Ada Error Boundaries: Error yang tidak tertangani meng-crash seluruh aplikasi. Tidak ada UI fallback atau error logging. Tidak Ada Rate Limiting pada Query Firebase: Potensi biaya yang tidak terkendali dari pemindaian database penuh berulang. Tidak Ada Authentication/ Authorization: Siapa pun dengan API key dapat membaca dan berpotensi menulis ke Firebase. Tidak ada autentikasi pengguna atau kontrol akses berbasis peran. Checklist Kesiapan Production — Belum Siap Untuk Production Tidak ada layanan error handling atau logging Tidak ada monitoring atau alerting Tidak ada analytics atau instrumentasi Tidak ada rencana backup atau disaster recovery Tidak ada load testing atau analisis skalabilitas Tidak ada API rate limiting Tidak ada strategi indexing database yang didokumentasikan Tidak ada optimisasi performa (lazy loading, code splitting) Tidak ada kepatuhan aksesibilitas (WCAG 2.) Tidak ada testing kompatibilitas browser 6. Dokumentasi & Komunikasi Rating: 3/10 README.md: Template default Create React App. Tidak ada dokumentasi spesifik proyek. Tidak ada instruksi setup untuk development lokal, konfigurasi Firebase, atau prosedur deployment. Komentar Kode: Komentar inline minimal. Baris 20 dan 33 memiliki pernyataan console.log yang dikomentari, menunjukkan pembersihan yang tidak lengkap. Dokumentasi Arsitektur: Nol architectural decision record (ADR), dokumen desain, atau diagram sistem. Dokumentasi API: Tidak ada dokumentasi skema Firebase atau spesifikasi model data Instruksi Setup: Tidak ada langkah yang jelas untuk: Clone dan instal dependency Konfigurasi proyek Firebase Menjalankan development server Deploy ke production Yang Diharapkan pada Level Associate README yang detail dengan gambaran arsitektur Panduan setup untuk developer baru Dokumen ADR untuk keputusan signifikan Spesifikasi API dengan contoh Panduan troubleshooting Pedoman kontribusi 7. Manajemen Dependency & Konfigurasi Build Rating: 3.5/10 Analisis Dependency (package.json) react@18.0.0 (terbaru, bagus) firebase@9.6.11 (dapat diterima, tetapi audit keamanan manual diperlukan) react-google-charts@4.0.0 (sesuai untuk use case dashboard) Masalah Versi caret (^) memungkinkan breaking changes Tidak ada versi patch eksplisit yang di-pin untuk reproducibility Tidak ada dev dependency yang dipisahkan dari runtime Tidak ada lock file yang di-commit ke source control (package-lock.json ada tetapi tidak dilacak di git) Tidak ada script audit dependency di CI/CD (tidak ada) Dependency Production yang Hilang Tidak ada error tracking (Sentry) Tidak ada layanan logging Tidak ada analytics Tidak ada monitoring client Script Default yang Tidak Terpakai react-scripts eject (diaktifkan tetapi tidak disarankan) Tidak ada optimisasi build kustom 8. Analisis Komparatif: Yang Diharapkan vs. Aktual Kemampuan Standar Google Cakupan Test >80% Pipeline CI/CD Otomatis pada setiap commit Proses Code Wajib, Review multi-reviewer Audit Keamanan Berkelanjutan + Manual Dokumentasi Komprehensif Error Handling Terpusat, tercatat Monitoring/ Terinstrumentasi Logging fullstack Manajemen Berbasis Konfigurasi environment Arsitektur Modular, Komponen reusable Analisis Terukur, Performa teroptimasi Catatan: Kesenjangan yang ditandai 'Kritis' memerlukan perhatian segera sebelum deployment production atau perekrutan full-time. 9. Asesmen & Rekomendasi Keseluruhan Rating Akhir: 3.1/10 Ringkasan Asesmen Proyek ini menunjukkan kompetensi dasar dengan React dan Firebase tetapi jauh dari standar software engineering profesional yang diharapkan di Google atau AWS untuk Associate engineer full-time. Pekerjaan ini cocok untuk proyek sekolah (yang tampaknya memang demikian, berdasarkan timestamp 2022 dan credit kelompok), tetapi memerlukan peningkatan substansial untuk lingkungan production atau pekerjaan full-time. Kekurangan Utama Budaya Testing Nol: Tidak ada unit test, integration test, atau praktik test-driven development. Tidak Ada Kematangan Operasional: Ketiadaan CI/CD, monitoring, logging, dan error handling menghalangi deployment production Kerentanan Keamanan: Secrets yang di-hardcode dan tidak ada autentikasi merupakan showstopper untuk sistem production mana pun. Arsitektur Monolitik: Satu komponen 216 baris melanggar prinsip software engineering dan membatasi skalabilitas. Proses Manual: Semua building, testing, dan deployment bersifat manual, rawan error, dan tidak dapat diverifikasi. Dokumentasi yang Hilang: Dokumentasi yang tidak memadai membuat onboarding, maintenance, dan debugging menjadi sulit. Tidak Ada Standar Kualitas Kode: Tidak ada ESLint, Prettier, dan proses code review Potensi untuk Berkembang — Indikator Positif Berhasil merilis aplikasi web yang berfungsi dengan visualisasi data real-time Menunjukkan kemampuan untuk mengintegrasikan layanan pihak ketiga (Firebase, Google Charts) Implementasi desain responsif menunjukkan perhatian terhadap UX Pesan commit yang jelas menunjukkan sedikit disiplin development Dengan mentoring yang tepat dan paparan terhadap praktik enterprise, Graciella memiliki fondasi untuk berkembang menjadi engineer yang kompeten. Kesenjangan ini dapat dipelajari, bukan masalah kemampuan fundamental. Rekomendasi untuk Peningkatan (Urutan Prioritas) SEGERA (Sebelum Production atau Perekrutan Full-Time): Amankan API Key: Pindahkan konfigurasi Firebase ke environment variable. Jangan pernah commit secrets ke git. Tambahkan Automated Testing: Implementasikan unit test Jest untuk komponen dan integration test Firebase. Target cakupan 80%+. Implementasikan CI/CD: Siapkan GitHub Actions untuk menjalankan test, linting, dan build pada setiap push Refactor Komponen: Pecah App.js 216 baris menjadi komponen yang lebih kecil dan testable (ChartContainer, StatusCard, AlertService). JANGKA PENDEK (1-2 Minggu): 5. Tambahkan Error Handling: Implementasikan komponen Error Boundary, error logging terpusat (Sentry atau sejenisnya). 6. Konfigurasikan Tools Kualitas Kode: ESLint (airbnb-config), Prettier, dan pre-commit hook. 7. Tulis README yang Komprehensif: Panduan setup, diagram arsitektur, langkah konfigurasi Firebase. 8. Perbaiki Angka Ajaib: Ekstrak ambang batas ke konstanta konfigurasi atau setting yang didukung database JANGKA MENENGAH (1-2 Bulan): 9. Implementasikan Monitoring/Logging: Tambahkan structured logging, APM, dan monitoring performa. 10. Audit Keamanan: Lakukan audit dependency, implementasikan header CSP, tambahkan rate limiting. 11. Tambahkan Manajemen Environment: Pisahkan konfigurasi dev/staging/production 12. Optimisasi Performa: Implementasikan React.memo, useMemo, dan code splitting. JANGKA PANJANG (Berkelanjutan): 13. Bangun Proses Code Review: Wajibkan peer review untuk semua perubahan. 14. Buat Dokumentasi Arsitektur: ADR untuk semua keputusan besar. 15. Siapkan Analytics: Lacak pola penggunaan, metrik performa, perilaku pengguna. 10. Panduan Interview & Perekrutan Area Fokus Interview yang Disarankan — Pertanyaan Teknis untuk Dieksplorasi Filosofi Testing: Tanyakan mengapa test tidak disertakan. Nilai pemahaman tentang test pyramid, TDD, mocking. Kesadaran Keamanan: Sajikan skenario secrets yang di-hardcode. Evaluasi apakah mereka menyadari risikonya dan tahu remediasinya Berpikir Skala: Tanyakan bagaimana sistem akan menangani 1000 tempat sampah. Apakah mereka memikirkan tentang query database, pagination, caching? Keputusan Arsitektur: Mengapa memilih Firebase dibanding REST API? Trade-off antara update real-time dan skalabilitas? Kesiapan Production: Apa yang diperlukan sebelum men-deploy ini ke 100 ribu pengguna? Pahami monitoring, logging, error handling. Sinyal Positif Mengakui kesenjangan dan menjelaskannya sebagai proyek pembelajaran Menunjukkan kesadaran akan pentingnya testing dan CI/CD Menunjukkan keingintahuan tentang pola enterprise Menanyakan tentang skala dan kekhawatiran operasional Merujuk pada pembelajaran dari kesalahan Red Flag Defensif tentang masalah kualitas kode Tidak menyadari risiko keamanan (secrets yang terekspos) Memperlakukan testing sebagai opsional atau prioritas rendah Tidak dapat menjelaskan mengapa CI/CD penting Tidak ada kesadaran tentang persyaratan production Rekomendasi Keputusan Perekrutan BELUM SIAP UNTUK PEREKRUTAN SEGERA sebagai Associate Engineer full-time. Kondisi saat ini menunjukkan pekerjaan internship junior. Dengan mentoring terstruktur selama 3-6 bulan, bisa menjadi Associate yang kompeten. Rekomendasi: Tawarkan perpanjangan internship dengan mentoring dan milestone teknis yang jelas Tugaskan partner code review untuk setiap kontribusi Wajibkan penyelesaian modul pelatihan testing, CI/CD, dan keamanan Berpasangan pada peningkatan proyek bertaraf production Evaluasi ulang setelah perpanjangan internship Jika dievaluasi untuk peran Associate full-time sekarang: Rekomendasikan "Belum Siap" dengan tawaran untuk melanjutkan internship dengan rencana pertumbuhan terstruktur. Pada level Associate, diharapkan produktivitas segera dengan pengawasan minimal. Kandidat ini memerlukan mentoring langsung dan tidak dapat memelihara sistem production secara mandiri. Temuan Code Review Detail Analisis Baris-per-Baris App.js Baris 14-28: Pengambilan Data Awal Masalah: Mengambil semua data historis tanpa pagination atau filtering. Seiring dataset bertambah, ini menjadi memory-intensive dan lambat. Diharapkan: Implementasikan pagination atau batasi ke N record terakhir. Tambahkan state loading dan error. Tingkat Keparahan: Sedang (berfungsi sekarang, gagal pada skala besar) Baris 30-46: Loop Transformasi Data Masalah: Membangun ulang seluruh array pada setiap perubahan data. Operasi O(n) pada setiap update state. Inefisiensi bertambah seiring ukuran data. Rekomendasi: Gunakan useMemo dengan dependency array untuk memoize kalkulasi. Hanya hitung ulang ketika data benar-benar berubah Contoh Perbaikan const distanceChart = useMemo(() => { if (!data) return undefined; let temp = [["Timestamp", "Distance"]]; Object.entries(data).forEach(([timestamp, record]) => { temp.push([timestamp, record.distance] ); ys return temp; }, [data]); Tingkat Keparahan: Sedang (penurunan performa) Baris 48-57: Logic Alert Masalah Browser alert() adalah UX yang buruk. Mengganggu alur kerja pengguna, tidak reliable di mobile: Ambang batas yang di-hardcode (10, 600) tidak dapat dikonfigurasi. Tidak ada de-duplikasi alert. Pengguna melihat alert berulang untuk kondisi yang sama. Tidak ada logging alert untuk monitoring/kepatuhan. Rekomendasi: Gunakan notifikasi toast berbasis state, konfigurasi ambang batas berbasis database, dan logging riwayat alert. Tingkat Keparahan: Tinggi (UX buruk, sistem bertaraf production butuh pola yang lebih baik) Baris 59-83: Penanganan Resize Window Masalah: Pelacakan ukuran window manual bersifat rapuh dan rawan error. Komunitas React sudah beralih ke CSS-in-JS atau CSS media query sebagai pendekatan yang lebih baik Rekomendasi: Gunakan CSS media query di stylesheet atau CSS Grid untuk layout responsif. Menghilangkan kebutuhan pelacakan window. Tingkat Keparahan: Rendah (berfungsi dengan benar, tapi bukan best practice) firebase.js: Eksposur Konfigurasi MASALAH KEAMANAN KRITIS: Semua credential Firebase di-hardcode dan ter-commit ke repository GitHub publik. Siapa pun dapat langsung mengakses Firebase Realtime Database. Credential yang terekspos: API Key, Auth Domain, Database URL, Project ID, App ID TINDAKAN SEGERA DIPERLUKAN: Regenerasi API key Firebase segera Hapus file ini dari riwayat git menggunakan git-filter-branch atau sejenisnya Pindahkan semua credential ke file .env.local Tambahkan .env.local ke .gitignore Konfigurasikan security rules Firebase untuk mewajibkan autentikasi Tingkat Keparahan: KRITIS (risiko data breach) Kesimpulan Smart Waste Management System milik Graciella menunjukkan kompetensi dasar dengan framework frontend dan integrasi backend. Aplikasi ini berhasil mengimplementasikan visualisasi data real-time dan desain UI responsif. Namun, proyek ini kekurangan kematangan operasional, cakupan test, dan praktik keamanan yang diperlukan untuk sistem production atau peran Associate engineer full-time di enterprise seperti Google atau AWS. Kesenjangan ini bukan masalah kemampuan fundamental melainkan paparan dan disiplin dalam praktik software engineering enterprise. Testing, CI/CD, error handling, kesadaran keamanan, dan dokumentasi semuanya adalah keterampilan yang dapat dipelajari. Dengan mentoring terstruktur, Graciella memiliki potensi untuk berkembang menjadi full-stack engineer yang kompeten. Untuk perekrutan segera sebagai Associate full-time: TIDAK DIREKOMENDASIKAN Untuk perpanjangan internship terstruktur dengan mentoring: DIREKOMENDASIKAN Untuk kelanjutan internship: Akan mendapat manfaat dari on-the-job training dalam testing, CI/CD, dan production engineering. Asesmen ini sebaiknya digunakan secara konstruktif untuk membimbing pertumbuhan dan pembelajaran, bukan sebagai penilaian akhir. Enterprise engineering adalah keahlian yang dipelajari melalui pengalaman langsung dan mentoring. Fondasi sudah ada di sini untuk dibangun lebih lanjut Ini adalah asesmen teknis engineering terhadap sebuah repository/proyek portfolio publik dan tidak berkaitan dengan liputan lain di blog ini mengenai individu yang sama. Ini tidak boleh dibaca sebagai komentar terhadap perselisihan, kontroversi, atau perilaku pribadi mana pun — ini hanya mengevaluasi kode, proses, dan kematangan engineering. #EngineeringAssessment #SoftwareEngineering #GracielaValeskaLiander #CodeReview #CICD #infraloka #RahmatWibowo