Dari Freelancer ke Corporate: Pelajaran Engineering di Skala Berbeda

I Nyoman Donostia 1378 kata
Dari Freelancer ke Corporate: Pelajaran Engineering di Skala Berbeda

Latar Belakang Saya

3 tahun terakhir perjalanan saya sebagai Fullstack Developer:

  • Tahun 1: Freelancer - 5-7 proyek klien dengan tech stack beragam (PHP, React, Android native)
  • Tahun 2-3: Bekerja di perusahaan teknologi di Bali - fokus membangun produk internal dengan tim engineering 8 orang

Saya kira coding adalah universal - 'code is code, kan?' Tidak. Cara mengembangkan software freelance vs corporate adalah dua dunia berbeda. Artikel ini adalah pelajaran paling penting dari transisi tersebut.

1. Manajemen Waktu: Lonely Wolf vs Sprint Cycle

Freelancer: Tuan Rumah Sendiri

Senin:   coding dari 9 pagi sampai 3 pagi (hypomania)
Selasa:  benerin bug kecil, scroll Twitter gratis
Rabu:    meeting klien 1 jam, lanjut webtoon
Kamis:   deadline, coding 16 jam nonstop
Jumat:   delivery, bayar invoice, nongkrong

Klien peduli deadline akhir saja. Bagaimana pakai waktu, Anda tentukan. Tapi kontrol diri adalah bottleneck: kalau hari buruk, tidak ada progress. Tidak ada yang menegur kecuali klien telepon marah.

Corporate: Ritual Sprint

Senin 09:00: Daily Standup (15 menit) - satu kalimat progress
Senin 14:00: Sprint Planning (1 jam)
Rabu 14:00: Mid-sprint check-in
Jumat 15:00: Sprint Review + Retrospective

Setiap hari: commitsan code review (PR approval dari 2 senior)

Awalnya saya kesal dengan 'terlalu banyak meeting'. Lalu saya sadar: meeting singkat itu memaksa komunikasi progress. Tidak ada hari 'males' berlarut-larut. Accountability eksternal itu powerful untuk konsistensi.

Pelajaran: Ritual sprint = produktivitas sustainable. Bukan produktivitas 16 jam one-push, tapi 8 jam sustainable 5 hari seminggu.

2. Standar Kode: 'Bisa jalan' vs 'Maintenance friendly'

Freelancer: Output Above All

Contoh kode PHP untuk login dulu saya:

// login.php - yang penting jalan
<?php
session_start();
if ($_POST['email'] && $_POST['password']) {
  $q = mysqli_query($conn, "SELECT * FROM users WHERE email='".$_POST['email']."'");
  $u = mysqli_fetch_assoc($q);
  if ($u['password'] == $_POST['password']) {
    $_SESSION['user'] = $u['id'];
    header("Location: dashboard.php");
  }
  echo "Login gagal";
}

Problem: SQL injection, plain text password, no error handling. Tapi klien bayar, web jalan, deal selesai.

Corporate: Code Review Culture

Di perusahaan, PR saya perlu approval dari 2 senior engineer. Pertama kali PR saya reject dengan 47 comments:

- Security: password verifier pakai bcrypt (bukan ==)
- Architecture: Dao pattern untuk user repository
- Test: 73% code coverage minimum (kami target 80%)
- Docs: doc comment untuk setiap public method
- Style: PSR-12 compliance

Versi perusahaan:

declare(strict_types=1);

namespace App\Http\Controllers\Auth;

final class LoginController extends Controller
{
    public function __construct(
        private readonly UserRepository $users,
        private readonly PasswordHasher $hasher,
    ) {}
    
    /**
     * @throws AuthenticationException when credentials are invalid
     */
    public function __invoke(LoginRequest $request): RedirectResponse
    {
        $user = $this->users->findByEmail($request->string('email'));
        
        if ($user === null || !$this->hasher->verify($request->string('password'), $user->password)) {
            throw AuthenticationException::invalidCredentials();
        }
        
        Auth::login($user, remember: $request->boolean('remember'));
        
        return redirect()->intended(route('dashboard'));
    }
}

Test:

// tests/Feature/Auth/LoginControllerTest.php
public function test_invalid_credentials_throws_exception(): void
{
    $this->post('/login', ['email' => 'invalid@x.com', 'password' => 'wrong'])
        ->assertStatus(401);
}

Pelajaran: 'Bisa jalan' adalah baseline. 'Maintainable, secure, tested' - itu standar perusahaan. Awalnya terasa lambat, tapi investment. Setahun kemudian, codebase klien saya masih easy untuk onboarding engineer baru. Codebase freelance saya butuh rewrite total.

3. Arsitektur Sistem: Monolith Cepat vs Services Matang

Freelancer: Monolith untuk Speed

Freelance project e-commerce:
  - Laravel monolith
  - 1 server container
  - MySQL 1 instance
  - Deploy: FTP upload
  - Load: <100 pengguna harian

Saya build dalam 2 minggu. Bagus untuk MVP dan traffic rendah.

Corporate: Distributed untuk Resilience

Corporate product:
  - Microservices (8 services)
  - API Gateway (Kong)
  - DB terpisah per service
  - Redis cache cluster
  - Elasticsearch untuk search
  - Kafka message queue
  - Kubernetes deployment
  - Auto-scaling: 3-8 replicas per service

Investasi awal rumit, tapi menguntungkan saat:

  • Service A down -> service B tetap jalan
  • Service dengan beban tinggi -> auto-scale, tidak ganggu lain
  • Tim engineer 8 orang -> parallel development tanpa conflict

Pelajaran: Pilih berdasarkan skala. Jangan over-engineer monolith untuk project freelance. Jangan under-architect untuk produk corporate yang harus reliable.

4. Komunikasi Stakeholder: Klien vs Cross-Team

Freelancer: Single Point of Contact

Freelancer -> Klien

Saya bicara langsung dengan founder/CEO. Kalimat 'lengkap bisa Selasa'
cukup. Kalimat teknis tidak perlu dijelaskan.

Corporate: Multi-Stakeholder

Engineer  -> Senior Engineer
         -> Engineering Manager
         -> Product Manager
         -> QA Lead
         -> Designer
         -> DevOps Engineer
         -> Stakeholder Bisnis

Saya belajar communicate di beberapa level:

  • Engineer peer: pakai teknis ('refactor supaya test bisa pakai mock DB')
  • PM: fokus impact user ('reduce checkout time 40% dengan async payment')
  • Stakeholder bisnis: gunakan metric ('conversion naik 12%, jadi revenue +$8k/bulan')

Pelajaran: komunikasi yang baik di corporate = translate technis ke language stakeholder. Bahasa teknis untuk engineer peer, impact bisnis untuk executive.

5. Tools dan Stack: 'Terserah Klien' vs 'Standar Tim'

Freelancer: Pilih Bebas

Pernah saya pakai:

  • PHP CodeIgniter (kenapa? klien punya shared hosting murah)
  • Vanilla JavaScript (kenapa? project kecil, tak perlu framework)
  • Vue SPA (kenapa? sebagai programmer Vue saya senang)

Tapi item ware: kalau klien minta ganti stack? Epik - saya mulai dari nol lagi.

Corporate: Standardization

Backend: Go (standard library + Fiber) = align dengan tim
Frontend: React + Next.js (App Router) = investment training perusahaan
Database: PostgreSQL = DBA team manage
Cache: Redis cluster = DevOps setup
Monitoring: Prometheus + Grafana = everyone pakai
CI/CD: GitHub Actions = semua engineering follow

Mula-mula terasa terikat. Tapi invest: knowledge saya reusable antar services. Engineer baru bisa berubah-mampu dalam seminggu karena tooling familiar.

6. Mental Health dan Burnout

Freelancer

  • Bekerja sendirian, isolasi tinggi
  • Income tidak menentu (asnaf-qitha): pernah bulan untung 2x lipat, pernah 0
  • Cognitive load: handle semua (dev, marketing, finance, support) sendirian

Corporate

  • Tim support, ada tempat curhat
  • Income stabil, ada benefit (BPJS,THR)
  • Tetappoten burnout: melempar tanggung jawab cross-team, kejar sprint deadline, code review critical

Pelajaran: burnout datang dari berbagai bentuk. Identifikasi trigger awal. Saya freelance 2 tahun akhirnya dapat depresi minor. Sekarang di corporate, saya pakai pomodoro, walk meeting, dan no-code-weekend.

7. Pelajaran Berharga yang Saya Bawa

Dari keduanya, ini yang saya bawa forward:

Dari freelance tetap saya pakai:

  • Bias belajar cepat dan self-directed - alat freelance sekarang transisi tech lebih cepat dari training formal
  • Memahami bisnis end-to-end - klien freelancer adalah client. Saya tahu dime (ROI) tiap fitur
  • Scrappy problem solving - tidak ada infra? Sanggup workaround

Dari corporate saya bawa ke kerja sehari-hari:

  • Code review dan test-driven development (TDD)
  • Documentation wajib (di code, di README, di ADR)
  • Ritual standup dan planning
  • Anti-pattern engineering: single point of failure, missing monitoring, no on-call rotation

8. Tips untuk Developer yang Ingin Transisi

Freelancer ke Corporate

  1. Kuasai testing dan CI/CD - ini gap paling umum freelance
  2. Pelajari design pattern SOLID - bukan untuk pamer, tapi untuk komunikasi tim
  3. Tulis artikel atau blog teknis - portfolio teknis Anda untuk recruiter
  4. Kontribusi open-source - menunjukkan kemampuan kolaborasi asinkron
  5. Soft skill: komunikasi dengan PM dan stakeholder non-teknis
  6. Bersiap untuk lambat: code review butuh waktu, approval lintas tim butuh waktu. It's okay

Corporate ke Freelancer

  1. Pelajari marketing digital dan personal branding - klien tidak datang sendiri
  2. Kuasai contract writing: scope, deliverable, payment terms
  3. Buat sistem template: kontrak, proposal, invoice (saya pakai Notion + Stripe)
  4. Manajemen finansial: income tidak menentu -> budget buffer 6 bulan
  5. Bangun portfolio yang dapat di-showcase: kasus nyata lebih kuat dari CV
  6. Self-management skill: structure hari. Tanpa manager, harus disiplin diri

9. Refleksi Akhir: Tidak Ada yang Lebih Baik

Pertanyaan yang saya dapat sering: 'mana lebih enak, freelance atau corporate?' Jawaban: tidak ada.

  • Freelance cocok kalau: Anda highly motivated self-starter, ingin punya freedom penuh waktu, dan kuat dengan ketidakpastian income
  • Corporate cocok kalau: You value pembelajaran dari senior, teamwork, dan income stabil

Saya saat ini corporate full-time + freelance project kecil-kecil (di sela-sela waktu). Kombinasi ini memberi stabilitas + outlet kreatif. Setiap orang punya sweet spot-nya sendiri.

Kesimpulan

Transisi dari freelancer ke corporate bukan downgrade atau upgrade - itu pivot dengan mindset berbeda. Kalau Anda freelance dan berpikir corporate lebih 'mudah', siaplah untuk shock kultur. Jika dari corporate menuju freelance, siapkan otot self-management.

Setelah 3 tahun jalan karir: invest terus belajar, dokumentasikan pengalaman, dan share ke komunitas. Kombinasi pengalaman freelance dan corporate membuat saya lebih flexible engineer. Tidak terikat dogma salah satu.

I Nyoman Donostia

I Nyoman Donostia

Fullstack Developer - Bali, Indonesia

Artikel Terkait