Developing Real-time Network Game

Just recently, one of my friend visited me and like always we had a chat about the gaming industry in Indonesia and IT problem in general. The topic mainly about the future of Indonesian gaming industry and some problems related to the studio. So let’s discuss about it.

I was once a server programmer in a game studio for more than 1 year. A friend (not the one who came recently) easily convinced me to join with this studio as a server programmer since I was really curious about how to build a server for multiplayer game, also I have interest in network programming since I was in the college but never had the chance to do the implementation until he asked me to join to help him build a server for the game he developed. Honestly I learned a lot from there, technically and also the background of Indonesian game development.

We know that Indonesia started to produce many games that have good quality, primarily in mobile. Several years ago, Indonesia’s video game company are just limited and dominated as outsourced from the big company overseas, as far as I know this happened when I was still a student in the college, c.a 2006. After the booming of smartphone in 2008-2009, the gaming industry was also grown with many development platform that developers can use. Android, iOS, BlackBerry and even Windows Phone. Many game engines — open source or commercial — appeared such as Unity3D, Unreal Engine, UDK (derived from Unreal Engine), MonoGame (open source version of Microsoft XNA). The number of developer grown because the easiness of using all those matured game engines, with no exception of Indonesia developers.

However, something is bothering me. Although the number of Indonesian developers grown, the prominent development choice are mobile game and some Adobe Flash based games. Now I wonder, where is the legendary MMORPG game that used to be in the news in early 2010, Nusantara Online? I just searched it in Google before write this post, and found almost nothing about that project anymore. Did the developer has been disbanded? Why did the project stopped after that much of publication?

I done some research on network based game in Indonesia, perhaps a game with real-time multiplayer feature that are developed for mobile or PC, but found nothing. Many games that are developed and using network feature mainly use it only to submit the score or progress, which can be easily made using web services API which many web developer without much knowledge of game development can made in relatively short time.

When I worked in that game studio, the game I worked on are a Flash based game. The first concept of this game are MMORPG where many people can interact each other, however in the middle of development, the concept was changed into simple online RPG (not massively) simply because the story itself doesn’t suit to be build into a MMORPG. The change actually can be handled with simple web service like the one I told above, however I insist to use network or socket programming so I can learn something from this project and also benchmark the performance when this system is connected by many players at once. Then it was prematurely halted in the middle of development without any good reasons. Although I believe the main problem was management and development process, I will not talk about it since the topic in this article is about the network game.

Since that day, I still have the urge to develop a MMORPG until now. I was once read an online discussion about Nusantara Online, there were too many bugs and the game itself lagged when being played. From what I read, it was primarily the problem in the client graphic engine. They used engine which are not primarily developed for video game, also since the game itself developed for so long it might also cause the engine outdated. Moving to the newest engine should be problematic especially when the API has been changed too much. Perhaps the other factor for the game performance are the server side.

Based on my experience, I can tell that developing the real-time server application for MMORPG is difficult technically. Here are some of the factors that I can tell:

  • The server developer must have knowledge not just in programming language, but also in tweaking the application so it can run smoothly when are being connected by many players.
  • The server developer also need to have a good patience and ready to be placed in development environment that basically just consists of console windows and text file for debugging the problems in the server side.
  • Server testing usually depends on the client. Even though if we can create automated test script, user testing still must be done from the client. Imagine when the developer need to recompile the application each time he found errors and execute the client binary.
  • Scripting language usually causing performance degradation, so the primary options for the server development are compiled language which dominated by C or C++ (and C# as I developed the application). As for as I know, C and C++ are not popular languages for development, especially in Indonesia, and the university never teach past the basic when I was in college. Currently many of scripting languages can be alternatives because they employ Just-in-time (JIT) compilation so the performance should be better, although it’s still fall far behind the compiled application.
  • Another resource is needed when you’re dealing with server and network. If the server developer has this knowledge, it even better since it will support it’s tweaking and testing effort.
  • Communication skill with front-end developers must be really good, and the willingness to document the server API because the server will surely getting complex from time to time.
  • Other indirect factor is the font-end developers, are they understand the concept behind socket programming or not?

Beside of all those factor, the teamwork and communication of the team as a whole are also important. The server programmer must know the design of the game so he can decide what is the best way to implement the functions, the project manager and game designer also must try find out the difficulty that might be happened when implementing something with the server programmer. So, that’s developing a real-time network game is really hard and challenging, and perhaps that’s why not much people or game companies want to try doing this.
I also had a chance to search a network game engine from Google. I found some of this so called “network engine”, however many of them are focusing in the client side, not the server side. Even if there are engines that promised to have server side one, I believe it’s hard to develop with, due to the complexity and performance limitation because you add another layer of processing with an engine. You also will have problem in tweaking since you don’t know the core process of the engine unless you learn the source code by yourself. In the end, one of the viable solution is designing and developing the server engine from scratch. If I have plenty of spare time (and good partners), I will try to continue my effort in creating one simple MMORPG, perhaps a web-based one because currently you can implement socket programming (not fully) with WebSocket protocol. I’ve done a little experiment with WebSocket and NodeJS but they’re still to early to be published. And well, the basic problem in WebSocket is latency since the WebSocket is TCP based where usually a real-time game uses UDP protocol. I also have a plan to open source it, perhaps it might be a good contribution for people who want to try to be a server developer.

It’s my dream to build a game by myself or by my team. Yup, as one commenters in one of my previous post, “keep dreaming”, then I shall. And I’m going to do it, and realize it! Hey, perhaps I will be the one who successfully create an MMORPG in Indonesia. :D

Vivid Imagination

When I was 10, I always had that imagination that I was in a war and piloting an aircraft, which usually an F22 Raptor, then firing missiles to the enemy’s aircraft, then it exploded on the air and flew away to pursue another enemy which will end up with the same fate as the previous one.  I usually modeled the aircraft with my left hand which flew around my house, and the missile with my right hand index finger. The fact was that I played much of the flight simulator named F22 Lightning when I was that age.

During mid and high school, I also has imagination that my school going to be a magic ground where some of my friends were magician with their own distinguish magic power, and the enemy usually some other people from other schools or just random people or creatures that appears from nowhere. I’m not really sure why I got that imagination, however I never told anyone around me when I was that age, or show anyone what my imaginations are like. Just now I find it’s funny that I can write about it in this blog without being too embarrassed, but well, that was what happened in my head.

Even today, I still has some wild imagination about this world, especially when it comes about magic and technology. I love how many medias describe what the magic is and how to manipulate it to do many good things and bad things around the world. With that so called magic, many people can protect other people around them, but still many people will use it for bad things, which cause many problems all around the world, and in the end there are many rebellion using technology. Actually, this topic around magic and technology has been produced in many movies, novels and even video games, however all of them usually represent the background story, concept and the mechanism around them differently.

I’ve always have that wild and vivid imagination that sometimes I wonder if I will start to make a new universe inside my head, and then start creating my own franchise, from just short essay, perhaps then growing into a short story, then into a full novel, perhaps in the end it will grow into movies and games. However, write out what is on my head is difficult since usually I’m busy with my work, and my imagination and thought will change immediately when it happened. Also, I’m not a novel reader, which may cause me to have difficult to chose words and writing style since I don’t have any reference for them. I even don’t know when I should do the dialogue or just narrative.

Well, it’s one of my dream that I can create my own universe and let people enjoy to “live” inside of it, like me myself enjoy to live in many of different universes like Final Fantasy 13’s Ivalice, Lords of the Ring’s Middle Earth, or Star Wars universe. What I need now is just time to write all what’s on my head, and learn how to write properly with good English rather than writing gibberish like this one. :p

Umm, I also need someone who can help me and encourage me to write properly, or to represent my writing into a drawing. Well, somehow I think to get a girlfriend who excels at literature or art so she can help me with this, but it’s just too idealistic and unrealistic to think about relationship for this matter. It’s also part of my life imagination actually. Hahaha. Nevermind.

Imagination is limitless, truly. What I need is just a little push and chance to show it to the world. Perhaps it’s embarrassing now, but someone who think the right things should not be embarrassed, right? Someday, when that time comes, I will not just stand still for sure, but not for now. Soon.

Blame the World, not the Manager

No Comments September 30th, 2014 My Minds

Today, when I was browsing the Facebook, I found an image that are posted by one of my friend. An image that’s so simple, it contains only several words in a simple white background:

People Don't Leave Companies, They Leave Managers.

An image that contains simply some words in simple background. You got my attention.

It was not the first time I read this sentence in the internet. Many people had posted it already, and usually it was posted by new employee in a company that have simple way of thinking, or perhaps I could say it’s too simple that it may make you look so silly.

The first thing to notice, by supporting this sentence, people simply blame other people that has been trusted by the higher-ups to manage his company, and the fact that you’re just a lower ranked staff in the company just make you think that every wrong decision that are made by these managers cannot be tolerated. If you really can do better to fix what’s wrong, why don’t you try harder to take the position and try to manage the staffs by yourself. Perhaps you’re the perfect manager that the company seeks, right? In fact, when you’re in that position, you will have to accept the reality that people will say the same things to you.

For me, people leave the company, not the managers. It’s just silly when people resign from their job because of several “incompetent” managers. Many other factors can affect someone to leave the company, which usually the workloads and salary, which I believe the primary reasons to leave a company. So what? It’s still the fault of your manager that you don’t get raise even after doing the work for several months? Hey, hey, just look around you, and be jealous to people around you who work harder and smarter than you so they get the raise in the salary, and perhaps also promoted to the higher position. The next thing you will do is blaming that person for being too diligent and smarter than you, and also the manager that can only see one person effort rather than you.

I don’t understand, why people use this excuse to give up their hope in a company. If you really don’t like the managers, be smarter, work harder, take their place, and rule the company in your idealistic dream. If you cannot, just leave it already, and find other workplace who you think is far more enjoyable and have perfect, nice, high tolerance managers that perfectly match your work style without any pressure and dynamic. It’s that simple.

Actually, I never work for a company, but I have work with many “managers” temporarily. I never find a really “bad manager” so far, just managers that have different way of doing things than me. I have also had some misunderstanding with some of those “managers”, but I always believe those misunderstanding can be fixed if I communicate properly to the managers. Every manager that have matured enough to do their work will accept the harshest critique even from their subordinates and try to improve their own behavior. Only the most stubborn and selfish ones that rejects any suggestion from the subordinates, and I have to admit it I have that one manager that qualified as an “asshole”, but still not convince me enough to leave the “company” or project just because that one unimportant person.

No matter how hateful you’re to your managers, they will not try to improve when they don’t know what’s wrong with themselves as long as you never told them. People are unique, some of them are sensitive enough to feel the change in their surroundings, some are insensitive that they don’t care anything at all as long as no one tell them their mistakes, some are really just “assholes” who take the authority to abuse their worker. However, if you think properly, how many companies that willing to hire and keep the later type of managers in their company?

So, before you judge that everything wrong is just your manager, take the time to think, have you do something to improve your manager’s quality? Or do you just like to blame your manager and hopefully they have telepathic skill to read your mind and fix the problems without you telling them? Or is it just you that are too weak and too easily depressed only by slight pressure on your workplace, and in the end you just feeling not worthy to be in a company that have managers who want many things finished faster than your current expected work pace? Or perhaps you’re the one that are too spoiled and too sensitive so you are not ready to receive any critique from people around you?

Sigh… People these day, blaming people too much without realizing what’s happen around them, or even within them.

Problematic Employment (De)Generation

Mungkin sebagian besar dari Anda pernah membaca bahwa generasi yang ada sebelum generasi Anda akan kecewa dengan generasi Anda, dan saya yakin sebagian besar orang-orang yang berada di generasi Anda akan kecewa dengan generasi di bawah Anda. Anggaplah bahwa setiap generasi memiliki gap sekitar 4-5 tahun, dan dengan keadaan umur saya sekarang ini yang sudah pertengahan 20 menuju 30, generasi di bawah saya merupakan generasi yang diisi oleh orang-orang yang umumnya baru lulus kuliah atau populernya disebut fresh graduate.

Sebelum saya melakukan pembahasan yang serius mengenai generasi, saya ingin menekankan bahwa sebagian besar dari tulisan ini hanya opini walau beberapa akan saya sertakan dengan fakta. Saya juga menyertakan tips dan trik pada akhir tulisan ini, yang mungkin akan berguna bagi teman-teman yang akan mencari kerja dan mau sukses. Selain itu, ada baiknya kita lihat dulu kenyataan mengenai lapangan pekerjaan serta juga pekerjanya.

Pengangguran Intelektual

Berdasarkan laporan BPS atau Badan Pusat Statistik Indonesia, pengangguran yang telah mengenyam pendidikan lanjut atau yang belakangan sering disebut sebagai pengangguran intelektual memiliki komposisi sebesar 610 ribu orang dari keseluruhan jumlah pengangguran yang berjumlah 7,17 juta orang [Sumber]. Bahkan beberapa pengamat mulai memprediksikan bahwa jumlah ini akan bertambah banyak seiring dengan semakin mudahnya akses pendidikan di Indonesia. [Sumber]

Dari sumber di atas ada beberapa solusi yang ditawarkan, seperti sertifikasi, sehingga diharapkan para pekerja Indonesia ini bisa bersaing. Apalagi mengingat Indonesia akan memasuki pasar bebas ASEAN di mana nantinya pekerja dari luar negeri akan lebih mudah masuk ke Indonesia, tentu saja hal ini menjadi tantangan yang sangat berat bagi calon pekerja. Sampai saat ini, sepengatahuan saya, sertifikasi belum menjadi standar di dalam kurikulum yang diajarkan di perguruan tinggi. Beberapa perguruan tinggi memang sudah mulai melakukan sertifikasi sebelum para mahasiswanya lulus, tetapi itupun belum terlalu efektif untuk menggenjot kemampuan dari para lulusan baru.

Perguruan Tinggi dan IT

Belakangan sebagai seseorang yang mulai membuka usaha sendiri, saya memiliki kendala yang dihadapi oleh beberapa orang yang memiliki usaha saat ini, yaitu calon pekerja. Sebagai catatan, bahwa saya memiliki pengalaman kerja hampir 8 tahun, terutama di dunia Teknologi Informasi yang tentu belakangan ini sedang wah-wah nya bagi anak muda. Dengan cepatnya perkembangan teknologi, tentu ada pengaruh ke minat dari calon mahasiswa untuk mendaftar ke jurusan yang berorientasi ke dunia IT, misalnya saja Teknik Informatika atau Sistem Informasi. Selain itu pihak perguruan tinggi juga mulai jor-joran melakukan promosi dan marketing untuk jurusan ini. Perguruan tinggi yang sebelumnya tidak memiliki jurusan ini atau expertise di bidang ini pun tidak sungkan untuk membuka jurusan baru berbasis IT, bahkan perguruan tinggi baru mulai bermunculan dengan IT sebagai fokus mereka.

Tentu perguruan tinggi tidak bisa disalahkan, apalagi kita kembali ke dalam ranah pemasaran atau marketing, di mana bila ada permintaan maka ada penawaran. Bila memang ada trend baru di dunia, kenapa tidak dimanfaatkan. Semua kembali kepada pilihan masing-masing orang, apakah memang akan termakan kepada penawaran yang dilakukan oleh perguruan tinggi atau tidak.

Masalahnya, tidak semua orang paham bahwa dunia IT tidak sekedar berkutat di masalah utak-atik perangkat lunak atau software, atau utak-atik di perangkat keras. Saya pernah, bahkan sering mendengar bahwa mahasiswa-mahasiswa baru memiliki motivasi di dunia IT karena sebelumnya mereka tertarik ke dunia hiburannya alias video game. Sebagian lain tertarik karena dunia IT pada akhirnya berhasil menelurkan puluhan orang yang menembus daftar billionaire terkaya di dunia.

Mindset seperti itulah yang memiliki kecenderungan menjerumuskan calon mahasiswa ini sehingga akhirnya setelah lulus mereka tidak memiliki tujuan yang jelas, bahkan kehilangan minat di dunia ini sama sekali setelah merasakan kejamnya dunia IT. Bahkan beberapa di antaranya mengambil karir yang jauh berbeda dengan jurusan yang dienyam selama menjadi mahasiswa, tapi paling tidak mereka masih mendapatkan pekerjaan.

Kembali kepada bidang yang saya tekuni, bahwa sebagian besar mahasiswa IT yang pada akhirnya masuk ke jalur yang tepat, menekuni pekerjaan sebagai programmer. Sebenarnya menjadi programmer tidak harus melalui proses pendidikan di perguruan tinggi terlebih dahulu, apalagi dengan mudahnya akses untuk belajar programming saat ini. Banyak materi yang disajikan di internet sehingga seorang yang belum lulus SMA pun sudah bisa menjadi programmer, toh tujuan programmer hanya mengetikkan kode dan menjalankannya menjadi sebuah aplikasi atau program saja. Yang mereka tidak sadari, untuk bersaing di dunia ini, bukan hanya sekedar bisa mengetik dengan cepat dan menghindari kesalahan sebanyak mungkin, tetapi juga bagaimana merancang dan mengevaluasi seluruh sistem yang ada.

Pada kenyataannya, saya belum banyak melihat kemampuan ini dimiliki oleh fresh graduate dari jurusan IT. Beberapa orang akan beralasan bahwa kemampuan ini akan didapatkan seiring dengan pengalaman yang didapatkan pada saat bekerja. Lalu, apakah mereka harus disalahkan karena mereka tidak mulai bekeja dulu saat mereka kuliah? Dan apakah saya sendiri memiliki keuntungan karena sudah lebih dahulu kerja sambil kuliah? Mungkin iya, mungkin juga tidak. Seperti yang saya katakan, bahwa saat ini sangat mudah mengakses materi-materi pembelajaran melalui internet, dan itu tidak sebatas pada programming saja, tetapi juga konsep-konsep dan desain yang dapat diimplementasikan di dunia nyata. Bahkan berbagai proyek open-source dapat diakses dengan mudah setiap orang yang ingin belajar bisa membuka dan mempelajari aplikasi yang sudah dibuat dan digunakan secara luas. Tapi apakah ini cukup untuk menggugah para mahasiswa untuk belajar lebih banyak semasa kuliah? Belum tentu.

Di satu sisi, dengan tidak banyaknya orang yang berpikir lebih jauh ke dalam IT, terutama dengan posisi programmer atau software engineer, saya pribadi mendapatkan posisi yang cukup diuntungkan karena tentu saja persaingan menjadi berkurang. Tetapi di sisi lain, keadaan ini akan menyulitkan saya karena sebagian besar pekerjaan harus saya handle sendiri.

Mindset yang Benar dan Salah dalam Gaji

Terlepas dari apakah setiap orang memiliki skill dan pengalaman yang cukup untuk masuk ke dunia kerja, terdapat satu lagi masalah yang dimiliki oleh fresh graduate, yaitu mindset atau cara pikir atas pekerjaan yang akan dihadapi di dunia nyata. Dan tentu bila kita bicara mindset, sebenarnya kembali lagi ke pengalaman individual mengingat mindset dapat dibentuk seiring dengan waktu. Tentu keterbentukan mindset ini bisa benar dan juga bisa mengarah ke jalan yang salah. Bagi saya, belakangan mindset yang salah lebih banyak dikembangkan pada anak-anak fresh graduate, tanpa bermaksud men-generalisir karena tentu masih ada fresh graduate yang memiliki mindset yang benar. Selain itu, benar dan salah adalah masalah etika sehingga yang benar bagi saya, belum tentu benar bagi Anda, jadi semua relatif, tetapi di sini saya akan mencoba menumpahkan pemikiran saya pribadi.

Kebetulan saya sempat berbincang-bincang dengan seseorang yang merupakan salah satu petinggi sebuah perusahaan, dan perbincangan seputar dunia kerja dan pekerjanya. Beliau cukup antusias untuk menceritakan pengalamannya dalam merekrut para lulusan perguruan tinggi, dan kebanyakan yang diceritakan adalah lulusan-lulusan baru yang memiliki mindset yang menurutnya dan menurut saya pribadi salah.

Saat ini ada kecenderungan bahwa para lulusan akan mematok harga tinggi untuk gaji mereka, tentu hal ini sangat logis. Siapa yang tidak mau mendapatkan gaji tinggi, apalagi di Jakarta yang memiliki biaya hidup yang tinggi serta gaya hidup yang tidak terbatas dan terus berkembang? Tetapi logika ini akan segera dipatahkan ketika gaji ini dibandingkan dengan kemampuan yang dimiliki oleh orang tersebut. Seperti yang saya katakan di atas bahwa sebagian besar fresh graduate tidak memiliki pengalaman kerja maupun skill yang cukup untuk mendapatkan gaji yang diharapkan. Beberapa dari fresh graduate sempat cerita ke saya bahwa mereka sengaja mematok gaji yang tinggi supaya bilapun ditawar, maka harganya akan turun sedikit.

Sebagai perbandingan bahwa saat ini (2014), gaji standar untuk seorang fresh graduate yang belum berpengalaman di dunia IT adalah sekitar 2,7 juta sampai dengan 3 juta rupiah, beberapa sudah termasuk uang makan dan transport, sedangkan beberapa perusahaan lainnya mematok gaji tersebut sebagai gaji bersih, sehingga nilai tertinggi yang syukur-syukur bisa didapatkan oleh seorang fresh graduate yang belum memiliki pengalaman apapun adalah 3,5 juta rupiah. Bila perusahaan yang Anda lamar cukup sukses dan memiliki title multinasional, mungkin bisa mendapatkan 4 sampai 5 juta rupiah sebagai fresh graduate, tetapi tentunya ekspektasi dan seleksi yang dilakukan akan lebih ketat. Siapapun tidak akan membayar seseorang dengan harga yang tinggi yang tidak memiliki kemampuan untuk menyelesaikan masalah yang dihadapi oleh pihak perusahaan.

Anehnya, beberapa orang masih menganggap bahwa nilai 5 juta rupiah per bulan masih sangat kecil untuk ukuran mereka. Ada beberapa kemungkinan mereka memiliki pemikiran seperti itu. Pertama, beberapa orang membandingkan gaji di Indonesia dengan gaji di luar negeri, khususnya negara maju. Tanpa logika yang baik, konversi langsung gaji standar pekerja di Amerika Serikat yang sebesar 5 digit dolar per tahun, asumsikan saja $12.000 per tahun, maka ketika dikonversikan ke rupiah akan menjadi Rp 10.000.000 per bulan.

Kedua, karena mereka merupakan perantauan sehingga biaya hidup mereka akan bertambah. Sebagian mahasiswa yang berasal dari daerah umumnya akan tinggal di indekos sekitar kampus mereka agar kampus lebih mudah diakses, dan belakangan harga indekos tidak lagi murah. Kamar kos dengan fasilitas AC umumnya dipatok sebesar 1,2 juta per bulan saat ini. Bila dengan kamar mandi dalam, tidak menutup kemungkinan bisa mencapai harga 1,5 juta per bulan. Selain itu, beberapa mahasiswa yang saya temukan memiliki kecenderungan sudah cukup nyaman dengan kamar kos yang ditempati selama 3 tahun perkuliahan, sehingga tidak mudah bagi mereka untuk keluar. Tentu saja hal ini berimplikasi ke biaya transportasi untuk ke tempat kerja. Dengan perhitungan bahwa setiap kali pergi / pulang kerja menggunakan 2 kali angkutan umum dengan biaya Rp 3.000 per perjalanan, maka dalam sehari harus menghabiskan Rp 12.000, atau Rp 240.000 sebulan (20 hari kerja).

Tidak lupa juga dengan uang makan sebesar Rp 10.000 untuk sekali makan, sehingga dalam satu bulan akan menjadi Rp 900.000 bila makan 3 kali sehari. Dengan hitungan ini, ditambah minimal biaya lainnya Rp 1 juta untuk cadangan, maka biaya yang diperlukan untuk satu bulan minimal sekitar Rp 3.340.000, angka yang cukup fantastis hanya untuk bertahan hidup di Jakarta dengan 4 komponen tersebut sebagai seorang perantauan, . Tentu saja hal ini menjadi pertimbangan bagi para pekerja untuk mematok gaji tinggi, dan juga bagi perusahaan untuk merekrut karyawan yang memiliki domisili yang dekat serta memang tinggal di Jakarta sejak awal. Jadi bagi perusahaan jangan berharap untuk mendapatkan pekerja dengan range gaji di bawah Rp 3.500.000 bagi anak-anak daerah yang memiliki standar hidup yang cukup tinggi tersebut. Dan, saya akui mindset ini cukup logis dan benar, walau kembali lagi ke masing-masing orang apakah akan berusaha lebih untuk mendapatkan lebih atau tidak.

Ketiga, adalah keinginan untuk bisa menabung lebih banyak sejak awal, dan pada akhirnya melakukan pengeluaran lebih sejak awal. Saya tidak dapat membantah bahwa budaya konsumtif sudah cukup mengakar kuat di Indonesia, apalagi di Jakarta. Setiap orang ingin memiliki perangkat gadget yang terbaru dan terbaik, bisa menikmati makanan yang terbaik dan termahal, serta menikmati hidup dengan hiburan yang terbaik pula, tapi tanpa usaha yang keras dan tidak tahan banting.

Keempat, mungkin ini cukup tidak masuk akal bila ada orang yang mengatakan hal ini, tetapi kenyataannya memang ada. Beberapa orang masih menganggap bahwa kerja hanyalah opsional bagi mereka, mengingat mereka dari kalangan yang berada. Tanpa bekerja pun, mereka bisa mendapat penghasilan dari orang tua atau perusahaan yang dijalankan oleh orang tua mereka. Untuk dapat bekerja, mereka ingin agar penghasilan yang didapat dari bekerja lebih tinggi dari penghasilan yang didapatkan dari orang tua mereka. Bila alasannya seperti ini, maka hanya masalah waktu saja mereka menjumpai masalah di masa depan mereka.

Pemanjaan Mental

Seluruh masalah tersebut berakar dari mental masing-masing orang. Akses teknologi yang mudah saat ini, membuat orang makin merasa hidup lebih mudah dan nyaman, serta beberapa hal dapat dilakukan dengan instan. Sayangnya, bagi beberapa orang, sukses mungkin juga bisa didapatkan dengan instan tanpa pengorbanan. Beberapa fresh graduate yang saya kenal, dengan mudah keluar dari perusahaan tempatnya bekerja hanya karena tidak tahan dengan beban training yang dilaksanakan oleh perusahaan tersebut, padahal perusahaan tersebut merupakan salah satu perusahaan yang terkenal di Indonesia. Yup, bahkan belum melewati training sudah menyerah di tengah jalan. Lalu kenapa sejak awal orang ini tidak dihentikan saat rekruitmen?

Sebenarnya perusahaan memiliki cara untuk menangkal orang-orang seperti ini yang dinamakan psikotest. Test ini merupakan cara yang digunakan untuk melihat potensi seseorang, serta sifat seseorang dalam hal profesionalisme, misalnya team work atau kemampuan menghadapi masalah, fokus terhadap pekerjaan dan berpikir dengan cepat. Dengan test-test seperti ini, walau tidak 100% dapat menyaring orang-orang yang kurang cocok, akan tetapi umumnya dapat mengurangi kemungkinan perusahaan merekrut orang-orang yang salah dan berpotensi merusak. Walau demikian, trik-trik untuk menghadapi test ini sudah mulai banyak beredar di internet dan sangat mudah untuk dicari, sehingga hasil test saat ini belum tentu murni menunjukkan perilaku seseorang dalam bekerja. Dalam kasus orang yang saya ceritakan sebelumnya, orang tersebut memiliki channel berupa kerabat dekat sehingga rekrutmen dapat dilewati dengan mudah.

Bila test yang sudah menjadi standar ini saja tidak reliable, bagaimana lagi cara untuk menyaring dan melihat potensi karyawan? Sebagian besar perusahaan akan melakukan probation period, atau dengan kata lain masa uji coba, yang umumnya berlangsung selama 3 bulan sampai 6 bulan. Selama masa ini, karyawan mendapatkan gaji yang lebih kecil dari yang dijanjikan, dan dapat diberhentikan sewaktu-waktu bila perusahaan tidak puas, dan ada kemungkinan pihak pekerja juga dapat mengajukan penghentian. Umumnya pada masa ini beban kerja yang diberikan akan sama dengan beban kerja umum untuk melihat skill dan kemampuan pekerja tersebut dalam menghadapi tekanan pekerjaan.

Lalu bila probation period masih tidak cukup, pihak perusahaan juga dapat mengajukan kontrak kerja yang umumnya berlaku 1 atau 2 tahun (dengan undang-undang ketenagakerjaan Indonesia maksimal 3 tahun), sehingga perusahaan dapat memberhentikan pekerjanya bila performa tidak mencukupi dan pekerja juga dapat mundur setelah masa kontrak selesai.

Permasalahan seperti ini sebenarnya sudah cukup familiar bagi saya sendiri, mengingat bila membaca dari post-post sebelum ini (dalam Bahasa Inggris), saya menceritakan bahwa adanya anggota tim yang menghilang tanpa bertanggung jawab atas pekerjaannya. Dan dapat dipastikan sangat sulit mencari pekerja-pekerja yang loyal dan tidak berorientasi kepada gaji besar semata.

Tips dan Trik

Di bagian ini, saya memberikan tips dan trik untuk menjadi sukses dari berbagai perspektif, termasuk dari pengalaman saya selama ini. Tentu saja kesuksesan relatif bagi setiap orang, silahkan Anda nilai sendiri target sukses Anda seperti apa, karena sampai saat ini pun saya masih berusaha untuk sukses. :)

  • Jangan bekerja dengan orientasi gaji semata, akan tetapi orientasi kepada pengalaman dan skill. Dengan pengalaman dan skill yang cukup, otomatis gaji akan disesuaikan dengan sendirinya.
  • Jangan menutup diri kepada proses pembelajaran. Bagi sebagian orang, belajar sudah usai setelah tidak lagi di bangku perkuliahan, akan tetapi di kehidupan nyata, pembelajaran dilakukan terus menerus sepanjang hidup. Ketika Anda berhenti belajar, maka saat itulah Anda berhenti untuk berkembang.
  • Jangan takut untuk membantu orang lain. Apalagi bila bantuan yang diminta bukan sesuatu yang benar-benar kita kuasai, karena justru dari sana kita dapat belajar lebih untuk menguasai sesuatu yang belum pernah kita lakukan.
  • Percaya atas usaha Anda. Tidak ada orang yang secara instan dari orang kecil menjadi sukses atau miliuner seperti Bill Gates atau Mark Zuckerberg. Selalu percaya bahwa sekecil dan seberat apapun usaha Anda tidak akan sia-sia dan memiliki hasil di masa depan.

Tanpa bermaksud menyombongkan diri, dengan pengalaman yang cukup banyak di dunia IT, pekerjaan datang dengan cukup mudah kepada saya. Tahun lalu ketika saya memasang profile di LinkedIn, bisa dikatakan bahwa hampir setiap minggu saya mendapatkan tawaran kerja dengan berbagai posisi di dunia IT. Selain itu tawaran kerja juga datang dari beberapa kenalan dengan posisi yang cukup menggiurkan, salah satunya CIO dalam perusahaan. Akan tetapi mengingat saya selalu ingin mencoba sesuatu yang baru dan tidak pernah ingin terikat, maka seluruh tawaran tersebut tidak saya ambil sampai saat ini.

Kesimpulan

Tanpa bermaksud menjelek-jelekkan generasi di bawah saya, saya menulis tulisan ini untuk membagi pemikiran saya atas apa yang saya alami selama ini. Seperti yang saya katakan, kesuksesan dan definisi sukses ini kembali ke pribadi masing-masing orang, begitu pula dengan cara mencapai kesuksesan tersebut, atau mundur dari kesuksesan. Hanya saja fenomena yang terjadi belakangan membuat saya tertarik untuk menuliskan mengenai lemahnya daya saing fresh graduate saat ini.

Pada akhirnya, semoga saja pendapat saya ini merupakan pendapat atau opini yang salah dan dapat dipatahkan dengan pembuktian di dunia kerja. :)

Prodigy on Everything?

2 Comments September 13th, 2014 My Minds

Lately, if you read my blog entries, you will find that I struggle with my work project that seems like never-ending project. The project that began about a year ago and should be completed in about 4-5 months is postponed until now. Though I know the main issues that caused the project was delayed were management and personal relation, I still wonder if there were still other factors that involved.

The main problem might be my skills and my own thought. I must admit that I have higher technical skills than my teammates, also with more experiences rather than them. Having skills don’t always mean you are at the advantage, unless your skills are not too far from your teammates skills. When you have much better skills, everyone will find you can handle everything for them and even the hardest problems will be able to be solved by your superior skills. In the end, they just do what they think they can do, even far before they hit the limit.

Sometimes, you have to take the blame from your teammates when something goes wrong. Take the example, you are a senior engineer in your team, and all your teammates are a newbie in the industry, with zero skills. Even when they have skills, the skill just limited in simulation which happened when they take the course in college. The first responsibilities as a senior in your teams is to teach them, from just the bottom of the sea a.k.a. the basics, to the peak of mountain a.k.a advanced. This should be easy if you teach them once, and they get all the things you teach them before. The problems happen when everybody have different processing speed, the ones who are smart enough can learn fast, but the unlucky ones will have to stay behind. And usually it will be your fault if you leave your teammates behind.

You have better experience to them, so with better experience you are the perfect figure for them, and should not be fail when doing anything. Fail is for the newbie, success is for professional. Yeah, as if experience assures your success 100% of times. I can give you that 100% if you give the logic problems that I can always control, however when it comes to projects which have to deal with humans and their activities, even the most experienced people might still meet failure. Of course, they tend to have strategy to prevent and to mitigate the risk, but risks are still risks, which might or might not happens.

Well, that’s what I feel as a senior, but there is similar matter with worse condition: someone who doesn’t have experience and no skill, but still confident enough to blame you for everything without looking at the other factors that may cause the project fail, when at the same time place a blame to him / her self because he/she doesn’t push the teammates enough to do the best they can. Hey, you are not the one who should responsible and now after placing blame to other people, you blame yourself too? If you really want to take blame that much after blaming other people, why don’t you try to position yourself in that people place before blaming those people???

Okay, I need to calm my self or I might write bad things here. Sometimes I done the exact same things though, blaming people, and then feel guilty, sooooo… nevermind, it doesn’t matter.

Sure being skillful is nice, you can be proud by your skill, you can tell everyone that you are awesome, you can mock other people that they’re sucks at doing things (if you are cruel enough), you can sell your skills in the career life, and the list goes on and on and on… Even in the life-or-death condition, your skills may keep you alive when other people will say “good bye” first in this world, just imagine the zombie apocalypse. In reality, there is disadvantage when people have super high expectation about you, or perhaps some people might just use you for your high skills.

One more things that worth to note is that sometimes I believe I have all my skills simply because I’m a prodigy in this and that. Ughh, I must admit that this thought is the worst thought I always have. I’m in my mid 20 and still think I’m a prodigy? Being skillful is somehow burdening for your social life, and now to think myself is a prodigy, it’s like I take challenge myself far deeper.

This entry was last modified on: September 13th, 2014 at 9:01

What I Learned as a First Time Project Leader

Being a one man team, or just small teams who never exceed 5 people make me an awkward person when I am assigned to lead people in application development. Since last year (December 2013), I have been assigned to lead a team which consists of 12 people, and honestly it’s so difficult and emotionally burdening. However since this is the first time I ever lead a team with this number of people, I have learned many things, some by hard way, some by soft way.

I’m not a management person, and I usually get the position as technical or field operator. The past forges me to be a person who have qualification in technical and analytic, but have flaws in social and management. I know these aspects can be improved by the experience, however as I told you, this is the first time I lead the big enough team. Just for information, the team consists of me as senior programmer, 6 junior programmers, 3 system analysts, 1 database designer, and 1 system documentation.

The summary of the story is that one by one of this team left the team, especially since many of them (9 of them) are fresh graduates, and as usual, this kind of project take times to be finished, when at the same time they have to choose to stay in this project or continue with their own professional job. For some of them, it’s as easy as flipping the hand, so some of them leave to get what they think as better jobs, some of them just going back to their hometown, one of them focused in his parent business, and some of them leave without any valid reasons. In the end, currently there are 5 people, and one of them is still don’t decide what to do.

Here are the list of the mistakes I made and what should be done:

1. No Commitment Contract

This is the first noticeable things. Without contract, the team members may just leave or slacking of what they should do. Actually, even with signed contract they can still do that, but usually they will think twice since it has more power than non-contract system. From the experience, even a contract will not stop the worker to flee from their job.

2. No Good Communication

Communication is very important in team. A good communication determines if your team will go in the right direction or rather in wrong direction. I’ve done the mistakes when I communicate with my superior and in the end had argument with him. Also I hardly report the progress to my superior so he don’t know if there are any issues in the development. If you are the leader, you should communicate well with your teams and also with superiors.

3. Emotionally Attached to the Team

Actually, it’s okay to be attached to your team, it’s naturally will happen when you work with the same people in some period of time. However this usually leads to emotional problems where you will think them more as friends rather than professional partners. You may think that giving an order to the teammates is the same as telling your friends to do something, and you may develop uncomfortable thought about this. Keep your professional life separated with your personal life. Personal issues which are brought to professionalism is really devastating.

4. You Don’t Select Your Teams

A team leader should choose who will be in the teams and who will be outside of the team. In my case, I must accept any people who are assigned to me without knowing if they are into this kind of jobs. From my experience, the person who tested before joining the team will yield a better result than the person who I don’t test. If you really can, make sure you are the one who select the team members.

5. Have Personal Romantic Relationship

Sometimes in multi-gender team, you cannot avoid of being too close with your team member and in the end might want to have romantic relationship with your teammate. Unless you’re sure this will be fine and your relationship is always in good mood (of course, this is virtually impossible), you may do this. Avoid romantic relationship as far as possible, or at least, postpone the urge to have romantic relationship until you have finished at least about 90% of the project.

6. Unstable Team

A team should stay as long as possible until the project is finished and perhaps have more time for the maintenance. However in my case, since the majority of the team members are fresh graduates, it ended up as failure when they have to choose stable job instead of this part-time job. Always look for team member who have more time and commitment.

7. Don’t Make Sure Your Position

I have dilemma when doing this project. When I first met my team, I am introduced as senior programmer and also assigned to lead the team when we are in the field, and the project manager is held by my superior. In the end, the superior never shows up and I have to handle all the field project leading, and I don’t know what the real project manager do. The worst of all, the team who left only reporting to me, not the real project manager.

8. Too Talkative

Usually when there is problem, I write to all my team members about the issues. In the end, the awkwardness happened. If there are issues with one of your team member, try to talk to them personally. And when there is an achievement that they done, praise them publicly. It’s what I learned from internet, but yet I don’t implement it in this team.

9. Experiment on the Team

The moment I was trusted a team, the first thing popped up in my mind was what is the best management style I should do with them. And from that evil thought, I started to try several management style, began with free one, to the strict one, and happened every 2 weeks. This is the wrong decision. Even when I successfully found a good and suitable management style for them, it doesn’t mean it also suitable to other people. Just try to be yourself, don’t change your management style over time, let your team members adapt to you when at the same time you try to adapt to them.

10. Expect Too Much in Loyalty

Loyalty is really rare these days. People tend to find a new place to stay when they think and feel more comfortable than the previous one. The younger generations who have relied in technology will have this thought in mind and their way of thinking is far more dynamic than older generation. You cannot expect them to handle the main module in your project if you even can’t ensure that they will loyal or feel comfort with you and your team. In the end, the one you have to trust is yourself, in which you might have to do all the task in project by yourself. By all, I mean really all the tasks, in my case are coding, analyzing, designing, testing, data migrating, documenting, etc.

Conclusion

Whether you’re new to project management or leading professional teams, always look at your team members no matter what, simply because a team doesn’t exist without team members. Try to be a good example for your team. Well, even if you try the best in your team, always expect for the worst, and have secondary plan in your mind when sometimes the team is broken. At worst, be ready to handle all by yourself. :)

Is Love (and Life) Really a Game?

Yesterday, I talked with one of my friend about love and he shared his experience on his relationship. We talked about it about 1 hour and had many laughter since we had both funny moment in relationship and love problems. Also, he told me some advice on what to do and what don’t when you are in relationship or when you try to approach a girl, a.k.a PDKT or pendekatan.

The first thing I noticed was that he also had similar event with me, got to get acquainted to a girl, been a friend, started to grow feeling toward her, had chat so often, and at the climax: let the girl know that he had feeling for her. What happened to him next was that he was avoided and ignored by the girl to the point where she looked like someone who never got acquainted with him. Even one day, she asked him from message, whether my friend avoided her. Well, to be honest, it’s just weird and awkward when someone who ignored you asks the same thing to you. He told me that the event has been happened about 2 years ago and everything is fine now, he loses the interest to that girl, and the girl never contacts him anymore.

It’s kinda funny to hear about his story and I still don’t understand why does females tend to ignore males after the males confessed his feeling toward them. Is it default biological and psychological feature in females to repel any guys who honestly confessed to her? I have heard many similar story about men who happen to be avoided by women after they confessed his feeling. Some of them also happen to say that the guys are creepy.

Somehow I think I understand why women do that. When a girl who I don’t have romantic interest with confessed to me, I might be thinking something bad about her, and how creepy the girl is when she still try to tell me about how she loves me every time we communicate (or implying that she has feeling in me every time). However, in this kind of modern society, how many females will confessed first to the males, simply because it’s not their role to confessed first, no matter how many feminist that encourage them to do so. If I think carefully, if she really honest about her feeling, I might also give her a chance, especially since I’m not a popular, rich, or handsome guy.

Sigh… Okay, let’s proceed to the next issue.

My friend suggests that I just follow the “game” the girl do to me. Somehow, I don’t really like this word, mainly when used in this kind of situation. “The game”, implying that this is just for fun, and no seriousness in it. Honestly, the first time I fall to this girl, I also thought that I must play “a game” so she feel more interested in me. After several days, I think it’s just non-sense to do this thing, and also unethical, though “the game” itself doesn’t really means to make her a play thing or toy for me, it’s just simply ways to make her interest in me. I just want to show her my true feeling, how I care about her, how I emotionally attached to her, how I want her to be a better person and have better future, how I want her to cast aside her painful past in relationship and try to start a new one.

Perhaps this is the sin I have done that cause our relationship worsening now. For what I’ve done, perhaps I got what I deserve: avoidance and being ignored. And even it’s worsen after I feel really attached to her lately. I wondering now if this life is a game, it really sucks, and whoever the developer should be punched in his face. >_<

This is why recently I decided to stop getting to close to girls. I have the fear that I might cause “the game” happened again which may hurt me and the girl I like. Perhaps it’s better to be a single for awhile without thinking about girl. People said that the girl will come eventually, as long you don’t be too choosy. Yet, I still hope the same girl will give me a chance to show her the good side of me, without being ignored. It’s just too sudden that she ignored me, while everything is still nice the previous week when I had a good chat with her. It’s just… sad, really.

So guys, if you really like a girl, I have my own suggestions to you:

  1. If you really want to have a good relationship, never tell your feeling too early, let the feeling mutually developed and all will happen naturally. This is what happened when I was with my first and only ex.
  2. If you tell your feeling and she rejects it, keep showing your good side, never get too upset when she rejected for the first time, improve yourself, but still try to be yourself and keep communicate with her. Some people cannot accepts rejection and being *ssh*le for sure, and I have seen some of my friends that have this trait, cursing and hope something bad happens to the girl who rejects him.
  3. If the situation worsened, never force yourself towards her. Let her alone for some time, because it is uncomfortable to be disturbed now and then. Keep supporting her, don’t ignore her when she tries to contact you, keep everything casual, keep friendly. This is what I try to do right now, although I’m not sure this will fix the situation, but it worth to do.
  4. If the situation is unrecoverable, try to move on. Do you listen to what I said? U-N-R-E-C-O-V-E-R-A-B-L-E, or by simple word: you are nothing more for her, or if you’re something, than you’re not more than a cockroach that need to be crushed and the existence should be eliminated from this world. Though I believe this is virtually impossible unless the girl is super unfriendly or *ssh*le, or perhaps just introspect yourself, perhaps you’re the one who impossibly annoying or have far beyond humanity acceptable behaviors.

Oh, also one more thing that I’m still wondering: I honestly think that my friend deserves a girlfriend more than myself. He is nice, opened, humorous, funny, friendly, religious (but not fanatic), stylish, and more socially capable rather than me. There are also some of my friends who have great qualification as good boyfriends but instead are singles until now. But, well, the world isn’t really fair as what I said above, somehow it’s happened like a random game. People who deserve more get less, yet who deserve less get more. You have to play it nicely or you will lose in depression.

Sigh… I really hate this game!