Rahmat Wibowo published a scathing line-by-line engineering audit of Graciella Valeska Liander's Smart Waste Management System project, assigning it 3.1/10 and declaring her 'not eligible' for a full-time Associate Engineer role, thereby publicly disparaging her professional competence under the guise of a technical review.
| ID | ev-20260728-040 |
|---|---|
| Source | Infraloka Blog |
| Targets | Graciella Valeska Liander |

Transcript
Study Case of
Graciella Valeska
Liander: A Principal-
Engineer-Grade
Software Engineering
Assessment of Her
Smart Waste
Management System
Project
RahmatWibowo - June1,2026
Build
for
fe everyone
recat valet. 2 o—
Aline-by-line engineering audit of
Graciella Valeska Liander's Smart Waste
Management System repository,
benchmarked against Google/AWS full-
time Associate Engineer standards,
returns an overall score of 3.1/10 anda
“not eligible" verdict — this is the full
report.
Before this became a story about
anonymous harassment (that is a
separate matter, documented elsewhere
on this blog), Graciella Valeska Liander
was, on paper, animpressive candidate
Cloud Solutions Consultant Intern at
Google, an Institut Teknologi Bandung
graduate, "Customer Engineer at Google
Cloud" on Linkedin, 6,493 followers,
500+ connections. The kind of profile
that gets forwarded aroundasarole
model.
This postis not about that controversy. It
isa straight technical document: a
Software Engineering Assessment
Report evaluating one of her public
engineering artifacts — the Smart Waste
Management System (SWMS) project —
against the standard a Principal Engineer
at Google would apply when deciding
whether a candidate is ready fora full-
time Associate Engineer role. We are
republishing the assessmentin full,
preserving every rating, finding, and
recommendation, because the value of
this kind of reportis in its detail, not its
headline
Assessment Metadata
Field Detail
Candidate Graciella Valeska
Liander
Position Cloud Solutions
Evaluated For Consultant Intern at
Google
Evaluation Full-Time Associate
Target Engineer
Assessment June 08,2026
Date
Repository Smart Waste
Management
System (SWMS)
Evaluation Principal Engineer
Standard at Google
Assessment SDLC Maturity,
Framework CI/CD Pipeline,
Code Quality,
Design Patterns
Assessment Principal Software
PreparedBy — Engineer(Google
Standards)
Executive Summary
This assessment evaluates Graciella's
Smart Waste Management System
project against enterprise-grade
software engineering standards
expected at Google for full-time
Associate roles. The evaluation focuses
on Software Development Lifecycle
(SDLC) maturity, CI/CD practices, code
quality indicators, and architectural
decision making.
Category Rating Remarks
Software 3.510 Minimal
Lifecycle structure
Management
CV/CDPipeline 2/10 ~—-No
& Deployment automati
Code Quality & 4/0 Moderate
Maintainability issues
Design & 5/10 Function
Architecture but basic
Testing & 2/0 Inadeque
Quality coverage
Assurance
Security & 2/No Critical
Production concerns
Readiness
Documentation 3/10 Minimal
& effort
Communication
OVERALL 3.1/10 Entry-ley
RATING work
STATUS: NOT ELIGIBLE TO PROCEED TO
FULL-TIME ASSOCIATE ROLE
Graciela Valeska Lianderis NOT READY
to proceed to a full-time Associate
Engineer position at Google, AWS, or
similar enterprises at this time.
Current Assessment: Entry-
level/Junior internship work
Deficiencies: Critical gaps in testing,
CI/CD, security, and production
engineering
Timeline to Readiness: 3-6 months
with structured mentoring
Recommendation: Offer structured
internship extension with clear
technical milestones and mentorship
before re-evaluation for full-time role.
Project Overview
Project Name: Smart Waste
Management System (SWMS)
Technology Stack:
Frontend: React 18.0.0, React Google
Charts, Responsive CSS
Backend: Firebase Realtime Database
Language: JavaScript (ES6+)
Build Tool: Create React App (CRA)
with react-scripts 5.0.1
Codebase Size:
Total Lines of Code: 277 lines
Main Component: App,js (216 lines)
Test Files: 1(App.test.js with 1 passing
test)
Git Commits: 14 commits over 4 days
(April22-26, 2022)
Functional Purpose: Monitors waste
management systems with loT sensors,
displays real-time data visualization via
Google Charts, and provides alerts for
full bins and odor levels.
1. Software
Development Lifecycle
(SDLC) Maturity
Rating: 3.5/10
Strengths
Basic version control with Git (14
commits with clearmessages)
Responsive Ulimplementation
(mobile-first design considerations)
Component-based React
architecture (single component
model)
Critical lssues
No Development Processes: Missing
sprint planning, requirements
documentation, design reviews.
Monolithic Component: 216 lines in
single App.js component violates
separation of concerns. Enterprise
systems require modular, reusable
components. No component
composition hierarchy.
No Code Standards: Missing
configuration for ESLint, Prettier, or
code formatting. Default CRA config
only.
Shallow Git History: Commit
messages like "fixbug", "add
responsive" lack context. Missing
commit bodies explaining WHY
changes were made.
No Requirements Traceability: Zero
evidence of requirements
documentation, acceptance criteria,
oruser story tracking.
Single Author Commits: All 14
commits by Graciella only.No
collaboration indicators or code
review process
Hardcoded Magic Numbers:
Distance threshold 10cmand gas
threshold 600 hardcoded in business
logic with no parameterization.
Expected at Associate Level
At minimum: PRreview worktiows,
branch protection rules, merge
requirements
Documented architecture decisions
(ADR format)
Clear separation between
infrastructure and application code
Dependency management with lock
files properly versioned
Configuration management
(dev/staging/prod environments)
2. CI/CD Pipeline &
Deployment
Automation
Rating: 2/10
Current State
No Cl/CD pipeline exists. Repository
contains no configuration files for:
GitHub Actions
(.github/workflows/)
GitLab Cl(.gitlab-ci.yml)
CircleCl(. circleci/config.yml)
Jenkins (Jenkinsfile)
Docker containerization (Dockerfile,
docker-compose. yml)
Infrastructure as Code (Terraform,
CloudFormation)
Build and deployment are entirely manual
processes
Critical lssues
No Automated Testing: Zero test
execution on commits or PRs. The
single test file (App.test.js)is a
template placeholder that tests the
wrong component
No Build Verification: No automated
validation that code compiles,
bundles, orruns.
No Deployment Pipeline: Manual
deployment means high risk of human
error, inconsistent environments, and
no rollback procedures.
No Environment Separation: Single
Firebase config hardcoded in
firebase.js.No
dev/staging/production database
separation.
No Release Management: No version
tagging, release notes, or deployment
tracking.
No Security Scanning: Missing
dependency vulnerability checks
(npmaudit), SAST tools, or secrets
scanning
Enterprise Standards Gap
At Google and AWS, every code change
must pass:
Automated test suite with >80%
coverage
Linting and code quality gates
Security vulnerability scanning
Build verification
Automated deployment with blue-
green orcanary strategies
Rollback capabilities with instant
revert
This project has none of these controls.
3. Code Quality &
Maintainability
Rating: 4/10
Code Smells Detected
Race Conditions in useEffect (Line
46): The dependency array [data] in
the second useEffect triggers on data
changes, but setLastData uses
lastData from previous render. This
causes stale closure issues and
potential infinite loops under certain
conditions.
Missing Error Handling (Line 25-27):
The Firebase query catch block only
logs errors to console. No user
feedback, retry logic, orerror
recovery. Production systems cannot
rely on console logs
Mixed Concerns in Single
Component: Data fetching, state
management, UI rendering, and
business logic all in one 216-line
component. No separation means
difficult testing, reuse, and
maintenance.
Magic Numbers (Lines 50, 53):
Thresholds hardcoded: distance <
10,gasValue > 600. These should
be constants or configurable
parameters, not scattered through
logic.
Unused Console. log (Line 20, 33):
Commented and active console logs
remain in production code. Indicates
incomplete cleanup and lack of
debugging discipline
Redundant Window Check (Lines
59-68, 74-83): The hasWindow check
is defensive against non-browser
environments, but this is a browser-
only React app. Unnecessary
complexity and cargo cult coding
Conditional String Rendering (Lines
118, 128, 143): Duplicated color logic
and status mapping, Should be
extracted to constants or helper
functions formaintainability.
Inline Styles Throughout: All styling in
JSX (lines 87-144, 155-195). Makes
theming impossible, violates DRY
principle, and complicates responsive
design. CSS-in-JS or stylesheet
separationrequired.
Testing Analysis
App.test.js (8 lines) contains a
placeholder test that searches for “learn
react" text. This test
Does not exist in the actual App
component
Will fail on execution
Demonstrates template copy-paste
without understanding
Indicates no real test coverage for the
application
Expected: Unit tests for data fetching,
state transitions, and alert triggers.
Integration tests for Firebase integration.
4. Design &
Architectural Decisions
Rating: 5/10
Technology Choices
Positive Aspects:
React 18 is modem and appropriate
for Ul-driven applications
Firebase Realtime Database enables
real-time sensor data ingestion
Google Charts provides out-of-box
charting without D3 complexity
Concerns:
No data persistence layer abstraction.
Firebase calls directly in React
component.
React 18 features (Suspense,
Concurrent rendering) not utilized
Create React App defaults used
without customization for production
needs (bundle analysis, error
boundaries)
Architectural Concerns
Monolithic Data Fetching (Lines 14-
28); Fetches all historical data on
mount without pagination or filtering.
Scalability risk: 1000s of sensor
readings become unmaintainable.
Inefficient Data Transformation
(Lines 34-44): Rebuilds entire chart
arrays on every data change. No
memoization or diffing. Performance
degradation onlarge datasets.
No State Management Pattern:
useState hooks scattered throughout
component. No context provider,
Redux, or similar for predictable state
updates. Makes debugging state flow
difficult
Tight Coupling to Firebase:
firebase.js exports db directly. No
adapter pattern or dependency
injection. Difficult to mock fortesting
or swap Firebase foralternative
backend
Responsive Design Without Mobile-
First: Breakpoint checks use
windowDimensions.width < 600
directly in JSX. Should use CSS media
queries or CSS Grid forbetter
separation.
Design Patterns Missing
No Container/Presenter pattern for
testability
No Error Boundary for graceful error
handling
No Custom Hooks for data fetching
logic reuse
No Composition patterns (compound
components)
No Memoization for performance
optimization
5. Security &
Production Readiness
Rating: 2/10
Critical Security Issues
Exposed Secrets (firebase.js, Lines
4-13): Firebase API key, auth domain,
and database URL hardcoded in
source code and committed to public
GitHub repository. This is a critical
vulnerability. Anyone can access the
Firebase database directly. Should
use environment variables (.env files,
never commit credentials).
No Input Validation: Alert messages
directly display data without
sanitization. Potential XSS if sensor
datais compromised
Missing Content Security Policy: No
CSP headers to prevent injection
attacks.
NoHTTPS Enforcement: Firebase URL
accessible over HTTP. Real-time data
should use encrypted channels only.
No Dependency Security Audits:
[email protected] and react-
[email protected] have known
vulnerabilities, Nonpm audit or
automated scanningin place.
No Error Boundaries: Unhandled
errors crash entire application. No
fallback Ul orerror logging.
No Rate Limiting on Firebase
Queries: Potential for runaway costs
from repeated full database scans.
No Authentication/Authorization:
Anyone with the API key can read and
potentially write to Firebase. No user
authentication or role-based access
control.
Production Readiness Checklist
— Not Ready For Production
No error handling orlogging service
No monitoring or alerting
No analytics or instrumentation
No backup or disaster recovery plan
No load testing or scalability
analysis
No API rate limiting
No database indexing strategy
documented
No performance optimization (lazy
loading, code splitting)
No accessibility compliance (WCAG.
2.)
No browser compatibility testing
6. Documentation &
Communication
Rating: 3/10
README.md: Default Create React App
template. No project-specific
documentation. No setup instructions for
local development, Firebase
configuration, or deployment
procedures.
Code Comments: Minimal inline
comments. Lines 20 and 33 have
commented-out console.log statements
indicating incomplete cleanup.
Architecture Documentation: Zero
architectural decision records (ADR),
design documents, or system diagrams.
‘API Documentation: No Firebase
schema documentation or data model
specification
Setup Instructions: No clear steps to:
Clone andinstall dependencies
Configure Firebase project
Run development server
Deploy to production
Expected at Associate Level
Detailed README with architecture
overview
Setup guide fornew developers
ADR documents for significant
decisions
API specification with examples
Troubleshooting guide
Contribution guidelines
7. Dependency
Management & Build
Configuration
Rating: 3.5/10
Dependency Analysis
(package.json)
[email protected] (current, good)
[email protected] (acceptable, but
manual security audits needed)
[email protected]
(appropriate for dashboard use case)
Issues
Caret (*) versions allow breaking
changes
No explicit patch versions pinned for
reproducibility
No dev dependencies separated from
runtime
No lock file committed to source
control (package-lock.json exists but
not trackedin git)
No dependency audit script in CCD
(doesn'texist)
Missing Production
Dependencies
No error tracking (Sentry)
No logging service
No analytics
No monitoring client
Unused Default Scripts
react-scripts eject (enabled but
discouraged)
No custom build optimization
8. Comparative
Analysis: Expected vs.
Actual
Capability Google
Standard
Test Coverage >80%
CI/CD Pipeline Automated on
every commit
Code Review Mandatory,
Process multi-reviewer
Security Audits Continuous +
Manual
Documentation Comprehensive
Error Handling Centralized,
logged
Monitoring/Logging Fullstack
instrumented
Configuration Environment-
Management based
Component Modular,
Architecture reusable
Performance Measured,
Analysis optimized
Note: Gaps markedas ‘Critical’ require
immediate attention before production
deployment or full-time hiring.
9. Overall Assessment &
Recommendations
Final Rating: 3.1/10
Assessment Summary
This project demonstrates foundational
competency with React and Firebase but
falls significantly short of professional
software engineering standards
expected at Google or AWS for full-time
Associate engineers. The workis suitable
fora school project (which it appears to
be, from 2022 timestamps and group
credits), but requires substantial
improvements for production
environments or full-time employment.
Key Deficiencies
Zero Testing Culture: No unit tests,
integration tests, ortest-driven
development practices.
No Operational Maturity: Absence of
CI/CD, monitoring, logging, and error
handling prevents production
deployment
Security Vulnerabilities: Hardcoded
secrets and no authentication
represent showstoppers for any
production system.
Monolithic Architecture: Single 216-
line component violates software
engineering principles and limits
scalability.
Manual Processes: All building,
testing, and deployment are manual,
error-prone, and unverifiable.
Missing Documentation: Insufficient
documentation makes onboarding,
maintenance, and debugging difficult.
No Code Quality Standards: Missing
ESLint, Prettier, and code review
processes
Potential For Growth — Positive
Indicators
Successfully shipped a working web
application with real-time data
visualization
Demonstrated ability to integrate
third-party services (Firebase, Google
Charts)
Responsive design implementation
shows attention to UX
Clear commit messages indicate
some development discipline
With proper mentoring and exposure to
enterprise practices, Graciela has
foundation to growinto a competent
engineer. The gaps are learnable, not
fundamental ability issues.
Recommendations for
Improvement (Priority Order)
IMMEDIATE (Before Production or Full-
Time Hire):
Secure API Keys: Move Firebase
config to environment variables.
Never commit secrets to git.
Add Automated Testing: Implement
Jest unit tests for components and
Firebase integration tests. Target
80%+ coverage.
Implement CI/CD: Set up GitHub
Actions to run tests, linting, and build
onevery push
Refactor Components: Break 216-line
App jsinto smaller, testable
components (ChartContainer,
StatusCard, AlertService).
SHORT TERM (1-2 Weeks): 5. Add Error
Handling: Implement Error Boundary
component, centralized error logging
(Sentry or similar). 6. Configure Code
Quality Tools: ESLint (aironb-confg),
Prettier, and pre-commit hooks. 7. Write
Comprehensive README: Setup guide,
architecture diagrams, Firebase
configuration steps. 8. FixMagic
Numbers: Extract thresholds to
configuration constants or database-
backed settings
MEDIUM TERM (1-2 Months): 9.
Implement Monitoring/Logging: Add
structured logging, APM, and
performance monitoring. 10. Security
Audit: Conduct dependency audit,
implement CSP headers, add rate
limiting. 11. Add Environment
Management: Separate
dev/staging/production configurations
12, Performance Optimization
Implement React.memo, useMemo, and
code splitting.
LONG TERM (Ongoing): 13. Establish
Code Review Process: Require peer
review forall changes. 14. Create
Architecture Documentation: ADRs forall
major decisions. 15. Set Up Analytics:
Track usage patterns, performance
metrics, user behavior.
10. Interview & Hiring
Guidance
Suggested Interview Focus Areas
— Technical Questions to Explore
Testing Philosophy: Ask why tests
weren't included. Assess
understanding of test pyramid, TDD,
mocking.
Security Awareness: Present the
hardcoded secrets scenario. Evaluate
if they recognize the risk and know
remediation
Scale Thinking: Ask how the system
would handle 1000 waste bins. Do
they think about database queries,
pagination, caching?
Architecture Decisions: Why choose
Firebase over REST API? Tradeoffs
between real-time updates and
scalability?
Production Readiness: What's
needed before deploying this to 100k
users? Understand monitoring,
logging, error handling.
Positive Signals
Acknowledges gaps and explains as,
learning project
Demonstrates awareness of testing
and Cl/CD importance
Shows curiosity about enterprise
patterns
Asks about scale and operational
concerns
References learning from mistakes
Red Flags
Defensive about code quality issues
Unaware of security risks (exposed
secrets)
Treats testing as optional or low
priority
Cannot articulate why Cl/CD matters
No awareness of production
requirements
Hiring Decision Recommendation
NOT READY FOR IMMEDIATE HIRE as full-
time Associate Engineer. Current state
represents junior internship work. With
structured mentoring over 3-6 months,
could become competent Associate.
Recommend:
Offermentored internship extension
with clear technical milestones
Assign code review partner for every
contribution
Require completion of testing, C/CD,
and security training modules
Pair on production-grade project
improvements
Re-assess after internship extension
If evaluated for full-time Associate role
now: Recommend "Not Ready" with offer
to continue internship with structured
growth plan. At Associate level, expects
immediate productivity with minimal
supervision. This candidate requires
hands-on mentoring and cannot
independently maintain production
systems.
Detailed Code Review
Findings
App.js Line-by-Line Analysis
Lines 14-28: Initial Data Fetch
Issue: Fetches allhistorical data
without pagination or filtering. As
dataset grows, this becomes
memory-intensive and slow.
Expected: Implement pagination or
limit to last Nrecords. Add loading and
error states.
Severity: Medium (functions now,
breaks at scale)
Lines 30-46: Data Transformation Loop
Issue: Rebuilds entire arrays on every
data change. O(n) operation on every
state update. Inefficiency grows with
data size.
Recommendation: Use useMemo with
dependency array to memoize
calculations. Only recalculate when
data actually changes
Example Fix
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]);
Severity: Medium (performance
degradation)
Lines 48-57: Alert Logic
Issues
Browser alert () is poor UX.
Interrupts user workflow, unreliable
onmobile:
Hardcoded thresholds (10, 600)
not configurable.
No alert de-duplication. Users see
repeated alerts for same condition.
No logging of alerts for
monitoring/compliance.
Recommendation: Use state-based
toast notifications, database-backed
config for thresholds, and alert history
logging.
Severity: High (poor UX, production-
grade systems need better patterns)
Lines 59-83: Window Resize Handling
Issue: Manual window size trackingis
fragile and error-prone. React
community settled on CSS-in-J$ or
CSS media queries as better
approach
Recommendation: Use CSS media
queries in stylesheet or CSS Grid for
responsive layout. Eliminates the need
forwindow tracking.
Severity: Low (works correctly, but not
best practice)
frebase.js: Configuration Exposure
CRITICAL SECURITY ISSUE: All Firebase
credentials are hardcoded and
committed to a public GitHub repository.
Anyone can directly access the Firebase
Realtime Database. Credentials
exposed: API Key, Auth Domain,
Database URL, Project ID, App ID
IMMEDIATE ACTION REQUIRED:
Regenerate Firebase API key
immediately
Remove this file from git history using
git-filter-branch orsimilar
Move all credentials to .env. local
fle
Add .env. local to .gitignore
Configure Firebase security rules to
require authentication
Severity: CRITICAL (data breach risk)
Conclusion
Graciella's Smart Waste Management
System demonstrates foundational
competency with frontend frameworks
and backend integration. The application
successfully implements real-time data
visualization and responsive UI design.
However, the project lacks the
operational maturity, test coverage, and
security practices required for
production systems or full-time
Associate engineerroles at enterprises
like Google or AWS.
The gap is not fundamental ability but
rather exposure and discipline in
enterprise software engineering
practices. Testing, CI/CD, errorhandling,
security awareness, and documentation
are alllearnable skills, With structured
mentoring, Graciella has potential to
grow into acompetent full-stack
engineer.
Forimmediate hiring as full-time
Associate: NOT RECOMMENDED
For structured internship extension
with mentoring: RECOMMENDED
For internship continuation: Would
beneftt from on-the-job training in
testing, CI/CD, and production
engineering.
This assessment should be used
constructively to guide growth and
learning, notas final judgement
Enterprise engineeringis a craft learned
through hands-on experience and
mentoring. The foundation exists here to
build upon
This is a technical engineering
assessment of a public
repository/portfolio project and is
unrelated to any other coverage on this
blog concerning the same individual. It
should not be read as commentary on
any dispute, controversy, orpersonal
conduct — it evaluates code, process,
and engineering maturity only.
#EngineeringAssessment
#SoftwareEngineering
#GracielaValeskaLiander
#CodeReview #CICD #infraloka
#RahmatWibowo