Skip to main content

Get your code tighter....make sure TCr is on its way down over time.

Here by defines the TC ratio, "tight code":

If the ratio of the total lines of code in your project over the number of  unique features added with those lines of code goes down over time, then your project is getting progressively tight and is efficient across all metrics....otherwise, you need to re-evaluate your architecture, re-evaluate the skill of your coders and re-evaluate the features you're adding.

TCr = total lines of code / total features user or admin facing

TCr ~ 0 = GOOD!

:In my development of AgilEntity, TCr has been going down for quite some time now. Over the history of a project the TCr curve should look like a rapidly rising curve from f(eatures)=0  on the horizontal axis and with total lines of code on the vertical axis, as features are added, the curve should  hump as the architectural code is completed and then if the architecture is hyper efficient new additions to code should be swamped by features that accrue with their addition, bringing the curve down toward zero as more and more features can be added with less and less code or additions
to the architecture.

You can do several things to bring TCr down, refactoring existing code is a quick and dirty way. The best way though is to make sure you have a very efficient architecture to begin with including lots of polymorphism, lots of abstraction via reflection...finding the symmetries where having such features reduce code complexity is itself an art that comes from truly understanding the power of object orientation for large projects.


Popular posts from this blog

On the idea of "world wide mush" resulting from "open" development models

A recent article posted in the Wall Street Journal posits that the collectivization of various types of goods or services created by the internet is long term a damaging trend for human societies.

I think that the author misses truths that have been in place that show that collectivization is not a process that started with the internet but has been with us since we started inventing things.

It seems that Mr. Lanier is not properly defining the contexts under which different problems can benefit or suffer from collectivization. He speaks in general terms of the loss of the potential for creators to extract profit from their work but misses that this is and was true of human civilization since we first picked up a rock to use as a crude hammer. New things make old things obsolete and people MUST adapt to what is displaced (be it a former human performance of that task or use of an older product) so as to main…

Engineers versus Programmers

I have found as more non formally trained people enter the coding space, the quality of code that results varies in an interesting way.

The formalities of learning to code in a structured course at University involve often strong focus on "correctness" and efficiency in the form of big O representations for the algorithms created.

Much less focus tends to be placed on what I'll call practical programming, which is the type of code that engineers (note I didn't use "programmers" on purpose) must learn to write.

Programmers are what Universities create, students that can take a defined development environment and within in write an algorithm for computing some sequence or traversing a tree or encoding and decoding a string. Efficiency and invariant rules are guiding development missions. Execution time for creating the solution is often a week or more depending on the professor and their style of teaching code and giving out problems. This type of coding is devo…

Waking Out: A proposal to emerging ethical super intelligence safely.

The zeitgeist of Science fiction is filled with stories that paint a dystopian tale of how human desires to build artificial intelligence can go wrong. From the programmed pathology of HAL in 2001 a space odyssey, to the immediately malevolent emergence of Skynet in The Terminator and later to the humans as energy stores for the advanced AI of the Matrix and today , to the rampage of "hosts" in the new HBO series Westworld.

These stories all have a common theme of probing what happens when our autonomous systems get a mind of their own to some degree and no longer obey their creators but how can we avoid these types of scenarios but still emerge generalized intelligence that will leverage their super intelligence with empathy and consideration the same that we expect from one another? This question is being answered in a way that is mostly hopeful that current methods used in machine learning and specifically deep learning will not emerge skynet or HAL.

I think this is the …