PHP Unit Test Explorer With Laravel Sail

Image
What is PHP Unit Test Explorer Before we discuss in deep, i want to explain the standard definition. PHP Unit Test Explorer is one of extensions in visual studio code. You can search in extension menu and install it.  After installed, you can find it on sidebar. It has test tube icon. Laravel Sail Laravel sail is one of laravel tools for easy and consistent development. Under the hood, it uses docker and docker compose. One advantage using sail is we don't need to setup bunch of php and web server configuration. It was already handled by sail. We just need to run docker compose command or via sail command. You can learn more detail about how sail works in Laravel documentation here . What if we want to implement TDD in Laravel? As developer, we need to make sure our code run well. So, we need to test it by implementing TDD. Luckily, Laravel support TDD by default. You can run artisan command to generate test file. In the newest version, Laravel supports phpunit and pest configurati

Completely a Mess or Achievement ? Evaluasi 2 Tahun di Jakarta



Outlook, Contemplate, Think, Discover, Explore

Tulisan ini dibuat pada hari minggu. Itu artinya saya sedang berada dalam mode santuy. Oke kali ini saya akan coba membawa anda merenungi perjalanan saya 2 tahun ini di Ibu Kota. 2 tahun merupakan waktu yang bisa dibilang cukup lama, bisa juga dibilang masih seumur jagung.

Cukup lama karena pola kehidupan saya berubah total. Dari yang awalnya dekat dengan keluarga, tongkrongan WIFI corner dan segala tempat favorit kini semuanya terpisahkan oleh jarak (maaf agak dramatis...heheheh). Butuh waktu 6 bulan untuk terbiasa dengan itu. Home sick pas awal-awal sangat terasa. Sekarang sudah mulai beradaptasi dan mencoba mencari jalur yang sesuai.

Masih Seumur jagung jika dilihat dari kaca mata industri IT. Dua tahun merupakan angka yang bisa dibilang releatif sedikit. Melihat dinamika industri IT yang terus berkembang dan pastinya berlari super cepat, kita dituntut untuk terus belajar dan beradaptasi sepanjang waktu. Dari saya pribadi, 2 tahun ini cukup banyak masukan-masukan yang saya dapat (secara profesional). Diantaranya ialah saat proses brain storming dengan client, pemilihan teknologi dan masukan-masukan dari senior di komunitas online. Karena itulah, 2 tahun ini saya rasa masih sedikit kemampuan teknikal maupun verbal untuk bisa dibilang menguasai bidang IT.

Saya cukup sadar hal penting yang dulu sempat saya anggap kecil. Toh saya hanya akan berada di depan layar, mengetik, membuat dan mendaptakan. Seiring banyaknya tantangan building application dari client, saya sadar satu hal. Teknikal tidak akan maksimal tanpa kerja sama dan aware semua pihak. Awalnya saya kira itu hanya karena kualitas developernya yang kurang mumpuni. Ternyata asumsi itu tidak tepat. Sehandal apapun developer dia akan kalah dengan requirement yang bias. Komunikasi yang berantakan. Egois dan pastinya less responsibilty.

Ternyata memang ampuh. Pengalaman berbicara banyak hal dari penjelasan. Jadi sebisa mungkin makismalkan pengalaman anda. Apalagi saat usia anda masih muda. Mantab jiwa.

Itu merupakan potongan pengalaman saya secara general. Nah, secara teknikal akan saya bahasa pada point dibawah ini

1. Web Development Receipt

Programming, Html, Css, Javascript, Php

Tahun pertama saya disambut dengan baik di kantor  dan langsung diperkenalkan dengan Laravel framework. Cukup sulit mengingat saya berangkat dari Codeigniter. Itupun belum semua aspek pada Codeigniter yang saya kuasai saat itu. Mau tidak mau harus switch dengan cepat ke Laravel. Gambaran besarnya sama-sama mengadopsi MVC. Namun, harus saya akui Laravel menang banyak fitur dari Codeigniter. Tahun pertama ini saya banyak habisakan waktu dengan begadang. Intinya, 2 framework ini akan sering dipakai bergantian di kantor. Mengejar target kantor.

2. Android Native and The Beginning of Fullstack 

Whatsapp Interface, Apps, Android, Phone, Chat

Setelah cukup lama beradaptasi (1 tahun berjalan). Kantor mulai menyerahkan tanggung jawab mobile development. Saat itu, saya belum mengenal konsep arsitektural di mobile development. Ini merupakan pertama kali saya berada dalam real mobile development for the real project. Project pertama mobile development tidak sepenuhnya dikembangkan dari awal (from scratch). Posisinya sudah dalam tahap pengembangan. Saya diberi mandat senior sekaligus lead developer handle web sekaligus mobile developmentnya. What?

Yap benar. Seingat saya, posisi apply ke kantor dulu bukan full stack developer. Tapi PHP developer. Itulah pelajaran yang bisa diambil dari real world working. Maksimalkan resource! Walapun awalnya kurang paham. Bisa dianggap saya baru kali ini terjun langsung di dunia profesional. First Job istilahnya.

Sudah sangat lumrah menurut saya bahwa kantor akan memaksimalkan resourcenya untuk mencapai  traget kantor. Selama masih bisa dimanfaatkan skill dan tenaganya dan mungkin masih dalam batasan Fee yang wajar, mereka akan sebisa mungkin memaksimalkan beban load pekerjaan. That is fine.

Untuk pekerja single seperti saya hal tersebut masih dalam tahapan wajar. Saya memang belum itung-itungan gaji saat itu. Fokus utama saya ialah adaptasi dan pengalaman. Itu saja.

3. Desktop Application to Support Manufacturing Activity

Apple, Mac, Computer, Desktop, Monitor, Screen

Variasi pekerjaan di kantor mulai meningkat. Wajar karena memang konsep kantor saya ialah Software House. Kali ini saya diperkenalkan dengan lingkungan software kelas enterprise. Dimana aplikasi digunakan untuk menunjang aktifitas dengan frekuensi yang cukup tinggi. Daily basis.

Kebetulan client utama kantor saya berbasis manufaktur. Sangat pas dengan gaung Industry 4.0. Untuk mendukung konsep Industry 4.0, semua proses dengan cara manual mulai digantikan dengan aplikasi. Konsep ini dikalangan mereka (client) dikenal dengan nama digitalisasi.

Lagi-lagi saya tidak harus membangun aplikasi dari awal. Pada dasarnya kantor saya telah mendeploy aplikasi berbasis Desktop dengan teknologi VB.NET dan telah memasuki fase production. Artinya aplikasi telah digunakan oleh End user.

Tugas saya lebih ke penambahan fitur dan menghandle keluhan user dari segi penggunaan. Pengalaman yang tak akan pernah terlupakan ialah ketika Saya harus sekuat tenaga beradaptasi dengan kode yang ditulis orang lain. Seperti apapun bentuknya. Memetakan potongan-potongan kode. Kadang juga harus cari tau apa maksudnya dengan kode-kode tersebut. Seperti bermain peran detektif dengan kasus pembunuhan yang rumit :D

Sebenarnya saya juga bukan spesialisasi di ranah desktop. Apalagi keluarga .NET. Namun, saya pernah berangkat dari Java Desktop. Secara konsep, Aplikasi Desktop punya banyak kesamaan dalam hal API untuk mengakses komponen UI seperti button, tabel, textbox dan sejenisnya. Saya cukup terbiasa dengan itu.

Yang membuat saya agak lelah ialah switching antar teknologi. Mungkin karena tidak terbiasa atau konsep seperti ini memang tidak efisen, saya belum sepenuhnya paham. Ketika berpindah misal dari Web development ke Desktop development, saya harus membiasakan dengan perbedaan konsep dari keduanya. Mengubah pola pikir. Mengingat kembali pendukung lainya (IDE, keyboard shortcut, tentunya API core masing-masing teknologi). Hal ini benar-benar menyita waktu. Menurut saya pribadi, switching ini memangkas produktifitas.

4. Introducing Vue via browser

Code, Programming, Computer, Data

Saya memberanikan diri membawa teknologi baru pada project kantor ditengah-tengah dominasi  JQuery. Sebenarnya saya tidak punya masalah dengan JQuery. Saya malah terkagum-kagum. JQuery benar-benar memangkas birokrasi Vanila Javascript (Setidaknya saat era javascript masih belum begitu diminati).

Alasan utama saya membawa Vue ke ranah real project ialah karena saya suka konsep SPA (Single Page Application). Project yang sedang saya kerjakan baru-baru ini cukup kompleks dengan banyak menu dan element UI pendukung. Akan lebih mudah jika kedua concern ini dipisah. Menyatukan logic dan UI dalam satu berkas views menambah daftar panjang kompleksitas aplikasi.

Saya putuskan untuk membawa Vue masuk ke project. Frontend thing dan Backend thing akhirnya benar-benar terpisah. Walaupun belum bisa menggunakan build tool modern karena berbagai pertimbangan dalam Tim, Vue masih bisa menjawab kebutuhan ini.

Inilah alasan mengapa saya membawa Vue. Ramah terhadap browser dengan kemudahan yang ditawarkan. Bekerja dengan baik tanpa build tools. Cukup dengan pemanggilan secara langsung. Cari ini memang bukan cara terbaik meningat tidak banyak optimasi ditawarkan. Namun cari ini merupakan cara yang cocok dengan kondisi development project saat ini. Di dunia nyata, cara ideal tidak selalu jadi solusi utama. Namun, Developer professional dan bertanggung jawab pasti sebisa mungkin menerapkan best practice dan clean code.

5. Flutter for Rapid Development in Pain

Wild Goose, Bird, Water Bird, Poultry, Migratory Birds

Dan akhirnya saya diberi tanggung jawab lagi untuk mengganti Native Android development ke Flutter. Teknologi mobile yang masih sangat baru. Jujur saya masih sangat-sangat awam dengan teknologi satu ini. Saya harus belajar dari dasar untuk bisa bekerja sama dengan Flutter.

Konsep building UInya juga sangat berbeda dengan Native Android Development yang saya pahami. Dengan pengetahuan minim, saya harus membawa Flutter ke Project. Benar benar development in Pain. Sesuai mandat lead developer saya mulai menerapkan Flutter ke semua project berbasis mobile. Alasan simpelnya tentu saja cross platform. Dan sampai sekarang saya masih beradaptasi dengan Flutter.

6. Future Hope

Light, Light Bulbs, Hope, Glow, Shining, Lights, Lamp

Tulisan ini memang agak panjang ya. Padahal masih baru 2 tahunan. Intinya, pengalaman dan evaluasi sampai titik ini akan saya jadikan acuan untuk proses ke depan.

Semua orang pasti ingin sebuah pencapaian terbaik. Saya pun demikian. Saya berharap bisa terus berada di Industri IT bahkan sampai tembus Overseas. Terus beradaptasi. Terus berkarya.


Comments

Popular posts from this blog

Mengapa Saya Memutuskan Menjadi Seorang Freelancer?

PHP Unit Test Explorer With Laravel Sail