What's your largest Grasshopper script? [The Hall Of Shame]

I can’t really disagree but I do not fully agree either. Its not wrong what you have written, but if you care about collaboration you don’t need to be a expert programmer.

Although it is right, that you get the importance and the skill with experience, its rather a mindset. In reality, the bigger your sources become, the slower you progress. If you don’t care about this matter, you can’t scale development by introducing new developers, and you will get slower and slower. If you let other fix it, you transport your technical debt to others, and I can guarantee you that this will likely yield in a complete rewrite in almost all cases.

I just recently fixed a tool which was written in 2-3 weeks without any documentation. Nothing just 5000 lines of code. It took me more than 1 week to get it correctly running within a correct development environment and another week to fix and provide documentation, so that this is not going to happen again. I basically had to reverse engineer this tool, migrate and partially re-factor it. I was very close in rewriting it from scratch. Probably all it was missing was a proper readme.md explaining how to to run it and what type of input it expects. And I consider myself as somehow experienced enough in reverse engineering, to get around a missing documentation.

This is extremely frustrating, and it could have been avoided by 2 more days of development.

ALTHOUGH A BIT OFF TOPIC - DOMAIN EXPERTS!

Without documentation and some kind of understandable architecture, it’s going to be a tough and sudden halt to the progress at some point. I call it the “complexity trumpet”, where there’s an exponential increase of problems as you proceed. But architecture is typically the role of a systems architect, not the programmer (architecture is a bit “philosophical”… :slight_smile: ).

You did well to fix it in 2 weeks!

Cleanup work can take 2 or 3 times the time it takes to create the mess. :slight_smile:

So, ~50% code-exploring and thus proving that the core problem could actually be solved, and then another 50% development to make the solution respectable in terms of coding standards. Then the question arises:

  • How much productive value does the system provide?

If the “crappy system” pays off within a week or a year matters when assessing whether if it was a good idea ar not to start out by just “making it happen”. :wink:

I’m not arguing that without context it looks bad to have a 50/50 spending on create/cleanup. But if put into context you will often find that a guy or a girl with expert knowledge in his/her problem domain often is the only one who can actually define/explain a proper “problem definition” and its logical solution, sometimes even in the form of code.

A big problem out there is that it actually takes some very special kind of communication skills for a non-programmer to talk to a programmer and succeed in conveying the “business problems” within the domain so it can be successfully implemented as a IT tool. This is where many projects fail, probably more often than due to low technical standards.

I had taped on my desk (in my role as the systems architect) a bit of paper cut out from a computer magazine where the header of an article said “83% of IT projects fail”. And the causes of the failures seldom was due to technical incompetence, instead the systems often involved extreme technical prowess, and the systems were up running and all that, but most of the failures didn’t actually solve the problems they were set out to solve.

Or a bit broader: The users didn’t find it useful, or they found it directly hindering them in their work.

Billions and billions of dollars every year are wasted in such projects. Projects which often dies in silence and no one wants to talk about them ever after. (and if they do, they typically say “We learned a lot…” and blah, blah, blah). You get the idea.

Now this has digressed way off topic, so I leave it there, but my main point is that way too many Domain Experts (which in my previous post would be a traffic/transport planner) doesn’t dare try to hack together something to prove a point when being intimidated by IT-professionals telling them that they don’t know what they’re doing.

THE TRUE GOLD MINE
The problem is of course that neither of them typically know the other field very well, and hence the numerous failed IT-projects. So the huge and messy Grasshopper Scripts out there typically are actually a gold mine of insights put down by Domain Experts! A final polished version perfected by professional programmers is a different category of problems.

In my case I initially didn’t have any insights into the field of logistics, but I did have the luck to work tightly together with a VP of the company (the product owner), a VP which had worked his way through the company as a transport planner and finally became the economy manager & VP, and thus knew the problem/business domain by heart, combined with the deep insights about the overall business goals and key-success factors. I was a business consultant at the company doing all the groundwork of identifying the business potential of further business development, and since at least one of us understood the other person’s “language” (business logic vs IT-potentials and limitations), the combination led to a very special business system which has stood the test of time (it’s still very much up and running, and according to one of the developers who was with us from the beginning, the backend I designed is still “essentially the same”, and the system gains more more interest in different fields where flexible logistics is needed, including either automated or flexible manual planning or both combined).

But I agree that without any form of documentation, at least explaining the core concepts, a big complex system can (become “immutable” and thus) end up being a road block for the business development as the world changes.

But being off topic, I’ll leave it here.

//Rolf
[edit: spelling & clarifications]

1 Like

@TomTom I think I’ve found the prefect analogue to my project:

Excel Rollercoaster, just because you can doesn’t mean you should!

1 Like

OK - today it happened, I’ve hit the 10k component mark:


Cheers

DK

5 Likes

That input? skyscraper on the far left :eyes: :popcorn:

@michaelvollrath yes, that is the user interface code, all built around my browser based UI code:

I believe the whole program now has 180+ user parameters, over 8 or so different tabs.

Cheers

DK

3 Likes

You are becoming the perfect victim for a component shuffle virus :wink:

Also, use obscure plugins, preferably those you cannot get from Package Manager or Food4Rhino, because if only you got the copy if the plugin, you are the only one able to fix the script.

Though lots of definitions could be much cleaner and shorter with more dedicated components for data management (tree operations).

Good thing I practice safe coding! :slight_smile:

I actual have a pretty solid discipline on version control that means I’m at most only about 1 day of possible data loss/roll back window.

I’ve actually twice had to do that in the last month, so it is “production tested”

Cheers

DK

Considering the complexity of KaroroCAD my dependencies list is not bad:

Only 4 of these are not currently handled by the package manager.

I’m on a mission to reduce this list where I can, and also working with the owners of the packages not on the Package Manager to get these onto the Package Manager.

Cheers

DK