During my undergraduate studies at UCSC I had an (excellent) electronics lecturer that liked to say that if another lecturer -- a hardcore software guy -- would look at his code, he'd call it 'immature'. I always liked that reference, and since I don't consider myself a programmer -- I've always viewed my software development as means to an end, not the end in and of itself -- I also tended to refer to my own code as immature.
The bulk of PCBmodE was written in the second half of 2012 with improvements that made it possible to design complete two layer boards added during the first half of 2013. Since then I've been patching it as I went along, but there's surprisingly few things I need to tweak when I'm designing boards with it these days. It works! (Yes, that's easy for me to say because I know where everything is!)
PCBmodE code is 'immature'. It was the first major software I've written in Python, and it's messy. I'm now working on another Python project for a client and I can tell how much I'd progressed in my understanding of Python's structure and organisational abilities. Like many, I'm sure, I'm slightly embarrassed with the code I've written in the past that's out there.
When I released PCBmodE as an open source project in early 2013, I was hoping for a community of users and contributors to grow around it. That didn't happen, and the 'immaturity' of the code is partly to blame. Some time after the release I decided that if I wanted to make a living from 'beautifully functional circuits', I must concentrate on making things with PCBmodE rather than trying to get people to use it. It was a resource allocation trade-off. So the software remained unused and unusable by others.
But maybe there's no need for PCBmodE as a tool? That's certainly a possibility, and that's one reason why I'm concentrating on creating things with it rather than working on improving it for wider use. The other reason, of course, is that I don't want to enter the EDA business.
I'd really like to spend a month (or more) to refactor the entire codebase and introduce new features I've been working on, but I cannot afford to. I hope that in the future that would happen, perhaps in piecemeal over time. Until then, 'immature' code it is!