Category Archives: Software Engineering

My Review of Worker skill estimation paper by Rahman et al

My review of “Worker skill estimation in team-based tasks” paper by Rahman, Thirumuruganathan, Roy, Amer-Yahia and Das, is now available on Computing Reviews here. (Requires ACM membership, and it is incidentally, my 11th review for ACM Computing Reviews – you can find the other ones here.)

Companies generally struggle with the problem of estimating the skills of individuals, as it is a hard thing to keep updated and has enormous applications in optimal team formation. Skills are sometimes subjective, can have many variations (Spoken French expertise, or Written Legal French expertise, for example) and change rapidly over time. Historically, skill management used to be only for large companies implementing million dollar SAP HR system implementations, but with the advent of cloud hosted SaaS applications, that situation is now changing. I am fortunate to work on the BizMerlin‘s exciting skill matrix product, so this paper was all the more interesting for me.

What is the difference between customization and configuration?

This is a commonly asked question, and a brief comparison of these terms is in order:

  Customization Configuration:
Definition: Change of the code/logic of the product “Tweaking” of product parameters to achieve desired functionality
Who does it: Developers, architects, and other technical team members Business users, with some training or manuals
Timeframe: Weeks, months or years Generally an order of magnitude less than corresponding customization timeframe
Transparency: Requires access (white box) to the product code Does not require access to the product code

Would you rather have a product that is customizable, or would have a product that is configurable? Product managers eat questions like this for lunch. Any day, a more configurable product is what the product managers aspire to have. “Customizing” products is almost an oxymoron – it means that we are going to be writing custom logic to do what the product was not able to do. For large enterprise products, customization may be necessary, and while customization may yield some services revenue, the prospect of requiring customization may actually cause an impediment in the sales process itself. If the product is configurable, it is more appetizing to the customers, and they can quickly fine tune the software to their needs.

Related term: Implementation

ImplementationCustomizationConfigurationThe related term “Implementation” means the actual work done (configuration, customization or the combination thereof) to satisfy an actual set of business needs. Implementation is a more encompassing term, that can include deployment, configuration and customization to meet the customer’s requirements. For example, when a client buys NetSuite ERP or BizMerlin, they can deploy the software, configure all the aspects of the software, and then possibly write custom code to enhance the functionality even further.

Related term: Extension

Many software packages have extension capabilities that allow you to customize their behavior by writing custom code within the framework. Custom code can be written in the environment provided by the package, and is usually one of interpreted languages, such as Drools, etc. Having the foresight to allow extensions is a sign of maturity of software and allows the original software provider to allow other developers to write “custom apps” or “plugins” within the software’s ecosystem. Read more about how providing an ecosystem helped a new entrant beat out the established market leader here.


In case you thought English didn’t matter since you are only a Java developer..

Just in case you thought English didn’t matter for you, because you are only a Java developer, think again..

// These two Java comments mean entirely different things:

// First determines whether this enrollment application is valid or not.
// First determine whether this enrollment application is valid or not

What’s good for your mobile is bad for your desktop? And vice-versa?

Image courtesy closari@flickrIt is perplexing, to say the least, to observe the simultaneous rise and fall of “apps”. Their rate of disappearance from the desktop is eclipsed only by their rate of appearance on the mobile platforms. Currently, both the iPhone and the Apple “markets” list more than 500,000 apps. My sixth sense tells me more may be on the way. Continue reading

Steve Jobs – RIP

“We just wanted to build the best thing we could build.” — Steve Jobs

This is a part of 3 favorite quotes by Steve Jobs.  This line is the epitome of all successful  product development.   Best products are the ones that we create that we wanted to use.  Whether it is the user interface, the back end, the wires, what have you – it should really be the best, even if no one will ever see it.  This strategy is very different the strategy of General Motors, which tried to save money by building auto parts that were outliving the car itself to lower specifications.  Well, their stock results are a bit different too.

RIP Steve.