Thursday, February 26, 2009

Advices for Techies

A good article on "Things I wish I 'd been told", written in 90's but still very relevant. The original article is here.

Here are some points that I find useful:

Experiment

Your 20s are a great time to take risks and try new things. So feel free to experiment with different jobs. Your goal should be to learn what types of jobs you’d like to be doing for the next 40 years or so. Trying different jobs is an excellent way to learn.

Avoid Becoming a Manager

While you experiment, however, avoid management positions. It is very easy to become a manager. The technical field is always happy to find a new mid-level manager who is technical competent. And your pay will initially rise much faster than if you stay a techie.

But there’s a serious downside. It is very hard to stay technically competent as a manager. So once you move to management, in about 7 to 15 years, you’ll have no useful technical skills. You just be another technically weak mid-level manager with indifferent business skills (since you don’t have an MBA). When times get tough, companies work very hard to keep their technical staff (and may even offer raises) while they are laying off mid-level managers. And it is a lot harder to find a new job as a manager than as a techie.

Keep Your Skills Current

A common career mistake is to fail to keep your technical skills current. Indeed, as you get older, your set of skills should be continuing to grow. Take the time to learn new programming languages as they become important. Keep track of technology as it changes. The simplest way to do keep current is to join a technical society like ACM or IEEE and read the monthly magazines they send you for interesting ideas. Many conferences have good tutorials, which is another way to keep in touch with progress in the field. Another nice feature of professional societies is that they have a wide range of group insurance plans that can be used to supplement gaps in your employer benefits (especially if, say, you are with a startup).



Saturday, February 21, 2009

Eating Your Dog Food

"Eating one's dog food" (EODF) is a pretty common phrase in the software industry. It means "to use the product that one makes".

For example, if M$ would eat its dog food, then all the computers in M$ offices, barring those for cross-platform testing, should be running Vista. But I suspect number of Windows XP and OS-X will be significant.

I observed not many companies actually eat their own dog food, at least not at all of my previous companies. Even for companies that do, the users are usually not the developers, and feedback either never collected, or blissfully ignored.

Why EODF is important? To understand this, we must first understand humans are selfish, and when something is not related to us personally, we don't really care.

However, if the developers have to reboot their machines every couple of hours, then they will crack their heads to stabilize the software. If the developers' lives are tied to the two-way radios day-in-and-day-out, they will write more maintainable codes, start using UML properly (or just stop using it altogether), hire more competent programmers, and test the software more thoroughly beyond just shouting "TESTING 123" on the radio at left hand, and passed the test when there is sound coming out from the radio at the right.

By enforcing EODF, this will tie the interest of the developers to the products they are developing. I have observed quite a number of products are developed and tested by people who won't be using them as regular users.

EODF should form part of the framework for US banks: First, bonuses are paid in the financial products that one sells, and vested gradually over a ten-year window. Second, impose a hefty fine and allow litigation for product responsibilities like what is in the automobiles or consumer electronics sectors. I believe in this way the Wall Street bankers will think things through before screwing the whole world for their own benefits.

Tuesday, February 17, 2009

The Nothingness

I think there are more than one blog posts of mine bearing this title. Indeed this is how I feel throughout these days.

Days and nights just zip by and all I can remember are 1) I wake up and go to office 2) I go back home from office and ready to sleep

Time flies so fast I barely remember what I have done, well, I did attend a gathering on Valentine's day and had a good time, but it is pretty much of it.

Gee, how should we counter this zombie-like lives???

Thursday, February 12, 2009

Super Genius Wanted

Reddit Programming recently has a job ad that is very interesting. A company in London is looking for Senior Software Developer.

One of the requirements:

It is expected that you will be highly proficient in all industry standard programming languages including (but not limited to): Java, including threading, reflection, classloaders, C & C++, C#, Visual Basic (including VBA and VB.NET), Perl, Python, JavaScript and ActionScript (Flash), J2EE, XML & XLST, SOAP & Web Services, SQL, MySQL, Object-Relational Mapping, HTML, CSS & Web Design, Object-Oriented Design, Most GUI toolkits including Java Swing, Win32, GTK.
The package?
Opportunities exist for the best Developers across the experience spectrum and so the salary on offer ranges from £35,000 to £65,000 depending on your background. There is also a bonus, healthcare and pension scheme.

Please do note the term "highly proficient" and I doubt if anybody can be highly proficient in a handful of programming languages in any given time.

The job ad is here.

Wednesday, February 11, 2009

When Job Calls

I just got an email from JobStreet on firmware/BIOS engineer job opening in Penang. An MNC is starting up in Penang and this is a team lead role.

Reading through the job description (JD), this seems like a typical maintenance job for mature, or soon to be obsolete products. Even though in the JD, it reads "Specify, design, implement, and test software features and capabilities for new and existing embedded computers", do give attention to the keyword "existing embedded computers".

The next paragraph in the JD is interesting and data-packed:
"-Diagnose and debug problems with your product or problems arising when your product interacts or integrates with other NI products"
In fact, this is the real job description: validation engineer, or firmware for testing. On top of that, it also reviews the hiring company is NI. I wonder what kind of new product it will let PG to drive.

The requirements are typical, for example:
-Experience with x86 CPU architecture, BIOS, EFI and ACPI
-Proficient in x86 assembly and C/C++ development and debugging
These aren't bad, however for now I do believe doing things beside x86 will give me more values and a new perspective on embedded devices. There are enough people knowing x86 architecture anyway.

On top of all these, this brings back the memory of odd-hours meetings, and multi-site politics which I had had last time. Especially in this kind of economy, having an office in Asia definitely will make the US folks nervous, which in turn will make getting data and technology transfers difficult. This is somewhere between a rock and a hard place which I myself don't wish to be in. Pass!!

You may say I am lucky to get interview opportunity, but I assure you it is not all about luck:
  • I keep on adding values to myself. I choose what to focus and what not to.
  • I keep an eye on the real world and opportunities. Hiding in MNC may make me feel secure and good, but I could very well wake up the next morning jobless, and the skills I have gotten in MNC are usually useless, too specialized, proprietary, or, all of the above. Example of useless skill will be making of PowerPoint slide for weekly update, this is time-wasting and mind-numbing, but still the managers demand them week after week. Over-specialization is straight-forward: the logical software modules are broken into so many pieces that virtually no one knows what is going on. I am not kidding, this happened in my ex-company where even the principal engineers knew only part of the system (the rest was only known to the counterpart in US...). The last one is also not hard to understand, proprietary stuff has two categories: first is home-brew software which isn't available outside. For example handphone companies have software that can force their phones into certain test modes with additional abilities. The second category is the use of some commercial tools that are not within the budget of smaller companies. Rational Rose, Rational ClearQuest and ClearCase will be good examples of this type of software.
  • I have spent significant amount of time in this trade, it is really about if you are interested in something or not.
I have not much say on luck, so I can only work on what I can control.

Monday, February 09, 2009

The Lesser, The Better

Paul Graham recently wrote an interesting article on the similarity of politics and religion here. In that article, he shared some thought on why these topics will generate much more heated but useless debates than other topics, like mathematics or C programming.

Just imagine how many hours of our precious time are wasted by people who preach a particular religion or political view? Even if you think you are immune from all these nonsenses, have you ever taken a flight in US before? How many hours you were in line to board due to security search ahead?

"To prevent terrorism", you may say. Correct, but what are the main forces behind all the 911 and the Iraq drama? You got it. Religions and politics. I don't mean people should isolate themselves from the world, but we should exercise common-sense and proper reasoning on what being told as the 'truth'.

I don't plan to paraphrase Graham's article. Instead, I want to add that in order for us to stay independent and remain objective, it is useful to be paranoid and skeptical: believe in as few things as possible, and always re-examine things you believe with an open-mind, because things do and will change.

Sunday, February 08, 2009

Advanced Appliance in My Home

C'mon, I know you envy that. ;)

Monday, February 02, 2009

OpenOffice in Malaysia

I know OpenOffice 3.0.1 is out and I want to look for its release notes to see what issues are fixed. I stumbled upon a piece of information which is pretty surprising:

A significant number of Malaysian government bodies are using OpenOffice.

According to this link, there are 130K known OpenOffice installations in the Malaysian government, which translates to an estimated saving of RM12 Million (the report assumes comparable commercial product is RM950 a pop).

Another interesting list is here which shows known OpenOffice deployment in different countries. Look at it, and look at it closely. Can you identify where are friends of US? ;)

New Year, Same Hopes

I am now in Singapore after a long and relaxing holiday back home. Home sweet home, I start to miss it now. :)

As a first article for all of you during this uncertain 2009, India seems to have good news for the world's poor people: a 10-buck laptop. That is right, a laptop for ten US dollar and they (the Indian government, and a few Indian colleges) claim this laptop has 2GB of RAM, WiFi, Ethernet, and even expandable memory. Articles on this news abound, but the following two are interesting (and short). Click here and here.

What sets me wondering is why they stopped at the price, they can go on and claim this laptop is insanely powerful, and even can end world hunger and bring peace to the middle east.

I am quite saddened and disappointed by their humbleness this time.