Intelligent design

From APIDesign

Jump to: navigation, search

Are you fan of intelligent design or evolution? Most people around me would select evolution as a means of populating our world (althrough Geertjan in a recent screencast refused to answer). However when you ask the same people whether they use evolution or intelligent design methods to manage their companies, their answers change. They act as intelligent designers! Is not that another example of a doublethink?

Evolution and JDeveloper

When I got the task to bring JDeveloper and NetBeans closer to each other, I knew we have to start from the basics, from creating a common ground. Thus we invested a lot of time to share the module system underneath the two products. The short term benefit was the speedup of JDeveloper launch time. However the long term visition was more important for me: such common ground would give us a chance to share. I was not 100% sure what parts should be shared, but I knew that allowing sharing is important.

It was not enough to share components in runtime (e.g. something we did in recently released version of JDeveloper). We needed to modify the build systems of NetBeans and JDeveloper to allow compilation against the OSGi bundles and modules comming from the other system. This took us a while, but we have such system now - everyone in the two teams can easily start to use libraries provided by the other system. We are ready for evolution!

And guess what? In the recent few weeks I've been asked by various members from the teams whether they could reuse some API coming from the other product. Some of these requests were not surprising (e.g. I knew that sharing these sub-systems could be beneficial), however some where completely new! Only by creating an environment suitable for evolution we could stimulate brainstorming in the minds of our collegues. Only by not having a plan we could come up with so great ideas!

API Architects

Software architects are usually responsible for the final delivery. No wonder they have to work like my friends and manage their teams and their tasks like intelligent designers. API architects should however be different. Their goal is not to create the final product, rather create an API that will inspire others to do amazing things.

As a consequence the API architects should worship evolution. Not only/necessarily when asked about the genesis of the world, but (more importantly) during their regular workdays!


Personal tools