Friday, June 22, 2012

The power of Force.com



When we see the cloud scene today, we have big companies like EMC, Joyent, Saavis, Verizon/Terremark, Microsoft, Salesforce, VMWare, BlueLock, Citrix, IBM, Amazon and now Oracle too. Many of these are enterprise cloud providers and Software as a service (SaaS) providers. Each of them has a unique domain of specialized services that they offer. But I think bringing the cloud right in the hands of each developer is the best done by Salesforce.  Force.com’s unique Platform as a Service (PaaS) model is one of a kind and gives the power to the developer to bring ideas into reality very quickly.

It is unique in a way also that it has integrations with different technologies too. Salesforce can be integrated with SAP via IBM castIron. It supports Heroku which can be configured with Amazon cloud. It just means that Salesforce cloud is flexible. Salesforce is also a pioneer putting the entire CRM on the cloud. Mobile and social are one of the most important parts of any enterprise today. Force.com supports both mobile and Social. It can have your applications ported to handheld devices very easily. It enables Social via Chatter.

In terms of languages too, it is very flexible. Just a few days ago I saw how Salesforce uses Hadoop Webinar. They used a combination of Hadoop with Java mapReduce, Pig, Force.com and machine learning algorithms to measure product metrics and community based recommendations in chatter.  It merges with Heroku which is their own cloud based polyglot platform which supports another set of different languages that I mentioned in my earlier blog. Force.com discussion boards have special sections for Perl, PHP, Python and Ruby Development. 

All this means one thing; there are no limits to what you can do with Force.com.

Wednesday, June 20, 2012

Fail first, fail fast



Whenever you develop it is very important to fail first and fail fast. Fail first gives you and ability to learn more about what your project and risks involved. Fail fast ensures that you have ample of time in developing the application via other alternatives.

I started with an e-book on force.com fundamentals. I thought that the book will give me an insight on how to use the Platform for development. I was surprised that it taught me how to use the platform along with developing my first app on the cloud. It was amazing. 

After all the things that Force.com provides, the best part about it is drastically reduces the development time of your applications. Time is the most important factor for business today. There are so many ideas that never really see the light of the day because of development time. Imagine that you have the power to implement your ideas real time! I can see that for many applications which have critical time frames for market release for the ones which depend on the current market scenarios, Force.com can be a boon.

Force.com has defined every object and connections between objects in a very modular way which can fit any business need. Different relationships between objects can be designed if you have the right knowledge about your application architecture. There are various workflow and approval options that can be used to design a custom workflow for your application. Data security settings are amazing. Access rights and specifications have the granularity till the field or record level. This enables modular privacy settings for any hierarchy of users. Adding users and roles is also very simple. Creation and generation of reports are very simple and easy to configure. User Interface provided by default is very simple to use. However, you can add custom user interfaces via Visual Force. To sum it all up, it is as modular as possible accommodating anything you can think of.

In addition to all this, Force.com development adheres to FDA CFR 11 compliance. This compliance includes secure SSL encryption, daily backups, audit trails just to name a few. This makes Force.com the best and most secure in the business of cloud computing.

I guess Force.com can do anything. So, I my fail first, fail fast strategy enabled me to make my first application on the cloud, a sample recruiting application for the HR team of any organization.

Step one - Understand the technology


Force.com has multitenant architecture. The old architectures would be allocation of a set of resources for each tenant/organization. Here, they just have one huge set of resources which are used by all the organizations who subscribe that service. These resources can be maintained by set of experienced people; hence, you do not have to worry about the maintenance at all. This significantly reduces the cost for each organization too. Secondly, service improvements can enhance all the users at the same time.

Multitenancy provides like a base architecture for all applications. Since each organization has a different customized use of the architecture, Force.com uses metadata driven architecture to allow separation between them. Meta data driven approach allows event driven custom object generation customizing the space for each organization.

Apart from these, there is redundancy introduced at each level of the database back-end which enables faster query response. There is a separate table for mapping a set of the primary key values too, which can be used for faster query processing if the original mechanism fails.For more go to multitenant architecture.

Platform as a service has enormous advantages to the developer. It abstracts the concept of the server and it enables you to work without limits. Developer need not worry about scalability, system backups, operating system, patches and security, high availability and load balancing.     

Before we work on any technology, a little background work is never harmful. It helps you to think more of like the system in the backend and how it functions to enable your application. These insights prove helpful to us when we create our own application.

I developed a sample recruiting application which can be used by the HR department of any firm for recruiting purposes. This application was going to decide whether I will be able to use this technology for my application.

Tuesday, June 19, 2012

My Selection


Well, my previous blog was about selection of the right technology.  My application needs to be real time. It needs to be online. I do not want dependency on legacy components. I want my application to never to be outdated and usable for a long time. I also need the application to adhere to one of the best standards of the industry.
Adding to that, since I am a small developer I would not like myself worrying about the server maintenance, database maintenance, scalability and application server maintenance. I would also like my application to be agile and not stagnant after development. It should be easy to develop since I have a time frame for each deliverable. Since we live in the age of mobile and social, I want it to be mobile and social too.

Cloud is the answer. Well, its agile, it’s scalable and it has almost everything I need. There are various cloud based solutions available. I would not say anything about each of them. My selection was Salesforce product Force.com. Force.com is platform as a service (PaaS). It is a higher level of abstraction in the form of a platform which provides OS and application services which are tailor made for the developer. It has everything that I require for the application. Force.com website says “Proven.Agile.Social.Mobile” and that’s exactly what it is. It has seamless integration with almost all technologies using the polyglot Heroku. Heroku supports Ruby, Java, Python, Clojure, Scala and Node.js all the latest technologies which are used today. Hence, if you have a part of your application developed in some other language, it can be easily integrated with Force.com.
Force.com has a great community support for developers. It has a trial version for 30 days to try the platform. It has developer login to develop, test and try your code. There are a lot of workbooks available online which help you to get started too. Whenever, you go for such a selection make sure that you first try and develop a small application to know the capability of the platform. This will help you to make a more educated judgment about the technology.

Thursday, June 14, 2012

Big Decisions..Big Impact


Deciding the technology:
Technological space changes rapidly. People who cannot keep up with the changing technology become stagnant. When you are developing an application it is very important that which technology you will choose.
Salesforce CEO Mark Benioff and Google’s Eric Schmidt had a vision of a networked super computer 20 years ago, they said in the Dreamforce 2011 summit. That time the world was not ready for it. Today it’s called Cloud. An important thing to learn here is being ahead of technology is also not an option when you are working at an organization which expects a solution for a problem from you. That does not imply that you should not think of new ideas, but having a practical vision is also important. On the other hand, when you are expected to write an application which solves some problem in todays’ world on the web, you cannot use something like Fortran which will restrict your freedom of development and will have security and other various issues. Go with the flow. So here is a way to decide the technology for your application:

1: Research
A fair amount of time should be invested in researching about the problem at hand. Nature of the problem, deployment location, required tools, volume/size of the application, scalability and future enhancements. It is important to see what your organization uses. Sometimes this will make you come down to maybe one or two options.

2: Cost
Another very important factor would be money. Application development, design and deployment all will come at a cost. Always remember that for solving a small problem, spending huge money is not practical.

3: List all options
List all the possible options and combination of options you have. Like, if you have a standalone application, your business logic can be in C++, Java, Python, .Net and many more. If you have specific multithreading needs you can go for C++, Java, Clojure to list a few. Frontend development can be done using HTML, Java Swings, VB.Net, etc. For backend needs, language is uniform; SQL but we can have servers from Oracle, Microsoft and IBM. We also have Memcache, Couchbase, MongoDB and many more providing the latest database technology. For Web scripting one can use Node.JS, Ext JS, PERL, PHP etc.  Listing options will help in making combinations of different technologies and weed out non-complaint ones. It will also help you have a backup in case one of your selected combinations stops working.

4: Learning curve
Every new technology has a learning curve associated with it. It would be a wise decision to go for something which you know because it will drastically reduce the learning curve. Factor of time has to be kept in mind while deciding a technology since steep learning curves may lead to projects going off track. If some technology has a learning curve which is not steep and suits your needs than a little extra effort will help you learn a new technology apart from just doing the project.

After doing these steps you can figure out almost everything you need to know about your application before you start and will also be in a position to decide on the technology.

The reason why I say Big decision..Big impact is because deciding a technology is a Big decision and it is going to determine the entire development structure of your project.You are going to spend your time on for a few months on this project. Time is a big investment after all!

Tuesday, June 12, 2012

Simple yet important


There are a lot of things that we do every day. It is important to know that big organizations are also like us individuals, where different departments function collectively to do something productive and innovative. A few simple but important points when you get into an organization:

Working with teams is very important.
Any project is not a single person endeavor.  It’s a team effort. If you cannot work in a team then
You will be the least productive person in the team.

Getting it into your system is more important than you getting in the system!
Get around the place. Know more about its products, the way it works and try to relate that with yourself. This will assimilate your work culture with the organization work culture, eventually making you a part of the organization.

Communication is the key.
Talk to team members. Communicate effectively so that when you start working you can talk to them more easily on projects.

Know your place.
Know your place in the team. Understand your responsibilities clearly and communicate them to peers so that you can check whether you are in the right direction.

Know your location.
It is important to know your location or cubicle within your workplace. Different places in your department or your area which include conference rooms, restrooms and cafeteria. They will be very important once you start.