Hacker News new | past | comments | ask | show | jobs | submit login
Magical thinking in Software Development (wrongsideofmemphis.wordpress.com)
3 points by prez on Nov 20, 2012 | hide | past | web | favorite | 7 comments

An important point missing from this article is that Python speed can be measured in two distinct ways -- how fast the code runs, and how fast the code gets written.

If a program needs to be up and running yesterday, then the fact that it's not as fast as C/C++ may not actually matter.

I think this issue should be mentioned more often in discussions of execution speed -- the time required to write the code in the first place. For that, Python excels.

All these measurements should be considered in the same light: what is the projected TCO of the software? And this includes a number of metrics:

- programmer productivity

- hardware costs

- speed

- flexibility

- ease of maintenance

- barrier of entry

- interop with other software

How easy will it be to maintain the software in ten years? Wrt to Python, it's a fantastic language, but I've become scared of large codebases in dynamic languages.

> I've become scared of large codebases in dynamic languages.

Fair enough. It seems to me that if an application has high performance demands and is expected to be in service for years, it should eventually be rewritten in a faster language. I find myself designing/developing programs in Python because development is so fast, then rewriting the result in a faster language after the design phase is over.

The rewriting phase is basically a translation, not a redesign. In most cases I know exactly how the program should behave, so there's no design taking place.

Curiously, I am working on a company now that has gone the other way around. They started with a design in C++, then moved to a Python code base to be able to adapt it faster to their needs.

The system serves a massive number of users in real time, so I don't think that the speed is necessarily an issue. Of course, it can be different in other cases...

Python is absolutely great for prototyping. And I like it for smaller, more self-contained apps where you don't have to worry too much about mission creep. And of course, you have sqlalchemy.

But all in all, it's more the safety you get from static typing I'm interested in than a pure speed boost. Though pylint is not too bad, it's still not the same.

I've work (and continue doing it) on quite big and complex projects in Python, and it works really well for that. Of course, it can depend of the context, but in general I don't think that safety is much more and issue on a dynamic language (and in Python in particular).

Article author here:

Yes, you are absolutely right that this is a very valid metric to use when dealing with development. I'm not sure that it is not discussed, though. Usually people talks about "language productivity"

And yes, Python exceeds at that ;-)

Applications are open for YC Summer 2020

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact