Choose the right language

(This post is a continuation for this one)

Many students find themselves in a trouble when they have to decide which programming language to choose when they are developing the final project of their university studies. As a lecturer and director of some of them, i always try to recommend them one the the most comfortable languages for web development: PHP.

About a month ago, one of my students decide not no follow my advise. She wanted to develop her whole project (an enterprise calendar integration solution involving mobile phones, a web and SOA) in Java. She wanted to use Java, Struts and Hibernate.

At first, i was upset because of her decision: not many students are strong enough to “face” the director of their projects. But since I’ve been studying the evolution of her project, I realize that she was right in that decision. Many of you know that I’m not a Java fanatic. In instead of Java, I do prefer some other languages (at this time I’m involved in a BIG project using Python). But I have to accept that Java IS the language for corporate. Why?

First of all, because Java is fast to develop. Using an IDE like Eclipse, you only have to type a dot (.) following an object and you’ll get a complete reference of the methods of it (this can be done because Java is statically typed).

Secondly, because of the cost of the development. The most expensive part of any project is people’s time. As Java is “easy” (put lots of ditto marks here) to learn and fast to develop, you need less investment in development time. Even when Java needs more expensive machines to run fast than other languages (Sun Microsystems’ business model is server hardware, not the Java language), the cost of that hardware is lower than the cost of the additional development time for other languages.

In the third place we found the structure of the language. Java is good for rookie developers because they can learn a lot of software architecture while they are writing their own code. Perhaps you can think that this is obvious, but having each public class in a separate field or the way that Java implements the messages using methods defined in functions can not be easily taught by drawing in a chalkboard.

And fourth and final, because of the lots of know-how that can be found by querying google. Lots of tutorials, how-tos, screencasts and other training documentation can be found at no cost. In addition to that, almost every developer that has had a trouble with Java will be pleased to publish the solution on the internet and pleased to become useful to any other developer in the world. Java has a great community of users that have developed lots of useful plug-ins for Eclipse, frameworks or libraries that can ease your work. Almost everything can be done with a dozen of clicks!!

So, the right language is the right for you and for your project. If you need to decrease development time, use Java (No! Do not do that! Use python! XD). If you need performance use assembler (Just kidding, use C/C++). Think about scalability and what will happen if your system grows up. Python and Java are scalable and maintainable. Many other languages are not. If your system is not going to grow (at a reasonable level of doubt), use whatever you are trained to.

But do not use Java, PHP, Ruby or Python without trying them, or just because somebody tells you to use them. Test them all, compare them all and finally choose one. Do not depress if things do not work at the first attempt (it can take a week until you’ve got all the environment properly configured!). Keep trying until you’ve got enough information to make up your mind and take a decision.

This was what my student did a month ago. And she is getting very good results. You can follow her progress in her blog

About Pablo Casado

Clinical lecturer at BarcelonaTech - http://www.upc.edu
This entry was posted in Java, programming languages, project management, Python. Bookmark the permalink.

Comments

2 Responses to Choose the right language

  1. aPoLiOn (P. Casado) says:

    Pero qué posts más largos que me salen, leche!

    Tengo que aplicarme aquello que decían en Airbag: “Conra! Párrafo corto!”

  2. Judit says:

    Primer de tot, agrairte aquest post… ja saps que no penso que tot sigui tan positiu com tothom em comenta.

    Segon de tot vull deixar constancia que no va ser un enfrontament, ni un plantar cara, simplement jo ja havia provat algo de la tecnologia Java i quan vaig fer ambdues betes (Java i PHP) vaig poder jutjar amb coneixement de causa quina tecnologia volia desenvolupar. I si no recordo malament va ser una proposta.

    Si que és cert que desenvolupar Java amb l’Eclipse et facilita la vida (sobretot si treballes amb ell a la feina), però potser PHP resulta tenir una corba d’aprenentatge molt més simple que Java + Struts + Hibernate.

    És important fer una valoració i fer proves abans de determinar la tecnologia a emprar i penso que als estudiants no ens ha de fer por comentar/suggerir altres tecnologies de treball, sino al contrari, penso que és una mostra de proactivitat per part de l’estudiant. És una petita mostra de la implicació per part del proyectista.

    Amb tot això no vull tirar-me flors per el simple fet de haver sigut jo qui ha proposat una alternativa a la tecnologia proposada. És més, m’hagués agradat disposar del suficient temps per poder-ho implementar en ambdues tecnologies i fer una comparació sobre tot el projecte. De la mateixa forma que m’haugués agradat provar altres tecnologies com són el Phyton,Ruby o l’atac contra base de dades amb PostreSql.

    PHP no… no està fet per a un desastre desendreçat com jo… em recorda als meus inicis amb HTML estàtic i era un caos… i més si comencem a pensar en PHP orientat a objectes.

    Jo tmb t’he deixat el meu rollo xD

    Q vagi bé !!

Leave a Reply