Thank you for your response and to share your experience as well. Greatly appreciate it. It would be great if I could have some stability in my career and yet still able to work on something else (be it RoR or LISP or something else).

<rant>
I've been working in a few, of what people would call "software product", companies. The one that Joel mentioned a lot in his essay.

First of all, if I were in Silicon Valley, I wouldn't probably even think of Oracle. I would hone my CS skill so bad that I could hack my own compiler. Alas, I don't live there. Even if I do, I have an expiration date stamped on my head: good only for 10 years after graduation. Silicon Valley wants hot-shot, young, energetic, red-bull-drinker, all-nighters type of programmer. So if I can't be a "product manager" or "CTO" or management material by the time I'm 32-35 years old, time to get out from SV.

Product based company tend to be unstable in where I live. I also noticed this trend isn't particular to where I live, it's everywhere else too. When the product is not selling well, lay-off happens. The first to go are usually the QAs.

Once the QAs are gone, the next one to go are the "internal" tools developers: these are the ITs and the tool developers. The last one to go are the junior developers and weak performers. The ones who left must work super hard to prove that their worth of their salary.

Product based company is cool during their first 3 years. After that, it's all maintenance of legacy and hacked-up code. I don't know which one is worse: maintaining half-ass, hacked-up, badly designed product with tight-deadline (that usually leads to OTs) or writing PL/SQL or customizing Oracle modules.

Here's another problem: standards, scrum, xp. These are great things to have in a software product house for quality and longevity of the company. But at the same time, they are a double-edged sword.

Let me explain why: once the standards are in place, most people are replaceable. Take Scrum/XP for example. One of their important points is that we all should share knowledge (via Pair Programming, or something else).

They want to make the unknown to become lesser unknown or to be known. Once it is repeatable and known, you have no value anymore to the company. Intermediate becomes Senior, Junior becomes Intermediate, and you're being let-go and they will start to hire new people.

The choice is either to move up to management or not to do scrum/xp (which is equally horrific). Not doing scrum/xp would lead to bad result, bad quality, unhealthy working environment, and the need of a hero-like effort to fix some bugs.

I have seen my friends keep changing job within 2-3 years. That might be okay with them but not with me. I don't like to waste my time preparing for interviews, cleaning up my resume, every 2-3 years. I don't mind learning and improving myself, but not for the sake of that kind of cycle.

Here's another problem with software development: programming languages. Too freaking many of them. People have too many opinions. Some like LISP, some like Java, some swear by .NET, some would invent a company based on F#, some deal with Struts1/2, some would want PHP/Drupal/Wordpress. This leads to a very fragmented field.

I rarely see a company that is looking for the bare minimum (say, Java, or C#, or Ruby) but with X-years of experience. I often see companies looking for specifics (must know Java, Struts, XML, XQuery, XPath, XSLT with 7 years of experience).

I thought about doing Rails and iPhone for a while until a couple days ago where it hits me that you can actually outsource iPhone app development. Those 2 guys that were being interviewed by Mixergy did exactly that.

I also see a few consulting offers lingering in a local job-board looking for an iPhone/Android developer. But most of them are unstable due to the nature of consulting. I don't think they're willing to pay the premium ($100-$125) anyway.

Some consultants might be able to charge premium during the first few years of a new technology (like iPhone), but they need to find the next big-thing again every 2 years.

The point is this: low entry barrier sucks.

When I look at Oracle, the barrier to enter is a bit higher (or so it seems) than being a developer and not too many people want to do the job. It's a niche. Just like what one of the HN-ers mentioned about how he did quite well with his freelancing/consulting gig (he's doing PHP, Drupal, and Wordpress)
</rant>