Tuesday, January 12, 2010

Google Rules


Google rules! Your website is a not a website unless you have a decent pageRank in some keyword searches from Google. Your website is a spam website if Google said so. Your location does not exist on the face of this planet if Google map can’t pinpoint you or if Google map API can’t geocode it.

I am still debating whether I should migrate all software engineers’ title from software developer to software engineer. Guess what, I “Google” to see how does Google, as a company, calls its software engineers. Sure enough, they are called “Software Engineers”.

Does Google trump over the state / provincial regulation regarding the use of the term software engineer(ing)? Possibly no! But we should go back to the basic -- what does the title do?

It helps others (especially those in the similar and/or related industries) to understand what do you do? If Google, Yahoo, and many other industrial leaders refer software professionals as software engineers, that’s a sufficient reason to use that title. What if these industrial leaders sunset and no longer blazing the trail in technology, should the title change? Why not, job titles should, and do, evolve. Do you know of any obsolete job titles? Jobs obsolete so do their titles.

Anyhow, if Google said that software professionals should be called software engineers, I will follow suit.

Do you Google?

Monday, January 11, 2010

Software Science vs. Software Engineering

Recently, I am reviewing the title of every team members. I am debating whether I should unify their titles to some favours of “software engineer”: frontend engineer, software engineer, mobile application engineer as suppose to developer.

Does the iron-ring grant you the proper right to use the title "engineer"? Do we have to go as far as certify yourself as Professional Engineer before using that title? Could software scientist ever earned the engineering title? What about software architects? Which government body or professional organization certify software architect “licenses”? How could software professionals be certified / licensed “for the protection of the public health safety and welfare”?

I am a software scientist, well, at least that’s what my degrees said I am. In heart, I am a software engineering evangelist, an technology educator, an infrastructure strategist, an innovator, a motivator, a researcher, a trailblazer, a technology trend setter, …..

When I was young (I still am and always will be, at heart), friends of my elder sister said engineering is difficult; "double E" (electrical engineering) is almost impossible to get into, etc, etc. I was young, stupid, and naïve to believe their BS. I did not realize that difficulty is a relative measure and they are not exactly the smart bunch. I wish I were to know better.

I like the movie “The pursuit of happiness” starred by Will. Smith. My favorite quotes are:


Christopher Gardner: Hey. Don't ever let somebody tell you... You can't do something. Not even me. All right?
Christopher: All right.
Christopher Gardner: You got a dream... You gotta protect it. People can't do somethin' themselves, they wanna tell you you can't do it. If you want somethin', go get it. Period.


Now that I think about it, my sister’s friends said that engineering is difficult because (1) they are in the engineering program and they are on the probation period. (2) they applied for the engineering program but got rejected, and they don’t want anyone else getting into the program to prove that they are inferior. Whatever their reasoning might be, their speech has a profound implication to me back then and now. So, now, you can tell me what I can't do. And I can prove you wrong.

When I apply for university program, because I naïvely believed engineering is difficult, I didn’t apply for any engineering program. I simply applied for the computer science program in a number of universities. I got accepted to all the universities that I applied for, some with scholarship as well. Now that I think of it, if I were to apply for the software engineering program, I would probably get admitted as well. At this point, I still regretted that I did not graduate with an engineering degree. I have done many stupid things in life, but this is one of the most regrettable one. (yea, it's not a big deal ... to you, maybe!)

The silver-lining is that this story reminds me that I should never tell my boy what they can and cannot do. Instead, I need to teach him how to get what you want and the ramification of doing something stupid.

Back to the topic, so what is the difference between software scientist and software engineer? Not by much! What qualify an individual to one title or another? Who knows? Would natural scientist (biologist, chemist, physicist, …) oppose to software scientist calling themselves scientist as computer science is not a natural science? If so what should software professionals call themselves? I have seem a Yahoo! Engineering vice-president called himself “cube-occupant”, but he is just being modest.

So, why do I want to unify my team members to be software engineers instead of software developers? The reason is simple and literal. They are more than merely developing software, they are engineering it. Enough said?

Would my teenage story about not applying engineering program clouding my judgment to wanting everyone to be called software engineers? Definitely, no!

My motivation is clear. I want them to hold a high moral and professionally standard in what they do, to be accountable for their decisions, to understand the ramification of their trade-offs, to master the act of balancing between time and quality, etc. They are, after all, responsible for engineer the software including standardization, backward/future compatibility, regulation compliance, tool licensing, etc, etc.

Saturday, January 9, 2010

Security Though Obscurity

Recently, I overheard the following:


Manager: why do we use IP address to reference to machines and servers instead of their hostname? And why don’t we assign proper hostname to these servers?

IT: Oh, because it is more secure that way!

Manager: <rolled his eyes! You can read the manager’s mind: “OMG! WTF! Are you kidding me?”>


I do not claim to be a network, infrastructure, nor application security expert. I have some industrial security experience. After all, I was a member of the SOX compliance special task force, implemented secure online transaction portal and partially responsible for the web security for one of the larger portal companies (in 2000 – 2009)

That’s the classic example of security by obscurity. To me, using IP address to reference to machines and servers:

- is a very ineffective way to provide security, if any
- is a very error-prone and maintenance-heavy way to build application with
- provides next-to-none extensibility to your network
- creates far more confusion for internal network administrators and developers than the security provided

In short, the cost far outweighs the benefit.

Friday, January 8, 2010

Eco-friendly!

Eco-Friendly

I can't claim that I am a devoted greenpeace supporter. But I do have a genuine concern about the world's limited and fast vanishing resources. I am strong believer reuse over recycle.

CES 2010 is on. One of the technology trends predicted by ZD is echo-friendly! This post triggered me re-question about power adapters for laptops, cellular phones, PSP, and other electronic equipments. Why are they all differ? It frustrates me.

I have over half dozen of broken, old, dated cellular phones at home. Each phone came with its own power adapters. The power adapters are not compatible among phone. In most case, I need different adapters for phones of the same brand (such as Samsung)! This is frustrating. The phone is dead, old, trashed, useless, etc. But the power adapter is in mint condition! Now, what do I do with the power adapter? Ebay it out?

Wouldn't the World be a better place, all cell. phones have the same power adapter, such as USB?

Benefit 1: The obvious one. A new cell. phone doesn't require a new adapter.

Benefit 2: If the new cell. phone comes with a new power adapter, you now have spare one, just in case.

Benefit 3: If you forgot your adapter and need to charge/sync. your phone, a compatible cable is available ubiquitously -- your colleague has one, the guy sitting next to you in the train has one, you can buy one from airport kiosk, you can buy one from vending machines, etc.

Benefit 4: Phone manufacturers can now sell phones without the power adapter. Thus, reduces the package material and package cost, reduces the shipping cost, reduces the labour cost to manufacture, reduces the material to manufacture the power adapter, etc.

Eco-Packing is not new! Apple has been reducing the package size of its products.

Compact Package = Less Waste + Efficient Shipping


I am sure I have missed out a handful of pros to this idea.

Having the same power adapter for all cell. phone is an ALL WIN situation. I am sure someone would argue against this faultless idea. Please enlighten me if I miss out some disadvantage to this idea.

The same idea apply for laptop manufacturer.

I have not been using many different brands of laptop. "I am a Mac". But I did use IBM and HP laptops. They are both evil. Not only that the power adapters are not compatible among different models of the same brand, but for the same laptop, a different adapter is needed for the docking station and the laptop itself!! Why?

Thursday, January 7, 2010

How would you move Mount Fuji?

Technical interview fascinate me. I have been in countless interviews, on both sides of the table, actually. I have been interviewed with companies such as Google, Yahoo, Microsoft, Electronic Arts, IBM, Sapient, Goldman Sachs, Motorola, Bell, Sybase, Nortel, Epson, etc, etc. On the other side of the table, I have interviewed at least over a hundred of technical career seekers as a technical recruiter, hiring manager, or simply helping out my colleagues to "screen out" or "get a feel" of the candidates. I enjoy hiring. Hiring right is a very satisfying experience. Of course, bad hire sucks, badly.


I like using brainteasing question to evaluate candidate, especially when I need to hire based on raw talent. Brainteasing question is a great way to understand the candidate's analytic skills and lateral thinking process. Among all types of brainteasers, I did not see much point of asking popular questions such as:


  • how many piano tuners in the US?
  • how many gas station in the state of California?
  • how many tennis balls can fill in this room?


… but that was before.


Recently, I have encountered a situation that asking these questions does have a point -- to access whether the candidate can guesstimate with some grounds, give a ballpark figure with some reasoning and assumptions.


Why is this guesstimate skill is important? The World is not just black and white. We don't usually have the luxury to make decisions based on a complete picture. It is not surprising that clients have allocated a huge budget for us to build something and ask us:

How long would it take?
Of course, the inner-self (the one with just black and white) would argue that there is no way I can tell how long to build certain thing until I know absolutely every bit of detail in what we are building? In reality, I have never been in a project that we know all the details before we estimate the LOE (level of effort).


Good estimate is essential in the world of software engineering. But estimate is not a science; it's an art. It comes with experience. And experience is not free. Poor estimate is the price to pay. It's important for us to reflect our estimates and the actual LOEs regularly.


When asking these guesstimate interview questions, the interviewer can gauge how industrial-savvy the candidate is. Is the candidate smart enough to ask follow-up questions to increase the ballpark accuracy? Could the candidate compose a convincing and logical reasoning to support his/her estimate? Could the candidate able to leverage known/accurate information to solidify his/her arguments? Could s/he confidently present the estimate? Could the candidate identify where the areas of the greatest risk for error? Could the candidate identify the most crucial determining factor that affect the accuracy?


One thing for sure: if the candidate refuse to answer the question simply because s/he thinks it is a stupid question. We may pretty well end the interview right then and there!!


Some professionally qualified recruiter may not agree with me. Some even argue that it is illegal to ask such type of questions in an interview. I do not hesitate to go into court to justify my motive in asking the question and I am insisting that this type of question is highly relevant to conduct our daily business -- software engineering.


Argue all you can, but this is my blog. I am always right.


Back to the title of this entry: how would you move Mount Fuji? I don't know what kind of answer you are expecting. I read that book long long time ago. I don't remember the answer. In fact, I never try to remember any brainteaser answers. I derived them myself!


To me, I can move Mount Fuji unlimited number of ways. I can step back by one feet and I have "moved" Mount Fuji one feet further from me. I don't think it's a trick question, it's a question of relativity, think out of the box, lateral thinking, change of perspective, etc.


Wow, I completed this post in one train ride, impressive!