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!

No comments:

Post a Comment