Posts Tagged ‘.NET’

Python for Executives

July 20, 2008
I’m very happy with our choice to use Python as one of our core development languages. It has proven to be a great time saver, in overall development costs and allowing an excellent pace of changes.

When we started IT Structures we debated over using Java\Linux combo or .Net\Windows duo.  Python was pushed in as an “experiment” by Ronnie. Our collective experience was derived from C , C++,JAVA , the hard core programming languages of past decades.

Python Logo

We started with Java, as our core belief was that Linux is a much stronger server platform than windows and that integration with a large number of distributed servers would be much easier in Java.

It took us less than a month to throw Java\J2EE out of the window. It was just far too complicated to get a simple combo box done, too many library options, too many eco-systems which are magically incompatible.

We decided to move to .Net and IronPython, preferring the developer productivity over the server utilization. This was done two weeks before the deadline. The combination allowed us to finish the version in the original time frame with minimal delay.

IronPython is cool because Python can be used together with C# and .Net . We are using C# for the more “traditional” business logic and UI elements, while Python is used for orchestration of a highly sophisticated real time server environment. That way we enjoy the best of both worlds.

The main fears managers have around Python are: Risk, Recruiting, Performance and Immaturity. At this stage I can say we have overcome all these reservations.

  • Recruiting – It turns out that smart and innovative people are attracted by Python .Innovative smart people can also learn Python very quickly.
  • Risk – in one year we had only five cases where a Python specific bug occurred. We had many more ASP. NET, JavaScript, HTML and even Java specific problems.
  • Maturity – not only is Python very solid, so is IronPython. The code is stable, the smart features work, the community is responsive and the libraries are rich. The only downside is the IDE and Visual studio integration, but this is progressing as well.
  • Performance – Python flexibility allowed extremely fast optimizations at the system and algorithmic levels, without requiring premature optimization. The system and algorithm changes are the ones critical in a real world environment. Some issues are showing up, but it seems they can be solved with a reasonable cost.

As time passed time our confidence grew we started using Python in a more and more places across our service. Overall it was an excellent choice and well worth the risk. I would not go into the reasons for Python success in this post, but you can read about it around the web.