Wednesday, May 22, 2013

Why is it important to follow "open standards"

An open standard is a standard that is publicly available and has various rights to use associated with it, and may also have various properties of how it was designed (e.g. open process). There is no single definition and interpretations vary with usage. --- Wikipedia

Why do I promote "open standards" in my team?

1. To avoid reinventing the wheel.

If a public solution works well enough that many people have already adopted to it, there's no reason to rebuild it.  For example, major programming languages have already implemented merge sort, or quick sort.  I would not want my developers to rewrite those sort algorithms other than during interviews.

2.  Free test coverages.
Open standards are usually used by many individuals and organization.  If I write a library function that closes file handles "silently", I have to write a lot of unit tests.  The test team will have to write a lot of functional tests.  We all have to run tests in multiple environments (linux, mac, windows, etc).  We also need to create many stress testcases to cover failures.  Apache common IO util offers this function, which has been tested and used by many developers.  I don't need to test it as much.

3. Open standards usually work well with each other.
Unlike "proprietary standard", "open standard" is meant to be shared.  Therefore, many open standards work very similarly.  Recently, one of my devs ported a traditional web services application over to a smart compute grid infrastructure.  He made less than 500 lines of code change , only because both of the original web services container and the compute grid share the same "open standard".

4. Open standards expand one's horizon.
A lot of developers who have been working with certain proprietary technologies are fairly narrow-minded.  I have seen enough .Net developers who believe that every data storage related problem should be solved by SQLServer.  And many C#-only developers do not know IoC (inverse of control).  SQL Server is a solid relational DB, and C# is a useful language.  However, there are plenty of alternative open technologies are equally good, or even better in certain cases.

5. Knowing open standards make you more marketable.
For all the reasons above, and from my previous post, everyone should learn open standards to make them more marketable.

No comments: