It is now the three year anniversary of starting the store, forward, and receive system for our town’s water AMR system, which handles water endpoint/meter configuration and daily reads. In 2009, I started looking at implementation languages, and settled on Python at the time.
Since the summer of 2011, I had focused mainly on learning and implementing Clojure applets in a responsible way. By responsible way, I wanted to make sure I could recover from any mistakes I might be making, and also not leave my anyone following me a huge mess, something I inherited by my predecessor’s untimely death nine years ago. The Clojure efforts have gone well, because I wrote modules that could easily be replaced by Python or Perl. Well, perhaps not easily, but at least replaced in a reasonable time frame.
As with any application, I have recently gone back to the AMR system to fix things that were rushed, and actually add functionality that was planned but forgotten. I realize now that having chosen Python as the AMR’s implementation was not a bad decision.
Here were the reasons I used to justify the decision to use Python both to my boss and my self. It had a lot of support and the likelihood a temporary or permanent person could be found to work on this code base was good. After all, Python is being taught to freshmen in our high school.
I find Python can be sustained well, especially if you follow the old C/Unix (and perhaps many other languages’ styles) of small, concise, well-written functions, Python code refactors well, and a programmer’s being encouraged to use a lot of exception handling has its place.
I can at least keep things running without creating spaghetti code and can do so at the speed of an IT staff member, not a developer.