Sunday, August 9, 2015

What to choose?. Java, Javscript, Python, Scala ... - Feeling confused?

When you start a new project, the important question  pops in your mind is choosing the technology stack.

This blog post is not about comparing  different languages and databases rather I'm going to highlight some general principles and understanding which helps to take a better decision in choosing the technology stack.

Think as modules /components

Different portion of application can use different language and database. Visualize your application as a group of components, modules and services. Now choose the best technology which suits your need.

I'm just listing down some possibilities for using different technologies  in same application

You can have a web-service written on Java, Some can run on Python
You can use Node JS/Javascipt on server side.
You can use Javascript framework like Angular JS for front-end
You can use Python for the scripting needs.
User data can be stored in MongoDB,
Cache data can be stored in Redis,
Analytics Data can come from Redshift.
You can implement your search layer using ElasticSearch.
You can use Big Data technologies like Spark, Kafka .etc for your data processing requirements.

How to approach?

Approach like this to take better decision in choosing the technology.

What experience I'm going to give to the end user?. What problem I'm going to solve?

List down the workflows, use cases, performance requirement, access patterns. (Access pattern may be the types of queries, query frequency, is it dynamic? .etc)

Now see which language, database, tools, framework suits your need.

Your team's current tech expertise is also an important factor to consider but create a atmosphere where they are open to new technology and willing to try it out.

Product Architecture  is important

How you architecture your app is very important.  Generally  it is the architecture which scales not the language. Also how you architecture makes your application maintainable in a longer run. For instance choosing between Java (or) Scala  may not relate to project's overall success.

Comparison with successful products

You may come across people saying, "Even Facebook uses PHP as back-end". "Netflix uses Microservices" etc and try to apply to your project . But the level of optimization they do, expertise they have for it and the maturity of their business model  is important factor to consider. You can consume these kind of information but apply whichever suits your project.

For example, you can take a middle path between monolothic and microservice. As you project matures  you will be in a a better position to convert it completely to microservices.

Refactoring is not harm 

If you able to get traction for your  project, you can always refactor your code . Even big companies do it often. Refactoring  is not harm.

1 comment:

  1. Hi, Great.. Tutorial is just awesome..It is really helpful for a newbie like me.. I am a regular follower of your blog. Really very informative post you shared here. Kindly keep blogging. If anyone wants to become a Java developer learn from Java Training in Chennai. or learn thru Java Online Training in India . Nowadays Java has tons of job opportunities on various vertical industry.

    or Javascript Training in Chennai. Nowadays JavaScript has tons of job opportunities on various vertical industry.