Archive for February, 2009

LinkedIn Pearls

Friday, February 27th, 2009

Found today in one of the LinkedIn discussions.  The fellow certainly has a sense of humor:

There are many metrics that can be developed to show an ESB approach manages cost and time to market for business services and processes. As far as operational peerformance, this is more of a problem as it approaches a pure OOD that optimises distributability and scalability over speed of execution. To address this, a continuum rather than a one-size-fits-all pure wsdl environment is a more customisable approach. This best fit approach usually involves a component based design for aggregating functionally related behaviour so that the calling sequence is rpc within the functional container. Use of wsdl to describe the collaborations between functions across components gives a very flexible architecture for defining business function built upon the underlying SOA / CBD and ESB models for interconnectivity.

A common scenario also uses namespaces to separate and enforce a business functional domain separation to ensure LOB ownership of function.

Delivery process: removing disconnect

Wednesday, February 18th, 2009

After three and a half years with Visiphor I started thinking “What are my accomplishments?  What are the lessons I learned?”  One of the things I am proud of is a significant improvement in the solution delivery process.

I am intentionally saying “solutions delivery process” rather than “software development process”, because many years ago I have realized that developement is important, essential, but most certainly not the biggest part of the success.   Even in a product development company the development [coding] takes probably not more than 20% of the entire effort.

We generally appreciate proper process.  If you ask anyone being in the business for a while whether they want a proper process for their business or not, nobody would admit that they prefer a cowboy approach.  In reality, many of the companies traditionally run their business using that “cowboy process”.

There are many reasons to use a proper process and many books written on this topic.  I want to mention only one of the reasons, which I found extremely important: traceability.  Imagine a common scenario, when a support department gets a phone call form a customer reporting a bug.  The support department records the bug fixing request in their notes and pass the request to the developers.  The developers fix the bug, update the code, which may be even tested :), and send the fix to the deployment guys… After six months and thirty more bug fixes another developer looks in the code, which may even have a comment “there was a bug and now it’s fixed” and asks a very valid question: “Why did we do it?”  In a proper process there is no disconnect between the support group, developers, testers, and deployment.  The steps are documented and - which is very important - recorded in a traceable way.  In Microsoft world it could be TFS, for example.

Another typical example of the disconnect we can often (too often) see between the sales force and the delivery services team.  I think that everyone (with no exception, if you have been for a few years in this industry) has seen how sales people have sold something that was not realistic to deliver.  Why did it happen? Or why was the work/product underpriced? You would never know if there is no trace. 

So, I managed to improve traceability and removed the disconnect between the sales people and the delivery team as well.  First, I managed to convince the company that we should follow a certain process (for example, an SOW should be approved by the tech team senior manager before being signed).  That was easy, everyone knows the theory.  However, the next step was to implement this process in a workflow using office automation tools.  From that moment, every time when an SOW was created, I was receiving a message.  After reviewing the SOW by a PM and an architect/lead dev, I approved/disapproved it.   Therefore, the CFO was always getting the SOW with my notes and recommendations.

As an example, once our estimated price was 50% more than the price suggested by sales.

I certainly understand the business values that may have an impact on the price othen than technical consideration.  And yes, sometimes we were taking work that did not have any margin. 

Well, there was a lot of other factors that helped, the entire transition to the new process took more than a year, and we are still very far from perfection. But I achieved much better traceability, removed some disconnect between different forces, and improved accountability.  And that is what counts.

Use for Machine Translation

Wednesday, February 11th, 2009

Many years ago, in 80s, I spent about 7 years working in the area of Artificial Inteligence.  In particular, I was developing automated dictionaries and machine translation programs.  During those years the entire area of AI went through a great disappointment.

First of all, it became clear that computers cannot replace a person, especially for thanslating non-scientific texts (or any texts with elaborated dictionaries).  In fact, to many scientists it became clear in 70s; and literally was a shock to some of them.  However, a lot of things changed in 80s.  I think that one of the significant technology achievements that has an impact to the view of AI was the development and production of personal computers.  We started considering computers a tool, a help rather than an expensive piece of scientific equipment.  And that indirectly resulted in the Machine Translation paradigm shift: AI tools were considered a help rather than a replacement for people.  This paradigm change together with an increased popularity of computers caused an explosion in tools development, such as translators and dictionaries.

[I was thinking about it yesterday listening to the presentaton of a police investigation tool.  The presenter clearly suggested that the purpose of the tool was not solving the crime but helping investigators to solve the crime.]

Second piece of disappointment in AI was related to the hardware capabilities.  With first personal computers we even did not think of storing entire dictionaries on PCs to process words.  I remember spending months developing a sophisticated algorithm to figure out lexical classes of words using quasi-endings in Russian and English.  Why would I use this algorithm now if I could store the entire morphological dictionary on my PC and process a given text in a split of second?

Was this effort wasted? I would like to think that it was not, that developing even dead-end approaches in AI done by a miriad of apprentices resulted in the development of new areas of AI, linguistics, and computer science by masters. 

Actually, I am thinking of comparative linguistics.  I was reading about some work that has been done in the last 10-15 years, and realized that Starostin and others literally created a new science…