'. '

Domain Expert

From APIDesign

(Difference between revisions)
Jump to: navigation, search
(6 intermediate revisions not shown.)
Line 1: Line 1:
-
Once one has [[wikipedia:Domain knowledge|domain knowledge]] of some subsystem, it is easy to become a [[Domain Expert]]. Then it may seem easy to design some [[API]]s for the domain. However without understanding the [[API]] [[Paradoxes]] the quality of such [[API]] may not be high. It likely going to cover the domain field, but the [[API]] usability or readiness for [[evolution]] will very likely suffer (unless such [[Domain Expert]] reads [[TheAPIBook]] first).
+
[[Domain Expert]] is a person who has [[wikipedia:Domain knowledge|knowledge]] of a particular system. With such knowledge it may seem easy to design [[API]]s for the domain. However without understanding the [[API]] [[Paradoxes]] the quality of such [[API]] may not be high. It is likely going to cover the domain field, but the [[API]] usability or readiness for [[evolution]] will very likely suffer (unless such [[Domain Expert]] reads [[TheAPIBook]] first).
However can it work backwards? E.g. can one be ''just'' an [[API]] expert and then design [[good]] enough [[API]] without appropriate [[wikipedia:Domain knowledge|domain knowledge]]?
However can it work backwards? E.g. can one be ''just'' an [[API]] expert and then design [[good]] enough [[API]] without appropriate [[wikipedia:Domain knowledge|domain knowledge]]?
-
[[I]] am now participating in an experiment that will check that. [[Oracle]]Labs guys asked me to help them design [[Truffle]] interoperability [[API]]s. I do understand bit about [[Truffle]], but certainly [[I]] am not a [[Domain Expert]], yet I am supposed to design something as complicated as [[API]] to allow mixing of [[languages]]: imagine part of program written in [[Ruby]], part in [[JavaScript]], part in [[Java]] with objects floating between these languages without any borders!
+
[[I]] am now participating in an experiment that will check that. [[Oracle]]Labs guys asked me to help them design [[Truffle]] interoperability [[API]]s. I do understand bit about [[Truffle]], but certainly [[I]] am not a [[Domain Expert]], yet I am supposed to design something as complicated as [[API]] to allow mixing of [[language]]s: imagine part of program written in [[Ruby]], part in [[JavaScript]], part in [[Java]] with objects floating between these languages without any borders!
-
This is a new situation for me: In case of [[NetBeans]] or in case of [[netbeans:Html4Java|HTML/Java APIs]] [[API]]s, I was also the architect of the system. [[I]] knew it by heart. Now I barely understand how [[Truffle]] works and what makes it the fastest execution system for dynamic languages. My biggest fear is that I will design something that will be inherently slow.
+
This is a new situation for me: In case of [[NetBeans]] or in case of [[netbeans:Html4Java|HTML/Java APIs]], I was also the architect of the system. [[I]] knew it by heart. Now I barely understand how [[Truffle]] works and what makes it the fastest execution system for dynamic languages. My biggest fear is that I will design something that will be inherently slow.
-
But on the other hand, if [[I]] can design easy to use [[API]]s for [[Truffle]], then I can create a perfect [[API]] facade around everything! Soon we'll have a chance to see whether one can be good [[API]] designer without being real [[Domain Expert]].
+
On the other hand, [[I]] am not yet ''damaged'' with the expert knowledge. I can still see the system with new comer eyes - just like you, users of [[Truffle]] will. As such [[I]] can perform a ''usability study'' on me, at least initially.
 +
 
 +
If [[I]] can design easy to use [[API]]s for [[Truffle]], then I can create a perfect [[API]] facade around everything! Soon we'll have a chance to see whether one can be good [[API]] designer without being real [[Domain Expert]]. Soon we'll find out if [[API]] Design can be offered as a service!
 +
 
 +
Update from summer 2017: After [[TwoYearsWithTruffle]] I'd say there is a lot of things one can do to [[design API as a service]] without being a [[Domain Expert]].

Revision as of 14:00, 1 August 2017

Domain Expert is a person who has knowledge of a particular system. With such knowledge it may seem easy to design APIs for the domain. However without understanding the API Paradoxes the quality of such API may not be high. It is likely going to cover the domain field, but the API usability or readiness for evolution will very likely suffer (unless such Domain Expert reads TheAPIBook first).

However can it work backwards? E.g. can one be just an API expert and then design good enough API without appropriate domain knowledge?

I am now participating in an experiment that will check that. OracleLabs guys asked me to help them design Truffle interoperability APIs. I do understand bit about Truffle, but certainly I am not a Domain Expert, yet I am supposed to design something as complicated as API to allow mixing of languages: imagine part of program written in Ruby, part in JavaScript, part in Java with objects floating between these languages without any borders!

This is a new situation for me: In case of NetBeans or in case of HTML/Java APIs, I was also the architect of the system. I knew it by heart. Now I barely understand how Truffle works and what makes it the fastest execution system for dynamic languages. My biggest fear is that I will design something that will be inherently slow.

On the other hand, I am not yet damaged with the expert knowledge. I can still see the system with new comer eyes - just like you, users of Truffle will. As such I can perform a usability study on me, at least initially.

If I can design easy to use APIs for Truffle, then I can create a perfect API facade around everything! Soon we'll have a chance to see whether one can be good API designer without being real Domain Expert. Soon we'll find out if API Design can be offered as a service!

Update from summer 2017: After TwoYearsWithTruffle I'd say there is a lot of things one can do to design API as a service without being a Domain Expert.

Personal tools
buy