Wednesday, August 18, 2010

IT Recruitment in Indonesia

In one of episode of temanmacet podcast there was discussion about working abroad. The discussion revealed that currently many IT resource from Indonesia that go to abroad instead develop domestic IT power. The main reason is very reasonable, there is no appreciation from their own country for their professional skill.

One of that dis-appreciation can be seen from vacancy for IT resource in many job vacancy website in Indonesia like jobsdb and jobstreet. Many company who search resource don't favor specialization. They have mind set to take most advantage with less salary over for the candidate  that will be recruited. Many of vacancies posted state very much requirement for single position

This some artificial example that condition:

..URGENTLY REQUIRED..
We are a growing company bla bla ....;
We are growth and expansion, we are looking for talented professionals to join our team.

Java Programmer
Requirements:
    * Java, Linux & Oracle is a must.
    * S1 Degree from related background and reputable university.
    * Experience in using Java Web Programming Language.
    * Experience in using Linux & Windows Server Operating System.
    * Experience in C#, C++ and Visual Studio .NET.
    * Understanding Design Patterns.
    * Understanding Model-View-Controller Architecture.
    * Understanding Refactoring.
    * Good attitude, commitment to work and good team player.
    * Adaptive to new environment.
    * At least 5-7 years of working experience in software development.
    * Good problem solving, analytical, and leadership skills.
    * Deep understanding on database design, application design and architecture.
    * Can fix Air condition system
    * Can be office boy replacement
    * Can washing car and employer personal pet

The last three of the requirements is my joke. I just only want to describe how naive some of IT company in Indonesia. There is something natural when someone want to get economic value in recruiting employee. Pay as low as they can and pretend get someone that understand more than 4 programming language, fluent in more than 3 database, have good habit in more than three framework. Even superman cannot fulfill such requirement.

Of course there are reason why most of IT company do this (most but not all). IT industry in Indonesia can be considered still in infancy. Most company stand less than 5 years. So most of it still search appropriate form. The big mistake of most that company is, company tends to fulfill whatever clients need. Also from discussion in temanmacet podcast most IT company in Indonesia apply rule PALU GADA (apa lo mau gw ada , English: we can provide whatever you want). By applying this rule the company push developer as the main actor in producing their product. If client need application that will be built using PHP, the developer can build. When the client need other application that will be built using Java, same developer can code that. At the end the developer is dead.

If we consider carefully, applying Palu Gada approach at long term is destructive. This rule favor generalization instead of specialization. I don't too understand about business, but I believe good business is selling something that specific. With more focusing like that, company can provide something with good quality assurance instead of buggy software or late development project because developer to stress buy unrealistic requirement and time constraint.

So what can we do to fix this problem? From employer point of view, is stop Palu Gada approach. Be more specific. By doing this company can produce more stable software with no late delivery. If client offer project that unrealistic with current human resource and time line reject that. Many IT company that make big mistake by forcing itself accepting such unrealistic project.

From employee point of view we can fix the problem to more specialized in one skill instead of to be too generalist with many skill. The most obvious thing that can employee candidate do is stop put too many buzzword on CV. Moreover of you put the buzzword just to make your CV looks cool without actually understand what the buzzword mean. Only put skill on CV that really represent your main skill. If we put too much, when we start work, employer also expect to much that mostly outside our capability to handle that.

Probably the post is getting to long. I will continue the topic later on. I realize many problem analysis and how to solve it is little bit to shallow. But that is roughly problem that happen in IT recruitment in Indonesia.

Image from: http://ileadjobs.co.za

Sunday, August 15, 2010

Java Must Have Book for Beginner

This post is pasted from my previous blog written 4 January 2008.

I am delving in learn Java programming language in this last 2 or three year previous. My interest in Java, perhaps is caused by my previous programming language I learn before, C language. We all know, although there is so much difference between them, Java inherit many fundamental syntax from C and C++.

Java is easy. Many people say that. Maybe it is true if we compare to the complicated C++. But, more than that, Java is not merely programming language. Java now is a complete huge framework that consist programming language itself, Application Programming Interface (API, a.k.a library that is in enormous amount), Java Virtual Machine which run byte code over operating system, etc. It seem clear now, learn Java demand our great focus and intention. Because it is not as easy as we imagine.

Thanks for Java’s book writer around the world and complete Java documentation and tutorial from Sun, there are always path for whom want to learn. Spare time for reading good stuff and continuous practice make Java acquaintance is really possible.

From many Java’s book around, I found several that is must have. First thing to read in learning this language is Java Tutorial from Sun website. But for the first read the tutorial is about too heavy. For experienced learner, tutorial is important reference in learning and developing code. Of course Java API’s reference also have to always exist in the directory for main reference.

The first book that I recommend is Java How to Program written by Deitel. Really complete book with enjoyable colored text that good enough against boring in reading. The books consist all of fundamental material to mid advance material such as basic of thread, GUI and servlet. Enormous code sample is spread around the book that can be tried for learning and doing approach. The next book is Advanced Java How to Program that is consisted advance material continuing the former book.

Although Java How to Program is enough for learning about syntax and the characteristic of Java API, there is no more explanation about build real software. I found two book that accomplish those necessity. Beginning Java Object by Jacquie Barker from Apress and Object-Oriented Analysis and Design written by Mike O’Dochery from Wiley. Barker book explain Java from software development point of view. In that book, reader is guided to build real Java software step by step. O’Docherty more focus in Object-Oriented approach mainly discuss about UML although it is really intended for reader who want develop Java application. Same as Barker, O’Docherty book also consist real software development as example.

Actually there are so many other book in Java Development theme. Some from them are easy to read while the other is little bit heavy. I hope four recommendation for Java Application Development Book will useful to you. Yup it is Java. And it is really phenomenon.

Idea Management

There many think that is interested to discus relate to management topic especially in field of software development. The point that is raised by the topic is, there many of software development process that really take concern in issue management. Bug and problem in application take most of attention. Of course that is something natural. Every software development company eager to produce software without issue and problem.

Moreover, responding this necessity there are so many tool that make issue management easier to do. There are Jira, Trac, Bugzilla and other kind of system that intended to use as issue management tool. By using that system software development team can manage issue that is found. Manage in here mean resolving and fixing issue. The interesting point is even though issue management is very important, most of software development team forget about idea management. Idea management is very important to manage too. There must be very much idea that lost because not managed well. Actually manage in here is just listing the idea and then at some time discussing in group. The question is if there so many issue management software exist is there any idea management software out there? I believe there must be exist. But the most importance is our awareness that beside issue, idea is important to manage.

Samsung Bada Osp::Xml Build Problems

Pasted from my previous blog on 2 August 2010.

Since one last month I discover new mobile platform from Samsung, Bada. With basic skill as amateur Java Programmer I just have very basic skill in c/c++ programming that is used as lingua franca of Bada. Perhaps I know little bit knowledge about pointer. But I lost when need to discover build, link related problem.

One time I need to build application that have parse xml. I put the xml code in OnInitializing method that is extends from Osp::Ui::Controls::Form and I also not forget to include FXml.h at my header file and using namespace Osp::Xml in my cpp file. Here is snapshot of the code:

result MyXmlForm::OnInitializing(void) {
xmlDoc* doc = null;
xmlXPathContextPtr xpathCtx;
xmlXPathObjectPtr xpathObj;

doc = xmlReadFile(“/Home/test.xml”, null, 0); // error here
if (doc == NULL) {
AppLog(“Failed to load xml doc!”);
}

xpathCtx = xmlXPathNewContext(doc); // error
if (xpathCtx == NULL) {
AppLog(“Error: unable to create new XPATH context”);
xmlFreeDoc(doc); //error
return (E_IO);
}

xpathObj = xmlXPathEvalExpression((xmlChar*) “//title”, xpathCtx); //error
if (xpathObj == NULL) {
AppLog(“Error: unable to evaluate xpath expression”);
xmlXPathFreeContext(xpathCtx);
xmlFreeDoc(doc);
return (E_IO);
}

get_xpath_titles(xpathObj->nodesetval);

xmlFreeDoc(doc); // error
xmlCleanupParser(); // error

return E_SUCCESS;
}



Here are the errors:
undefined reference to `xmlReadFile'
undefined reference to `xmlFreeDoc’
undefined reference to `xmlXPathNewContext’
undefined reference to `xmlXPathEvalExpression’
undefined reference to `xmlXPathFreeContext’
undefined reference to `xmlCleanupParser’

This evening I spent about two hour to make above code work. Like I have said, Bada itself actually has provide xml library with namespace Osp::Xml which is subset from libxml2. When I finish type the code I stuck when have to face undefined reference to bla bla bla error relate to method call from Osp::Xml. I already make sure that I have include FXml.h in my header declaration and also state using namespace Osp::Xml in my source code. After spending sometime researching with very minimum information from Bada Documentation and also all internet site I found I need to link FXml library in project properties. Then build problem dissapear and my code can run smooth now. Yippie.

Saturday, August 14, 2010

Facebook: Why It Gains Momentum

Pasted from my previous blog posted 20 March 2009.

Social networking site becomes trend after dot com booming ruins many dot com company around year 2000. The new term Web 2.0 appear as a new way to use internet as interaction point. Web 2.0 bear some familiar stuff to us currently like social networking site and weblog. Those two stuffs offer common thing. Interaction between user from everywhere is linked by internet. We can communicate and find friends in social networking site. We can publish something, either writing, picture, video on weblog. From there, internet is never same as before. This post will try to discuss about social networking site and its impact to our daily life.

First social networking site that I know is friendster. I became member at 2005. At that time, I really astonished about interaction possibility that is offered by friendster. The possibility to find friends, whether we have knows, or not recognize at all. See friend profile, browse their foto album and give testimonial to our friend profile. For several years friendster become most visited site, at least in Indonesia. A lot people being connected and find new friend use friendster.

Not long after, several new term in internet technology is appearing. Most famous in web developer point of view is Ajax, something that is often related to Web 2.0. In easy way, Ajax can be interpreted as a technology that make user and website interaction more natural. User can click something on site and immediately got response without have to wait whole page rendered like Web 1.0 has done. Many Ajax application then was born use Ajax technology. We know Gmail, Google Earth, Plurk and Facebook.

Currently, after friendster booming, it seems Facebook try to replace friendster position as the most favourite social networking site at least in south east Asia, my region. Several power feature offered by facebook are rich applications and more dynamic interaction. At 2007 Facebook has launched Facebook developer platform and then open posibility to many developer to develop custom application which can be used by facebook user. This offer make Facebook really rich of application from simple pet game, racing game, etc. Dynamic interaction is presented by facebook use a lot of comment can be put by user to another user. Comment to photo, video, etc. We also can put something on other user wall. Wall is something that belong to user where another user can put many things on it. The most favorite for many user is status update. We can put whatever activity we do, whatever thing in our mind on status update. Interestingly, many other user will have same interest and put some comment.

Beside those 2 reasons, the other factor which make facebook more gain momentum is mobile web that become more common today. Recently we can browse website from everywhere. We can post blog content, send email and even chatting use whatever chatting protocol. Updating or see other user update on social networking site seems to be an interesting activity for us. When we on train, we can check other friend status, respond on it. We can browse their photo and maybe make online chat use facebook messenger. So, for other social networking site, it is your time to make new innovation, otherwise, facebook flood will ruins all of you.

Programming Language whose write JVM

This post is pasted from my previous blog posted 15 June 2008.

One of interesting point that is considered as the advantage of Java programming language is its portability. The jargon for that ability is really famous. Write once run anywhere (WORA). Although it will be needed hard work to write code which is really portable, I think the statement is not too exaggerate. Since it design phase, Java is prepared to be much portable. We can see the fact surround us. There are so many Java. In our computer desktop, laptop, expensive server, standard mobile phone, PDA, set top boxes and many more.

For who has read several first chapter of Java introductory book will know how that portability will be achieved. Different than former programming language, Java offer different approach in developing code. Running code in Java is consist of two phases which are, compiling source code and interpreting it’s result. Compiling phases use javac tool which change java source code with .java extension into intermediate code named bytecode with .class extension. Later this bytecode will be interpreted by java tool so we get the software run.

Different than other programming language, bytecode is not run straight above operating system or platform. Bytecode run over stuff called Java Virtual Machine (JVM). At that stuff .class file is interpreted a.k.a run by java.exe (in windoze) tool . Various platform has it’s own JVM. Windoze has its JVM, so that Linux, Solaris and other operating system. Also mobile phone, PDA, set top boxes has JVM. That’s why bytecode can run in various place and the portability is really approachable.

The question is, who act as a tittle of this post, what programming language has written that JVM. I believe rarely introductory java book will discuss much about inner mechanism of JVM. Several complex hardware level or compiler construction book perhaps will have wide portion for this topic. But I will prefer go to cinema and watch fun movie rather make my head dizzy reading such book.

So what the answer? This post will be useless by asking without answering. Ok here you go. After reading one of Good rarely Introductory Java book like I said above (the title is Java in 60 minutes A Day by Rich Rapossa from Willey) I found that JVM is written by C++. After all of advantage is offered by Java it still have to admit superiority of old complex difficult of C++. Yeah when reach the necessity of speed and hardware accessing such as needed by JVM, C++ is always needed.

My mind then imagine, if later there will be new programming language is founded. Let’s call that Sumatera programming language (Sumatera is another island in Indonesia such Java). Sumatera run above Virtual machine called Sumatera Virtual Machine (SVM). SVM abruptly coded by Java. And JVM coded with C++. I thing only crazy people will create that.

Just joke.