When I was in sixth form one of the first things I was taught in economics is the law of diminishing marginal returns. LDMR states that as the quantity of a variable input used in production increases, while all other inputs are held constant, the marginal output of that input will eventually decrease. The common way to explain this is with the guns-and-butter framework, which refers to the trade-off between two competing priorities in an economy: military spending (represented by “guns”) and consumer goods spending (represented by “butter”).

In an economic model where an economy can only allocate limited resources between these two things, and therefore must decide what combination to go for. The diagram showing this trade-off is shown below Guns and butter image

The PPF itself does not illustrate LDMR on the surface; however, you can notice it showing its face as you move the potential production combinations along the curve. At point A or B to switch resources from guns to butter is not difficult, and thus you get somewhat linear returns, sacrificing the production of 200 guns for the production of 100 units of butter. However, when you move from point B to point E, you will notice you give up significantly more guns only to get a marginal amount of guns (obviously the figures are not shown so you will have to use your imagination). LDMR in layman’s terms dictates that each time you do something, you will slowly get less and less back from it. This can be seen in addiction, the first hit is a magical experience that surpasses everything you have ever experienced. The second hit feels the same, maybe just slightly less so, the hundredth hit however doesn’t even touch you. This is illustrated quite well in the below video (yes I’m linking a lot of things in this post, I don’t know why)


So why am I talking about this? Well, there are a few reasons.

Codewars / Leetcode

CodeWars and LeetCode are online platforms for practicing and improving your coding. This is done by offering coding challenges, ranging from beginner to advanced levels, in a number of programming languages. Users can solve the coding challenges and submit their solutions, which are then evaluated against test cases to determine if they are correct. Both platforms also have a large community of users who can share their solutions, discuss problems, and learn from each other.

Codewars has so far been a pretty big backbone in how I keep my programming knowledge in system 1 rather than system 2 (reference to thinking fast and slow, a book you should read). Not only that, it’s always been a way for me to bow off steam, and even learn a few things. In the process of me learning Javascript, it has been borderline integral, as it has offered me quick and (theoretically)easy challenges. You may notice all of this is in the past tense.

The truth is my programming journey thus far has been a fairly young one. I got my start coding properly because a discord server I was in needed a new bot. The circumstances around this could deserve their own blog post so I won’t explain why. I learned to code in python because of this, and despite the fact I well and truly threw myself into the deep end - I swam. I am a fairly competent Python programmer now, and regularly use it to solve problems I am having e.g. scraping flashcards from itpro.tv. Despite this, however, I am still very young in terms of how long I have been programming.

Codewars up until this point has been something where I could do one once a day, however, that is very quickly becoming impractical. There’s been a few examples of me encountering a KATA I 100% know how to do, but I just don’t have the time to do it in the same way I used to. One example of this is to code a Bitfuck interpreter, a task that should be easy given I have coded a Brainfuck interpreter before. Another one is a KATA called “the greatest warrior”, which I 100% could do, and would benefit from doing but-

Even if these are tasks that could be done quickly by more experienced coders, and this is just evidence that I’m not as good as I think, does not matter. This is how I have worked up until now, and LDMR dictates this will only get worse. I need to adapt my stratergies therefore.

My job and the need to work for other teams

So the way that my job works is that we follow a Panema shift pattern. Without getting into the riveting intricacies of what a Panama shift pattern is, it means that four teams rotate to cover a site 24/7. I can do overtime on two of those teams, one of those teams always runs opposite to us so I can’t do so. Now you have the background ill describe why LDMR is applicable.

I cannot go into much detail because part of my contract included an NDA, but the nature of my job means that I have to work with a lot of proprietary technology. This technology doesn’t have amazing documentation. What this means is our training is more or less “Here is the bare minimum to do your job, now learn the rest as you go”. This approach, to be perfectly honest, isn’t that bad. Provided you are willing to hit the ground running, my job does offer good opportunities to learn and grow as an IT professional.

The issue comes when you consider that my main learning resource is my colleagues - I am at the point where I feel I have gained as much easily accessible knowledge from my current team. I.e. I am at the point on the PPF where I am starting to have the put a lot in to not get very much back. My solution is to try and work with a couple of other teams, an act my current team has interpreted as a betrayal. In reality, it is very far from it, I am essentially doing a cultural exchange so I can come back to my current team with teachings from the other side.

This is an example of adapting the workflow to account for the limitations that LDMR brings on - and this is what I want to find a way to do with Codewars. I fully accept I may have to put more effort in, however, I also want to posit this. I only have so much time in the day, and I have many many many projects to which I need to allocate that time. If I am going to adjust my energy expenditure on learning to program, I want the best bang for my buck solution. Regardless, I am sure something will bear its head in this regard.


A general purpose blog for me to braindump anything I might be thinking about. Please dont hesistate to reach out if you have any questions