Thursday, July 21, 2011

Cricket Trivia Nation

India should be called a "Cricket Trivia Nation" for it's passion for it. Tendulkar scoring century is more important than India winning the test as co-incidence can be attached a cause and it has tremendous "newsworthiness". I think , this has become the new superstition.

Friday, July 15, 2011

Cognitive Closure

I was reading an article written by Daniel C Dennet ( Philosopher ) on Language and Intelligence. I encountered a new term "Cognitive Closure" from the article. The term is used by Psychologist and Philosophers. ( http://en.wikipedia.org/wiki/Cognitive_closure )

I was more interested in the usage of Psychologist. I Find some application for it in the area of Computer Programming. I have seen propensity to specialize among Computer Programmers these days. Even though , It enhances your career path , I have seen a cognitive gap between specialist and semi-generalists (like me !).

When you become a generalist ( A Generalist is a Generalist to a Generalist and Specialist to Specialist ! - From the Book MBA IQ ! ) , most things are ambiguous , messy and confusing. To Avoid these stuff , people yearn for Cognitive Closure. I think , to have breadth , one needs to be aware of this and try to expand the barriers of closedness.

Awareness of Turing machine , Lambda Calculus , Predicate Calculus as a Programming model ( as in Prolog/Datalog ) , NP hard/complete problems , state explosion , Randomized algorithms will make you some what pessimistic about Computer Programming ( as practiced ). I have seen people who  are blind to these stuff , are having successful career in Software Engineering ( In  a services company ! ).

Cognitive Closure do has it's merit as well. I would like to expand the barrier of closure than stick to it.

Thursday, July 14, 2011

Test Automation and Version Sensitivity

Most Test Automation suites rely on specific behavioral ( mostly undocumented ) aspects of the System under test , Class under test , Method under test or Whatever under test. When there is a new version of the software  , there is a chance that this can break. If you are testing in a multiple OS scenario , this has always been the case.

Always review Test Automation suites in a whitebox manner.

An Interesting ASP.net bug

I happen to notice a post in my company's mailing list regarding an error which appears from a production server. The stuff correctly works on a development server. The Error gets thrown is some kind of memory error. The person who posted it happens to sit besides me .

In .NET , I have noticed that people program in less defensive manner. As a case in the point ,

Chart c = GetServiceProvider().AddChart(10,10,ChartType.PI ).SetColor(Color.Blue).Chart;

If any of the function call returns null , It can lead to an error. I asked the developer to unwrap the statement into multiple lines and do null checking. Then , we found that COM Interop object is not initialized properly on the Development Server.  The Version of COM dlls were different and it has a slightly different Object model  on the server. By re-Installing the correct version of the software , bug vanished.

From the error thrown , we would not have ever imagined this.

Service vs Product companies - a new meme I encountered !

I always had the notion that Working with a Product development company is better than a Service company. I also believed that only smart and hardworking people will be able to survive in a product development company for long.

Yesterday , one person made a remark that , Product companies are boring and it makes you lazy. I was stunned for a moment. After some thought , I understood the wisdom there.

In Product companies , there is some kind of finiteness or boundary for the number of variables you have to process. In Service companies , It is always a fire fighting mode. This keeps one agile. 

API vs SPI

API stands for Application Programming Interface and SPI for Service Provider Interface. AFAIK, API deals with the logical part (interface ) of an Implementation and SPI deals with the physical (implementation ) part of the Interface.

By Decoupling API and SPI , we get flexibility in choosing the service provider. A system provided run time will be there to mediate between API calls and SPI implementation ( ODBC is a case in the point ).

Some times , SPI will be implemented in C/C++ , even If API is java based or C# based. Most of the Java APIs have got a native counter implementation.

By having a SPI , the system designers can choose to implement a Fine grained API , Coarse Grained API or both.

Wednesday, July 13, 2011

Sales people's dilema

In most service companies , Sales people are regarded as enemies number one by the Engineering group. The primary complaint is unrealistic promises these people make automatically leads to under delivery. Recently , I heard a sales guy's perspective and I understood that their job is really tough. They are specialists in closing the deal and to make a judgement on value of the engagement , they require access to good requirement estimators (techies !) which are hard to comeby and mostly not accessible.

So , the quote is determined by the market pressure and, rest is left to Delivery and Relationship management.

Monday, July 11, 2011

What is a software tool ?

According to me , "Software tool is a piece of Software which embodies the know how of a person to solve an issue,instructions to speed up some process ,or has the potential to eliminate  human factor during the execution."

Some software tool contains some deep concepts which are worthy of study to get new design idioms. Recently I came across a Declarative Test Scenario authoring tool as part of my work. It captures lot of good design ideas and has provided set of concrete tools for non-programmers to write the test content.

It is some kind of a Domain Specific Language. This Declarative language uses XML syntax to specify the Intent of the content writer. The Declarative syntax , set of pre-defined tools from the tool palette , some constructs for looping and conditional execution makes this a powerful tool. The authoring can be done using Drag/Drop from tool palette and  customizing the property box. The tool also contains novel features like inter program variable communication through standard console , Event generation and Sinking . The Events can be generated by the tool which executes or the test execution engine.

In a  nutshell, this tool was a great learning experience. Next time , you encounter a tool , Just step back and observe. You will emerge with new ideas. Better , write a toy version of the tool. ( I did it ! )

Language skills vs Communication Skills

I have seen too much emphasis given on the latter in corporate circles.

   "Ceteris paribus , Communication Skills are key to success."  ( No sane person will criticize this !)

But , people forget the "Ceteris Paribus" part. As far as I am concerned , Linguistic skills are not equal for every one. Language is not only a communication medium , It is a representational and encoding device as well. By emphasizing communicative aspect of the language , you tend to forget other vital functions.

People with superior linguistic skills , with Communication skills training, tend to be more successful. But, Linguistic skills are mostly found among lawyers and politicians !.

"Meme Capture"- An essential skill for a engineer

When you listen to people converse , encounter with new memes is an automatic consequence of that. The problem is that , most of these memes never survive beyond the conversation. Every Individual should try to capture the new meme which he encounters and elaborate it by introspection , contemplation and discussion with others. In this way , you propagate the meme and at the same time , reinforce your idea.

Who knows , a meme can turn your life around !.

Sunday, July 10, 2011

Custom Software Development - End is Near ?

I happen to attend an excellent presentation on SharePoint yesterday at K-MUG monthly meet at Kochi. After the presentation , I happen to ask the presenter how he drifted into sharepoint development ?.

The answer from him was that a manager whom he was reporting once remarked that World is going towards pre-packaged software which can be customized . This prompted him to take a serious look at tools like SharePoint. 

I think , there is wisdom in this particular observation and no wonder M$ was on  a buying spree some time back in the lower end ERP  market segment . Today , M$ provides Dynamix suite of products.

Thursday, July 07, 2011

A startling observation

Yesterday , I met a friend of mine over the dinner. We were having a casual conversation about an incident which I got into in one my previous companies. It is about the ownership of a software product which is "back sourced" from a out source solution provider.

The contention from my side was , I (my team ) will take the ownership of the software product , If it is given in the writing that I should take responsibility from the day and some amount of Knowledge Transfer regarding the deployment is once again done.The stakeholders were implying that I happen to own the project from the day our company decided to maintain it in-house .  ( I was a transitionary owner of the project as the team lead who should take ownership was abroad. That was nine months ago. The guy had "connections" in the company and he (his team ) never bothered to enhance or maintain the software. It was running in a production server for nine months unattended !!! ). This "pressure" continued for close to six months . Due to some political reasons , I was not given formal ownership. They want me to take implicit ownership.

My friend made a statement , "I think , when people in Wipro,Infosys,TCS  and other huge companies talk about "work pressure", I am sure that It is political pressure as part of the work. Not the complexity of problems they solve ".

Abstract Space computing vs Concrete Space Computing

I have seen too much emphasis is being placed on number of years of experience in the Software Industry. Statistically speaking , It helps us to set expectations about a professional. The chronological years do miss a vital fact. What kind of stuff they were doing all these years ? .

If the project is in a new domain or with a new platform , people having certain traits seems to be more valuable.

I call these people as "ABSTRACT SPACE PROGRAMMERS". Those are people who have worked with multiple functional domains where usage of Mathematics , Formal methods , Statistical techniques , Randomized Algorithms, Information representation are vital tools. Such people have lot of portable skills which can be leveraged for  new projects. These kind of programmers try to study computer science seriously and try to relate whatever they have implemented  to fundamental principles.

Unfortunately , most programmers fall into "CONCRETE SPACE PROGRAMMING". These people are skillful in multiple programming languages , some platforms , tools and have implemented software based on their "native intelligence" (without serious study of principles ) and some element of luck. They will move from project to project and have a hodgepodge of   skills which make them good "task matters". And to complicate the matter , If the person in this camp knows how to speak in public or meetings , the guy in question will think that he is a master ! ( Of course , he will be  a master of all he has surveyed so far ). Such guys will be too much focused on implementation or they will be overcautious. These people can be found in Software Services Companies , amongst System Programmers , Business Application developers.

Programming Against a "Model" ( A mental model )

Some Ad hoc code written to learn about a tool or language often becomes the base for a new software project. Then , the projects drifts into a state where implementation concerns dominate the whole process. The typical mistakes are choosing the programming language , middlewares , libraries etc , even before the people have understood the problem they are planning to solve.

During the planning stage of any project , people who are cautious should be kept out of the room. Try to form a mental model (which is computationally feasible ! ) of the solution after understanding the problem. See the existing artifacts , what is out there already from a design think point of view to improve the odds for success.

Explain the problem and review the solution model with non-direct stakeholders. This will help us to calibrate the model and see the alternatives. Talk about it to any one who cares to listen. With a reasonably peer reviewed model , try to select the tools and revisit the model once again. This will help to reduce the dependency on the tool.

This is not a prescription !!.

Wednesday, July 06, 2011

Hindi version of "enthendu ninnanu maratu" song

I was reading comments about a youtube video which featured "Enthendu ninnanu maratu" song . I found a comment comparing Govinda and Dr. Raj Kumar. I found the hindi equivalent of the song


Youtube url :- http://www.youtube.com/watch?v=csm-l1JuRGM&feature=related

Youtube url for Kannada song :- http://www.youtube.com/watch?v=TwKVyj9hf7k

Finally , I understood the film

I have been hearing a melodious Kannada song for a long time and I could infer singers ( SP and Janaki  - I was wrong !) .  I had a hunch that , It will either be a Raj Kumar or Vishnu Vardhan movie. Finally , I did search youtube and found the song.

Film : Eradu Kanasu
Year : 1974 ( I was two years then ! )
Singers :- PB Srinivas and Vani Jayaram
Youtube url :  http://www.youtube.com/watch?v=TwKVyj9hf7k






Most can do a job , Only "lucky" gets it.

Last week  , In a discussion , people argued about  "Business People vs Technical People". As usual , Business people began to argue about difficulties they encounter and the "service" they render to their organization.They "projected" themselves and did not forget to accuse techies as detail oriented and lacks abstraction !

I was observing a curious phenomena there. What each camp is saying can be summarized in a single line.

Business People :- "I am too lazy to play with Software and I think , I am fit for strategic roles only ".

Technical People :- "I feel world is messy and I think , to do some real work is satisfying".

The discussion drifted for a while , and I got to say some thing. I am skewed towards techie people.

I told them the following , "I can do technical stuff really well. If situation demands , I can chip in as a business person".

Then a manager in a famous company asked me , "Why is it that you are not getting management position?". It was bit direct and attack was nearly personal.

Here is how , I replied
   "I can do Technical stuff really better than you. I believe , I can do management as well...... Most people can study and pass  IIT syllabus. Only lucky few gets there.  Luck in your case was , you were a lousy software engineer"




Tuesday, July 05, 2011

Certification - I have started seeing some Value In It.


As most professionals reach mid life career crisis , they resort to a new hobby. They collect certifications like ITIL,PMP,TOGAF,CISA etc. to name a few.

Most people use it to get their way into higher position.

These certifications are catalog of best practices in a domain. They cannot be understood fully , unless you have become a practitioner in all aspects of a domain. In the era of specialization , It hard for a single professional to master the nuances of best practices in a objective manner.

People go for certification to motivate themselves to study these "dogmas" and examination fee acts as a deterrent from choking away from the pursuit.

At the end of the day , the Individual will emerge home with some Ideas for sure. For me , that is the key take away.

To learn procedural skills , one needs to be lucky or go for certification. ( This is akin to teaching management at a B-school.)

Monday, July 04, 2011

Ignorance makes you objective - sounds paradoxical ?

I have noticed a curious pattern in  services Industry where ignorance is a primary quality required to be objective in a given situation.

Take a look at a Project manager in a Software Project. If he is having technical background and that stuff (project) happens to be in his area of expertize , he will be  a poor judge for the situation. A project manager who uses his technical know-how to rescue a project , is acting as a technical lead.

A project manager should only go by the health parameters identifited by the organization. If there is a violation of certain metrics , it should be escalated.

Only a person who does not know about the underlying domain will be able to perform well in this situation. So , Ignorance is a pre-requisite to become a successful project manager.

Any position above the Project manager , It is even more so !!