Nasihat kepada graduan Sains Komputer/IT
Tags: malay, learning
Published: 2018-05-03 08:35:27

---
title: Nasihat kepada graduan Sains Komputer/IT
published: true
description: Pada ruangan ini, kami ingin mengambil kesempatan untuk memberikan beberapa panduan yang diharapkan boleh membantu anda dalam memulakan kerjaya sebagai software developer.
tags: malay, learning
canonical_url: http://kamal.koditi.my/nasihat-graduan-sains-komputer-it/
cover_image: https://thepracticaldev.s3.amazonaws.com/i/2wgqmgifvt2g9netjcb1.png
---

Pertama sekali, tahniah kerana anda telah berjaya menamatkan pengajian dalam bidang Sains Komputer ataupun Teknologi Maklumat (atau apa2 kursus berkaitan). Ia satu pencapaian yang amat membanggakan dan semestinya anda begitu teruja untuk memulakan kerjaya dalam bidang *software development*.

Pada ruangan ini, saya ingin mengambil kesempatan untuk memberikan beberapa panduan yang diharapkan boleh membantu anda dalam memulakan kerjaya sebagai *software developer*.

## Belajar pasal komputer
Apa? Ini mungkin kedengaran janggal. Menasihatkan graduan Sains Komputer untuk belajar pasal komputer. Tapi jangan terperanjat jika ada graduan Sains Komputer yang masih tidak faham dengan baik bagaimana komputer berfungsi. Jadi luangkan masa untuk belajar bermula dengan memasang komponen-komponen komputer sehinggalah menjalankan pelbagai jenis sistem operasi (OS). Anda mungkin berfikiran - bukan aku nak jadi Juruteknik komputer, tapi percayalah, kefahaman anda tentang sistem komputer akan membantu anda menjadi programmer yang lebih efisien. Pensyarah di MIT Ana Bell, merekomen buku [Code: The Hidden Language of Computer Hardware and Software](https://fivebooks.com/best-books/programming-computer-science-ana-bell/) untuk mereka yang ingin meningkatkan lagi kefahaman tentang sistem komputer.

## Dapatkan domain name personal
Ia bukannya perlu sangat pun sebenarnya tapi dalam proses mendapatkan domain name ini, anda akan belajar banyak perkara. Itu yang penting - _the journey, not the destination_. Anda akan belajar pasal DNS, yang akan banyak membantu dalam pekerjaan anda sebagai software developer nanti.

## Setup email menggunakan domain personal di atas
Sekali lagi, ini lebih untuk tujuan pembelajaran berbanding kegunaan praktikal. Saya sendiri hanya menggunakan email daripada gmail kerana ia lebih praktikal. Jadi jika contohnya nama domain yang anda daftar di atas adalah ahmadrazak.com, maka boleh setup alamat email seperti me@ahmadrazak.com, contact@ahmadrazak.com dan sebagainya.

## Bina website/blog peribadi
Mempunyai website atau blog peribadi adalah penting bagi seorang software developer kerana kerjaya tersebut bukanlah hanya terhad kepada menulis kod semata-mata. Ini antara kefahaman salah yang besar terhadap kerjaya software developer. Sebelum kod ditulis, anda perlu membuat analisa terhadap masalah yang hendak diselesaikan terlebih dahulu. Dan ini antara fungsi _literature reviews_ yang anda biasanya perlu buat dalam laporan projek tahun akhir (FYP) anda. Jadi cuba belajar untuk menulis _literature reviews_ yang bagus dan bukan sekadar tangkap muat untuk menyiapkan FYP semata-mata.

Blog ini anda boleh khususkan kepada kandungan teknikal sahaja atau campur sekali dengan penulisan-penulisan lain. Kelebihan pelbagai topik ia dapat memberi gambaran lebih besar tentang diri anda, bagaimana anda berfikir, minat dan sebagainya. Bakal majikan turut berminat dengan maklumat-maklumat ini kerana pada akhirnya, anda tetap seorang manusia biasa dengan karakter-karakter tertentu yang akan mempengaruhi corak kerja anda nanti.

Website atau blog peribadi ini pada akhirnya akan menjadi _personal branding_ anda. Untuk contoh _personal branding_ yang berkesan, tidak perlu pergi jauh. Anda boleh tengok pada laman web [red1.org](http://red1.org), (Redhuan D. Oon), ketua projek ERP bertaraf dunia, Adempiere. Di sini ada disenaraikan [beberapa blog pelajar lain](http://k4ml.me/senarai-blog-pelajar-sains-komputer-it/) yang anda boleh rujuk cara mereka menulis.

## Daftar akaun github/bitbucket/gitlab
Jika sebelum ini saya nyatakan kerjaya sebagai software developer bukan sekadar melibatkan coding semata-mata, tetapi code tetap intipati utama dalam kerjaya ini. Majikan tidak dapat lari daripada melihat bagaimana anda menulis kod untuk menyelesaikan sesuatu masalah. *Code repository hosting* seperti Github, BitBucket atau Gitlab adalah tempat di mana anda boleh berkongsi kod yang anda tulis dengan developer yang lain.

Namun fungsi paling penting *code hosting* ini adalah ia membolehkan anda berkolaborasi dengan developer lain dalam menyelesaikan sesuatu masalah. Kerja software developer bukan berbentuk *lone ranger*. Ia memerlukan anda berkerjasama dengan developer lain dan melalui Github, anda boleh mempraktikkan kemahiran ini walaupun anda masih belum bekerja.

## Masuk kelas intensif Bahasa Inggeris
80% daripada rujukan berkaitan software development pada masa ini masih dalam Bahasa Inggeris. Jadi anda tidak dapat lari daripada menguasai BI jika hendak pergi lebih jauh dalam bidang ini. Saya telah pun menulis berkaitan [kepentingan BI sebelum ini](http://kamal.koditi.my/kenapa-kena-belajar-bahasa-inggeris/).

## Libatkan diri sekurang-kurangnya dalam satu projek open source

Saya telah nyatakan sebelum ini, software development adalah satu kolaborasi tetapi bagaimana anda hendak menimba pengalaman tanpa memulakan kerjaya terlebih dahulu ? Inilah kelebihan terlibat dalam projek *open source*. Ia umpama anda telah pun menyertai sebuah *team* software developer dan jika projek tersebut adalah projek yang bertaraf dunia, maka pengalaman yang anda boleh timba adalah tidak ternilai.

## Belajar cara belajar

Bagaimana tu? Ini dipanggil _metacognition_. Satu hakikat nyata dalam dunia IT dan software development adalah teknologi bergerak pantas. Kalau di universiti bahasa pengaturcaraan yang anda belajar mungkin C/C++ dan Java, sekarang sudah ada Go, Kotlin, Swift, Elixir dan banyak lagi. Ramai yang mengeluh tidak mampu mengejar perkembangan dunia IT. Sebenarnya tidak perlu mengejar pun. 80% daripada teknologi-teknologi baru masih lagi berasal daripada konsep-konsep lama yang asas. Jadi anda hanya perlu tahu bagaimana hendak mengaitkan teknologi-teknologi baru ini dengan konsep-konsep yang anda telah pelajari dalam kursus di universiti.

Dan anda juga sangat bernasib baik kerana hari ini, apa saja yang anda ingin pelajari, boleh dicari melalui Google.

Joe Armstrong, yang mencipta bahasa Erlang [berkata](http://web.archive.org/web/20160415011359/http://blog.derekperez.com/post/41382405844/teach-protocols-not-languages):-

> Today there is an unhealthy concentration on language and efficiency and
NOT on how things fit together and protocols - teach protocols and not
languages.
>
> And teach ALGORITHMS.

## Belajar menulis resume

Ini mungkin perlukan satu topik khusus, jadi saya kongsikan dulu contoh resume yang sesuai untuk _fresh graduate_.

![Resume](https://thepracticaldev.s3.amazonaws.com/i/j7njphzlqrgewpmmg9mh.png)

Ini pula contoh [resume sebenar seorang pelajar Sains Komputer][bksahu]. Perhatikan bahagian Experience - dia pernah terlibat dengan Google Summer of Code, bekerja dengan satu projek *open source*. Inilah antara pengalaman yang perlu dikejar oleh pelajar Sains Komputer.

![Resume bksahu](https://thepracticaldev.s3.amazonaws.com/i/7r2igbj9mhwkzr8qk4zm.png)

## Sertai komuniti IT/Tech

Terlalu banyak sekali komuniti-komuniti IT atau software developer sama ada tempatan ataupun global. Di dalam komuniti ini ramai mereka yang telah lama berada dalam industri dan sudah pasti banyak input-input berguna yang anda boleh dapat daripada mereka. Di samping itu, mereka juga berkemungkinan turut mencari bakat-bakat baru bagi menyertai tempat mereka bekerja. Jadi selain belajar anda turut mempunyai peluang kerjaya sekali. Saya hanya senaraikan sebahagian daripada komuniti-komuniti ini, pandai-pandailah anda cari bagaimana hendak menyertai mereka ;)

  * JomWeb.
  * Startup/Developer on Telegram.
  * r/programming at reddit.
  * Hacker News YCombinator.
  * Dev.to.
  * Devkini.
  * Sumber Terbuka Malaysia on Telegram.
  * Python User Group on Facebook.
  * Belajar Python on Telegram.
  * Laravel Malaysia on Telegram/Facebook
  * DevCon Machine Learning on Telegram
  * OWASP Malaysia
  * ...

## Nasihat Google
Google telah menyediakan satu [panduan yang bagus][google-guide] untuk pelajar menyiapkan diri mereka bagi menceburi bidang software development. Jadi luangkan masa khas untuk mengikuti apa yang telah mereka cadangkan.

## Nasihat lain
Lelaki ini telah menyenaraikan satu '[study plan]' yang lengkap untuk subjek Sains Komputer bagi mereka yang ingin mendapatkan pekerjaan sebagai Software Engineer. Ini apa yang dia cakap:-

>I originally created this as a short to-do list of study topics for becoming a software engineer, but it grew to the large list you see today. After going through this study plan, I got hired as a Software Development Engineer at Amazon! You probably won't have to study as much as I did. Anyway, everything you need is here.

[The Missing Semester of Your CS Education](https://missing.csail.mit.edu/).

# Rujukan
1. http://danielpocock.com/getting-selected-for-google-summer-of-code-2016
1. http://www.joelonsoftware.com/articles/CollegeAdvice.html
1. https://simpleprogrammer.com/2016/07/18/technical-skills-software-developer/

[google-guide]:https://www.google.com/about/careers/students/guide-to-technical-development.html
[study plan]:https://github.com/jwasham/coding-interview-university
[bksahu]:https://drive.google.com/file/d/1w0QBbnykdljmrkk3aoReB2_t5ADRCW-0/view