Sunday, October 29, 2006

Oracle Open World coverage by Mark Rittman

Mark Rittman’s Blog is always a great read for knowing the day-to-day happenings at Oracle BI space. This time around, he has put together a bunch of posts from the Oracle Open World happening in San Francisco. There are number of posts covering the events specifically on the upcoming releases of Oracle Business Intelligence Enterprise Edition (Siebel Analytic platform), Oracle Business Intelligence Standard Edition (very own Discoverer) and Oracle Database 11g.

Monday, October 09, 2006

Google Code Search

Google in its never-ending streak of launching new services/product released one more offering Google Code Search. Here is the news coverage. I did give a quick try. It seems that the search relies on the comments, which are embedded in the code or the code itself. If you fire a very plain English query like how to read a file in PHP, it does not lead much useful search results. It seems very much key word based rather than heuristics or context based like the general search engines are. Perhaps it could be useful for those who want to look for the usage of particular function or particular class in various code snippets spread in open source code bases or sample codes hosted in various sites. Firing a query for PreparedStatment does give some useful results when you click some of the programs listed in the search results.

So don’t count much on the Google Code search for the solution of any programming problem you have. I think it will take some more time when we have the search engines, which will take a problem definition something like “Write a program in PHP to convert degree Celsius to Fahrenheit” and give you a ready made or close to ready made code. Still a handy utility.

Sunday, October 01, 2006

Working at Oracle India Ptv. Ltd..

This is kind of a follow up to Elitecore and me post which I made couple of weeks back. I am thinking of doing this as a series on sharing the experiences I had with the various organizations I worked with. This is the second one and all these posts are NOT in the chorological order.

Why I joined Oracle India Pvt Ltd?
I joined Oracle India Pvt Ltd in Dec,2003 and worked there till Jan,2005. I was part of internal IT team over there. So after spending close to one year in small startups, this was the first time I started working for a big corporate. And working with big software companies is some thing all of us in software field dream of. There is always this curiosity to know how big this companies are, what is the culture out there, the systems they use, the processes they have, the methodologies they follow for there product developments, how does their sales work, how do they support their products, the benefits they have for their employees, the campus and at last but not the least, the people they have. My reason for joining Oracle India was to gain some insights on how a big corporate works and to be part of their culture, the team, and to groom both my technical and soft skills.

My Experience at Oracle India
First and foremost thing, which I gained at Oracle India, was to develop strong interest in Data Warehouse and BI technologies from Oracle. After a comprehensive boot camp for one month, I was put into Business Intelligence team of Apps IT. Apps IT is the group within Oracle which looks after internal implementations of Oracle tools and Applications which it uses to support its one business functions. BI team was supporting wide range of BI and data warehousing applications, which were used by the global user community.  I was mainly part of Analyzer implementation (both OFA and OSA). Working at Oracle was an enriching experience. There were great bunch of people around you, ranging from the ones with strong technical skills, to the ones who are sage advisors to the ones who are extremely good project managers to the full time party animals.

Learnings at Oracle India

There were strong technical learnings. On job, I learned Oracle Express and Analyzer product families. I developed strong fundamentals of this tools and how to best use these products for a particular business needs. Being part of BI team, I also got to learn other products like Discoverer, Oracle Warehouse Builder and EPB (Enterprise Planning and Budgeting, a next generation product which would replace OFA). I had significant exposure to Oracle database, PL/SQL, SQL and SQL tuning. Best place to learn any Oracle tools and Applications is Oracle itself. And that’s what I realized when I joined Oracle. It’s not just the resources like documents, webinars, product demos etc. to which you have access to, but the best part is the people around you who are always there to help you. Apart from BI tools and Oracle database, I had a significant exposure to Oracle eBusiness suite. Thanks to the boot camp, which covered things like Oracle Forms, Oracle Reports and AOL (foundation technology of Oracle Applications.)

Above to the technical skills there were loads of learnings at soft skill front. Over the period, I gained great amount of confidence both in the written and verbal communication. Honing my interpersonal skills was one more advantage of working with Oracle. Apart from this,

Why I left Oracle India
After saying all the above and ushering lot of praises about Oracle, its very difficult to justify why I left Oracle. And that too, just after 14 months! My work at Oracle involved both supporting the existing application and enhancing them and also rolling out new applications. Though rolling out new applications was 25% of what I was doing, but that was what I enjoyed most. Most of my work involved supporting and enhancing the existing implementations. However, I was looking for an opportunity where I was part of end-to-end implementation of some BI or data warehouse solution from scratch. That’s something I was not seeing in the horizon over there. Also the work at Oracle was not that intense. It was too chill-pill. I was looking for more challenging, more customer facing, more intense profile, a bit more pressure and a bit more ownership. All this culminated into leaving Oracle India and joining Ness Technologies at Singapore. More on my experience at Ness Technologies some time latter.

I am writing this post almost two years after leaving Oracle India. All what I have said here could have been influenced by the time I have spent in Singapore and at Ness Technologies. However I have tried my best to put the thoughts as accurate as what they were at the point of time when I joined Oracle and left it.

Developing Software Product vs Custom solution.. some random thoughts

Of late I have been thinking about this a lot. How is developing a software product different from building a custom solution. And quite often indulge into casual discussions with some of my friends out here in Singapore. I was thinking of putting together a well-structured elaborate post on this topic, but seems that it would take a while for me to sit down and collate all my learnings, discussions and thoughts on this. For now just thought of putting up random thoughts on this topic.

First of all let me put on the table, what I mean by Software product and custom solution. By software product I mean those set of software, which are build to sell off the shelf. These are the software, which are NOT developed for any specific customer, but for general use. Of course this software comes with various features and functionalities out of box and there are some points of extension and customization. The software product is installed or setup or implemented by the customer to address their specific business or personal need. There are tons of ways to classify the software product but the details are outside the scope of this post. But the basic principle of software product or to that matter any product is that it is meant for a particular community and not a specific customer. Needless to give the examples but nevertheless here are few: Microsoft Office, Acrobat Reader, Oracle database 10g etc

The other category is what I call custom solutions or custom software solution to be precise. By this I mean the software build to address a custom need. This solution is targeted for one particular customer or a particular requirement or a specific business processes. The software (or the solution) is not build to sell of-the-shelf. Even maintaining existing enterprise applications and enhancing them falls under custom solutions. A custom solution could be one build from scratch like a Web Based Budgeting and Reporting solution build using Java and HTML technology. Or it could be extending the functionality of standard applications by adding necessary customization.

I do acknowledge that there is no easy way to classify all that is happening in the software world into these two categories.  There are some things, which are in the boundary and don’t really fall straight in to one of this category. We keep hearing things like frameworks or blue prints, which are sold commercially these days. These frameworks are in turn used to develop custom solutions around it. So where do they fall? Similarly there are offerings forms Google like Gmail, or Clendar or to that matter any web service, which is out there in Internet. Should we call it a software product or a custom solution? Lets us keep ourselves away for all these debates.

Getting back to the main idea of the post: how does developing a software product differ from a custom solution.

Developing a software product according to me is:
  • More organized and planned engagement.

  • Lot of planning goes before embarking the actual development.

  • There is lot study done in terms of gathering the requirement.

  • Things like Focus group and user community are foundation for this product

  • Involves Studying features and functionalities of other competitive products in market.

  • Most of the time, a prototype or a proof of concept precedes the actual development

  • There is lot of flexibility while developing the software product it terms of choosing the technology, etc.

  • The teams are relatively bigger. Flexibility for the a developer to be focused on particular module or set of module

  • The quality process is more elaborate. Lot of testing both internal and external is done

  • API and maintaining reusable components libraries is critical

  • Wide adoption of software best practices and better design principles

  • Bug fixing and support is more comprehensive

  • Licensing and software delivery are important consideration

  • Software packaging and installation mechanism are important component

  • Change control is ubiquitous

  • System design documents are user manuals are of good quality. Also the documents are constantly maintained with the new release of software product.

On the other side developing a custom solution is:
  • Planning process is not very elaborate

  • Studying of requirement is not very comprehensive. At times requirement gathering processes continues long after the actual software development has started.

  • The scope of the solution at times is not well defined

  • Prototypes or proof of concepts is not that frequent.

  • In terms of choosing the technology or tools the decision has already been taken by the customer or the during the presales exercise

  • The teams are relatively smaller with one person playing multiple roles at times.

  • API and maintaining reusable components is not that critical if the custom solution is relatively small.

  • In larger solutions there is proper bug fixing setup. However for the smaller solution the bug fixing and patching is very adhoc

  • Licensing is not of that grave importance. However there is lot to deal with in terms of SLA (Service level Agreement) while delivering a custom solution.

  • Software packaging and installation mechanism are not of significant unless the solution is build for large user base, which needs to install the software on their PC.

  • Change control in place for most medium and large-scale custom solution.

  • Design documents are part of any custom solution project however at times these documents are not maintained with the new releases or the changes in the existing release.

All said, the above does not always stand true. With the smaller software product developed with Agile methodologies do forego some of the items mentioned in the software product development. Similarly with the large custom solution developed under a strict quality process does follow lot of the items in the software product development